diff --git a/.changeset/backstage-changelog.js b/.changeset/backstage-changelog.js
new file mode 100644
index 0000000000..ea8ca2300b
--- /dev/null
+++ b/.changeset/backstage-changelog.js
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2021 The Backstage Authors
+ *
+ * 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.
+ */
+
+const {
+ default: defaultChangelogFunctions,
+} = require('@changesets/cli/changelog');
+
+// Custom CHANGELOG generation for changesets, stolen from here with one minor change:
+// https://github.com/atlassian/changesets/blob/main/packages/cli/src/changelog/index.ts
+async function getDependencyReleaseLine(changesets, dependenciesUpdated) {
+ if (dependenciesUpdated.length === 0) return '';
+
+ const updatedDepenenciesList = dependenciesUpdated.map(
+ dependency => ` - ${dependency.name}@${dependency.newVersion}`,
+ );
+
+ // Return one `Updated dependencies` bullet instead of repeating for each changeset; this
+ // sacrifices the commit shas for brevity.
+ return ['- Updated dependencies', ...updatedDepenenciesList].join('\n');
+}
+
+module.exports = {
+ getReleaseLine: defaultChangelogFunctions.getReleaseLine,
+ getDependencyReleaseLine,
+};
diff --git a/.changeset/chilly-owls-punch.md b/.changeset/chilly-owls-punch.md
deleted file mode 100644
index 35fb581a81..0000000000
--- a/.changeset/chilly-owls-punch.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-catalog': patch
----
-
-Exports `CatalogLayout` and `CreateComponentButton` for catalog customization.
diff --git a/.changeset/config.json b/.changeset/config.json
index 44a8523265..86963b7d09 100644
--- a/.changeset/config.json
+++ b/.changeset/config.json
@@ -1,6 +1,6 @@
{
"$schema": "https://unpkg.com/@changesets/config@1.3.0/schema.json",
- "changelog": "@changesets/cli/changelog",
+ "changelog": "./backstage-changelog.js",
"commit": false,
"linked": [["*"]],
"access": "public",
diff --git a/.changeset/cuddly-donuts-whisper.md b/.changeset/cuddly-donuts-whisper.md
new file mode 100644
index 0000000000..fd1b665b99
--- /dev/null
+++ b/.changeset/cuddly-donuts-whisper.md
@@ -0,0 +1,54 @@
+---
+'@backstage/plugin-explore': patch
+---
+
+Refactors the explore plugin to be more customizable. This includes the following non-breaking changes:
+
+- Introduce new `ExploreLayout` page which can be used to create a custom `ExplorePage`
+- Refactor `ExplorePage` to use a new `ExploreLayout` component
+- Exports existing `DomainExplorerContent`, `GroupsExplorerContent`, & `ToolExplorerContent` components
+- Allows `title` props to be customized
+
+Create a custom explore page in `packages/app/src/components/explore/ExplorePage.tsx`.
+
+```tsx
+import {
+ DomainExplorerContent,
+ ExploreLayout,
+} from '@backstage/plugin-explore';
+import React from 'react';
+import { InnserSourceExplorerContent } from './InnserSourceExplorerContent';
+
+export const ExplorePage = () => {
+ return (
+
+
+
+
+
+
+
+
+ );
+};
+
+export const explorePage = ;
+```
+
+Now register the new explore page in `packages/app/src/App.tsx`.
+
+```diff
++ import { explorePage } from './components/explore/ExplorePage';
+
+const routes = (
+
+- } />
++ }>
++ {explorePage}
++
+
+);
+```
diff --git a/.changeset/few-windows-whisper.md b/.changeset/few-windows-whisper.md
new file mode 100644
index 0000000000..565e8798a1
--- /dev/null
+++ b/.changeset/few-windows-whisper.md
@@ -0,0 +1,8 @@
+---
+'@backstage/core-app-api': patch
+'@backstage/core-plugin-api': patch
+'@backstage/plugin-catalog': patch
+'@backstage/plugin-scaffolder': patch
+---
+
+Adding `FeatureFlag` component and treating `FeatureFlags` as first class citizens to composability API
diff --git a/.changeset/five-baboons-explain.md b/.changeset/five-baboons-explain.md
new file mode 100644
index 0000000000..b30c1a6237
--- /dev/null
+++ b/.changeset/five-baboons-explain.md
@@ -0,0 +1,5 @@
+---
+'@backstage/dev-utils': minor
+---
+
+Removed support for deprecated registered plugin routes. All routes now need to be added using `addPage` instead.
diff --git a/.changeset/forty-dodos-own.md b/.changeset/forty-dodos-own.md
new file mode 100644
index 0000000000..6b60872f9d
--- /dev/null
+++ b/.changeset/forty-dodos-own.md
@@ -0,0 +1,5 @@
+---
+'@backstage/catalog-client': patch
+---
+
+Return entities sorted alphabetically by ref
diff --git a/.changeset/friendly-bikes-double.md b/.changeset/friendly-bikes-double.md
new file mode 100644
index 0000000000..5ee9f959c1
--- /dev/null
+++ b/.changeset/friendly-bikes-double.md
@@ -0,0 +1,5 @@
+---
+'@backstage/cli': patch
+---
+
+updated plugin template to generate path equals plugin id for the root page
diff --git a/.changeset/funny-toys-talk.md b/.changeset/funny-toys-talk.md
deleted file mode 100644
index 6e6a779ab8..0000000000
--- a/.changeset/funny-toys-talk.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/codemods': patch
----
-
-Fix execution of `jscodeshift` on windows.
diff --git a/.changeset/good-jars-turn.md b/.changeset/good-jars-turn.md
new file mode 100644
index 0000000000..0bbe344ad2
--- /dev/null
+++ b/.changeset/good-jars-turn.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-search': patch
+---
+
+Use the `identityApi` to forward authorization headers to the `search-backend`
diff --git a/.changeset/heavy-numbers-refuse.md b/.changeset/heavy-numbers-refuse.md
new file mode 100644
index 0000000000..c5d9dc6deb
--- /dev/null
+++ b/.changeset/heavy-numbers-refuse.md
@@ -0,0 +1,10 @@
+---
+'@backstage/plugin-api-docs': minor
+'@backstage/plugin-cost-insights': minor
+'@backstage/plugin-gcp-projects': minor
+'@backstage/plugin-gitops-profiles': minor
+'@backstage/plugin-newrelic': minor
+'@backstage/plugin-welcome': minor
+---
+
+**BREAKING CHANGE** Remove deprecated route registrations, meaning that it is no longer enough to only import the plugin in the app and the exported page extension must be used instead.
diff --git a/.changeset/metal-badgers-carry.md b/.changeset/metal-badgers-carry.md
new file mode 100644
index 0000000000..b82e638c6f
--- /dev/null
+++ b/.changeset/metal-badgers-carry.md
@@ -0,0 +1,25 @@
+---
+'@backstage/plugin-catalog-backend': patch
+'@backstage/plugin-catalog-backend-module-msgraph': patch
+---
+
+Move `MicrosoftGraphOrgReaderProcessor` from `@backstage/plugin-catalog-backend`
+to `@backstage/plugin-catalog-backend-module-msgraph`.
+
+The `MicrosoftGraphOrgReaderProcessor` isn't registered by default anymore, if
+you want to continue using it you have to register it manually at the catalog
+builder:
+
+1. Add dependency to `@backstage/plugin-catalog-backend-module-msgraph` to the `package.json` of your backend.
+2. Add the processor to the catalog builder:
+
+```typescript
+// packages/backend/src/plugins/catalog.ts
+builder.addProcessor(
+ MicrosoftGraphOrgReaderProcessor.fromConfig(config, {
+ logger,
+ }),
+);
+```
+
+For more configuration details, see the [README of the `@backstage/plugin-catalog-backend-module-msgraph` package](https://github.com/backstage/backstage/blob/master/plugins/catalog-backend-module-msgraph/README.md).
diff --git a/.changeset/metal-cycles-run.md b/.changeset/metal-cycles-run.md
new file mode 100644
index 0000000000..b4a2597aa2
--- /dev/null
+++ b/.changeset/metal-cycles-run.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-techdocs': patch
+---
+
+Fix the overlapping between the sidebar and the tabs navigation when enabled in mkdocs (features: navigation.tabs)
diff --git a/.changeset/odd-humans-exercise.md b/.changeset/odd-humans-exercise.md
new file mode 100644
index 0000000000..136ec86b69
--- /dev/null
+++ b/.changeset/odd-humans-exercise.md
@@ -0,0 +1,5 @@
+---
+'@backstage/cli': patch
+---
+
+Make the `create-github-app` command disable webhooks by default.
diff --git a/.changeset/perfect-gifts-compete.md b/.changeset/perfect-gifts-compete.md
new file mode 100644
index 0000000000..7c03798888
--- /dev/null
+++ b/.changeset/perfect-gifts-compete.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-auth-backend': patch
+---
+
+Don't export the `defaultGoogleAuthProvider`
diff --git a/.changeset/plenty-kings-shout.md b/.changeset/plenty-kings-shout.md
new file mode 100644
index 0000000000..16453b96de
--- /dev/null
+++ b/.changeset/plenty-kings-shout.md
@@ -0,0 +1,5 @@
+---
+'@backstage/cli': patch
+---
+
+chore: bump `@typescript-eslint/eslint-plugin` from 4.26.0 to 4.27.0
diff --git a/.changeset/popular-rice-wonder.md b/.changeset/popular-rice-wonder.md
new file mode 100644
index 0000000000..f815ad949a
--- /dev/null
+++ b/.changeset/popular-rice-wonder.md
@@ -0,0 +1,8 @@
+---
+'@backstage/plugin-catalog': patch
+'@backstage/plugin-catalog-backend': patch
+'@backstage/plugin-scaffolder': patch
+'@backstage/plugin-scaffolder-backend': patch
+---
+
+Moved installation instructions from the main [backstage.io](https://backstage.io) documentation to the package README file. These instructions are not generally needed, since the plugin comes installed by default with `npx @backstage/create-app`.
diff --git a/.changeset/purple-papayas-exist.md b/.changeset/purple-papayas-exist.md
deleted file mode 100644
index 4c77558476..0000000000
--- a/.changeset/purple-papayas-exist.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-user-settings': patch
----
-
-Fix a bug that prevented changing themes on the user settings page when the theme `id` didn't match exactly the theme `variant`.
diff --git a/.changeset/rich-trees-chew.md b/.changeset/rich-trees-chew.md
new file mode 100644
index 0000000000..5ec79c36d0
--- /dev/null
+++ b/.changeset/rich-trees-chew.md
@@ -0,0 +1,5 @@
+---
+'@backstage/cli': patch
+---
+
+chore: bump `@spotify/eslint-config-typescript` from 9.0.0 to 10.0.0
diff --git a/.changeset/seven-adults-act.md b/.changeset/seven-adults-act.md
new file mode 100644
index 0000000000..fa2839aad2
--- /dev/null
+++ b/.changeset/seven-adults-act.md
@@ -0,0 +1,25 @@
+---
+'@backstage/plugin-auth-backend': patch
+---
+
+Adds support for custom sign-in resolvers and profile transformations for the
+Google auth provider.
+
+Adds an `ent` claim in Backstage tokens, with a list of
+[entity references](https://backstage.io/docs/features/software-catalog/references)
+related to your signed-in user's identities and groups across multiple systems.
+
+Adds an optional `providerFactories` argument to the `createRouter` exported by
+the `auth-backend` plugin.
+
+Updates `BackstageIdentity` so that
+
+- `idToken` is deprecated in favor of `token`
+- An optional `entity` field is added which represents the entity that the user is represented by within Backstage.
+
+More information:
+
+- [The identity resolver documentation](https://backstage.io/docs/auth/identity-resolver)
+ explains the concepts and shows how to implement your own.
+- The [From Identity to Ownership](https://github.com/backstage/backstage/issues/4089)
+ RFC contains details about how this affects ownership in the catalog
diff --git a/.changeset/silent-ways-laugh.md b/.changeset/silent-ways-laugh.md
new file mode 100644
index 0000000000..ea152c68ef
--- /dev/null
+++ b/.changeset/silent-ways-laugh.md
@@ -0,0 +1,6 @@
+---
+'@backstage/plugin-catalog-backend-module-msgraph': patch
+---
+
+Allow customizations of `MicrosoftGraphOrgReaderProcessor` by passing an
+optional `groupTransformer`, `userTransformer`, and `organizationTransformer`.
diff --git a/.changeset/smart-insects-care.md b/.changeset/smart-insects-care.md
new file mode 100644
index 0000000000..2d1fc8f2aa
--- /dev/null
+++ b/.changeset/smart-insects-care.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-catalog': patch
+---
+
+Disambiguated titles of `EntityDependencyOfComponentsCard` and `EntityDependsOnComponentsCard`.
diff --git a/.changeset/tall-bears-taste.md b/.changeset/tall-bears-taste.md
deleted file mode 100644
index 050c47867c..0000000000
--- a/.changeset/tall-bears-taste.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/core-components': patch
----
-
-Add title prop in SupportButton component
diff --git a/.changeset/techdocs-cool-rivers-suffer.md b/.changeset/techdocs-cool-rivers-suffer.md
new file mode 100644
index 0000000000..2386d27525
--- /dev/null
+++ b/.changeset/techdocs-cool-rivers-suffer.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-techdocs': patch
+---
+
+Refactor the implicit logic from `` into an explicit state machine. This resolves some state synchronization issues when content is refreshed or rebuilt in the backend.
diff --git a/.changeset/techdocs-metal-clouds-work.md b/.changeset/techdocs-metal-clouds-work.md
deleted file mode 100644
index 64d18dcc02..0000000000
--- a/.changeset/techdocs-metal-clouds-work.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-techdocs': patch
----
-
-Adding support for user owned document filter for TechDocs custom Homepage
diff --git a/.changeset/techdocs-poor-forks-repeat.md b/.changeset/techdocs-poor-forks-repeat.md
new file mode 100644
index 0000000000..89c4e0dc5a
--- /dev/null
+++ b/.changeset/techdocs-poor-forks-repeat.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-techdocs-backend': patch
+---
+
+Return a `304 Not Modified` from the `/sync/:namespace/:kind/:name` endpoint if nothing was built. This enables the caller to know whether a refresh of the docs page will return updated content (-> `201 Created`) or not (-> `304 Not Modified`).
diff --git a/.changeset/violet-birds-lay.md b/.changeset/violet-birds-lay.md
deleted file mode 100644
index 841603058f..0000000000
--- a/.changeset/violet-birds-lay.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/plugin-proxy-backend': patch
----
-
-Bump http-proxy-middleware from 0.19.2 to 2.0.0
diff --git a/.changeset/weak-needles-peel.md b/.changeset/weak-needles-peel.md
new file mode 100644
index 0000000000..5315e2cb66
--- /dev/null
+++ b/.changeset/weak-needles-peel.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-scaffolder-backend': patch
+---
+
+Correctly recognize whether the cookiecutter command exists
diff --git a/.eslintrc.js b/.eslintrc.js
index 4dfcf5317f..6c8b62e4aa 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -25,6 +25,12 @@ module.exports = {
{
// eslint-disable-next-line no-restricted-syntax
templateFile: path.resolve(__dirname, './scripts/copyright-header.txt'),
+ templateVars: {
+ NAME: 'The Backstage Authors',
+ },
+ varRegexps: {
+ NAME: /(The Backstage Authors)|(Spotify AB)/,
+ },
onNonMatchingHeader: 'replace',
},
],
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 206c1a7883..fda500ed02 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -4,7 +4,7 @@
# The last matching pattern takes precedence.
# https://help.github.com/articles/about-codeowners/
-* @backstage/maintainers
+* @backstage/reviewers
/docs/features/techdocs @backstage/techdocs-core
/docs/features/search @backstage/techdocs-core
/docs/assets/search @backstage/techdocs-core
diff --git a/.github/styles/vocab.txt b/.github/styles/vocab.txt
index 4ff766e5e2..78b2a9b75f 100644
--- a/.github/styles/vocab.txt
+++ b/.github/styles/vocab.txt
@@ -149,6 +149,7 @@ Mkdocs
monorepo
Monorepo
monorepos
+msgraph
msw
mysql
namespace
diff --git a/ADOPTERS.md b/ADOPTERS.md
index 31f384e4e6..9f59835cbc 100644
--- a/ADOPTERS.md
+++ b/ADOPTERS.md
@@ -1,32 +1,35 @@
-| Organization | Contact | Description of Use |
-| ------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| [Spotify](https://www.spotify.com) | [@leemills83](https://github.com/leemills83) | Main interface towards all of Spotify's infrastructure and technical documentation. |
-| [bol.com](https://www.bol.com) | [@RoyJacobs](https://github.com/RoyJacobs) | Initial work being done to unify platform tooling. |
-| [DFDS](https://www.dfds.com) | [@carlsendk](https://github.com/carlsendk) | V2 self-service platform. |
-| [Roadie](https://roadie.io) | [@dtuite](https://github.com/dtuite) | Hosted, managed Backstage with easy set-up |
-| [Roku](https://www.roku.com) | [@timurista](https://github.com/timurista) | Initial work on Cloud engineering service platform. |
-| [SDA SE](https://sda.se) | [@Fox32](https://github.com/Fox32) | Central place for developing and sharing services in our insurance ecosystem. |
-| [H-E-B](https://www.heb.com) | [@german-j-rodriguez](https://github.com/german-j-rodriguez) | Initial work on Engineering Portal service platform. |
-| [American Airlines](https://www.aa.com) | [@paulpach](https://github.com/paulpach) | Central place for developers to develop and maintain applications |
-| [Kiwi.com](https://kiwi.com) | [@aexvir](https://github.com/aexvir) | Replacing the frontend of [The Zoo](https://github.com/kiwicom/the-zoo), their service registry. |
-| [Voi](https://www.voiscooters.com/) | [@K-Phoen](https://github.com/K-Phoen) | Developer portal, main gateway to our infrastructure, documentation and internal tooling. |
-| [Talkdesk](https://www.talkdesk.com) | [@jaime-talkdesk](https://github.com/jaime-talkdesk) | Initial work for Engineering Portal and Self Provisioning to R&D |
-| [Wealthsimple](https://www.wealthsimple.com) | [@andrewthauer](https://github.com/andrewthauer) | Developer portal, service catalog, documentation and tooling |
-| [Grab](https://www.grab.com) | [@althafh](https://github.com/althafh) | Initial work as a unified interface for all of Grab's internal tooling |
-| [Telenor Sweden](https://www.telenor.se) | [@O5ten](https://github.com/O5ten) | Building a developer portal for scaffolding projects towards our unified build environment and microservice stacks |
-| [Fiverr](https://www.fiverr.com) | [@nirga](https://github.com/nirga) | Unifying separate tools that developers are using today (i.e. monitoring, dead letter queues management, etc.) into a single platform. |
-| [Zalando SE](https://www.zalando.de) | [@leviferreira](https://github.com/leviferreira) | Building V2 of the Internal Development Portal. |
-| [LegalZoom](https://legalzoom.com) | [@backjo](https://github.com/backjo) | Developer portal - hub for all engineering projects and metadata. |
-| [Expedia Group](https://www.expediagroup.com) | [Mike Turner](mailto:miturner@expediagroup.com), [Sneha Kumar](mailto:snkumar@expediagroup.com), [@guillermomanzo](https://github.com/guillermomanzo), [Erik Lindgren](https://github.com/lindgren) | EG Common Developer Toolkit |
-| [Paddle.com](https://paddle.com) | [Ioannis Georgoulas](https://github.com/geototti21) | Developer portal (Tech Docs, Service Catalog, Internal Tooling), we use vanilla Backstage FE and custom BE implementation in Go |
-| [Acast.com](https://acast.com) | [Olle Lundberg](https://github.com/lndbrg) | Developer portal with tech docs, service catalog and a bunch of other internal tooling |
-| [Lunar](https://lunar.app) | [Jacob Valdemar](https://github.com/JacobValdemar) | Internal developer portal for service overview and insights, API documentation, technical guides, onboarding guides and RFC's. |
-| [Trendyol](https://trendyol.com) | [Erdogan Oksuz](https://github.com/erdoganoksuz) | The Developer Portal has been called `Pandora`. Provides an overview of Trendyol tech ecosystem. TechDocs, Catalog, Custom Plugins and Theme. |
-| [Peloton](https://www.onepeloton.com/) | [Jim Haughwout](https://github.com/JimHaughwout) | Creating our first developer portal and tech-docs. Exploring Service Catalog, Tech Insights and Cost Insights as well. |
-| [TELUS](https://telus.com) | [Seb Barre](https://github.com/sbarre) | The Go-to place to find answers about development and delivery at TELUS. |
-| [Brex](https://www.brex.com/) | [Vamsi Chitters](https://github.com/vamsikc) | A centralized UI to understand how a service fits in the whole Brex architecture and manage a team’s engineering dependencies. |
-| [Oriflame](https://www.oriflame.com/) | [Oriflame](https://github.com/oriflame) | Internal developer portal for services, single page apps and packages overview, API documentation, technical guides, tech-radar and more. |
-| [Booz Allen Hamilton](https://www.boozallen.com/) | [Jason Miller](https://github.com/JasonMiller-BAH) | Developer portal for a full-stack software development ecosystem that accelerates consistent and repeatable Modern Software Development practices for internal innovation and investments. |
-| [Netflix](https://www.netflix.com/) | [bleathem](https://github.com/bleathem) | Our Backstage implementation will be the front door to a unified experience connecting our internal platform products across important workflows with integrated knowledge and support. |
-| [b.well](https://www.icanbwell.com/) | [Jacob Rosales](https://github.com/jrosales) | Foundation for our engineering portal and cloud insights. |
-| [PagerDuty](https://www.pagerduty.com/) | [Mark Shaw](https://github.com/markshawtoronto) | Developer portal, initially focused on software templates and tech-docs. |
+| Organization | Contact | Description of Use |
+| ------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [Spotify](https://www.spotify.com) | [@leemills83](https://github.com/leemills83) | Main interface towards all of Spotify's infrastructure and technical documentation. |
+| [bol.com](https://www.bol.com) | [@RoyJacobs](https://github.com/RoyJacobs) | Initial work being done to unify platform tooling. |
+| [DFDS](https://www.dfds.com) | [@carlsendk](https://github.com/carlsendk) | V2 self-service platform. |
+| [Roadie](https://roadie.io) | [@dtuite](https://github.com/dtuite) | Hosted, managed Backstage with easy set-up |
+| [Roku](https://www.roku.com) | [@timurista](https://github.com/timurista) | Initial work on Cloud engineering service platform. |
+| [SDA SE](https://sda.se) | [@Fox32](https://github.com/Fox32) | Central place for developing and sharing services in our insurance ecosystem. |
+| [H-E-B](https://www.heb.com) | [@german-j-rodriguez](https://github.com/german-j-rodriguez) | Initial work on Engineering Portal service platform. |
+| [American Airlines](https://www.aa.com) | [@paulpach](https://github.com/paulpach) | Central place for developers to develop and maintain applications |
+| [Kiwi.com](https://kiwi.com) | [@aexvir](https://github.com/aexvir) | Replacing the frontend of [The Zoo](https://github.com/kiwicom/the-zoo), their service registry. |
+| [Voi](https://www.voiscooters.com/) | [@K-Phoen](https://github.com/K-Phoen) | Developer portal, main gateway to our infrastructure, documentation and internal tooling. |
+| [Talkdesk](https://www.talkdesk.com) | [@jaime-talkdesk](https://github.com/jaime-talkdesk) | Initial work for Engineering Portal and Self Provisioning to R&D |
+| [Wealthsimple](https://www.wealthsimple.com) | [@andrewthauer](https://github.com/andrewthauer) | Developer portal, service catalog, documentation and tooling |
+| [Grab](https://www.grab.com) | [@althafh](https://github.com/althafh) | Initial work as a unified interface for all of Grab's internal tooling |
+| [Telenor Sweden](https://www.telenor.se) | [@O5ten](https://github.com/O5ten) | Building a developer portal for scaffolding projects towards our unified build environment and microservice stacks |
+| [Fiverr](https://www.fiverr.com) | [@nirga](https://github.com/nirga) | Unifying separate tools that developers are using today (i.e. monitoring, dead letter queues management, etc.) into a single platform. |
+| [Zalando SE](https://www.zalando.de) | [@leviferreira](https://github.com/leviferreira) | Building V2 of the Internal Development Portal. |
+| [LegalZoom](https://legalzoom.com) | [@backjo](https://github.com/backjo) | Developer portal - hub for all engineering projects and metadata. |
+| [Expedia Group](https://www.expediagroup.com) | [Mike Turner](mailto:miturner@expediagroup.com), [Sneha Kumar](mailto:snkumar@expediagroup.com), [@guillermomanzo](https://github.com/guillermomanzo), [Erik Lindgren](https://github.com/lindgren) | EG Common Developer Toolkit |
+| [Paddle.com](https://paddle.com) | [Ioannis Georgoulas](https://github.com/geototti21) | Developer portal (Tech Docs, Service Catalog, Internal Tooling), we use vanilla Backstage FE and custom BE implementation in Go |
+| [Acast.com](https://acast.com) | [Olle Lundberg](https://github.com/lndbrg) | Developer portal with tech docs, service catalog and a bunch of other internal tooling |
+| [Lunar](https://lunar.app) | [Jacob Valdemar](https://github.com/JacobValdemar) | Internal developer portal for service overview and insights, API documentation, technical guides, onboarding guides and RFC's. |
+| [Trendyol](https://trendyol.com) | [Erdogan Oksuz](https://github.com/erdoganoksuz) | The Developer Portal has been called `Pandora`. Provides an overview of Trendyol tech ecosystem. TechDocs, Catalog, Custom Plugins and Theme. |
+| [Peloton](https://www.onepeloton.com/) | [Jim Haughwout](https://github.com/JimHaughwout) | Creating our first developer portal and tech-docs. Exploring Service Catalog, Tech Insights and Cost Insights as well. |
+| [TELUS](https://telus.com) | [Seb Barre](https://github.com/sbarre) | The Go-to place to find answers about development and delivery at TELUS. |
+| [Brex](https://www.brex.com/) | [Vamsi Chitters](https://github.com/vamsikc) | A centralized UI to understand how a service fits in the whole Brex architecture and manage a team’s engineering dependencies. |
+| [Oriflame](https://www.oriflame.com/) | [Oriflame](https://github.com/oriflame) | Internal developer portal for services, single page apps and packages overview, API documentation, technical guides, tech-radar and more. |
+| [Booz Allen Hamilton](https://www.boozallen.com/) | [Jason Miller](https://github.com/JasonMiller-BAH) | Developer portal for a full-stack software development ecosystem that accelerates consistent and repeatable Modern Software Development practices for internal innovation and investments. |
+| [Netflix](https://www.netflix.com/) | [bleathem](https://github.com/bleathem) | Our Backstage implementation will be the front door to a unified experience connecting our internal platform products across important workflows with integrated knowledge and support. |
+| [b.well](https://www.icanbwell.com/) | [Jacob Rosales](https://github.com/jrosales) | Foundation for our engineering portal and cloud insights. |
+| [PagerDuty](https://www.pagerduty.com/) | [Mark Shaw](https://github.com/markshawtoronto) | Developer portal, initially focused on software templates and tech-docs. |
+| [MoonShiner](https://moonshiner.at) | [Fabian Hippmann](https://github.com/FabianHippmann) | Developer portal - helps us keep track of our customer projects, onboard new developers & improve our development process 🌕🚀🧑🚀 |
+| [FundApps](https://www.fundapps.co/) | [Elliot Greenwood](https://github.com/egnwd) | Developer Portal - A place for us to keep track of our projects and documentation for all services and processes |
+| [DAZN](https://dazn.com/) | [Lou Bichard](https://twitter.com/loujaybee), [Marco Crivellaro](https://github.com/crivetechie) | Ingesting all of DAZN's repos for the catalog, migrating our internal platform apps (pull request boards, release information, inner source marketplace etc) to Backstage plugins (where applicable). |
diff --git a/GOVERNANCE.md b/GOVERNANCE.md
index 0ab8d8390d..936c27c7cf 100644
--- a/GOVERNANCE.md
+++ b/GOVERNANCE.md
@@ -36,9 +36,33 @@ To become a maintainer you need to demonstrate the following:
If a maintainer is no longer interested or cannot perform the maintainer duties listed above, they should volunteer to be moved to emeritus status. In extreme cases this can also occur by a vote of the sponsors and maintainers per the voting process below.
+# Reviewers
+
+The project also contains a team called [@backstage/reviewers](https://github.com/orgs/backstage/teams/reviewers). This is the team of people who are the fallback in [`CODEOWNERS`](./.github/CODEOWNERS). This team will typically contain the maintainers, and a small number of additional people who are permitted to approve and merge pull requests. The purpose of this group is to offload some of the review work from the maintainers, simplifying and speeding up the review process for contributors.
+
+This responsibility is distinct from the maintainer role. A reviewer must not approve and merge changes that have a level of impact that a maintainer should oversee; see below for clarification. For that class of changes, a reviewer can still review the pull request thoroughly without approving it (e.g. with a comment on the pull request), and is expected to notify `@backstage/maintainers` for final approval. Note that it is best to not use the GitHub review approve functionality for this, since that would let Hall of Fame members self-merge the pull request before maintainers get the chance to look at it.
+
+The following is a non-exhaustive list of types of change, for which a reviewer should defer final decision and merge to a maintainer:
+
+- A larger refactoring that significantly affects the structure of/between packages
+- Changes that settle or alter the trajectory of contested ongoing topics in issues or elsewhere
+- Changes that affect the [Architecture Decision Records](./docs/architecture-decisions)
+- Changes to APIs that have large customer impact, such as the core APIs in `@backstage/core-*` packages, or significant `@backstage/cli` changes.
+- Pull requests whose build checks are not passing fully
+- Additions and removals of entire packages
+- Releases (e.g. pull requests titled `Version Packages`)
+
+A maintainer may suggest an addition to the reviewers team by opening a pull request that modifies [`OWNERS.md`](./OWNERS.md) accordingly. Prospective reviewers are not expected to do this themselves, but should rather ask a maintainer to sponsor their addition. All of the maintainers and sponsors are called to vote on the addition (see the section below about voting). If the vote passes, the pull request can be approved and merged, and the corresponding addition to the GitHub team can be made.
+
+A reviewer can elect to remove themselves from the reviewers group by opening, or asking a maintainer to open, a pull request that modifies [`OWNERS.md`](./OWNERS.md) accordingly. A maintainer will approve and merge the pull request, and the corresponding removal from the GitHub team can be made.
+
+A maintainer can call on the other maintainers and sponsors for a vote to remove a reviewer (see the section below about conflict resolution and voting). If the vote passes, a maintainer creates a pull request that modifies [`OWNERS.md`](./OWNERS.md) accordingly. After approval by another maintainer, the pull request can be merged, and the corresponding removal from the GitHub team can be made.
+
# Conflict resolution and voting
-In general, we prefer that technical issues and maintainer membership are amicably worked out between the persons involved. If a dispute cannot be decided independently, the sponsors and maintainers can be called in to decide an issue. If the sponsors and maintainers themselves cannot decide an issue, the issue will be resolved by voting. The voting process is a simple majority in which each sponsor receives two votes and each maintainer receives one vote.
+In general, we prefer that technical issues and membership are amicably worked out between the persons involved. If a dispute cannot be decided independently, the sponsors and maintainers can be called in to decide an issue. If the sponsors and maintainers themselves cannot decide an issue, the issue will be resolved by voting.
+
+In all cases in this document where voting is mentioned, the voting process is a simple majority in which each sponsor receives two votes and each maintainer receives one vote. If such a majority is reached, the vote is said to have _passed_.
# Adding new projects to the Backstage GitHub organization
diff --git a/LICENSE b/LICENSE
index 224306fe45..72ea3a85b0 100644
--- a/LICENSE
+++ b/LICENSE
@@ -186,7 +186,7 @@ APPENDIX: How to apply the Apache License to your work.
same "printed page" as the copyright notice for easier
identification within third-party archives.
-Copyright 2020 Spotify AB
+Copyright 2020 The Backstage Authors
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/NOTICE b/NOTICE
index 0967e9bd8d..38e5cdef85 100644
--- a/NOTICE
+++ b/NOTICE
@@ -1,5 +1,5 @@
Backstage
-Copyright 2020 Spotify AB
+Copyright 2020 The Backstage Authors
Portions of this software were developed by third-party software vendors:
- Tech Radar Plugin (https://opensource.zalando.com/tech-radar/), Copyright (c) 2017 Zalando SE
diff --git a/OWNERS.md b/OWNERS.md
index cdbc234183..6615046540 100644
--- a/OWNERS.md
+++ b/OWNERS.md
@@ -16,6 +16,18 @@ This page lists all active sponsors and maintainers.
- Ben Lambert ([benjdlambert](https://github.com/benjdlambert)) (Discord: @blam)
- Johan Haals ([jhaals](https://github.com/jhaals)) (Discord: @jhaals)
+# Reviewers
+
+See [`GOVERNANCE.md`](./GOVERNANCE.md) for details about how the reviewers team
+works.
+
+- Patrik Oldsberg ([rugvip](https://github.com/rugvip)) (Discord: @Rugvip)
+- Fredrik Adelöw ([freben](https://github.com/freben)) (Discord: @freben)
+- Ben Lambert ([benjdlambert](https://github.com/benjdlambert)) (Discord: @blam)
+- Johan Haals ([jhaals](https://github.com/jhaals)) (Discord: @jhaals)
+- Himanshu Mishra ([OrkoHunter](https://github.com/OrkoHunter)) (Discord: @OrkoHunter)
+- Tim Hansen ([timbonicus](https://github.com/timbonicus)) (Discord: @timbonicus)
+
# Emeritus maintainers
- Stefan Ålund ([stefanalund](https://github.com/stefanalund)) (Discord: @stalund)
diff --git a/app-config.yaml b/app-config.yaml
index c951594677..e3ab12587e 100644
--- a/app-config.yaml
+++ b/app-config.yaml
@@ -72,7 +72,7 @@ proxy:
'/pagerduty':
target: https://api.pagerduty.com
headers:
- Authorization: ${PAGERDUTY_TOKEN}
+ Authorization: Token token=${PAGERDUTY_TOKEN}
'/buildkite/api':
target: https://api.buildkite.com/v2/
diff --git a/contrib/docs/tutorials/quickstart-app-plugin/ExampleComponent.md b/contrib/docs/tutorials/quickstart-app-plugin/ExampleComponent.md
index 77b820d921..18734682d5 100644
--- a/contrib/docs/tutorials/quickstart-app-plugin/ExampleComponent.md
+++ b/contrib/docs/tutorials/quickstart-app-plugin/ExampleComponent.md
@@ -16,9 +16,9 @@ import {
identityApiRef,
useApi,
} from '@backstage/core';
-import ExampleFetchComponent from '../ExampleFetchComponent';
+import { ExampleFetchComponent } from '../ExampleFetchComponent';
-const ExampleComponent = () => {
+export const ExampleComponent = () => {
const identityApi = useApi(identityApiRef);
const userId = identityApi.getUserId();
const profile = identityApi.getProfile();
@@ -52,6 +52,4 @@ const ExampleComponent = () => {
);
};
-
-export default ExampleComponent;
```
diff --git a/contrib/docs/tutorials/quickstart-app-plugin/ExampleFetchComponent.md b/contrib/docs/tutorials/quickstart-app-plugin/ExampleFetchComponent.md
index 6992d05866..262330119e 100644
--- a/contrib/docs/tutorials/quickstart-app-plugin/ExampleFetchComponent.md
+++ b/contrib/docs/tutorials/quickstart-app-plugin/ExampleFetchComponent.md
@@ -76,7 +76,7 @@ export const DenseTable = ({ viewer }: DenseTableProps) => {
);
};
-const ExampleFetchComponent = () => {
+export const ExampleFetchComponent = () => {
const auth = useApi(githubAuthApiRef);
const { value, loading, error } = useAsync(async (): Promise => {
@@ -106,6 +106,4 @@ const ExampleFetchComponent = () => {
/>
);
};
-
-export default ExampleFetchComponent;
```
diff --git a/cypress/src/integration/catalog.ts b/cypress/src/integration/catalog.ts
index 4016c15470..1db2eb8a13 100644
--- a/cypress/src/integration/catalog.ts
+++ b/cypress/src/integration/catalog.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/cypress/src/integration/integrations.ts b/cypress/src/integration/integrations.ts
index 5ee077502a..3e3a10aca2 100644
--- a/cypress/src/integration/integrations.ts
+++ b/cypress/src/integration/integrations.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/cypress/src/plugins/index.ts b/cypress/src/plugins/index.ts
index b90c276d71..4c8a35f0d1 100644
--- a/cypress/src/plugins/index.ts
+++ b/cypress/src/plugins/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/cypress/src/support/index.ts b/cypress/src/support/index.ts
index e17081831e..ebfcb04d03 100644
--- a/cypress/src/support/index.ts
+++ b/cypress/src/support/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/cypress/src/types.d.ts b/cypress/src/types.d.ts
index 361aaba9f3..fff4fe29e4 100644
--- a/cypress/src/types.d.ts
+++ b/cypress/src/types.d.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/docs/auth/identity-resolver.md b/docs/auth/identity-resolver.md
new file mode 100644
index 0000000000..814ff63729
--- /dev/null
+++ b/docs/auth/identity-resolver.md
@@ -0,0 +1,150 @@
+---
+id: identity-resolver
+title: Identity resolver
+description: Identity resolvers of Backstage users after they sign-in
+---
+
+This guide explains how the identity of a Backstage user is stored inside their
+Backstage Identity Token and how you can customize the Sign-In resolvers to
+include identity and group membership information of the user from other
+external systems. This ultimately helps with determining the ownership of a
+Backstage entity by a user. The ideas here were originally proposed in the RFC
+[#4089](https://github.com/backstage/backstage/issues/4089).
+
+When a user signs in to Backstage, inside the `claims` field of their Backstage
+Token (which are standard JWT tokens) a special `ent` claim is set. `ent`
+contains a list of
+[entity references](../features/software-catalog/references.md), each of which
+denotes an identity or a membership that is relevant to the user. There is no
+guarantee that these correspond to actual existing catalog entities.
+
+Let's take an example sign-in resolver for the Google auth provider and explore
+how the `ent` field inside `claims` can be set.
+
+Inside your `packages/backend/src/plugins/auth.ts` file, you can provide custom
+sign-in resolvers and set them for any of the Authentication providers inside
+`providerFactories` of the `createRouter` imported from the
+`@backstage/plugin-auth-backend` plugin.
+
+```ts
+export default async function createPlugin({
+ ...
+}: PluginEnvironment): Promise {
+ return await createRouter({
+ ...
+ providerFactories: {
+ google: createGoogleProvider({
+ signIn: {
+ resolver: async ({ profile: { email } }, ctx) => {
+ // Call a custom validator function that checks that the email is
+ // valid and on our own company's domain, and throws an Error if it
+ // isn't
+ validateEmail(email);
+
+ // List of entity references that denote the identity and
+ // membership of the user
+ const ent = [];
+
+ // Let's use the username in the email ID as the user's default
+ // unique identifier inside Backstage.
+ const [id] = email.split('@');
+ ent.push(`User:default/${id}`)
+
+ // Let's call the internal LDAP provider to get a list of groups
+ // that the user belongs to, and add those to the list as well
+ const ldapGroups = await getLdapGroups(email);
+ ldapGroups.forEach(group => ent.push(`Group:default/${group}`))
+
+ // Issue the token containing the entity claims
+ const token = await ctx.tokenIssuer.issueToken({
+ claims: { sub: id, ent },
+ });
+ return { id, token };
+ },
+ },
+ }),
+ },
+ });
+}
+```
+
+As you can see, the generated Backstage Token now contains all the claims about
+the identity and membership of the user. Once the sign-in process is complete,
+and we need to find out if a user owns an Entity in the Software Catalog, these
+`ent` claims can be used to determine the ownership.
+
+According to the RFC, the definition of the ownership of an entity E, for a user
+U, is as follows:
+
+- Get all the `ownedBy` relations of E, and call them O
+- Get all the claims of the user U and call them C
+- If any C matches any O, return `true`
+- Get all Group entities that U is a member of, using the regular
+ `memberOf`/`hasMember` relation mechanism, and call them G
+- If any G matches any O, return `true`
+- Otherwise, return `false`
+
+## Default sign-in resolvers
+
+Of course you don't have to customize the sign-in resolver if you don't need to.
+The Auth backend plugin comes with a set of default sign-in resolvers which you
+can use. For example - the Google provider has a default email-based sign-in
+resolver, which will search the catalog for a single user entity that has a
+matching `google.com/email` annotation.
+
+It can be enabled like this
+
+```tsx
+// File: packages/backend/src/plugins/auth.ts
+import { googleEmailSignInResolver } from '@backstage/plugin-auth-backend';
+
+export default async function createPlugin({
+ ...
+}: PluginEnvironment): Promise {
+ return await createRouter({
+ ...
+ providerFactories: {
+ google: createGoogleProvider({
+ signIn: {
+ resolver: googleEmailSignInResolver
+ }
+...
+```
+
+## AuthHandler
+
+Similar to a custom sign-in resolver, you can also write a custom auth handler
+function which is used to verify and convert the auth response into the profile
+that will be presented to the user. This is where you can customize things like
+display name and profile picture.
+
+This is also the place where you can do authorization and validation of the user
+and throw errors if the user should not be allowed access in Backstage.
+
+```tsx
+// File: packages/backend/src/plugins/auth.ts
+export default async function createPlugin({
+ ...
+}: PluginEnvironment): Promise {
+ return await createRouter({
+ ...
+ providerFactories: {
+ google: createGoogleProvider({
+ authHandler: async ({
+ fullProfile // Type: passport.Profile,
+ idToken // Type: (Optional) string,
+ }) => {
+ // Custom validation code goes here
+ return {
+ profile: {
+ email,
+ picture,
+ displayName,
+ }
+ };
+ }
+ })
+ }
+ })
+}
+```
diff --git a/docs/conf/defining.md b/docs/conf/defining.md
index 34b9b11977..f13beb9f77 100644
--- a/docs/conf/defining.md
+++ b/docs/conf/defining.md
@@ -93,6 +93,21 @@ declare the visibility of a leaf node of `type: "string"`.
| `backend` | (Default) Only in backend |
| `secret` | Only in backend and may be excluded from logs for security reasons |
+You can set visibility with an `@visibility` comment in the `Config` Typescript
+interface.
+
+```ts
+export interface Config {
+ app: {
+ /**
+ * Frontend root URL
+ * @visibility frontend
+ */
+ baseUrl: string;
+ };
+}
+```
+
## Validation
Schemas can be validated using the `backstage-cli config:check` command. If you
diff --git a/docs/features/software-catalog/index.md b/docs/features/software-catalog/index.md
index 70541b85db..2189b7d799 100644
--- a/docs/features/software-catalog/index.md
+++ b/docs/features/software-catalog/index.md
@@ -34,9 +34,8 @@ More specifically, the Service Catalog enables two main use-cases:
## Getting Started
The Software Catalog is available to browse at `/catalog`. If you've followed
-[Installing in your Backstage App](./installation.md) in your separate App or
-[Getting Started with Backstage](../../getting-started) for this repo, you
-should be able to browse the catalog at `http://localhost:3000`.
+[Getting Started with Backstage](../../getting-started), you should be able to
+browse the catalog at `http://localhost:3000`.

diff --git a/docs/features/software-catalog/installation.md b/docs/features/software-catalog/installation.md
deleted file mode 100644
index 0b622fb093..0000000000
--- a/docs/features/software-catalog/installation.md
+++ /dev/null
@@ -1,177 +0,0 @@
----
-id: installation
-title: Installing in your Backstage App
-description: Documentation on How to install Backstage Plugin
----
-
-The catalog plugin comes in two packages, `@backstage/plugin-catalog` and
-`@backstage/plugin-catalog-backend`. Each has their own installation steps,
-outlined below.
-
-## Installing @backstage/plugin-catalog
-
-> **Note that if you used `npx @backstage/create-app`, the plugin is already
-> installed and you can skip to
-> [adding entries to the catalog](#adding-entries-to-the-catalog)**
-
-The catalog frontend plugin should be installed in your `app` package, which is
-created as a part of `@backstage/create-app`. To install the package, run:
-
-```bash
-# From your Backstage root directory
-cd packages/app
-yarn add @backstage/plugin-catalog
-```
-
-### Adding the Plugin to your `packages/app`
-
-Add the two pages that the catalog plugin provides to your app. You can choose
-any name for these routes, but we recommend the following:
-
-```tsx
-// packages/app/src/App.tsx
-import {
- catalogPlugin,
- CatalogIndexPage,
- CatalogEntityPage,
-} from '@backstage/plugin-catalog';
-
-// Add to the top-level routes, directly within
-} />
-}>
- {/*
- This is the root of the custom entity pages for your app, refer to the example app
- in the main repo or the output of @backstage/create-app for an example
- */}
-
-
-```
-
-The catalog plugin also has one external route that needs to be bound for it to
-function: the `createComponent` route which should link to the page where the
-user can create components. In a typical setup the create component route will
-be linked to the Scaffolder plugin's template index page:
-
-```ts
-// packages/app/src/App.tsx
-import { catalogPlugin } from '@backstage/plugin-catalog';
-import { scaffolderPlugin } from '@backstage/plugin-scaffolder';
-
-const app = createApp({
- // ...
- bindRoutes({ bind }) {
- bind(catalogPlugin.externalRoutes, {
- createComponent: scaffolderPlugin.routes.root,
- });
- },
-});
-```
-
-You may also want to add a link to the catalog index page to your sidebar:
-
-```tsx
-// packages/app/src/components/Root.tsx
-import HomeIcon from '@material-ui/icons/Home';
-
-// Somewhere within the
-;
-```
-
-This is all that is needed for the frontend part of the Catalog plugin to work!
-
-## Gotchas that we will fix
-
-Since the catalog plugin currently ships with a sentry plugin `InfoCard`
-installed by default, you'll need to set `sentry.organization` in your
-`app-config.yaml`. For example:
-
-```yaml
-sentry:
- organization: Acme Corporation
-```
-
-If you've created an app with an older version of `@backstage/create-app` or
-`@backstage/cli create-app`, be sure to remove the Welcome plugin from the app,
-as that will conflict with the catalog routes.
-
-## Installing @backstage/plugin-catalog-backend
-
-> **Note that if you used `npx @backstage/create-app`, the plugin is already
-> installed and you can skip to
-> [adding entries to the catalog](#adding-entries-to-the-catalog)**
-
-The catalog backend should be installed in your `backend` package, which is
-created as a part of `@backstage/create-app`. To install the package, run:
-
-```bash
-# From your Backstage root directory
-cd packages/backend
-yarn add @backstage/plugin-catalog-backend
-```
-
-### Adding the Plugin to your `packages/backend`
-
-You'll need to add the plugin to the `backend`'s router. You can do this by
-creating a file called `packages/backend/src/plugins/catalog.ts` with contents
-matching
-[catalog.ts in the create-app template](https://github.com/backstage/backstage/blob/master/packages/create-app/templates/default-app/packages/backend/src/plugins/catalog.ts).
-
-Once the `catalog.ts` router setup file is in place, add the router to
-`packages/backend/src/index.ts`:
-
-```ts
-import catalog from './plugins/catalog';
-
-const catalogEnv = useHotMemoize(module, () => createEnv('catalog'));
-
-const apiRouter = Router();
-/** several different routers */
-apiRouter.use('/catalog', await catalog(catalogEnv));
-```
-
-### Adding Entries to the Catalog
-
-At this point the catalog backend is installed in your backend package, but you
-will not have any entities loaded.
-
-To get up and running and try out some templates quickly, you can add some of
-our example templates through static configuration. Add the following to the
-`catalog.locations` section in your `app-config.yaml`:
-
-```yaml
-catalog:
- locations:
- # Backstage Example Components
- - type: url
- target: https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/components/artist-lookup-component.yaml
- - type: url
- target: https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/components/playback-order-component.yaml
- - type: url
- target: https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/components/podcast-api-component.yaml
- - type: url
- target: https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/components/queue-proxy-component.yaml
- - type: url
- target: https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/components/searcher-component.yaml
- - type: url
- target: https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/components/playback-lib-component.yaml
- - type: url
- target: https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/components/www-artist-component.yaml
- - type: url
- target: https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/components/shuffle-api-component.yaml
-```
-
-### Running the Backend
-
-Finally, start up Backstage with the new configuration:
-
-```bash
-# Run from the root to start both backend and frontend
-yarn dev
-
-# Alternatively, run only the backend from its own package
-cd packages/backend
-yarn start
-```
-
-If you've also set up the frontend plugin, you should be ready to go browse the
-catalog at [localhost:3000](http://localhost:3000) now!
diff --git a/docs/features/software-templates/configuration.md b/docs/features/software-templates/configuration.md
new file mode 100644
index 0000000000..cdd8166889
--- /dev/null
+++ b/docs/features/software-templates/configuration.md
@@ -0,0 +1,52 @@
+---
+id: configuration
+title: Software Template Configuration
+sidebar_label: Configuration
+description: Configuration options for Backstage Software Templates
+---
+
+Backstage software templates create source code, so your Backstage application
+needs to be set up to allow repository creation.
+
+This is done in your `app-config.yaml` by adding
+[Backstage integrations](https://backstage.io/docs/integrations/) for the
+appropriate source code repository for your organization.
+
+> Note: Integrations may already be set up as part of your `app-config.yaml`.
+
+The next step is to add
+[add templates](http://backstage.io/docs/features/software-templates/adding-templates)
+to your Backstage app.
+
+### GitHub
+
+For GitHub, you can configure who can see the new repositories that are created
+by specifying `visibility` option. Valid options are `public`, `private` and
+`internal`. The `internal` option is for GitHub Enterprise clients, which means
+public within the enterprise.
+
+```yaml
+scaffolder:
+ github:
+ visibility: public # or 'internal' or 'private'
+```
+
+### Disabling Docker in Docker situation (Optional)
+
+Software Templates use
+[Cookiecutter](https://github.com/cookiecutter/cookiecutter) as a templating
+library. By default it will use the
+[scaffolder-backend/Cookiecutter](https://github.com/backstage/backstage/blob/master/plugins/scaffolder-backend/scripts/Cookiecutter.dockerfile)
+docker image.
+
+If you are running Backstage from a Docker container and you want to avoid
+calling a container inside a container, you can set up Cookiecutter in your own
+image, this will use the local installation instead.
+
+You can do so by including the following lines in the last step of your
+`Dockerfile`:
+
+```Dockerfile
+RUN apt-get update && apt-get install -y python3 python3-pip
+RUN pip3 install cookiecutter
+```
diff --git a/docs/features/software-templates/index.md b/docs/features/software-templates/index.md
index 12ce6e3ed3..1434d62a29 100644
--- a/docs/features/software-templates/index.md
+++ b/docs/features/software-templates/index.md
@@ -17,10 +17,8 @@ locations like GitHub or GitLab.
### Getting Started
-> Be sure to have covered [Installing in your Backstage App](./installation.md)
-> for your separate App or
-> [Getting Started with Backstage](../../getting-started) for this repo before
-> proceeding.
+> Be sure to have covered
+> [Getting Started with Backstage](../../getting-started) before proceeding.
The Software Templates are available under `/create`. For local development you
should be able to reach them at `http://localhost:3000/create`.
diff --git a/docs/features/software-templates/installation.md b/docs/features/software-templates/installation.md
deleted file mode 100644
index d5643ca955..0000000000
--- a/docs/features/software-templates/installation.md
+++ /dev/null
@@ -1,280 +0,0 @@
----
-id: installation
-title: Installing in your Backstage App
-description: Documentation on How to install Backstage App
----
-
-The scaffolder plugin comes in two packages, `@backstage/plugin-scaffolder` and
-`@backstage/plugin-scaffolder-backend`. Each has their own installation steps,
-outlined below.
-
-The Scaffolder plugin also depends on the Software Catalog. Instructions for how
-to set that up can be found [here](../software-catalog/installation.md).
-
-## Installing @backstage/plugin-scaffolder
-
-> **Note that if you used `npx @backstage/create-app`, the plugin may already be
-> present**
-
-The scaffolder frontend plugin should be installed in your `app` package, which
-is created as a part of `@backstage/create-app`. To install the package, run:
-
-```bash
-# From your Backstage root directory
-cd packages/app
-yarn add @backstage/plugin-scaffolder
-```
-
-### Adding the Plugin to your `packages/app`
-
-Add the root page that the Scaffolder plugin provides to your app. You can
-choose any path for the route, but we recommend the following:
-
-```tsx
-import { ScaffolderPage } from '@backstage/plugin-scaffolder';
-
-// Add to the top-level routes, directly within
-} />;
-```
-
-You may also want to add a link to the template index page to your sidebar:
-
-```tsx
-import CreateComponentIcon from '@material-ui/icons/AddCircleOutline';
-
-// Somewhere within the
-;
-```
-
-This is all that is needed for the frontend part of the Scaffolder plugin to
-work!
-
-## Installing @backstage/plugin-scaffolder-backend
-
-> **Note that if you used `npx @backstage/create-app`, the plugin may already be
-> present**
-
-The scaffolder backend should be installed in your `backend` package, which is
-created as a part of `@backstage/create-app`. To install the package, run:
-
-```bash
-# From your Backstage root directory
-cd packages/backend
-yarn add @backstage/plugin-scaffolder-backend
-```
-
-### Adding the Plugin to your `packages/backend`
-
-You'll need to add the plugin to the `backend`'s router. You can do this by
-creating a file called `packages/backend/src/plugins/scaffolder.ts` with the
-following contents to get you up and running quickly.
-
-```ts
-import {
- DockerContainerRunner,
- SingleHostDiscovery,
-} from '@backstage/backend-common';
-import {
- CookieCutter,
- createRouter,
- Preparers,
- Publishers,
- CreateReactAppTemplater,
- Templaters,
-} from '@backstage/plugin-scaffolder-backend';
-import type { PluginEnvironment } from '../types';
-import Docker from 'dockerode';
-import { CatalogClient } from '@backstage/catalog-client';
-
-export default async function createPlugin({
- logger,
- config,
- database,
- reader,
-}: PluginEnvironment) {
- const dockerClient = new Docker();
- const containerRunner = new DockerContainerRunner({ dockerClient });
-
- const cookiecutterTemplater = new CookieCutter({ containerRunner });
- const craTemplater = new CreateReactAppTemplater({ containerRunner });
- const templaters = new Templaters();
-
- templaters.register('cookiecutter', cookiecutterTemplater);
- templaters.register('cra', craTemplater);
-
- const preparers = await Preparers.fromConfig(config, { logger });
- const publishers = await Publishers.fromConfig(config, { logger });
-
- const discovery = SingleHostDiscovery.fromConfig(config);
- const catalogClient = new CatalogClient({ discoveryApi: discovery });
-
- return await createRouter({
- preparers,
- templaters,
- publishers,
- logger,
- config,
- database,
- catalogClient,
- reader,
- });
-}
-```
-
-Once the `scaffolder.ts` router setup file is in place, add the router to
-`packages/backend/src/index.ts`:
-
-```ts
-import scaffolder from './plugins/scaffolder';
-
-const scaffolderEnv = useHotMemoize(module, () => createEnv('scaffolder'));
-
-const apiRouter = Router();
-/* several router .use calls */
-
-/* add this line */
-apiRouter.use('/scaffolder', await scaffolder(scaffolderEnv));
-```
-
-### Adding Templates
-
-At this point the scaffolder backend is installed in your backend package, but
-you will not have any templates available to use. These need to be added to the
-software catalog, as they are represented as entities of kind
-[Template](../software-catalog/descriptor-format.md#kind-template). You can find
-out more about adding templates [here](./adding-templates.md).
-
-To get up and running and try out some templates quickly, you can add some of
-our example templates through static configuration. Add the following to the
-`catalog.locations` section in your `app-config.yaml`:
-
-```yaml
-catalog:
- locations:
- # Backstage Example Templates
- - type: url
- target: https://github.com/backstage/backstage/blob/master/plugins/scaffolder-backend/sample-templates/react-ssr-template/template.yaml
- - type: url
- target: https://github.com/backstage/backstage/blob/master/plugins/scaffolder-backend/sample-templates/springboot-grpc-template/template.yaml
- - type: url
- target: https://github.com/backstage/backstage/blob/master/plugins/scaffolder-backend/sample-templates/create-react-app/template.yaml
- - type: url
- target: https://github.com/spotify/cookiecutter-golang/blob/master/template.yaml
-```
-
-### Runtime Dependencies / Configuration
-
-For the scaffolder backend plugin to function, you'll need to setup the
-integrations config in your `app-config.yaml`.
-
-You can find help for different providers below.
-
-> Note: Some of this configuration may already be set up as part of your
-> `app-config.yaml`. We're moving away from the duplicated config for
-> authentication in the `scaffolder` section and using `integrations` instead.
-
-#### GitHub
-
-The GitHub access token is retrieved from environment variables via the config.
-The config file needs to specify what environment variable the token is
-retrieved from. Your config should have the following objects.
-
-You can configure who can see the new repositories that the scaffolder creates
-by specifying `visibility` option. Valid options are `public`, `private` and
-`internal`. The `internal` option is for GitHub Enterprise clients, which means
-public within the enterprise.
-
-```yaml
-integrations:
- github:
- - host: github.com
- token: ${GITHUB_TOKEN}
-
-scaffolder:
- github:
- visibility: public # or 'internal' or 'private'
-```
-
-#### GitLab
-
-For GitLab, we currently support the configuration of the GitLab publisher and
-allows to configure the private access token and the base URL of a GitLab
-instance:
-
-```yaml
-integrations:
- gitlab:
- - host: gitlab.com
- token: ${GITLAB_TOKEN}
-```
-
-#### Bitbucket
-
-For Bitbucket there are two authentication methods supported. Either `token` or
-a combination of `appPassword` and `username`. It looks like either of the
-following:
-
-```yaml
-integrations:
- bitbucket:
- - host: bitbucket.org
- token: ${BITBUCKET_TOKEN}
-```
-
-or
-
-```yaml
-integrations:
- bitbucket:
- - host: bitbucket.org
- appPassword: ${BITBUCKET_APP_PASSWORD}
- username: ${BITBUCKET_USERNAME}
-```
-
-#### Azure DevOps
-
-For Azure DevOps we support both the preparer and publisher stage with the
-configuration of a private access token (PAT). For the publisher it's also
-required to define the base URL for the client to connect to the service. This
-will hopefully support on-prem installations as well but that has not been
-verified.
-
-```yaml
-integrations:
- azure:
- - host: dev.azure.com
- token: ${AZURE_TOKEN}
-```
-
-### Running the Backend
-
-Finally, make sure you have a local Docker daemon running, and start up the
-backend with the new configuration:
-
-```bash
-cd packages/backend
-GITHUB_TOKEN= yarn start
-```
-
-If you've also set up the frontend plugin, so you should be ready to go browse
-the templates at [localhost:3000/create](http://localhost:3000/create) now!
-
-### Disabling Docker in Docker situation (Optional)
-
-Software Templates use
-[Cookiecutter](https://github.com/cookiecutter/cookiecutter) as templating
-library. By default it will use the
-[spotify/backstage-cookiecutter](https://github.com/backstage/backstage/blob/37e35b910afc7d1270855aed0ec4718aba366c91/plugins/scaffolder-backend/scripts/Cookiecutter.dockerfile)
-docker image.
-
-If you are running Backstage from a Docker container and you want to avoid
-calling a container inside a container, you can set up Cookiecutter in your own
-image, this will use the local installation instead.
-
-You can do so by including the following lines in the last step of your
-`Dockerfile`:
-
-```Dockerfile
-RUN apt-get update && apt-get install -y python3 python3-pip
-RUN pip3 install cookiecutter
-```
diff --git a/docs/features/techdocs/creating-and-publishing.md b/docs/features/techdocs/creating-and-publishing.md
index b9340330a8..3fdc942ac4 100644
--- a/docs/features/techdocs/creating-and-publishing.md
+++ b/docs/features/techdocs/creating-and-publishing.md
@@ -28,10 +28,10 @@ scratch.
### Use the documentation template
Your working Backstage instance should by default have a documentation template
-added. If not, follow these
-[instructions](../software-templates/installation.md#adding-templates) to add
-the documentation template. The template creates a component with only TechDocs
-configuration and default markdown files as below mentioned in manual
+added. If not, copy the catalog locations from the
+[create-app template](https://github.com/backstage/backstage/blob/master/packages/create-app/templates/default-app/app-config.yaml.hbs)
+to add the documentation template. The template creates a component with only
+TechDocs configuration and default markdown files as below mentioned in manual
documentation setup, and is otherwise empty.

diff --git a/docs/features/techdocs/using-cloud-storage.md b/docs/features/techdocs/using-cloud-storage.md
index 62ee4867c8..119629915e 100644
--- a/docs/features/techdocs/using-cloud-storage.md
+++ b/docs/features/techdocs/using-cloud-storage.md
@@ -370,7 +370,7 @@ techdocs:
openStackSwift:
containerName: 'name-of-techdocs-storage-bucket'
credentials:
- userName: ${OPENSTACK_SWIFT_STORAGE_USERNAME}
+ username: ${OPENSTACK_SWIFT_STORAGE_USERNAME}
password: ${OPENSTACK_SWIFT_STORAGE_PASSWORD}
authUrl: ${OPENSTACK_SWIFT_STORAGE_AUTH_URL}
keystoneAuthVersion: ${OPENSTACK_SWIFT_STORAGE_AUTH_VERSION}
diff --git a/docs/support/project-structure.md b/docs/getting-started/project-structure.md
similarity index 100%
rename from docs/support/project-structure.md
rename to docs/getting-started/project-structure.md
diff --git a/docs/integrations/azure/locations.md b/docs/integrations/azure/locations.md
index 163674f00a..3b3e3dd5ed 100644
--- a/docs/integrations/azure/locations.md
+++ b/docs/integrations/azure/locations.md
@@ -6,8 +6,8 @@ sidebar_label: Locations
description: Integrating source code stored in Azure DevOps into the Backstage catalog
---
-The Azure integration supports loading catalog entities from Azure DevOps.
-Entities can be added to
+The Azure DevOps integration supports loading catalog entities from Azure
+DevOps. Entities can be added to
[static catalog configuration](../../features/software-catalog/configuration.md),
or registered with the
[catalog-import](https://github.com/backstage/backstage/tree/master/plugins/catalog-import)
diff --git a/docs/integrations/azure/org.md b/docs/integrations/azure/org.md
new file mode 100644
index 0000000000..c359960f4d
--- /dev/null
+++ b/docs/integrations/azure/org.md
@@ -0,0 +1,14 @@
+---
+id: org
+title: Microsoft Azure Active Directory Organizational Data
+sidebar_label: Org Data
+# prettier-ignore
+description: Importing users and groups from a Microsoft Azure Active Directory into Backstage
+---
+
+The Backstage catalog can be set up to ingest organizational data - users and
+teams - directly from an tenant in Microsoft Azure Active Directory via the
+Microsoft Graph API.
+
+More details on this are available in the
+[README of the `@backstage/plugin-catalog-backend-module-msgraph` package](https://github.com/backstage/backstage/blob/master/plugins/catalog-backend-module-msgraph/README.md).
diff --git a/docs/glossary.md b/docs/overview/glossary.md
similarity index 96%
rename from docs/glossary.md
rename to docs/overview/glossary.md
index 745cf5f95b..97a2823365 100644
--- a/docs/glossary.md
+++ b/docs/overview/glossary.md
@@ -11,7 +11,7 @@ terminology below for clarity and consistency when discussing Backstage.
### Authentication Glossary
-This [page](./auth/glossary.md) directs to the terms and phrases related to
+This [page](../auth/glossary.md) directs to the terms and phrases related to
authentication and identity section of Backstage.
### Backstage User Profiles
diff --git a/docs/support/support.md b/docs/overview/support.md
similarity index 100%
rename from docs/support/support.md
rename to docs/overview/support.md
diff --git a/docs/plugins/backend-plugin.md b/docs/plugins/backend-plugin.md
index 7a57cefa9c..1d728b76aa 100644
--- a/docs/plugins/backend-plugin.md
+++ b/docs/plugins/backend-plugin.md
@@ -99,7 +99,7 @@ import carmen from './plugins/carmen';
async function main() {
// ...
const carmenEnv = useHotMemoize(module, () => createEnv('carmen'));
- apiRouter.use('/carmen', await carmen(badgesEnv));
+ apiRouter.use('/carmen', await carmen(carmenEnv));
```
After you start the backend (e.g. using `yarn start-backend` from the repo
diff --git a/docs/plugins/create-a-plugin.md b/docs/plugins/create-a-plugin.md
index 4ccd48f17e..c35f4b91fa 100644
--- a/docs/plugins/create-a-plugin.md
+++ b/docs/plugins/create-a-plugin.md
@@ -22,9 +22,9 @@ yarn create-plugin
This will create a new Backstage Plugin based on the ID that was provided. It
will be built and added to the Backstage App automatically.
-> If `yarn start` is already running you should be able to see the default page
-> for your new plugin directly by navigating to
-> `http://localhost:3000/my-plugin`.
+> If the Backstage App is already running (with `yarn start` or `yarn dev`) you
+> should be able to see the default page for your new plugin directly by
+> navigating to `http://localhost:3000/my-plugin`.

@@ -32,7 +32,7 @@ You can also serve the plugin in isolation by running `yarn start` in the plugin
directory. Or by using the yarn workspace command, for example:
```bash
-yarn workspace @backstage/plugin-welcome start # Also supports --check
+yarn workspace @backstage/my-plugin start # Also supports --check
```
This method of serving the plugin provides quicker iteration speed and a faster
diff --git a/docs/plugins/github-apps.md b/docs/plugins/github-apps.md
index 87d23b45d5..805e321093 100644
--- a/docs/plugins/github-apps.md
+++ b/docs/plugins/github-apps.md
@@ -43,6 +43,10 @@ root of the project which you can then use as an `include` in your
`app-config.yaml`. You can go ahead and
[skip ahead](#including-in-integrations-config) if you've already got an app.
+Note that the created app will have a webhook that is disabled by default and
+points to `smee.io`, which is intended for local development. There's also
+currently no part of Backstage that makes use of the webhook.
+
### GitHub Enterprise
You have to create the GitHub Application manually using these
@@ -84,3 +88,12 @@ integrations:
apps:
- $include: example-backstage-app-credentials.yaml
```
+
+### Permissions for pull requests
+
+These are the minimum permissions required for creating a pull request with
+Backstage software templates:
+
+- Read and Write permissions for `Contents`.
+- Read and write permissions for `Pull Requests` and `Issues`.
+- Read permissions on `Metadata`.
diff --git a/docs/prettier.config.js b/docs/prettier.config.js
index 6fab539fb2..4285cde950 100644
--- a/docs/prettier.config.js
+++ b/docs/prettier.config.js
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/docs/tutorials/configuring-plugin-databases.md b/docs/tutorials/configuring-plugin-databases.md
new file mode 100644
index 0000000000..5c5f0ffb68
--- /dev/null
+++ b/docs/tutorials/configuring-plugin-databases.md
@@ -0,0 +1,204 @@
+---
+id: configuring-plugin-databases
+title: Configuring Plugin Databases
+# prettier-ignore
+description: Guide on how to configure Backstage databases.
+---
+
+This guide covers a variety of production persistence use cases which are
+supported out of the box by Backstage. The database manager allows the developer
+to set the client and database connection details on a per plugin basis in
+addition to the base client and connection configuration. This means that you
+can use a SQLite 3 in-memory database for a specific plugin whilst using
+PostgreSQL for everything else and so on.
+
+By default, Backstage uses automatically created databases for each plugin whose
+names follow the `backstage_plugin_` pattern, e.g.
+`backstage_plugin_auth`. You can configure a different database name prefix for
+use cases where you have multiple deployments running on a shared database
+instance or cluster.
+
+With infrastructure defined as code or data (Terraform, AWS CloudFormation,
+etc.), you may have database credentials which lack permissions to create new
+databases or you do not have control over the database names. In these
+instances, you can set the database name and connection information on a per
+plugin basis as mentioned earlier.
+
+Backstage supports all of these use cases with the `DatabaseManager` provided by
+`@backstage/backend-common`. We will now cover how to use and configure
+Backstage's databases.
+
+## Prerequisites
+
+### Dependencies
+
+Please ensure the appropriate database drivers are installed in your `backend`
+package. If you intend to use both `postgres` and `sqlite3`, you can install
+both of them.
+
+```sh
+cd packages/backend
+
+# install pg if you need postgres
+yarn add pg
+
+# install sqlite3 if you intend to set it as the client
+yarn add sqlite3
+```
+
+From an operational perspective, you only need to install drivers for clients
+that are actively used.
+
+### Database Manager
+
+Existing Backstage instances should be updated to use `DatabaseManager` from
+`@backstage/backend-common` in your `packages/backend/src/index.ts` file, the
+`SingleConnectionDatabaseManager` has been deprecated. Import the manager and
+update the references as shown below if this is not the case:
+
+```diff
+import {
+- SingleConnectionDatabaseManager,
++ DatabaseManager,
+} from '@backstage/backend-common';
+
+// ...
+
+function makeCreateEnv(config: Config) {
+ // ...
+- const databaseManager = SingleConnectionDatabaseManager.fromConfig(config);
++ const databaseManager = DatabaseManager.fromConfig(config);
+ // ...
+}
+```
+
+## Configuration
+
+You should set the base database client and connection information in your
+`app-config.yaml` (or equivalent) file. The base client and configuration is
+used as the default which is extended for each plugin with the same or unset
+client type. If a client type is specified for a specific plugin which does not
+match the base client, the configuration set for the plugin will be used as is
+without extending the base configuration.
+
+Client type and configuration for plugins need to be defined under
+**`backend.database.plugin.`**. As an example, `catalog` is the
+`pluginId` for the catalog plugin and any configuration defined under that block
+is specific to that plugin. We will now explore more detailed example
+configurations below.
+
+### Minimal In-Memory Configuration
+
+In the example below, we are using `sqlite3` in-memory databases for all
+plugins. You may want to use this configuration for testing or other non-durable
+use cases.
+
+```yaml
+backend:
+ database:
+ client: sqlite3
+ connection: ':memory:'
+```
+
+### PostgreSQL
+
+The example below uses PostgreSQL (`pg`) as the database client for all plugins.
+The `auth` plugin uses a user defined database name instead of the automatically
+generated one which would have been `backstage_plugin_auth`.
+
+```yaml
+backend:
+ database:
+ client: pg
+ connection:
+ host: some.example-pg-instance.tld
+ user: postgres
+ password: password
+ port: 5432
+ plugin:
+ auth:
+ connection:
+ database: pg_auth_set_by_user
+```
+
+### Custom Database Name Prefix
+
+The configuration below uses `example_prefix_` as the database name prefix
+instead of `backstage_plugin_`. Plugins such as `auth` and `catalog` will use
+databases named `example_prefix_auth` and `example_prefix_catalog` respectively.
+
+```yaml
+backend:
+ database:
+ client: pg
+ connection:
+ host: some.example-pg-instance.tld
+ user: postgres
+ password: password
+ port: 5432
+ prefix: 'example_prefix_'
+```
+
+### Connection Configuration Per Plugin
+
+Both `auth` and `catalog` use connection configuration with different
+credentials and database names. This type of configuration can be useful for
+environments with infrastructure as code or data which may provide randomly
+generated credentials and/or database names.
+
+```yaml
+backend:
+ database:
+ client: pg
+ connection: 'postgresql://some.example-pg-instance.tld:5432'
+ plugin:
+ auth:
+ connection: 'postgresql://fort:knox@some.example-pg-instance.tld:5432/unwitting_fox_jumps'
+ catalog:
+ connection: 'postgresql://bank:reserve@some.example-pg-instance.tld:5432/shuffle_ransack_playback'
+```
+
+### PostgreSQL and SQLite 3
+
+The example below uses PostgreSQL (`pg`) as the database client for all plugins
+except the `auth` plugin which uses `sqlite3`. As the `auth` plugin's client
+type is different from the base client type, the connection configuration for
+`auth` is used verbatim without extending the base configuration for PostgreSQL.
+
+```yaml
+backend:
+ database:
+ client: pg
+ connection: 'postgresql://foo:bar@some.example-pg-instance.tld:5432'
+ plugin:
+ auth:
+ client: sqlite3
+ connection: ':memory:'
+```
+
+## Check Your Databases
+
+The `DatabaseManager` will attempt to create the databases if they do not exist.
+If you have set credentials per plugin because the credentials in the base
+configuration do not have permissions to create databases, you must ensure they
+exist before starting the service. The service will not be able to create them,
+it can only use them.
+
+### Privileges
+
+As Backstage attempts to check if the database exists, you may need to grant
+privileges to list or show databases for a given user. For PostgreSQL, you would
+grant the following:
+
+```postgres
+GRANT SELECT ON pg_database TO some_user;
+```
+
+MySQL:
+
+```mysql
+GRANT SHOW DATABASES ON *.* TO some_user;
+```
+
+The mechanisms in this guide should help you tackle different database
+deployment situations. Good luck!
diff --git a/docs/tutorials/quickstart-app-plugin.md b/docs/tutorials/quickstart-app-plugin.md
index 7dca90c14b..99ba55c19d 100644
--- a/docs/tutorials/quickstart-app-plugin.md
+++ b/docs/tutorials/quickstart-app-plugin.md
@@ -146,11 +146,9 @@ import {
} from '@backstage/core';
import { graphql } from '@octokit/graphql';
-const ExampleFetchComponent = () => {
+export const ExampleFetchComponent = () => {
return Nothing to see yet
;
};
-
-export default ExampleFetchComponent;
```
3. Save that and ensure you see no errors. Comment out the unused imports if
diff --git a/microsite/package.json b/microsite/package.json
index 3112bbfe17..1894e37d84 100644
--- a/microsite/package.json
+++ b/microsite/package.json
@@ -20,7 +20,7 @@
"docusaurus": "^2.0.0-alpha.70",
"js-yaml": "^4.1.0",
"prettier": "^2.3.1",
- "yarn-lock-check": "^1.0.4"
+ "yarn-lock-check": "^1.0.5"
},
"prettier": "@spotify/prettier-config"
}
diff --git a/microsite/scripts/verify-sidebars.js b/microsite/scripts/verify-sidebars.js
index a82780135f..8d643b15a2 100755
--- a/microsite/scripts/verify-sidebars.js
+++ b/microsite/scripts/verify-sidebars.js
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/microsite/sidebars.json b/microsite/sidebars.json
index f2ce425307..ede2a8c861 100644
--- a/microsite/sidebars.json
+++ b/microsite/sidebars.json
@@ -8,6 +8,8 @@
"overview/background",
"overview/adopting",
"overview/stability-index",
+ "overview/support",
+ "overview/glossary",
"overview/logos"
],
"Getting Started": [
@@ -24,7 +26,8 @@
},
"getting-started/keeping-backstage-updated",
"getting-started/concepts",
- "getting-started/contributors"
+ "getting-started/contributors",
+ "getting-started/project-structure"
],
"CLI": ["cli/index", "cli/commands"],
"Core Features": [
@@ -33,7 +36,6 @@
"label": "Software Catalog",
"ids": [
"features/software-catalog/software-catalog-overview",
- "features/software-catalog/installation",
"features/software-catalog/configuration",
"features/software-catalog/system-model",
"features/software-catalog/descriptor-format",
@@ -62,7 +64,7 @@
"label": "Software Templates",
"ids": [
"features/software-templates/software-templates-index",
- "features/software-templates/installation",
+ "features/software-templates/configuration",
"features/software-templates/adding-templates",
"features/software-templates/writing-templates",
"features/software-templates/builtin-actions",
@@ -103,8 +105,8 @@
"integrations/index",
{
"type": "subcategory",
- "label": "Azure DevOps",
- "ids": ["integrations/azure/locations"]
+ "label": "Azure",
+ "ids": ["integrations/azure/locations", "integrations/azure/org"]
},
{
"type": "subcategory",
@@ -206,6 +208,7 @@
},
"auth/add-auth-provider",
"auth/using-auth",
+ "auth/identity-resolver",
"auth/auth-backend",
"auth/oauth",
"auth/auth-backend-classes",
@@ -243,6 +246,7 @@
"Tutorials": [
"tutorials/journey",
"tutorials/quickstart-app-plugin",
+ "tutorials/configuring-plugin-databases",
"tutorials/switching-sqlite-postgres"
],
"Architecture Decision Records (ADRs)": [
@@ -259,8 +263,6 @@
"architecture-decisions/adrs-adr010",
"architecture-decisions/adrs-adr011"
],
- "Support": ["support/support", "support/project-structure"],
- "Glossary": ["glossary"],
"FAQ": ["FAQ"]
}
}
diff --git a/microsite/static/css/custom.css b/microsite/static/css/custom.css
index c54e0101d3..6404b25251 100644
--- a/microsite/static/css/custom.css
+++ b/microsite/static/css/custom.css
@@ -7,6 +7,11 @@
/* your custom css */
+/* makes scroll bars, inputs etc match the dark theme better */
+html {
+ color-scheme: dark;
+}
+
/* override font color for new dark tech docs styling */
table {
color: white;
diff --git a/microsite/static/img/cortex.png b/microsite/static/img/cortex.png
index 6a45d0ca06..d16b3f9c32 100644
Binary files a/microsite/static/img/cortex.png and b/microsite/static/img/cortex.png differ
diff --git a/microsite/static/img/twitter-summary.png b/microsite/static/img/twitter-summary.png
index 4a31eec062..7330b071ee 100644
Binary files a/microsite/static/img/twitter-summary.png and b/microsite/static/img/twitter-summary.png differ
diff --git a/microsite/yarn.lock b/microsite/yarn.lock
index 6f71394265..a89235bf98 100644
--- a/microsite/yarn.lock
+++ b/microsite/yarn.lock
@@ -9,13 +9,6 @@
dependencies:
"@babel/highlight" "^7.0.0"
-"@babel/code-frame@^7.0.0":
- version "7.12.13"
- resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658"
- integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==
- dependencies:
- "@babel/highlight" "^7.12.13"
-
"@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.11":
version "7.12.11"
resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f"
@@ -227,11 +220,6 @@
resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed"
integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==
-"@babel/helper-validator-identifier@^7.14.0":
- version "7.14.0"
- resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz#d26cad8a47c65286b15df1547319a5d0bcf27288"
- integrity sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==
-
"@babel/helper-validator-option@^7.12.1", "@babel/helper-validator-option@^7.12.11":
version "7.12.11"
resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.11.tgz#d66cb8b7a3e7fe4c6962b32020a131ecf0847f4f"
@@ -265,15 +253,6 @@
chalk "^2.0.0"
js-tokens "^4.0.0"
-"@babel/highlight@^7.12.13":
- version "7.14.0"
- resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz#3197e375711ef6bf834e67d0daec88e4f46113cf"
- integrity sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==
- dependencies:
- "@babel/helper-validator-identifier" "^7.14.0"
- chalk "^2.0.0"
- js-tokens "^4.0.0"
-
"@babel/parser@^7.12.10", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7":
version "7.12.11"
resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.12.11.tgz#9ce3595bcd74bc5c466905e86c535b8b25011e79"
@@ -942,29 +921,11 @@
dependencies:
"@types/node" "*"
-"@types/glob@^7.1.3":
- version "7.1.3"
- resolved "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183"
- integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==
- dependencies:
- "@types/minimatch" "*"
- "@types/node" "*"
-
-"@types/minimatch@*":
- version "3.0.4"
- resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.4.tgz#f0ec25dbf2f0e4b18647313ac031134ca5b24b21"
- integrity sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA==
-
"@types/node@*":
version "14.14.20"
resolved "https://registry.npmjs.org/@types/node/-/node-14.14.20.tgz#f7974863edd21d1f8a494a73e8e2b3658615c340"
integrity sha512-Y93R97Ouif9JEOWPIUyU+eyIdyRqQR0I8Ez1dzku4hDx34NWh4HbtIc3WNzwB1Y9ULvNGeu5B8h8bVL5cAk4/A==
-"@types/node@^15.6.1":
- version "15.9.0"
- resolved "https://registry.npmjs.org/@types/node/-/node-15.9.0.tgz#0b7f6c33ca5618fe329a9d832b478b4964d325a8"
- integrity sha512-AR1Vq1Ei1GaA5FjKL5PBqblTZsL5M+monvGSZwe6sSIdGiuu7Xr/pNwWJY+0ZQuN8AapD/XMB5IzBAyYRFbocA==
-
"@types/q@^1.5.1":
version "1.5.4"
resolved "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24"
@@ -1449,11 +1410,6 @@ buffer@^5.2.1:
base64-js "^1.3.1"
ieee754 "^1.1.13"
-builtin-modules@^1.1.1:
- version "1.1.1"
- resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
- integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=
-
bytes@1:
version "1.0.0"
resolved "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz#3569ede8ba34315fab99c3e92cb04c7220de1fa8"
@@ -1567,7 +1523,7 @@ caw@^2.0.0, caw@^2.0.1:
tunnel-agent "^0.6.0"
url-to-options "^1.0.1"
-chalk@2.4.2, chalk@^2.0.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2:
+chalk@2.4.2, chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2:
version "2.4.2"
resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
@@ -1758,7 +1714,7 @@ combined-stream@^1.0.6, combined-stream@~1.0.6:
dependencies:
delayed-stream "~1.0.0"
-commander@^2.12.1, commander@^2.8.1:
+commander@^2.8.1:
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==
@@ -2230,11 +2186,6 @@ diacritics-map@^0.1.0:
resolved "https://registry.npmjs.org/diacritics-map/-/diacritics-map-0.1.0.tgz#6dfc0ff9d01000a2edf2865371cac316e94977af"
integrity sha1-bfwP+dAQAKLt8oZTccrDFulJd68=
-diff@^4.0.1:
- version "4.0.2"
- resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
- integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
-
dir-glob@2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034"
@@ -3091,19 +3042,7 @@ glob-to-regexp@^0.3.0:
resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab"
integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=
-glob@^7.0.0, glob@^7.0.5, glob@^7.1.2, glob@^7.1.3, glob@^7.1.6, glob@~7.1.1:
- version "7.1.6"
- resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
- integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
- dependencies:
- fs.realpath "^1.0.0"
- inflight "^1.0.4"
- inherits "2"
- minimatch "^3.0.4"
- once "^1.3.0"
- path-is-absolute "^1.0.0"
-
-glob@^7.1.1, glob@^7.1.7:
+glob@^7.0.0, glob@^7.0.5, glob@^7.1.2, glob@^7.1.3, glob@^7.1.6, glob@^7.1.7, glob@~7.1.1:
version "7.1.7"
resolved "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90"
integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==
@@ -3638,13 +3577,6 @@ is-core-module@^2.1.0:
dependencies:
has "^1.0.3"
-is-core-module@^2.2.0:
- version "2.4.0"
- resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz#8e9fc8e15027b011418026e98f0e6f4d86305cc1"
- integrity sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==
- dependencies:
- has "^1.0.3"
-
is-data-descriptor@^0.1.4:
version "0.1.4"
resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
@@ -4457,7 +4389,7 @@ mixin-deep@^1.1.3, mixin-deep@^1.2.0:
for-in "^1.0.2"
is-extendable "^1.0.1"
-mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1:
+mkdirp@^0.5.1, mkdirp@^0.5.5, mkdirp@~0.5.1:
version "0.5.5"
resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
@@ -5681,14 +5613,6 @@ resolve@^1.1.6, resolve@^1.10.0:
is-core-module "^2.1.0"
path-parse "^1.0.6"
-resolve@^1.3.2:
- version "1.20.0"
- resolved "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975"
- integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==
- dependencies:
- is-core-module "^2.2.0"
- 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"
@@ -6437,37 +6361,11 @@ truncate-html@^1.0.3:
"@types/cheerio" "^0.22.8"
cheerio "0.22.0"
-tslib@^1.13.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3:
+tslib@^1.9.0, tslib@^1.9.3:
version "1.14.1"
resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
-tslint@^6.1.3:
- version "6.1.3"
- resolved "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz#5c23b2eccc32487d5523bd3a470e9aa31789d904"
- integrity sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==
- dependencies:
- "@babel/code-frame" "^7.0.0"
- builtin-modules "^1.1.1"
- chalk "^2.3.0"
- commander "^2.12.1"
- diff "^4.0.1"
- glob "^7.1.1"
- js-yaml "^3.13.1"
- minimatch "^3.0.4"
- mkdirp "^0.5.3"
- resolve "^1.3.2"
- semver "^5.3.0"
- tslib "^1.13.0"
- tsutils "^2.29.0"
-
-tsutils@^2.29.0:
- version "2.29.0"
- resolved "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99"
- integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==
- dependencies:
- tslib "^1.8.1"
-
tunnel-agent@^0.6.0:
version "0.6.0"
resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
@@ -6493,11 +6391,6 @@ typedarray@^0.0.6:
resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
-typescript@^4.3.2:
- version "4.3.2"
- resolved "https://registry.npmjs.org/typescript/-/typescript-4.3.2.tgz#399ab18aac45802d6f2498de5054fcbbe716a805"
- integrity sha512-zZ4hShnmnoVnAHpVHWpTcxdv7dWP60S2FsydQLV8V5PbS3FifjWFFRiHSWpDJahly88PRyV5teTSLoq4eG7mKw==
-
unbzip2-stream@^1.0.9:
version "1.4.3"
resolved "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7"
@@ -6767,18 +6660,14 @@ yargs@^2.3.0:
dependencies:
wordwrap "0.0.2"
-yarn-lock-check@^1.0.4:
- version "1.0.4"
- resolved "https://registry.npmjs.org/yarn-lock-check/-/yarn-lock-check-1.0.4.tgz#a0373de051be0c8442d8933070df7a45595263b4"
- integrity sha512-Gj0wRN85c4OPZUlE7WsQ0a1COv38uyeWWR0YAvJr2Vxw1f32bwK19xySjUZlxt9o4QopJkd8g6x6CLv81OHwYg==
+yarn-lock-check@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.npmjs.org/yarn-lock-check/-/yarn-lock-check-1.0.5.tgz#69d9516385f3ff010d0e2b0e87fbbd9bb1ffecaf"
+ integrity sha512-dxmV4LpIBrRAPbPg+klyGvqdVo3Y6PgJs6ERJYXf0HSEst7klDmvKKqQUtk+wrIRCoMDIVIzSUTZsuC4zr/tFQ==
dependencies:
- "@types/glob" "^7.1.3"
- "@types/node" "^15.6.1"
"@yarnpkg/lockfile" "^1.1.0"
glob "^7.1.7"
ini "^2.0.0"
- tslint "^6.1.3"
- typescript "^4.3.2"
yauzl@^2.4.2:
version "2.10.0"
diff --git a/mkdocs.yml b/mkdocs.yml
index 67b97b6ffb..9cc5ed836c 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -13,6 +13,8 @@ nav:
- The Spotify Story: 'overview/background.md'
- Strategies for adopting: 'overview/adopting.md'
- Stability Index: 'overview/stability-index.md'
+ - Support and community: 'overview/support.md'
+ - Glossary: 'overview/glossary.md'
- Logo assets: 'overview/logos.md'
- Getting Started:
- Getting Started: 'getting-started/index.md'
@@ -24,13 +26,13 @@ nav:
- Keeping Backstage Updated: 'getting-started/keeping-backstage-updated.md'
- Key Concepts: 'getting-started/concepts.md'
- Contributors: 'getting-started/contributors.md'
+ - Project Structure: 'getting-started/project-structure.md'
- CLI:
- Overview: 'cli/index.md'
- Commands: 'cli/commands.md'
- Core Features:
- Software Catalog:
- Overview: 'features/software-catalog/index.md'
- - Installing in your Backstage App: 'features/software-catalog/installation.md'
- Catalog Configuration: 'features/software-catalog/configuration.md'
- System Model: 'features/software-catalog/system-model.md'
- YAML File Format: 'features/software-catalog/descriptor-format.md'
@@ -49,7 +51,7 @@ nav:
- Troubleshooting: 'features/kubernetes/troubleshooting.md'
- Software Templates:
- Overview: 'features/software-templates/index.md'
- - Installing in your Backstage App: 'features/software-templates/installation.md'
+ - Configuration: 'features/software-templates/configuration.md'
- Adding your own Templates: 'features/software-templates/adding-templates.md'
- Writing Templates: 'features/software-templates/writing-templates.md'
- Builtin Actions: 'features/software-templates/builtin-actions.md'
@@ -76,8 +78,9 @@ nav:
- FAQ: 'features/techdocs/FAQ.md'
- Integrations:
- Overview: 'integrations/index.md'
- - Azure DevOps:
+ - Azure:
- Locations: 'integrations/azure/locations.md'
+ - Org Data: 'integrations/azure/org.md'
- Bitbucket:
- Locations: 'integrations/bitbucket/locations.md'
- Discovery: 'integrations/bitbucket/discovery.md'
@@ -133,6 +136,7 @@ nav:
- OneLogin: 'auth/onelogin/provider.md'
- Adding authentication providers: 'auth/add-auth-provider.md'
- Using authentication and identity: 'auth/using-auth.md'
+ - Sign in resolvers: 'auth/identity-resolver.md'
- Auth backend: 'auth/auth-backend.md'
- OAuth and OpenID Connect: 'auth/oauth.md'
- Auth backend classes: 'auth/auth-backend-classes.md'
@@ -173,7 +177,6 @@ nav:
- ADR010 - Luxon Date Library: 'architecture-decisions/adr010-luxon-date-library.md'
- ADR011 - Plugin Package Structure: 'architecture-decisions/adr011-plugin-package-structure.md'
- Support:
- - Support and community: 'support/support.md'
- Backstage Project Structure: 'support/project-structure.md'
- Glossary: glossary.md
- FAQ: FAQ.md
diff --git a/packages/app/CHANGELOG.md b/packages/app/CHANGELOG.md
index c200104775..f6d69f050c 100644
--- a/packages/app/CHANGELOG.md
+++ b/packages/app/CHANGELOG.md
@@ -1,5 +1,23 @@
# example-app
+## 0.2.33
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@0.2.3
+ - @backstage/plugin-catalog@0.6.3
+ - @backstage/cli@0.7.1
+ - @backstage/plugin-api-docs@0.5.0
+ - @backstage/plugin-jenkins@0.4.5
+ - @backstage/plugin-techdocs@0.9.6
+ - @backstage/plugin-circleci@0.2.16
+ - @backstage/plugin-catalog-import@0.5.10
+ - @backstage/plugin-sentry@0.3.12
+ - @backstage/plugin-user-settings@0.2.11
+ - @backstage/catalog-model@0.8.3
+ - @backstage/core@0.7.13
+
## 0.2.32
### Patch Changes
diff --git a/packages/app/cypress/integration/app.js b/packages/app/cypress/integration/app.js
index a7462588a0..7b874907be 100644
--- a/packages/app/cypress/integration/app.js
+++ b/packages/app/cypress/integration/app.js
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/app/cypress/integration/components/search/SearchPage.js b/packages/app/cypress/integration/components/search/SearchPage.js
index 4e13fc8a0f..4db7acf4fd 100644
--- a/packages/app/cypress/integration/components/search/SearchPage.js
+++ b/packages/app/cypress/integration/components/search/SearchPage.js
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/app/cypress/support/commands.js b/packages/app/cypress/support/commands.js
index dd2b26634d..f26d2c999b 100644
--- a/packages/app/cypress/support/commands.js
+++ b/packages/app/cypress/support/commands.js
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/app/cypress/support/index.js b/packages/app/cypress/support/index.js
index c1f930027a..fb62f6359f 100644
--- a/packages/app/cypress/support/index.js
+++ b/packages/app/cypress/support/index.js
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/app/package.json b/packages/app/package.json
index 1b0b3aa22c..9d22f6bf28 100644
--- a/packages/app/package.json
+++ b/packages/app/package.json
@@ -1,19 +1,21 @@
{
"name": "example-app",
- "version": "0.2.32",
+ "version": "0.2.33",
"private": true,
"bundled": true,
"dependencies": {
- "@backstage/catalog-model": "^0.8.2",
- "@backstage/cli": "^0.7.0",
- "@backstage/core": "^0.7.12",
+ "@backstage/catalog-model": "^0.8.3",
+ "@backstage/cli": "^0.7.1",
+ "@backstage/core": "^0.7.13",
"@backstage/integration-react": "^0.1.3",
- "@backstage/plugin-api-docs": "^0.4.15",
+ "@backstage/core-app-api": "^0.1.2",
+ "@backstage/core-components": "^0.1.1",
+ "@backstage/plugin-api-docs": "^0.5.0",
"@backstage/plugin-badges": "^0.2.2",
- "@backstage/plugin-catalog": "^0.6.2",
- "@backstage/plugin-catalog-import": "^0.5.9",
- "@backstage/plugin-catalog-react": "^0.2.2",
- "@backstage/plugin-circleci": "^0.2.15",
+ "@backstage/plugin-catalog": "^0.6.3",
+ "@backstage/plugin-catalog-import": "^0.5.10",
+ "@backstage/plugin-catalog-react": "^0.2.3",
+ "@backstage/plugin-circleci": "^0.2.16",
"@backstage/plugin-cloudbuild": "^0.2.16",
"@backstage/plugin-code-coverage": "^0.1.4",
"@backstage/plugin-cost-insights": "^0.10.2",
@@ -21,7 +23,7 @@
"@backstage/plugin-gcp-projects": "^0.2.6",
"@backstage/plugin-github-actions": "^0.4.9",
"@backstage/plugin-graphiql": "^0.2.11",
- "@backstage/plugin-jenkins": "^0.4.4",
+ "@backstage/plugin-jenkins": "^0.4.5",
"@backstage/plugin-kafka": "^0.2.8",
"@backstage/plugin-kubernetes": "^0.4.5",
"@backstage/plugin-lighthouse": "^0.2.17",
@@ -31,12 +33,12 @@
"@backstage/plugin-rollbar": "^0.3.6",
"@backstage/plugin-scaffolder": "^0.9.8",
"@backstage/plugin-search": "^0.4.0",
- "@backstage/plugin-sentry": "^0.3.11",
+ "@backstage/plugin-sentry": "^0.3.12",
"@backstage/plugin-shortcuts": "^0.1.2",
"@backstage/plugin-tech-radar": "^0.4.0",
- "@backstage/plugin-techdocs": "^0.9.5",
+ "@backstage/plugin-techdocs": "^0.9.6",
"@backstage/plugin-todo": "^0.1.2",
- "@backstage/plugin-user-settings": "^0.2.10",
+ "@backstage/plugin-user-settings": "^0.2.11",
"@backstage/theme": "^0.2.8",
"@material-ui/core": "^4.11.0",
"@material-ui/icons": "^4.9.1",
diff --git a/packages/app/src/App.test.tsx b/packages/app/src/App.test.tsx
index cdb1e8db4a..aa6781ce61 100644
--- a/packages/app/src/App.test.tsx
+++ b/packages/app/src/App.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/app/src/App.tsx b/packages/app/src/App.tsx
index b14f9a3163..de62971f96 100644
--- a/packages/app/src/App.tsx
+++ b/packages/app/src/App.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,13 +14,12 @@
* limitations under the License.
*/
+import { createApp, FlatRoutes } from '@backstage/core-app-api';
import {
AlertDisplay,
- createApp,
- FlatRoutes,
OAuthRequestDialog,
SignInPage,
-} from '@backstage/core';
+} from '@backstage/core-components';
import { apiDocsPlugin, ApiExplorerPage } from '@backstage/plugin-api-docs';
import {
CatalogEntityPage,
@@ -65,6 +64,7 @@ const app = createApp({
// Custom icon example
alert: AlarmIcon,
},
+
components: {
SignInPage: props => {
return (
@@ -116,6 +116,7 @@ const routes = (
/>
} />
} />
+
} />
} />
} />
diff --git a/packages/app/src/apis.ts b/packages/app/src/apis.ts
index ccc576e727..8b27e52717 100644
--- a/packages/app/src/apis.ts
+++ b/packages/app/src/apis.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/app/src/components/Root/LogoFull.tsx b/packages/app/src/components/Root/LogoFull.tsx
index 2fb767465b..c7b1c846c4 100644
--- a/packages/app/src/components/Root/LogoFull.tsx
+++ b/packages/app/src/components/Root/LogoFull.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/app/src/components/Root/LogoIcon.tsx b/packages/app/src/components/Root/LogoIcon.tsx
index 507e47ddb9..073cf6edad 100644
--- a/packages/app/src/components/Root/LogoIcon.tsx
+++ b/packages/app/src/components/Root/LogoIcon.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/app/src/components/Root/Root.tsx b/packages/app/src/components/Root/Root.tsx
index 9c62ec0b4d..5596f20da1 100644
--- a/packages/app/src/components/Root/Root.tsx
+++ b/packages/app/src/components/Root/Root.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/app/src/components/Root/index.ts b/packages/app/src/components/Root/index.ts
index ab65cb2451..dff706f08f 100644
--- a/packages/app/src/components/Root/index.ts
+++ b/packages/app/src/components/Root/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/app/src/components/catalog/EntityPage.test.tsx b/packages/app/src/components/catalog/EntityPage.test.tsx
index c33adf6c4a..2daf7a49bc 100644
--- a/packages/app/src/components/catalog/EntityPage.test.tsx
+++ b/packages/app/src/components/catalog/EntityPage.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/app/src/components/catalog/EntityPage.tsx b/packages/app/src/components/catalog/EntityPage.tsx
index f646992c97..39ba1afd6f 100644
--- a/packages/app/src/components/catalog/EntityPage.tsx
+++ b/packages/app/src/components/catalog/EntityPage.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/app/src/components/search/SearchPage.tsx b/packages/app/src/components/search/SearchPage.tsx
index 7b94e876e6..b38a702330 100644
--- a/packages/app/src/components/search/SearchPage.tsx
+++ b/packages/app/src/components/search/SearchPage.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/app/src/identityProviders.ts b/packages/app/src/identityProviders.ts
index 6f45f9ba32..0ab67b6867 100644
--- a/packages/app/src/identityProviders.ts
+++ b/packages/app/src/identityProviders.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/app/src/index.tsx b/packages/app/src/index.tsx
index 71fd40dd7e..b15bc4c102 100644
--- a/packages/app/src/index.tsx
+++ b/packages/app/src/index.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/app/src/plugins.ts b/packages/app/src/plugins.ts
index e02e30e5d9..a1e952a07c 100644
--- a/packages/app/src/plugins.ts
+++ b/packages/app/src/plugins.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/app/src/react-app-env.d.ts b/packages/app/src/react-app-env.d.ts
index f3b69cc361..b1e99a84e6 100644
--- a/packages/app/src/react-app-env.d.ts
+++ b/packages/app/src/react-app-env.d.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/app/src/setupTests.ts b/packages/app/src/setupTests.ts
index c717b2753b..23fcbe9676 100644
--- a/packages/app/src/setupTests.ts
+++ b/packages/app/src/setupTests.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/CHANGELOG.md b/packages/backend-common/CHANGELOG.md
index 6256697036..c37137f524 100644
--- a/packages/backend-common/CHANGELOG.md
+++ b/packages/backend-common/CHANGELOG.md
@@ -1,5 +1,59 @@
# @backstage/backend-common
+## 0.8.3
+
+### Patch Changes
+
+- e5cdf0560: Provide a more clear error message when database connection fails.
+- 772dbdb51: Deprecates `SingleConnectionDatabaseManager` and provides an API compatible database
+ connection manager, `DatabaseManager`, which allows developers to configure database
+ connections on a per plugin basis.
+
+ The `backend.database` config path allows you to set `prefix` to use an
+ alternate prefix for automatically generated database names, the default is
+ `backstage_plugin_`. Use `backend.database.plugin.` to set plugin
+ specific database connection configuration, e.g.
+
+ ```yaml
+ backend:
+ database:
+ client: 'pg',
+ prefix: 'custom_prefix_'
+ connection:
+ host: 'localhost'
+ user: 'foo'
+ password: 'bar'
+ plugin:
+ catalog:
+ connection:
+ database: 'database_name_overriden'
+ scaffolder:
+ client: 'sqlite3'
+ connection: ':memory:'
+ ```
+
+ Migrate existing backstage installations by swapping out the database manager in the
+ `packages/backend/src/index.ts` file as shown below:
+
+ ```diff
+ import {
+ - SingleConnectionDatabaseManager,
+ + DatabaseManager,
+ } from '@backstage/backend-common';
+
+ // ...
+
+ function makeCreateEnv(config: Config) {
+ // ...
+ - const databaseManager = SingleConnectionDatabaseManager.fromConfig(config);
+ + const databaseManager = DatabaseManager.fromConfig(config);
+ // ...
+ }
+ ```
+
+- Updated dependencies
+ - @backstage/config-loader@0.6.4
+
## 0.8.2
### Patch Changes
diff --git a/packages/backend-common/api-report.md b/packages/backend-common/api-report.md
index 068220cad3..fcddb8dda5 100644
--- a/packages/backend-common/api-report.md
+++ b/packages/backend-common/api-report.md
@@ -100,6 +100,12 @@ export function createServiceBuilder(_module: NodeModule): ServiceBuilderImpl;
// @public (undocumented)
export function createStatusCheckRouter(options: StatusCheckRouterOptions): Promise;
+// @public (undocumented)
+export class DatabaseManager {
+ forPlugin(pluginId: string): PluginDatabaseManager;
+ static fromConfig(config: Config): DatabaseManager;
+ }
+
// @public (undocumented)
export class DockerContainerRunner implements ContainerRunner {
constructor({ dockerClient }: {
@@ -326,11 +332,8 @@ export type ServiceBuilder = {
// @public (undocumented)
export function setRootLogger(newLogger: winston.Logger): void;
-// @public
-export class SingleConnectionDatabaseManager {
- forPlugin(pluginId: string): PluginDatabaseManager;
- static fromConfig(config: Config): SingleConnectionDatabaseManager;
- }
+// @public @deprecated
+export const SingleConnectionDatabaseManager: typeof DatabaseManager;
// @public
export class SingleHostDiscovery implements PluginEndpointDiscovery {
diff --git a/packages/backend-common/config.d.ts b/packages/backend-common/config.d.ts
index 875660a594..4de4631982 100644
--- a/packages/backend-common/config.d.ts
+++ b/packages/backend-common/config.d.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -53,20 +53,30 @@ export interface Config {
};
};
- /** Database connection configuration, select database type using the `client` field */
- database:
- | {
- client: 'sqlite3';
- connection: ':memory:' | string | { filename: string };
- }
- | {
- client: 'pg';
+ /** Database connection configuration, select base database type using the `client` field */
+ database: {
+ /** Default database client to use */
+ client: 'sqlite3' | 'pg';
+ /**
+ * Base database connection string or Knex object
+ * @secret
+ */
+ connection: string | object;
+ /** Database name prefix override */
+ prefix?: string;
+ /** Plugin specific database configuration and client override */
+ plugin?: {
+ [pluginId: string]: {
+ /** Database client override */
+ client?: 'sqlite3' | 'pg';
/**
- * PostgreSQL connection string or knex configuration object.
+ * Database connection string or Knex object override
* @secret
*/
- connection: string | object;
+ connection?: string | object;
};
+ };
+ };
/** Cache connection configuration, select cache type using the `store` field */
cache?:
diff --git a/packages/backend-common/package.json b/packages/backend-common/package.json
index fc57ee59a8..04231a6a69 100644
--- a/packages/backend-common/package.json
+++ b/packages/backend-common/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/backend-common",
"description": "Common functionality library for Backstage backends",
- "version": "0.8.2",
+ "version": "0.8.3",
"main": "src/index.ts",
"types": "src/index.ts",
"private": false,
@@ -31,7 +31,7 @@
"dependencies": {
"@backstage/cli-common": "^0.1.1",
"@backstage/config": "^0.1.5",
- "@backstage/config-loader": "^0.6.2",
+ "@backstage/config-loader": "^0.6.4",
"@backstage/errors": "^0.1.1",
"@backstage/integration": "^0.5.6",
"@google-cloud/storage": "^5.8.0",
@@ -76,7 +76,7 @@
}
},
"devDependencies": {
- "@backstage/cli": "^0.7.0",
+ "@backstage/cli": "^0.7.1",
"@backstage/test-utils": "^0.1.12",
"@types/archiver": "^5.1.0",
"@types/compression": "^1.7.0",
diff --git a/packages/backend-common/src/cache/CacheClient.test.ts b/packages/backend-common/src/cache/CacheClient.test.ts
index 81e8351b58..8a5779550a 100644
--- a/packages/backend-common/src/cache/CacheClient.test.ts
+++ b/packages/backend-common/src/cache/CacheClient.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/cache/CacheClient.ts b/packages/backend-common/src/cache/CacheClient.ts
index 3b654e248b..860754aae1 100644
--- a/packages/backend-common/src/cache/CacheClient.ts
+++ b/packages/backend-common/src/cache/CacheClient.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/cache/CacheManager.test.ts b/packages/backend-common/src/cache/CacheManager.test.ts
index 97c1714c53..b55b63f469 100644
--- a/packages/backend-common/src/cache/CacheManager.test.ts
+++ b/packages/backend-common/src/cache/CacheManager.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/cache/CacheManager.ts b/packages/backend-common/src/cache/CacheManager.ts
index e6699e628e..9d1afdaaeb 100644
--- a/packages/backend-common/src/cache/CacheManager.ts
+++ b/packages/backend-common/src/cache/CacheManager.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/cache/NoStore.ts b/packages/backend-common/src/cache/NoStore.ts
index c89e814c93..3bb28afc71 100644
--- a/packages/backend-common/src/cache/NoStore.ts
+++ b/packages/backend-common/src/cache/NoStore.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/cache/index.ts b/packages/backend-common/src/cache/index.ts
index 0cc8178b1a..45eb431ed1 100644
--- a/packages/backend-common/src/cache/index.ts
+++ b/packages/backend-common/src/cache/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/cache/types.ts b/packages/backend-common/src/cache/types.ts
index 30db53d420..ac5bb91b21 100644
--- a/packages/backend-common/src/cache/types.ts
+++ b/packages/backend-common/src/cache/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/config.ts b/packages/backend-common/src/config.ts
index 6989f3567b..1316642ae1 100644
--- a/packages/backend-common/src/config.ts
+++ b/packages/backend-common/src/config.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/database/DatabaseManager.test.ts b/packages/backend-common/src/database/DatabaseManager.test.ts
new file mode 100644
index 0000000000..e839123908
--- /dev/null
+++ b/packages/backend-common/src/database/DatabaseManager.test.ts
@@ -0,0 +1,318 @@
+/*
+ * Copyright 2021 The Backstage Authors
+ *
+ * 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.
+ */
+import { ConfigReader } from '@backstage/config';
+import { omit } from 'lodash';
+import { createDatabaseClient, ensureDatabaseExists } from './connection';
+import { DatabaseManager } from './DatabaseManager';
+
+jest.mock('./connection', () => ({
+ ...jest.requireActual('./connection'),
+ createDatabaseClient: jest.fn(),
+ ensureDatabaseExists: jest.fn(),
+}));
+
+describe('DatabaseManager', () => {
+ // This is similar to the ts-jest `mocked` helper.
+ const mocked = (f: Function) => f as jest.Mock;
+
+ afterEach(() => jest.resetAllMocks());
+
+ describe('DatabaseManager.fromConfig', () => {
+ it('accesses the backend.database key', () => {
+ const config = new ConfigReader({
+ backend: {
+ database: {
+ client: 'pg',
+ connection: {
+ host: 'localhost',
+ user: 'foo',
+ password: 'bar',
+ database: 'foodb',
+ },
+ },
+ },
+ });
+ const getConfigSpy = jest.spyOn(config, 'getConfig');
+ DatabaseManager.fromConfig(config);
+
+ expect(getConfigSpy).toHaveBeenCalledWith('backend.database');
+ });
+ });
+
+ describe('DatabaseManager.forPlugin', () => {
+ const config = {
+ backend: {
+ database: {
+ client: 'pg',
+ prefix: 'test_prefix_',
+ connection: {
+ host: 'localhost',
+ user: 'foo',
+ password: 'bar',
+ database: 'foodb',
+ },
+ plugin: {
+ testdbname: {
+ connection: {
+ database: 'database_name_overriden',
+ },
+ },
+ differentclient: {
+ client: 'sqlite3',
+ connection: {
+ filename: 'plugin_with_different_client',
+ },
+ },
+ differentclientconnstring: {
+ client: 'sqlite3',
+ connection: ':memory:',
+ },
+ stringoverride: {
+ connection: 'postgresql://testuser:testpass@acme:5432/userdbname',
+ },
+ },
+ },
+ },
+ };
+ const manager = DatabaseManager.fromConfig(new ConfigReader(config));
+
+ it('connects to a plugin database using default config', async () => {
+ const pluginId = 'pluginwithoutconfig';
+
+ await manager.forPlugin(pluginId).getClient();
+ expect(mocked(createDatabaseClient)).toHaveBeenCalledTimes(1);
+
+ const mockCalls = mocked(createDatabaseClient).mock.calls.splice(-1);
+ const [baseConfig, overrides] = mockCalls[0];
+
+ // default config should be passed through to underlying connector
+ expect(baseConfig.get()).toMatchObject({
+ client: 'pg',
+ connection: omit(config.backend.database.connection, ['database']),
+ });
+
+ // override using database name generated from pluginId and prefix
+ expect(overrides).toMatchObject({
+ connection: {
+ database: `${config.backend.database.prefix}${pluginId}`,
+ },
+ });
+ });
+
+ it('provides a plugin db which uses components from top level connection string', async () => {
+ const testManager = DatabaseManager.fromConfig(
+ new ConfigReader({
+ backend: {
+ database: {
+ client: 'pg',
+ connection: 'postgresql://foo:bar@acme:5432/foodb',
+ },
+ },
+ }),
+ );
+
+ await testManager.forPlugin('pluginwithoutconfig').getClient();
+ const mockCalls = mocked(createDatabaseClient).mock.calls.splice(-1);
+ const [baseConfig, overrides] = mockCalls[0];
+
+ // parsed connection string **without** db name should be passed through
+ expect(baseConfig.get()).toMatchObject({
+ connection: {
+ host: 'acme',
+ user: 'foo',
+ password: 'bar',
+ port: '5432',
+ },
+ });
+
+ // we expect a pg database name override with ${prefix} followed by pluginId
+ expect(overrides).toHaveProperty(
+ 'connection.database',
+ expect.stringContaining('pluginwithoutconfig'),
+ );
+ });
+
+ it('uses top level sqlite database filename if plugin config is not present', async () => {
+ const testManager = DatabaseManager.fromConfig(
+ new ConfigReader({
+ backend: {
+ database: {
+ client: 'sqlite3',
+ connection: 'some-file-path',
+ },
+ },
+ }),
+ );
+
+ await testManager.forPlugin('pluginwithoutconfig').getClient();
+ const mockCalls = mocked(createDatabaseClient).mock.calls.splice(-1);
+ const [_, overrides] = mockCalls[0];
+
+ expect(overrides).toHaveProperty(
+ 'connection.filename',
+ expect.stringContaining('some-file-path'),
+ );
+ });
+
+ it('provides an inmemory sqlite database if top level is also inmemory and plugin config is not present', async () => {
+ const testManager = DatabaseManager.fromConfig(
+ new ConfigReader({
+ backend: {
+ database: {
+ client: 'sqlite3',
+ connection: ':memory:',
+ },
+ },
+ }),
+ );
+
+ await testManager.forPlugin('pluginwithoutconfig').getClient();
+ const mockCalls = mocked(createDatabaseClient).mock.calls.splice(-1);
+ const [_, overrides] = mockCalls[0];
+
+ expect(overrides).toHaveProperty(
+ 'connection.filename',
+ expect.stringContaining(':memory:'),
+ );
+ });
+
+ it('connects to a plugin database using a specific database name', async () => {
+ // testdbname.connection.database is set in config
+ await manager.forPlugin('testdbname').getClient();
+
+ const mockCalls = mocked(createDatabaseClient).mock.calls.splice(-1);
+ const [_baseConfig, overrides] = mockCalls[0];
+
+ // simple case where only database name is overriden
+ expect(overrides).toMatchObject({
+ connection: {
+ database: 'database_name_overriden',
+ },
+ });
+ });
+
+ it('ensure plugin specific database is created', async () => {
+ const pluginId = 'testdbname';
+ // testdbname.connection.database is set in config
+ await manager.forPlugin(pluginId).getClient();
+
+ const mockCalls = mocked(ensureDatabaseExists).mock.calls.splice(-1);
+ const [_, dbname] = mockCalls[0];
+
+ expect(dbname).toEqual(
+ config.backend.database.plugin[pluginId].connection.database,
+ );
+ });
+
+ it('provides different plugins with their own databases', async () => {
+ await manager.forPlugin('plugin1').getClient();
+ await manager.forPlugin('plugin2').getClient();
+
+ expect(mocked(createDatabaseClient)).toHaveBeenCalledTimes(2);
+
+ const mockCalls = mocked(createDatabaseClient).mock.calls;
+ const [plugin1CallArgs, plugin2CallArgs] = mockCalls;
+
+ // database name overrides should be different
+ expect(plugin1CallArgs[1].connection.database).not.toEqual(
+ plugin2CallArgs[1].connection.database,
+ );
+ });
+
+ it('uses plugin connection as base if default client is different from plugin client', async () => {
+ const pluginId = 'differentclient';
+ await manager.forPlugin(pluginId).getClient();
+
+ const mockCalls = mocked(createDatabaseClient).mock.calls.splice(-1);
+ const [baseConfig, _overrides] = mockCalls[0];
+
+ // plugin connection should be used as base config, client is different
+ expect(baseConfig.get()).toMatchObject({
+ client: 'sqlite3',
+ connection: config.backend.database.plugin[pluginId].connection,
+ });
+ });
+
+ it('provides database client specific base and override when client set under plugin', async () => {
+ const pluginId = 'differentclient';
+ await manager.forPlugin(pluginId).getClient();
+
+ const mockCalls = mocked(createDatabaseClient).mock.calls.splice(-1);
+ const [baseConfig, overrides] = mockCalls[0];
+
+ // plugin client should be sqlite3
+ expect(baseConfig.get().client).toEqual('sqlite3');
+
+ // sqlite3 uses 'filename' instead of 'database'
+ expect(overrides).toHaveProperty('connection.filename');
+ });
+
+ it('provides database client specific base from plugin connection string when client set under plugin', async () => {
+ const pluginId = 'differentclientconnstring';
+ await manager.forPlugin(pluginId).getClient();
+
+ const mockCalls = mocked(createDatabaseClient).mock.calls.splice(-1);
+ const [baseConfig, overrides] = mockCalls[0];
+
+ expect(baseConfig.get().client).toEqual('sqlite3');
+
+ expect(overrides).toHaveProperty('connection.filename', ':memory:');
+ });
+
+ it('generates a database name override when prefix is not explicitly set', async () => {
+ const testManager = DatabaseManager.fromConfig(
+ new ConfigReader({
+ backend: {
+ database: {
+ client: 'pg',
+ connection: {
+ host: 'localhost',
+ user: 'foo',
+ password: 'bar',
+ database: 'foodb',
+ },
+ },
+ },
+ }),
+ );
+
+ await testManager.forPlugin('testplugin').getClient();
+ const mockCalls = mocked(createDatabaseClient).mock.calls.splice(-1);
+ const [_baseConfig, overrides] = mockCalls[0];
+
+ expect(overrides).toHaveProperty(
+ 'connection.database',
+ expect.stringContaining('backstage_plugin_'),
+ );
+ });
+
+ it('uses values from plugin connection string if top level client should be used', async () => {
+ const pluginId = 'stringoverride';
+ await manager.forPlugin(pluginId).getClient();
+
+ const mockCalls = mocked(createDatabaseClient).mock.calls.splice(-1);
+ const [baseConfig, overrides] = mockCalls[0];
+
+ // plugin client should be pg
+ expect(baseConfig.get().client).toEqual('pg');
+
+ expect(overrides).toHaveProperty(
+ 'connection.database',
+ expect.stringContaining('userdbname'),
+ );
+ });
+ });
+});
diff --git a/packages/backend-common/src/database/DatabaseManager.ts b/packages/backend-common/src/database/DatabaseManager.ts
new file mode 100644
index 0000000000..55869e221d
--- /dev/null
+++ b/packages/backend-common/src/database/DatabaseManager.ts
@@ -0,0 +1,220 @@
+/*
+ * Copyright 2021 The Backstage Authors
+ *
+ * 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.
+ */
+import { Knex } from 'knex';
+import { omit } from 'lodash';
+import { Config, ConfigReader, JsonObject } from '@backstage/config';
+import {
+ createDatabaseClient,
+ ensureDatabaseExists,
+ createNameOverride,
+ normalizeConnection,
+} from './connection';
+import { PluginDatabaseManager } from './types';
+
+/**
+ * Provides a config lookup path for a plugin's config block.
+ */
+function pluginPath(pluginId: string): string {
+ return `plugin.${pluginId}`;
+}
+
+export class DatabaseManager {
+ /**
+ * Creates a DatabaseManager from `backend.database` config.
+ *
+ * The database manager allows the user to set connection and client settings on a per pluginId
+ * basis by defining a database config block under `plugin.` in addition to top level
+ * defaults. Optionally, a user may set `prefix` which is used to prefix generated database
+ * names if config is not provided.
+ *
+ * @param config The loaded application configuration.
+ */
+ static fromConfig(config: Config): DatabaseManager {
+ const databaseConfig = config.getConfig('backend.database');
+
+ return new DatabaseManager(
+ databaseConfig,
+ databaseConfig.getOptionalString('prefix'),
+ );
+ }
+
+ private constructor(
+ private readonly config: Config,
+ private readonly prefix: string = 'backstage_plugin_',
+ ) {}
+
+ /**
+ * Generates a PluginDatabaseManager for consumption by plugins.
+ *
+ * @param pluginId The plugin that the database manager should be created for. Plugin names
+ * should be unique as they are used to look up database config overrides under
+ * `backend.database.plugin`.
+ */
+ forPlugin(pluginId: string): PluginDatabaseManager {
+ const _this = this;
+
+ return {
+ getClient(): Promise {
+ return _this.getDatabase(pluginId);
+ },
+ };
+ }
+
+ /**
+ * Provides the canonical database name for a given plugin.
+ *
+ * This method provides the effective database name which is determined using global
+ * and plugin specific database config. If no explicit database name is configured,
+ * this method will provide a generated name which is the pluginId prefixed with
+ * 'backstage_plugin_'.
+ *
+ * @param pluginId Lookup the database name for given plugin
+ * @returns String representing the plugin's database name
+ */
+ private getDatabaseName(pluginId: string): string {
+ const connection = this.getConnectionConfig(pluginId);
+
+ if (this.getClientType(pluginId).client === 'sqlite3') {
+ // sqlite database name should fallback to ':memory:' as a special case
+ return (
+ (connection as Knex.Sqlite3ConnectionConfig)?.filename ?? ':memory:'
+ );
+ }
+ // all other supported databases should fallback to an auto-prefixed name
+ return (
+ (connection as Knex.ConnectionConfig)?.database ??
+ `${this.prefix}${pluginId}`
+ );
+ }
+
+ /**
+ * Provides the client type which should be used for a given plugin.
+ *
+ * The client type is determined by plugin specific config if present. Otherwise the base
+ * client is used as the fallback.
+ *
+ * @param pluginId Plugin to get the client type for
+ * @returns Object with client type returned as `client` and boolean representing whether
+ * or not the client was overridden as `overridden`
+ */
+ private getClientType(
+ pluginId: string,
+ ): {
+ client: string;
+ overridden: boolean;
+ } {
+ const pluginClient = this.config.getOptionalString(
+ `${pluginPath(pluginId)}.client`,
+ );
+
+ const baseClient = this.config.getString('client');
+ const client = pluginClient ?? baseClient;
+ return {
+ client,
+ overridden: client !== baseClient,
+ };
+ }
+
+ /**
+ * Provides a Knex connection plugin config by combining base and plugin config.
+ *
+ * This method provides a baseConfig for a plugin database connector. If the client type
+ * has not been overridden, the global connection config will be included with plugin
+ * specific config as the base. Values from the plugin connection take precedence over the
+ * base. Base database name is omitted for all supported databases excluding SQLite.
+ */
+ private getConnectionConfig(
+ pluginId: string,
+ ): Partial {
+ const { client, overridden } = this.getClientType(pluginId);
+
+ let baseConnection = normalizeConnection(
+ this.config.get('connection'),
+ this.config.getString('client'),
+ );
+ // As databases cannot be shared, the `database` property from the base connection
+ // is omitted. SQLite3's `filename` property is an exception as this is used as a
+ // directory elsewhere so we preserve `filename`.
+ baseConnection = omit(baseConnection, 'database');
+
+ // get and normalize optional plugin specific database connection
+ const connection = normalizeConnection(
+ this.config.getOptional(`${pluginPath(pluginId)}.connection`),
+ client,
+ );
+
+ return {
+ // include base connection if client type has not been overriden
+ ...(overridden ? {} : baseConnection),
+ ...connection,
+ };
+ }
+
+ /**
+ * Provides a Knex database config for a given plugin.
+ *
+ * This method provides a Knex configuration object along with the plugin's client type.
+ *
+ * @param pluginId The plugin that the database config should correspond with
+ */
+ private getConfigForPlugin(pluginId: string): Knex.Config {
+ const { client } = this.getClientType(pluginId);
+
+ return {
+ client,
+ connection: this.getConnectionConfig(pluginId),
+ };
+ }
+
+ /**
+ * Provides a partial Knex.Config database name override for a given plugin.
+ *
+ * @param pluginId Target plugin to get database name override
+ * @returns Partial Knex.Config with database name override
+ */
+ private getDatabaseOverrides(pluginId: string): Knex.Config {
+ return createNameOverride(
+ this.getClientType(pluginId).client,
+ this.getDatabaseName(pluginId),
+ );
+ }
+
+ /**
+ * Provides a scoped Knex client for a plugin as per application config.
+ *
+ * @param pluginId Plugin to get a Knex client for
+ * @returns Promise which resolves to a scoped Knex database client for a plugin
+ */
+ private async getDatabase(pluginId: string): Promise {
+ const pluginConfig = new ConfigReader(
+ this.getConfigForPlugin(pluginId) as JsonObject,
+ );
+
+ const databaseName = this.getDatabaseName(pluginId);
+ try {
+ await ensureDatabaseExists(pluginConfig, databaseName);
+ } catch (error) {
+ throw new Error(
+ `Failed to connect to the database to make sure that '${databaseName}' exists, ${error}`,
+ );
+ }
+
+ return createDatabaseClient(
+ pluginConfig,
+ this.getDatabaseOverrides(pluginId),
+ );
+ }
+}
diff --git a/packages/backend-common/src/database/SingleConnection.test.ts b/packages/backend-common/src/database/SingleConnection.test.ts
index 3466b0f79d..46d7376d25 100644
--- a/packages/backend-common/src/database/SingleConnection.test.ts
+++ b/packages/backend-common/src/database/SingleConnection.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -15,10 +15,14 @@
*/
import { ConfigReader } from '@backstage/config';
-import { createDatabaseClient } from './connection';
+import { createDatabaseClient, ensureDatabaseExists } from './connection';
import { SingleConnectionDatabaseManager } from './SingleConnection';
-jest.mock('./connection');
+jest.mock('./connection', () => ({
+ ...jest.requireActual('./connection'),
+ createDatabaseClient: jest.fn(),
+ ensureDatabaseExists: jest.fn(),
+}));
describe('SingleConnectionDatabaseManager', () => {
const defaultConfigOptions = {
@@ -43,9 +47,8 @@ describe('SingleConnectionDatabaseManager', () => {
describe('SingleConnectionDatabaseManager.fromConfig', () => {
it('accesses the backend.database key', () => {
- const getConfig = jest.fn();
const config = defaultConfig();
- config.getConfig = getConfig;
+ const getConfig = jest.spyOn(config, 'getConfig');
SingleConnectionDatabaseManager.fromConfig(config);
@@ -64,7 +67,6 @@ describe('SingleConnectionDatabaseManager', () => {
const mockCalls = mocked(createDatabaseClient).mock.calls.splice(-1);
const callArgs = mockCalls[0];
- expect(callArgs[0].get()).toEqual(defaultConfigOptions.backend.database);
expect(callArgs[1].connection.database).toEqual(
`backstage_plugin_${pluginId}`,
);
@@ -85,5 +87,13 @@ describe('SingleConnectionDatabaseManager', () => {
plugin2CallArgs[1].connection.database,
);
});
+
+ it('ensure plugin database is created', async () => {
+ await manager.forPlugin('test').getClient();
+ const mockCalls = mocked(ensureDatabaseExists).mock.calls.splice(-1);
+ const [_, database] = mockCalls[0];
+
+ expect(database).toEqual('backstage_plugin_test');
+ });
});
});
diff --git a/packages/backend-common/src/database/SingleConnection.ts b/packages/backend-common/src/database/SingleConnection.ts
index 1c5931a662..153aea7f38 100644
--- a/packages/backend-common/src/database/SingleConnection.ts
+++ b/packages/backend-common/src/database/SingleConnection.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,69 +14,14 @@
* limitations under the License.
*/
-import { Knex } from 'knex';
-import { Config } from '@backstage/config';
-import { createDatabaseClient, ensureDatabaseExists } from './connection';
-import { PluginDatabaseManager } from './types';
+import { DatabaseManager } from './DatabaseManager';
/**
* Implements a Database Manager which will automatically create new databases
* for plugins when requested. All requested databases are created with the
* credentials provided; if the database already exists no attempt to create
* the database will be made.
+ *
+ * @deprecated Use `DatabaseManager` from `@backend-common` instead.
*/
-export class SingleConnectionDatabaseManager {
- /**
- * Creates a new SingleConnectionDatabaseManager instance by reading from the `backend`
- * config section, specifically the `.database` key for discovering the management
- * database configuration.
- *
- * @param config The loaded application configuration.
- */
- static fromConfig(config: Config): SingleConnectionDatabaseManager {
- return new SingleConnectionDatabaseManager(
- config.getConfig('backend.database'),
- );
- }
-
- private constructor(private readonly config: Config) {}
-
- /**
- * Generates a PluginDatabaseManager for consumption by plugins.
- *
- * @param pluginId The plugin that the database manager should be created for. Plugin names should be unique.
- */
- forPlugin(pluginId: string): PluginDatabaseManager {
- const _this = this;
-
- return {
- getClient(): Promise {
- return _this.getDatabase(pluginId);
- },
- };
- }
-
- private async getDatabase(pluginId: string): Promise {
- const config = this.config;
- const overrides = SingleConnectionDatabaseManager.getDatabaseOverrides(
- pluginId,
- );
- const overrideConfig = overrides.connection as Knex.ConnectionConfig;
- await this.ensureDatabase(overrideConfig.database);
-
- return createDatabaseClient(config, overrides);
- }
-
- private static getDatabaseOverrides(pluginId: string): Knex.Config {
- return {
- connection: {
- database: `backstage_plugin_${pluginId}`,
- },
- };
- }
-
- private async ensureDatabase(database: string) {
- const config = this.config;
- await ensureDatabaseExists(config, database);
- }
-}
+export const SingleConnectionDatabaseManager = DatabaseManager;
diff --git a/packages/backend-common/src/database/config.test.ts b/packages/backend-common/src/database/config.test.ts
index eb26013b4b..01ec599cf4 100644
--- a/packages/backend-common/src/database/config.test.ts
+++ b/packages/backend-common/src/database/config.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/database/config.ts b/packages/backend-common/src/database/config.ts
index af32556c28..b771811e8c 100644
--- a/packages/backend-common/src/database/config.ts
+++ b/packages/backend-common/src/database/config.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/database/connection.test.ts b/packages/backend-common/src/database/connection.test.ts
index 6ab163ff7f..869722ddf7 100644
--- a/packages/backend-common/src/database/connection.test.ts
+++ b/packages/backend-common/src/database/connection.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -15,7 +15,11 @@
*/
import { ConfigReader } from '@backstage/config';
-import { createDatabaseClient } from './connection';
+import {
+ createDatabaseClient,
+ createNameOverride,
+ parseConnectionString,
+} from './connection';
describe('database connection', () => {
describe('createDatabaseClient', () => {
@@ -103,4 +107,49 @@ describe('database connection', () => {
).toThrowError();
});
});
+
+ describe('createNameOverride', () => {
+ it('returns Knex config for postgres', () => {
+ expect(createNameOverride('pg', 'testpg')).toHaveProperty(
+ 'connection.database',
+ 'testpg',
+ );
+ });
+
+ it('returns Knex config for sqlite', () => {
+ expect(createNameOverride('sqlite3', 'testsqlite')).toHaveProperty(
+ 'connection.filename',
+ 'testsqlite',
+ );
+ });
+
+ it('returns Knex config for mysql', () => {
+ expect(createNameOverride('mysql', 'testmysql')).toHaveProperty(
+ 'connection.database',
+ 'testmysql',
+ );
+ });
+
+ it('throws an error for unknown connection', () => {
+ expect(() => createNameOverride('unknown', 'testname')).toThrowError();
+ });
+ });
+
+ describe('parseConnectionString', () => {
+ it('returns parsed Knex.StaticConnectionConfig for postgres', () => {
+ expect(
+ parseConnectionString('postgresql://foo:bar@acme:5432/foodb', 'pg'),
+ ).toHaveProperty('database', 'foodb');
+ });
+
+ it('returns parsed Knex.StaticConnectionConfig for mysql2', () => {
+ expect(
+ parseConnectionString('mysql://foo:bar@acme:3306/foodb', 'mysql2'),
+ ).toHaveProperty('database', 'foodb');
+ });
+
+ it('throws an error if client hint is not provided', () => {
+ expect(() => parseConnectionString('sqlite://')).toThrow();
+ });
+ });
});
diff --git a/packages/backend-common/src/database/connection.ts b/packages/backend-common/src/database/connection.ts
index fb16915cf4..6fdb5554bd 100644
--- a/packages/backend-common/src/database/connection.ts
+++ b/packages/backend-common/src/database/connection.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,14 +14,28 @@
* limitations under the License.
*/
-import { Config } from '@backstage/config';
+import { Config, JsonObject } from '@backstage/config';
+import { InputError } from '@backstage/errors';
import knexFactory, { Knex } from 'knex';
import { mergeDatabaseConfig } from './config';
-import { createMysqlDatabaseClient, ensureMysqlDatabaseExists } from './mysql';
-import { createPgDatabaseClient, ensurePgDatabaseExists } from './postgres';
-import { createSqliteDatabaseClient } from './sqlite3';
+import { DatabaseConnector } from './types';
-type DatabaseClient = 'pg' | 'sqlite3' | string;
+import { mysqlConnector, pgConnector, sqlite3Connector } from './connectors';
+
+type DatabaseClient = 'pg' | 'sqlite3' | 'mysql' | 'mysql2' | string;
+
+/**
+ * Mapping of client type to supported database connectors
+ *
+ * Database connectors can be aliased here, for example mysql2 uses
+ * the same connector as mysql.
+ */
+const ConnectorMapping: Record = {
+ pg: pgConnector,
+ sqlite3: sqlite3Connector,
+ mysql: mysqlConnector,
+ mysql2: mysqlConnector,
+};
/**
* Creates a knex database connection
@@ -35,15 +49,10 @@ export function createDatabaseClient(
) {
const client: DatabaseClient = dbConfig.getString('client');
- if (client === 'pg') {
- return createPgDatabaseClient(dbConfig, overrides);
- } else if (client === 'mysql' || client === 'mysql2') {
- return createMysqlDatabaseClient(dbConfig, overrides);
- } else if (client === 'sqlite3') {
- return createSqliteDatabaseClient(dbConfig, overrides);
- }
-
- return knexFactory(mergeDatabaseConfig(dbConfig.get(), overrides));
+ return (
+ ConnectorMapping[client]?.createClient(dbConfig, overrides) ??
+ knexFactory(mergeDatabaseConfig(dbConfig.get(), overrides))
+ );
}
/**
@@ -58,14 +67,66 @@ export const createDatabase = createDatabaseClient;
export async function ensureDatabaseExists(
dbConfig: Config,
...databases: Array
-) {
+): Promise {
const client: DatabaseClient = dbConfig.getString('client');
- if (client === 'pg') {
- return ensurePgDatabaseExists(dbConfig, ...databases);
- } else if (client === 'mysql' || client === 'mysql2') {
- return ensureMysqlDatabaseExists(dbConfig, ...databases);
+ return ConnectorMapping[client]?.ensureDatabaseExists?.(
+ dbConfig,
+ ...databases,
+ );
+}
+
+/**
+ * Provides a Knex.Config object with the provided database name for a given client.
+ */
+export function createNameOverride(
+ client: string,
+ name: string,
+): Partial {
+ try {
+ return ConnectorMapping[client].createNameOverride(name);
+ } catch (e) {
+ throw new InputError(
+ `Unable to create database name override for '${client}' connector`,
+ e,
+ );
+ }
+}
+
+/**
+ * Parses a connection string for a given client and provides a connection config.
+ */
+export function parseConnectionString(
+ connectionString: string,
+ client?: string,
+): Knex.StaticConnectionConfig {
+ if (typeof client === 'undefined' || client === null) {
+ throw new InputError(
+ 'Database connection string client type auto-detection is not yet supported.',
+ );
}
- return undefined;
+ try {
+ return ConnectorMapping[client].parseConnectionString(connectionString);
+ } catch (e) {
+ throw new InputError(
+ `Unable to parse connection string for '${client}' connector`,
+ );
+ }
+}
+
+/**
+ * Normalizes a connection config or string into an object which can be passed to Knex.
+ */
+export function normalizeConnection(
+ connection: Knex.StaticConnectionConfig | JsonObject | string | undefined,
+ client: string,
+): Partial {
+ if (typeof connection === 'undefined' || connection === null) {
+ return {};
+ }
+
+ return typeof connection === 'string' || connection instanceof String
+ ? parseConnectionString(connection as string, client)
+ : connection;
}
diff --git a/packages/backend-common/src/database/connectors/defaultNameOverride.test.ts b/packages/backend-common/src/database/connectors/defaultNameOverride.test.ts
new file mode 100644
index 0000000000..1da8e6c11e
--- /dev/null
+++ b/packages/backend-common/src/database/connectors/defaultNameOverride.test.ts
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2021 The Backstage Authors
+ *
+ * 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.
+ */
+import defaultNameOverride from './defaultNameOverride';
+
+describe('defaultNameOverride()', () => {
+ it('returns a partial knex static connection config with database name', () => {
+ const testDatabaseName = 'testdatabase';
+ expect(defaultNameOverride(testDatabaseName)).toHaveProperty(
+ 'connection.database',
+ testDatabaseName,
+ );
+ });
+});
diff --git a/packages/backend-common/src/database/connectors/defaultNameOverride.ts b/packages/backend-common/src/database/connectors/defaultNameOverride.ts
new file mode 100644
index 0000000000..d48cedd0ff
--- /dev/null
+++ b/packages/backend-common/src/database/connectors/defaultNameOverride.ts
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2021 The Backstage Authors
+ *
+ * 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.
+ */
+import { Knex } from 'knex';
+
+/**
+ * Provides a partial knex config with database name override.
+ *
+ * Default override for knex database drivers which accept ConnectionConfig
+ * with `connection.database` as the database name field.
+ *
+ * @param name database name to get config override for
+ */
+export default function defaultNameOverride(
+ name: string,
+): Partial {
+ return {
+ connection: {
+ database: name,
+ },
+ };
+}
diff --git a/packages/backend-common/src/database/connectors/index.ts b/packages/backend-common/src/database/connectors/index.ts
new file mode 100644
index 0000000000..df84ec66ba
--- /dev/null
+++ b/packages/backend-common/src/database/connectors/index.ts
@@ -0,0 +1,18 @@
+/*
+ * Copyright 2021 The Backstage Authors
+ *
+ * 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.
+ */
+export * from './mysql';
+export * from './postgres';
+export * from './sqlite3';
diff --git a/packages/backend-common/src/database/mysql.test.ts b/packages/backend-common/src/database/connectors/mysql.test.ts
similarity index 99%
rename from packages/backend-common/src/database/mysql.test.ts
rename to packages/backend-common/src/database/connectors/mysql.test.ts
index 9e23585d5b..93847881f1 100644
--- a/packages/backend-common/src/database/mysql.test.ts
+++ b/packages/backend-common/src/database/connectors/mysql.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/database/mysql.ts b/packages/backend-common/src/database/connectors/mysql.ts
similarity index 88%
rename from packages/backend-common/src/database/mysql.ts
rename to packages/backend-common/src/database/connectors/mysql.ts
index be4632baf6..f2f2298559 100644
--- a/packages/backend-common/src/database/mysql.ts
+++ b/packages/backend-common/src/database/connectors/mysql.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,11 +14,14 @@
* limitations under the License.
*/
+import knexFactory, { Knex } from 'knex';
+import yn from 'yn';
+
import { Config } from '@backstage/config';
import { InputError } from '@backstage/errors';
-import knexFactory, { Knex } from 'knex';
-import { mergeDatabaseConfig } from './config';
-import yn from 'yn';
+import { mergeDatabaseConfig } from '../config';
+import { DatabaseConnector } from '../types';
+import defaultNameOverride from './defaultNameOverride';
/**
* Creates a knex mysql database connection
@@ -159,3 +162,15 @@ export async function ensureMysqlDatabaseExists(
await admin.destroy();
}
}
+
+/**
+ * MySQL database connector.
+ *
+ * Exposes database connector functionality via an immutable object.
+ */
+export const mysqlConnector: DatabaseConnector = Object.freeze({
+ createClient: createMysqlDatabaseClient,
+ ensureDatabaseExists: ensureMysqlDatabaseExists,
+ createNameOverride: defaultNameOverride,
+ parseConnectionString: parseMysqlConnectionString,
+});
diff --git a/packages/backend-common/src/database/postgres.test.ts b/packages/backend-common/src/database/connectors/postgres.test.ts
similarity index 99%
rename from packages/backend-common/src/database/postgres.test.ts
rename to packages/backend-common/src/database/connectors/postgres.test.ts
index 59c135f309..ac988a2880 100644
--- a/packages/backend-common/src/database/postgres.test.ts
+++ b/packages/backend-common/src/database/connectors/postgres.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/database/postgres.ts b/packages/backend-common/src/database/connectors/postgres.ts
similarity index 86%
rename from packages/backend-common/src/database/postgres.ts
rename to packages/backend-common/src/database/connectors/postgres.ts
index e05eab86e5..f6e42d1945 100644
--- a/packages/backend-common/src/database/postgres.ts
+++ b/packages/backend-common/src/database/connectors/postgres.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -15,8 +15,11 @@
*/
import knexFactory, { Knex } from 'knex';
+
import { Config } from '@backstage/config';
-import { mergeDatabaseConfig } from './config';
+import { mergeDatabaseConfig } from '../config';
+import { DatabaseConnector } from '../types';
+import defaultNameOverride from './defaultNameOverride';
/**
* Creates a knex postgres database connection
@@ -131,3 +134,15 @@ export async function ensurePgDatabaseExists(
await admin.destroy();
}
}
+
+/**
+ * PostgreSQL database connector.
+ *
+ * Exposes database connector functionality via an immutable object.
+ */
+export const pgConnector: DatabaseConnector = Object.freeze({
+ createClient: createPgDatabaseClient,
+ ensureDatabaseExists: ensurePgDatabaseExists,
+ createNameOverride: defaultNameOverride,
+ parseConnectionString: parsePgConnectionString,
+});
diff --git a/packages/backend-common/src/database/sqlite3.test.ts b/packages/backend-common/src/database/connectors/sqlite3.test.ts
similarity index 98%
rename from packages/backend-common/src/database/sqlite3.test.ts
rename to packages/backend-common/src/database/connectors/sqlite3.test.ts
index 86f3a6968b..b9da19d247 100644
--- a/packages/backend-common/src/database/sqlite3.test.ts
+++ b/packages/backend-common/src/database/connectors/sqlite3.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/database/sqlite3.ts b/packages/backend-common/src/database/connectors/sqlite3.ts
similarity index 74%
rename from packages/backend-common/src/database/sqlite3.ts
rename to packages/backend-common/src/database/connectors/sqlite3.ts
index d4169e3899..3dfecd7e6b 100644
--- a/packages/backend-common/src/database/sqlite3.ts
+++ b/packages/backend-common/src/database/connectors/sqlite3.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,15 +13,17 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+import path from 'path';
-import { Config } from '@backstage/config';
import { ensureDirSync } from 'fs-extra';
import knexFactory, { Knex } from 'knex';
-import path from 'path';
-import { mergeDatabaseConfig } from './config';
+
+import { Config } from '@backstage/config';
+import { mergeDatabaseConfig } from '../config';
+import { DatabaseConnector } from '../types';
/**
- * Creates a knex sqlite3 database connection
+ * Creates a knex SQLite3 database connection
*
* @param dbConfig The database config
* @param overrides Additional options to merge with the config
@@ -54,7 +56,7 @@ export function createSqliteDatabaseClient(
}
/**
- * Builds a knex sqlite3 connection config
+ * Builds a knex SQLite3 connection config
*
* @param dbConfig The database config
* @param overrides Additional options to merge with the config
@@ -99,3 +101,34 @@ export function buildSqliteDatabaseConfig(
return config;
}
+
+/**
+ * Provides a partial knex SQLite3 config to override database name.
+ */
+export function createSqliteNameOverride(name: string): Partial {
+ return {
+ connection: parseSqliteConnectionString(name),
+ };
+}
+
+/**
+ * Produces a partial knex SQLite3 connection config with database name.
+ */
+export function parseSqliteConnectionString(
+ name: string,
+): Knex.Sqlite3ConnectionConfig {
+ return {
+ filename: name,
+ };
+}
+
+/**
+ * SQLite3 database connector.
+ *
+ * Exposes database connector functionality via an immutable object.
+ */
+export const sqlite3Connector: DatabaseConnector = Object.freeze({
+ createClient: createSqliteDatabaseClient,
+ createNameOverride: createSqliteNameOverride,
+ parseConnectionString: parseSqliteConnectionString,
+});
diff --git a/packages/backend-common/src/database/index.ts b/packages/backend-common/src/database/index.ts
index c81153aa62..7fcb8bf930 100644
--- a/packages/backend-common/src/database/index.ts
+++ b/packages/backend-common/src/database/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,6 +14,17 @@
* limitations under the License.
*/
-export * from './connection';
-export * from './types';
export * from './SingleConnection';
+export * from './DatabaseManager';
+
+/*
+ * Undocumented API surface from connection is being reduced for future deprecation.
+ * Avoid exporting additional symbols.
+ */
+export {
+ createDatabaseClient,
+ createDatabase,
+ ensureDatabaseExists,
+} from './connection';
+
+export type { PluginDatabaseManager } from './types';
diff --git a/packages/backend-common/src/database/types.ts b/packages/backend-common/src/database/types.ts
index bf3ceb2786..c1647862af 100644
--- a/packages/backend-common/src/database/types.ts
+++ b/packages/backend-common/src/database/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,6 +14,7 @@
* limitations under the License.
*/
+import { Config } from '@backstage/config';
import { Knex } from 'knex';
/**
@@ -28,3 +29,37 @@ export interface PluginDatabaseManager {
*/
getClient(): Promise;
}
+
+/**
+ * DatabaseConnector manages an underlying Knex database driver.
+ */
+export interface DatabaseConnector {
+ /**
+ * createClient provides an instance of a knex database connector.
+ */
+ createClient(dbConfig: Config, overrides?: Partial): Knex;
+ /**
+ * createNameOverride provides a partial knex config sufficient to override a
+ * database name.
+ */
+ createNameOverride(name: string): Partial;
+ /**
+ * parseConnectionString produces a knex connection config object representing
+ * a database connection string.
+ */
+ parseConnectionString(
+ connectionString: string,
+ client?: string,
+ ): Knex.StaticConnectionConfig;
+ /**
+ * ensureDatabaseExists performs a side-effect to ensure database names passed in are
+ * present.
+ *
+ * Calling this function on databases which already exist should do nothing.
+ * Missing databases should be created if needed.
+ */
+ ensureDatabaseExists?(
+ dbConfig: Config,
+ ...databases: Array
+ ): Promise;
+}
diff --git a/packages/backend-common/src/discovery/SingleHostDiscovery.ts b/packages/backend-common/src/discovery/SingleHostDiscovery.ts
index 184746b924..7d19284d9a 100644
--- a/packages/backend-common/src/discovery/SingleHostDiscovery.ts
+++ b/packages/backend-common/src/discovery/SingleHostDiscovery.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/discovery/index.ts b/packages/backend-common/src/discovery/index.ts
index 7fe320c1e5..5b62d6f4e4 100644
--- a/packages/backend-common/src/discovery/index.ts
+++ b/packages/backend-common/src/discovery/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/discovery/types.ts b/packages/backend-common/src/discovery/types.ts
index 22eb4b23d4..a5915be773 100644
--- a/packages/backend-common/src/discovery/types.ts
+++ b/packages/backend-common/src/discovery/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/hot.ts b/packages/backend-common/src/hot.ts
index c725096c75..951e29da6a 100644
--- a/packages/backend-common/src/hot.ts
+++ b/packages/backend-common/src/hot.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/index.ts b/packages/backend-common/src/index.ts
index dab981a824..f2f38d9aab 100644
--- a/packages/backend-common/src/index.ts
+++ b/packages/backend-common/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/logging/formats.ts b/packages/backend-common/src/logging/formats.ts
index d24b9509dd..870eeafa2a 100644
--- a/packages/backend-common/src/logging/formats.ts
+++ b/packages/backend-common/src/logging/formats.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/logging/index.ts b/packages/backend-common/src/logging/index.ts
index ef2e96f6c0..71e9618f0c 100644
--- a/packages/backend-common/src/logging/index.ts
+++ b/packages/backend-common/src/logging/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/logging/rootLogger.test.ts b/packages/backend-common/src/logging/rootLogger.test.ts
index 5506d195a9..50cf867c85 100644
--- a/packages/backend-common/src/logging/rootLogger.test.ts
+++ b/packages/backend-common/src/logging/rootLogger.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/logging/rootLogger.ts b/packages/backend-common/src/logging/rootLogger.ts
index a8cf4721d6..58b675d9cf 100644
--- a/packages/backend-common/src/logging/rootLogger.ts
+++ b/packages/backend-common/src/logging/rootLogger.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/logging/voidLogger.ts b/packages/backend-common/src/logging/voidLogger.ts
index 762b3c0dcb..0afc1fc8c7 100644
--- a/packages/backend-common/src/logging/voidLogger.ts
+++ b/packages/backend-common/src/logging/voidLogger.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/middleware/errorHandler.test.ts b/packages/backend-common/src/middleware/errorHandler.test.ts
index 3fb7aedc37..e9808ec633 100644
--- a/packages/backend-common/src/middleware/errorHandler.test.ts
+++ b/packages/backend-common/src/middleware/errorHandler.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/middleware/errorHandler.ts b/packages/backend-common/src/middleware/errorHandler.ts
index bee3f5557d..ee7995f2c6 100644
--- a/packages/backend-common/src/middleware/errorHandler.ts
+++ b/packages/backend-common/src/middleware/errorHandler.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/middleware/index.ts b/packages/backend-common/src/middleware/index.ts
index 76c52d8830..f4f4fcde0b 100644
--- a/packages/backend-common/src/middleware/index.ts
+++ b/packages/backend-common/src/middleware/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/middleware/notFoundHandler.test.ts b/packages/backend-common/src/middleware/notFoundHandler.test.ts
index 65858e8cc1..b0dea8ef62 100644
--- a/packages/backend-common/src/middleware/notFoundHandler.test.ts
+++ b/packages/backend-common/src/middleware/notFoundHandler.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/middleware/notFoundHandler.ts b/packages/backend-common/src/middleware/notFoundHandler.ts
index 19dd130c64..59ca957cc1 100644
--- a/packages/backend-common/src/middleware/notFoundHandler.ts
+++ b/packages/backend-common/src/middleware/notFoundHandler.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/middleware/requestLoggingHandler.test.ts b/packages/backend-common/src/middleware/requestLoggingHandler.test.ts
index 6aed54540f..c95e59f80b 100644
--- a/packages/backend-common/src/middleware/requestLoggingHandler.test.ts
+++ b/packages/backend-common/src/middleware/requestLoggingHandler.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/middleware/requestLoggingHandler.ts b/packages/backend-common/src/middleware/requestLoggingHandler.ts
index 061dfbbd25..f2f5cbda27 100644
--- a/packages/backend-common/src/middleware/requestLoggingHandler.ts
+++ b/packages/backend-common/src/middleware/requestLoggingHandler.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/middleware/statusCheckHandler.test.ts b/packages/backend-common/src/middleware/statusCheckHandler.test.ts
index 7ed1a65b58..7393276045 100644
--- a/packages/backend-common/src/middleware/statusCheckHandler.test.ts
+++ b/packages/backend-common/src/middleware/statusCheckHandler.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/middleware/statusCheckHandler.ts b/packages/backend-common/src/middleware/statusCheckHandler.ts
index 3f62f04f59..243d6533c8 100644
--- a/packages/backend-common/src/middleware/statusCheckHandler.ts
+++ b/packages/backend-common/src/middleware/statusCheckHandler.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/paths.ts b/packages/backend-common/src/paths.ts
index 262be366f6..efe8e027c8 100644
--- a/packages/backend-common/src/paths.ts
+++ b/packages/backend-common/src/paths.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/reading/AzureUrlReader.test.ts b/packages/backend-common/src/reading/AzureUrlReader.test.ts
index c4a0fe0466..bcbcc19483 100644
--- a/packages/backend-common/src/reading/AzureUrlReader.test.ts
+++ b/packages/backend-common/src/reading/AzureUrlReader.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/reading/AzureUrlReader.ts b/packages/backend-common/src/reading/AzureUrlReader.ts
index e2b230a05f..fe541538ea 100644
--- a/packages/backend-common/src/reading/AzureUrlReader.ts
+++ b/packages/backend-common/src/reading/AzureUrlReader.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/reading/BitbucketUrlReader.test.ts b/packages/backend-common/src/reading/BitbucketUrlReader.test.ts
index 24216d45b5..d8bcde2397 100644
--- a/packages/backend-common/src/reading/BitbucketUrlReader.test.ts
+++ b/packages/backend-common/src/reading/BitbucketUrlReader.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/reading/BitbucketUrlReader.ts b/packages/backend-common/src/reading/BitbucketUrlReader.ts
index 009b81bc28..c4dc6e135f 100644
--- a/packages/backend-common/src/reading/BitbucketUrlReader.ts
+++ b/packages/backend-common/src/reading/BitbucketUrlReader.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/reading/FetchUrlReader.test.ts b/packages/backend-common/src/reading/FetchUrlReader.test.ts
index 2363a16d1a..169cbfbf66 100644
--- a/packages/backend-common/src/reading/FetchUrlReader.test.ts
+++ b/packages/backend-common/src/reading/FetchUrlReader.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/reading/FetchUrlReader.ts b/packages/backend-common/src/reading/FetchUrlReader.ts
index 57bab5e58d..4c03ea904d 100644
--- a/packages/backend-common/src/reading/FetchUrlReader.ts
+++ b/packages/backend-common/src/reading/FetchUrlReader.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/reading/GithubUrlReader.test.ts b/packages/backend-common/src/reading/GithubUrlReader.test.ts
index cbe61f2e66..787ef82f60 100644
--- a/packages/backend-common/src/reading/GithubUrlReader.test.ts
+++ b/packages/backend-common/src/reading/GithubUrlReader.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/reading/GithubUrlReader.ts b/packages/backend-common/src/reading/GithubUrlReader.ts
index 2b1247fe77..70bc9601df 100644
--- a/packages/backend-common/src/reading/GithubUrlReader.ts
+++ b/packages/backend-common/src/reading/GithubUrlReader.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/reading/GitlabUrlReader.test.ts b/packages/backend-common/src/reading/GitlabUrlReader.test.ts
index b5592c09f5..5971264545 100644
--- a/packages/backend-common/src/reading/GitlabUrlReader.test.ts
+++ b/packages/backend-common/src/reading/GitlabUrlReader.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/reading/GitlabUrlReader.ts b/packages/backend-common/src/reading/GitlabUrlReader.ts
index 635565c8a0..13764a5312 100644
--- a/packages/backend-common/src/reading/GitlabUrlReader.ts
+++ b/packages/backend-common/src/reading/GitlabUrlReader.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/reading/GoogleGcsUrlReader.test.ts b/packages/backend-common/src/reading/GoogleGcsUrlReader.test.ts
index 5d4b01da44..d8aac4886d 100644
--- a/packages/backend-common/src/reading/GoogleGcsUrlReader.test.ts
+++ b/packages/backend-common/src/reading/GoogleGcsUrlReader.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/reading/GoogleGcsUrlReader.ts b/packages/backend-common/src/reading/GoogleGcsUrlReader.ts
index 4ea24fa22f..e06612cd15 100644
--- a/packages/backend-common/src/reading/GoogleGcsUrlReader.ts
+++ b/packages/backend-common/src/reading/GoogleGcsUrlReader.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/reading/UrlReaderPredicateMux.ts b/packages/backend-common/src/reading/UrlReaderPredicateMux.ts
index 06ca0c5971..c9afecf907 100644
--- a/packages/backend-common/src/reading/UrlReaderPredicateMux.ts
+++ b/packages/backend-common/src/reading/UrlReaderPredicateMux.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/reading/UrlReaders.ts b/packages/backend-common/src/reading/UrlReaders.ts
index 8f27d058df..bc77877384 100644
--- a/packages/backend-common/src/reading/UrlReaders.ts
+++ b/packages/backend-common/src/reading/UrlReaders.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/reading/index.ts b/packages/backend-common/src/reading/index.ts
index da32f45f6f..4c601556d7 100644
--- a/packages/backend-common/src/reading/index.ts
+++ b/packages/backend-common/src/reading/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/reading/integration.test.ts b/packages/backend-common/src/reading/integration.test.ts
index 1c7657d873..ae557be583 100644
--- a/packages/backend-common/src/reading/integration.test.ts
+++ b/packages/backend-common/src/reading/integration.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/reading/tree/ReadTreeResponseFactory.ts b/packages/backend-common/src/reading/tree/ReadTreeResponseFactory.ts
index 1ce7555a30..912fddf965 100644
--- a/packages/backend-common/src/reading/tree/ReadTreeResponseFactory.ts
+++ b/packages/backend-common/src/reading/tree/ReadTreeResponseFactory.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/reading/tree/TarArchiveResponse.test.ts b/packages/backend-common/src/reading/tree/TarArchiveResponse.test.ts
index 2b76bea9e3..aa904c5522 100644
--- a/packages/backend-common/src/reading/tree/TarArchiveResponse.test.ts
+++ b/packages/backend-common/src/reading/tree/TarArchiveResponse.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/reading/tree/TarArchiveResponse.ts b/packages/backend-common/src/reading/tree/TarArchiveResponse.ts
index e61a1df645..a81add58f7 100644
--- a/packages/backend-common/src/reading/tree/TarArchiveResponse.ts
+++ b/packages/backend-common/src/reading/tree/TarArchiveResponse.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/reading/tree/ZipArchiveResponse.test.ts b/packages/backend-common/src/reading/tree/ZipArchiveResponse.test.ts
index 3bcaa5e0e3..659875286e 100644
--- a/packages/backend-common/src/reading/tree/ZipArchiveResponse.test.ts
+++ b/packages/backend-common/src/reading/tree/ZipArchiveResponse.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/reading/tree/ZipArchiveResponse.ts b/packages/backend-common/src/reading/tree/ZipArchiveResponse.ts
index 4aebff5c84..45c6880a55 100644
--- a/packages/backend-common/src/reading/tree/ZipArchiveResponse.ts
+++ b/packages/backend-common/src/reading/tree/ZipArchiveResponse.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/reading/tree/index.ts b/packages/backend-common/src/reading/tree/index.ts
index 3126907c1e..e10ae28e09 100644
--- a/packages/backend-common/src/reading/tree/index.ts
+++ b/packages/backend-common/src/reading/tree/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/reading/tree/util.ts b/packages/backend-common/src/reading/tree/util.ts
index 8e908a5e60..cfb986a0b0 100644
--- a/packages/backend-common/src/reading/tree/util.ts
+++ b/packages/backend-common/src/reading/tree/util.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/reading/types.ts b/packages/backend-common/src/reading/types.ts
index 7ba806197d..f7fad4dd7a 100644
--- a/packages/backend-common/src/reading/types.ts
+++ b/packages/backend-common/src/reading/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/scm/git.test.ts b/packages/backend-common/src/scm/git.test.ts
index 9af080a782..af9dfeef1b 100644
--- a/packages/backend-common/src/scm/git.test.ts
+++ b/packages/backend-common/src/scm/git.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/scm/git.ts b/packages/backend-common/src/scm/git.ts
index 21aa9bf5d1..3afa551d5f 100644
--- a/packages/backend-common/src/scm/git.ts
+++ b/packages/backend-common/src/scm/git.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/scm/index.ts b/packages/backend-common/src/scm/index.ts
index e967fffb44..ceba752c9e 100644
--- a/packages/backend-common/src/scm/index.ts
+++ b/packages/backend-common/src/scm/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/service/createServiceBuilder.ts b/packages/backend-common/src/service/createServiceBuilder.ts
index c62921afc3..17d69e7082 100644
--- a/packages/backend-common/src/service/createServiceBuilder.ts
+++ b/packages/backend-common/src/service/createServiceBuilder.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/service/createStatusCheckRouter.test.ts b/packages/backend-common/src/service/createStatusCheckRouter.test.ts
index 6c15e7b5f9..604a1eb12f 100644
--- a/packages/backend-common/src/service/createStatusCheckRouter.test.ts
+++ b/packages/backend-common/src/service/createStatusCheckRouter.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/service/createStatusCheckRouter.ts b/packages/backend-common/src/service/createStatusCheckRouter.ts
index c6014cbfc2..ab24a6953b 100644
--- a/packages/backend-common/src/service/createStatusCheckRouter.ts
+++ b/packages/backend-common/src/service/createStatusCheckRouter.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/service/index.ts b/packages/backend-common/src/service/index.ts
index 58e310032d..4eb0bf4a5a 100644
--- a/packages/backend-common/src/service/index.ts
+++ b/packages/backend-common/src/service/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/service/lib/ServiceBuilderImpl.test.ts b/packages/backend-common/src/service/lib/ServiceBuilderImpl.test.ts
index cffb0a88de..bd97f444de 100644
--- a/packages/backend-common/src/service/lib/ServiceBuilderImpl.test.ts
+++ b/packages/backend-common/src/service/lib/ServiceBuilderImpl.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/service/lib/ServiceBuilderImpl.ts b/packages/backend-common/src/service/lib/ServiceBuilderImpl.ts
index 45eba03157..380d61abc8 100644
--- a/packages/backend-common/src/service/lib/ServiceBuilderImpl.ts
+++ b/packages/backend-common/src/service/lib/ServiceBuilderImpl.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/service/lib/config.test.ts b/packages/backend-common/src/service/lib/config.test.ts
index 75252357d6..f2f0c88cfb 100644
--- a/packages/backend-common/src/service/lib/config.test.ts
+++ b/packages/backend-common/src/service/lib/config.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/service/lib/config.ts b/packages/backend-common/src/service/lib/config.ts
index 3a33675d5f..77ef925403 100644
--- a/packages/backend-common/src/service/lib/config.ts
+++ b/packages/backend-common/src/service/lib/config.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/service/lib/hostFactory.ts b/packages/backend-common/src/service/lib/hostFactory.ts
index db202a84ab..d3795893f7 100644
--- a/packages/backend-common/src/service/lib/hostFactory.ts
+++ b/packages/backend-common/src/service/lib/hostFactory.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/service/types.ts b/packages/backend-common/src/service/types.ts
index d389f4b5ff..70f62acfca 100644
--- a/packages/backend-common/src/service/types.ts
+++ b/packages/backend-common/src/service/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/setupTests.ts b/packages/backend-common/src/setupTests.ts
index ba33cf996b..d3232290a7 100644
--- a/packages/backend-common/src/setupTests.ts
+++ b/packages/backend-common/src/setupTests.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/util/ContainerRunner.ts b/packages/backend-common/src/util/ContainerRunner.ts
index 7740e384e4..80ac4e3954 100644
--- a/packages/backend-common/src/util/ContainerRunner.ts
+++ b/packages/backend-common/src/util/ContainerRunner.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/util/DockerContainerRunner.test.ts b/packages/backend-common/src/util/DockerContainerRunner.test.ts
index 942264af84..0ed41d5cd3 100644
--- a/packages/backend-common/src/util/DockerContainerRunner.test.ts
+++ b/packages/backend-common/src/util/DockerContainerRunner.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/util/DockerContainerRunner.ts b/packages/backend-common/src/util/DockerContainerRunner.ts
index a96ca1351b..6ec366eb94 100644
--- a/packages/backend-common/src/util/DockerContainerRunner.ts
+++ b/packages/backend-common/src/util/DockerContainerRunner.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-common/src/util/index.ts b/packages/backend-common/src/util/index.ts
index 85c5436a2e..ba8074a11e 100644
--- a/packages/backend-common/src/util/index.ts
+++ b/packages/backend-common/src/util/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-test-utils/CHANGELOG.md b/packages/backend-test-utils/CHANGELOG.md
index c2078fd0bc..e529fe464f 100644
--- a/packages/backend-test-utils/CHANGELOG.md
+++ b/packages/backend-test-utils/CHANGELOG.md
@@ -1,5 +1,59 @@
# @backstage/backend-test-utils
+## 0.1.3
+
+### Patch Changes
+
+- 772dbdb51: Deprecates `SingleConnectionDatabaseManager` and provides an API compatible database
+ connection manager, `DatabaseManager`, which allows developers to configure database
+ connections on a per plugin basis.
+
+ The `backend.database` config path allows you to set `prefix` to use an
+ alternate prefix for automatically generated database names, the default is
+ `backstage_plugin_`. Use `backend.database.plugin.` to set plugin
+ specific database connection configuration, e.g.
+
+ ```yaml
+ backend:
+ database:
+ client: 'pg',
+ prefix: 'custom_prefix_'
+ connection:
+ host: 'localhost'
+ user: 'foo'
+ password: 'bar'
+ plugin:
+ catalog:
+ connection:
+ database: 'database_name_overriden'
+ scaffolder:
+ client: 'sqlite3'
+ connection: ':memory:'
+ ```
+
+ Migrate existing backstage installations by swapping out the database manager in the
+ `packages/backend/src/index.ts` file as shown below:
+
+ ```diff
+ import {
+ - SingleConnectionDatabaseManager,
+ + DatabaseManager,
+ } from '@backstage/backend-common';
+
+ // ...
+
+ function makeCreateEnv(config: Config) {
+ // ...
+ - const databaseManager = SingleConnectionDatabaseManager.fromConfig(config);
+ + const databaseManager = DatabaseManager.fromConfig(config);
+ // ...
+ }
+ ```
+
+- Updated dependencies
+ - @backstage/backend-common@0.8.3
+ - @backstage/cli@0.7.1
+
## 0.1.2
### Patch Changes
diff --git a/packages/backend-test-utils/package.json b/packages/backend-test-utils/package.json
index c4ff5603f3..3079041c7f 100644
--- a/packages/backend-test-utils/package.json
+++ b/packages/backend-test-utils/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/backend-test-utils",
"description": "Test helpers library for Backstage backends",
- "version": "0.1.2",
+ "version": "0.1.3",
"main": "src/index.ts",
"types": "src/index.ts",
"private": false,
@@ -30,8 +30,8 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.8.2",
- "@backstage/cli": "^0.7.0",
+ "@backstage/backend-common": "^0.8.3",
+ "@backstage/cli": "^0.7.1",
"@backstage/config": "^0.1.5",
"knex": "^0.95.1",
"mysql2": "^2.2.5",
@@ -41,7 +41,7 @@
"uuid": "^8.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.7.0",
+ "@backstage/cli": "^0.7.1",
"jest": "^26.0.1"
},
"files": [
diff --git a/packages/backend-test-utils/src/database/TestDatabases.test.ts b/packages/backend-test-utils/src/database/TestDatabases.test.ts
index 7c1e6e1bdd..62612f3fcc 100644
--- a/packages/backend-test-utils/src/database/TestDatabases.test.ts
+++ b/packages/backend-test-utils/src/database/TestDatabases.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -71,7 +71,7 @@ describe('TestDatabases', () => {
await input.insert({ x: 'y' }).into('a');
// Look for the mark
- const database = 'backstage_plugin_0';
+ const database = 'backstage_plugin_db0';
const output = knexFactory({
client: 'pg',
connection: { host, port, user, password, database },
@@ -105,7 +105,7 @@ describe('TestDatabases', () => {
await input.insert({ x: 'y' }).into('a');
// Look for the mark
- const database = 'backstage_plugin_0';
+ const database = 'backstage_plugin_db0';
const output = knexFactory({
client: 'pg',
connection: { host, port, user, password, database },
@@ -139,7 +139,7 @@ describe('TestDatabases', () => {
await input.insert({ x: 'y' }).into('a');
// Look for the mark
- const database = 'backstage_plugin_0';
+ const database = 'backstage_plugin_db0';
const output = knexFactory({
client: 'mysql2',
connection: { host, port, user, password, database },
diff --git a/packages/backend-test-utils/src/database/TestDatabases.ts b/packages/backend-test-utils/src/database/TestDatabases.ts
index ab5846d84d..c35202354d 100644
--- a/packages/backend-test-utils/src/database/TestDatabases.ts
+++ b/packages/backend-test-utils/src/database/TestDatabases.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-import { SingleConnectionDatabaseManager } from '@backstage/backend-common';
+import { DatabaseManager } from '@backstage/backend-common';
import { ConfigReader } from '@backstage/config';
import { Knex } from 'knex';
import { isDockerDisabledForTests } from '../util/isDockerDisabledForTests';
@@ -142,7 +142,7 @@ export class TestDatabases {
// Ensure that a unique logical database is created in the instance
const connection = await instance.databaseManager
- .forPlugin(String(this.lastDatabaseIndex++))
+ .forPlugin(String(`db${this.lastDatabaseIndex++}`))
.getClient();
instance.connections.push(connection);
@@ -157,7 +157,7 @@ export class TestDatabases {
if (envVarName) {
const connectionString = process.env[envVarName];
if (connectionString) {
- const databaseManager = SingleConnectionDatabaseManager.fromConfig(
+ const databaseManager = DatabaseManager.fromConfig(
new ConfigReader({
backend: {
database: {
@@ -195,7 +195,7 @@ export class TestDatabases {
properties.dockerImageName!,
);
- const databaseManager = SingleConnectionDatabaseManager.fromConfig(
+ const databaseManager = DatabaseManager.fromConfig(
new ConfigReader({
backend: {
database: {
@@ -220,7 +220,7 @@ export class TestDatabases {
properties.dockerImageName!,
);
- const databaseManager = SingleConnectionDatabaseManager.fromConfig(
+ const databaseManager = DatabaseManager.fromConfig(
new ConfigReader({
backend: {
database: {
@@ -241,7 +241,7 @@ export class TestDatabases {
private async initSqlite(
_properties: TestDatabaseProperties,
): Promise {
- const databaseManager = SingleConnectionDatabaseManager.fromConfig(
+ const databaseManager = DatabaseManager.fromConfig(
new ConfigReader({
backend: {
database: {
diff --git a/packages/backend-test-utils/src/database/index.ts b/packages/backend-test-utils/src/database/index.ts
index 6988f0b80b..69e3f41452 100644
--- a/packages/backend-test-utils/src/database/index.ts
+++ b/packages/backend-test-utils/src/database/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-test-utils/src/database/startMysqlContainer.test.ts b/packages/backend-test-utils/src/database/startMysqlContainer.test.ts
index e210ccb413..282e84dabc 100644
--- a/packages/backend-test-utils/src/database/startMysqlContainer.test.ts
+++ b/packages/backend-test-utils/src/database/startMysqlContainer.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-test-utils/src/database/startMysqlContainer.ts b/packages/backend-test-utils/src/database/startMysqlContainer.ts
index 739298dfe5..9601854cb3 100644
--- a/packages/backend-test-utils/src/database/startMysqlContainer.ts
+++ b/packages/backend-test-utils/src/database/startMysqlContainer.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-test-utils/src/database/startPostgresContainer.test.ts b/packages/backend-test-utils/src/database/startPostgresContainer.test.ts
index 4e8acc8410..3c3ad5e15f 100644
--- a/packages/backend-test-utils/src/database/startPostgresContainer.test.ts
+++ b/packages/backend-test-utils/src/database/startPostgresContainer.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-test-utils/src/database/startPostgresContainer.ts b/packages/backend-test-utils/src/database/startPostgresContainer.ts
index 1c2ecdcb60..89a0417e22 100644
--- a/packages/backend-test-utils/src/database/startPostgresContainer.ts
+++ b/packages/backend-test-utils/src/database/startPostgresContainer.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-test-utils/src/database/types.ts b/packages/backend-test-utils/src/database/types.ts
index 791cf09b7b..b5516a19c0 100644
--- a/packages/backend-test-utils/src/database/types.ts
+++ b/packages/backend-test-utils/src/database/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-import { SingleConnectionDatabaseManager } from '@backstage/backend-common';
+import { DatabaseManager } from '@backstage/backend-common';
import { Knex } from 'knex';
/**
@@ -35,10 +35,9 @@ export type TestDatabaseProperties = {
export type Instance = {
stopContainer?: () => Promise;
- databaseManager: SingleConnectionDatabaseManager;
+ databaseManager: DatabaseManager;
connections: Array;
};
-
export const allDatabases: Record<
TestDatabaseId,
TestDatabaseProperties
diff --git a/packages/backend-test-utils/src/index.ts b/packages/backend-test-utils/src/index.ts
index ad3e422f44..7a1a10fc6e 100644
--- a/packages/backend-test-utils/src/index.ts
+++ b/packages/backend-test-utils/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-test-utils/src/setupTests.ts b/packages/backend-test-utils/src/setupTests.ts
index ba33cf996b..d3232290a7 100644
--- a/packages/backend-test-utils/src/setupTests.ts
+++ b/packages/backend-test-utils/src/setupTests.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-test-utils/src/util/index.ts b/packages/backend-test-utils/src/util/index.ts
index e4e0e97ac1..a6cdc621d4 100644
--- a/packages/backend-test-utils/src/util/index.ts
+++ b/packages/backend-test-utils/src/util/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend-test-utils/src/util/isDockerDisabledForTests.ts b/packages/backend-test-utils/src/util/isDockerDisabledForTests.ts
index 4aeea59c50..617e9eb2a1 100644
--- a/packages/backend-test-utils/src/util/isDockerDisabledForTests.ts
+++ b/packages/backend-test-utils/src/util/isDockerDisabledForTests.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend/knexfile.ts b/packages/backend/knexfile.ts
index 57ccbe8528..ca05575153 100644
--- a/packages/backend/knexfile.ts
+++ b/packages/backend/knexfile.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend/src/index.test.ts b/packages/backend/src/index.test.ts
index d18873c1f0..8b41455b27 100644
--- a/packages/backend/src/index.test.ts
+++ b/packages/backend/src/index.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend/src/index.ts b/packages/backend/src/index.ts
index d43c8f0101..9ea2e89af3 100644
--- a/packages/backend/src/index.ts
+++ b/packages/backend/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -29,7 +29,7 @@ import {
getRootLogger,
loadBackendConfig,
notFoundHandler,
- SingleConnectionDatabaseManager,
+ DatabaseManager,
SingleHostDiscovery,
UrlReaders,
useHotMemoize,
@@ -59,7 +59,7 @@ function makeCreateEnv(config: Config) {
root.info(`Created UrlReader ${reader}`);
- const databaseManager = SingleConnectionDatabaseManager.fromConfig(config);
+ const databaseManager = DatabaseManager.fromConfig(config);
const cacheManager = CacheManager.fromConfig(config);
return (plugin: string): PluginEnvironment => {
diff --git a/packages/backend/src/plugins/app.ts b/packages/backend/src/plugins/app.ts
index 5ee616b62f..b5f05f2255 100644
--- a/packages/backend/src/plugins/app.ts
+++ b/packages/backend/src/plugins/app.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend/src/plugins/auth.ts b/packages/backend/src/plugins/auth.ts
index 2b1c85f052..4e51518bc1 100644
--- a/packages/backend/src/plugins/auth.ts
+++ b/packages/backend/src/plugins/auth.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend/src/plugins/badges.ts b/packages/backend/src/plugins/badges.ts
index befca76542..0f579ccf91 100644
--- a/packages/backend/src/plugins/badges.ts
+++ b/packages/backend/src/plugins/badges.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend/src/plugins/catalog.ts b/packages/backend/src/plugins/catalog.ts
index 63a3e53c81..055595dcb5 100644
--- a/packages/backend/src/plugins/catalog.ts
+++ b/packages/backend/src/plugins/catalog.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,13 +14,9 @@
* limitations under the License.
*/
-import { useHotCleanup } from '@backstage/backend-common';
import {
CatalogBuilder,
createRouter,
- NextCatalogBuilder,
- runPeriodically,
- createNextRouter,
} from '@backstage/plugin-catalog-backend';
import { Router } from 'express';
import { PluginEnvironment } from '../types';
@@ -28,50 +24,20 @@ import { PluginEnvironment } from '../types';
export default async function createPlugin(
env: PluginEnvironment,
): Promise {
- /*
- * ** WARNING **
- * DO NOT enable the experimental catalog, it will brick your database migrations.
- * This is solely for internal backstage development.
- */
- if (process.env.EXPERIMENTAL_CATALOG === '1') {
- const builder = new NextCatalogBuilder(env);
- const {
- entitiesCatalog,
- locationAnalyzer,
- processingEngine,
- locationService,
- } = await builder.build();
-
- // TODO(jhaals): run and manage in background.
- await processingEngine.start();
-
- return await createNextRouter({
- entitiesCatalog,
- locationAnalyzer,
- locationService,
- logger: env.logger,
- config: env.config,
- });
- }
-
- const builder = new CatalogBuilder(env);
+ const builder = await CatalogBuilder.create(env);
const {
entitiesCatalog,
- locationsCatalog,
- higherOrderOperation,
locationAnalyzer,
+ processingEngine,
+ locationService,
} = await builder.build();
- useHotCleanup(
- module,
- runPeriodically(() => higherOrderOperation.refreshAllLocations(), 100000),
- );
+ await processingEngine.start();
return await createRouter({
entitiesCatalog,
- locationsCatalog,
- higherOrderOperation,
locationAnalyzer,
+ locationService,
logger: env.logger,
config: env.config,
});
diff --git a/packages/backend/src/plugins/codecoverage.ts b/packages/backend/src/plugins/codecoverage.ts
index c06e0e516f..358cf36708 100644
--- a/packages/backend/src/plugins/codecoverage.ts
+++ b/packages/backend/src/plugins/codecoverage.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend/src/plugins/graphql.ts b/packages/backend/src/plugins/graphql.ts
index c7f5d6e072..3c53f4a64e 100644
--- a/packages/backend/src/plugins/graphql.ts
+++ b/packages/backend/src/plugins/graphql.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend/src/plugins/healthcheck.ts b/packages/backend/src/plugins/healthcheck.ts
index 8ecae6be87..897e56d381 100644
--- a/packages/backend/src/plugins/healthcheck.ts
+++ b/packages/backend/src/plugins/healthcheck.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend/src/plugins/kafka.ts b/packages/backend/src/plugins/kafka.ts
index d5b5857027..baa9bb070f 100644
--- a/packages/backend/src/plugins/kafka.ts
+++ b/packages/backend/src/plugins/kafka.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend/src/plugins/kubernetes.ts b/packages/backend/src/plugins/kubernetes.ts
index 7906765533..a19520312f 100644
--- a/packages/backend/src/plugins/kubernetes.ts
+++ b/packages/backend/src/plugins/kubernetes.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend/src/plugins/proxy.ts b/packages/backend/src/plugins/proxy.ts
index 8c5e3284c0..ddffd1f018 100644
--- a/packages/backend/src/plugins/proxy.ts
+++ b/packages/backend/src/plugins/proxy.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend/src/plugins/rollbar.ts b/packages/backend/src/plugins/rollbar.ts
index b510346af5..d2fbfdd43d 100644
--- a/packages/backend/src/plugins/rollbar.ts
+++ b/packages/backend/src/plugins/rollbar.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend/src/plugins/scaffolder.ts b/packages/backend/src/plugins/scaffolder.ts
index 9c7c3c12f3..09b3732301 100644
--- a/packages/backend/src/plugins/scaffolder.ts
+++ b/packages/backend/src/plugins/scaffolder.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend/src/plugins/search.ts b/packages/backend/src/plugins/search.ts
index e587cdb606..4a1e415c74 100644
--- a/packages/backend/src/plugins/search.ts
+++ b/packages/backend/src/plugins/search.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend/src/plugins/techdocs.ts b/packages/backend/src/plugins/techdocs.ts
index dbdc455e09..eb1e0502db 100644
--- a/packages/backend/src/plugins/techdocs.ts
+++ b/packages/backend/src/plugins/techdocs.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend/src/plugins/todo.ts b/packages/backend/src/plugins/todo.ts
index 84f2feac92..df90e5a41e 100644
--- a/packages/backend/src/plugins/todo.ts
+++ b/packages/backend/src/plugins/todo.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/backend/src/types.ts b/packages/backend/src/types.ts
index 356dd08d5f..8290e569ef 100644
--- a/packages/backend/src/types.ts
+++ b/packages/backend/src/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-client/src/CatalogClient.test.ts b/packages/catalog-client/src/CatalogClient.test.ts
index 98b378f5b0..6d43af85ed 100644
--- a/packages/catalog-client/src/CatalogClient.test.ts
+++ b/packages/catalog-client/src/CatalogClient.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -47,7 +47,7 @@ describe('CatalogClient', () => {
apiVersion: '1',
kind: 'Component',
metadata: {
- name: 'Test1',
+ name: 'Test2',
namespace: 'test1',
},
},
@@ -55,13 +55,13 @@ describe('CatalogClient', () => {
apiVersion: '1',
kind: 'Component',
metadata: {
- name: 'Test2',
+ name: 'Test1',
namespace: 'test1',
},
},
];
const defaultResponse: CatalogListResponse = {
- items: defaultServiceResponse,
+ items: defaultServiceResponse.reverse(),
};
beforeEach(() => {
@@ -72,7 +72,7 @@ describe('CatalogClient', () => {
);
});
- it('should entities from correct endpoint', async () => {
+ it('should fetch entities from correct endpoint', async () => {
const response = await client.getEntities({}, { token });
expect(response).toEqual(defaultResponse);
});
diff --git a/packages/catalog-client/src/CatalogClient.ts b/packages/catalog-client/src/CatalogClient.ts
index 141929f3da..10c282f786 100644
--- a/packages/catalog-client/src/CatalogClient.ts
+++ b/packages/catalog-client/src/CatalogClient.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -20,6 +20,7 @@ import {
Location,
LOCATION_ANNOTATION,
ORIGIN_LOCATION_ANNOTATION,
+ stringifyEntityRef,
stringifyLocationReference,
} from '@backstage/catalog-model';
import { ResponseError } from '@backstage/errors';
@@ -89,7 +90,20 @@ export class CatalogClient implements CatalogApi {
`/entities${query}`,
options,
);
- return { items: entities };
+
+ const refCompare = (a: Entity, b: Entity) => {
+ const aRef = stringifyEntityRef(a);
+ const bRef = stringifyEntityRef(b);
+ if (aRef < bRef) {
+ return -1;
+ }
+ if (aRef > bRef) {
+ return 1;
+ }
+ return 0;
+ };
+
+ return { items: entities.sort(refCompare) };
}
async getEntityByName(
diff --git a/packages/catalog-client/src/index.ts b/packages/catalog-client/src/index.ts
index 59c652f9fd..42a15a27d5 100644
--- a/packages/catalog-client/src/index.ts
+++ b/packages/catalog-client/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-client/src/setupTests.ts b/packages/catalog-client/src/setupTests.ts
index ba33cf996b..d3232290a7 100644
--- a/packages/catalog-client/src/setupTests.ts
+++ b/packages/catalog-client/src/setupTests.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-client/src/types/api.ts b/packages/catalog-client/src/types/api.ts
index f9ba2e9d8d..ae3fd7b514 100644
--- a/packages/catalog-client/src/types/api.ts
+++ b/packages/catalog-client/src/types/api.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-client/src/types/discovery.ts b/packages/catalog-client/src/types/discovery.ts
index 90eb748b2f..447998b3b8 100644
--- a/packages/catalog-client/src/types/discovery.ts
+++ b/packages/catalog-client/src/types/discovery.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-client/src/types/index.ts b/packages/catalog-client/src/types/index.ts
index c1670659ec..842d0393a4 100644
--- a/packages/catalog-client/src/types/index.ts
+++ b/packages/catalog-client/src/types/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-client/src/types/status.ts b/packages/catalog-client/src/types/status.ts
index 7990c4b121..d2935b890e 100644
--- a/packages/catalog-client/src/types/status.ts
+++ b/packages/catalog-client/src/types/status.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/CHANGELOG.md b/packages/catalog-model/CHANGELOG.md
index df350ff288..3c4a2e073c 100644
--- a/packages/catalog-model/CHANGELOG.md
+++ b/packages/catalog-model/CHANGELOG.md
@@ -1,5 +1,11 @@
# @backstage/catalog-model
+## 0.8.3
+
+### Patch Changes
+
+- 1d2ed7844: Removed unused `typescript-json-schema` dependency.
+
## 0.8.2
### Patch Changes
diff --git a/packages/catalog-model/api-report.md b/packages/catalog-model/api-report.md
index 0dab9670de..68644bef87 100644
--- a/packages/catalog-model/api-report.md
+++ b/packages/catalog-model/api-report.md
@@ -10,7 +10,7 @@ import { JsonValue } from '@backstage/config';
import { SerializedError } from '@backstage/errors';
import * as yup from 'yup';
-// @public (undocumented)
+// @public @deprecated (undocumented)
export const analyzeLocationSchema: yup.ObjectSchema<{
location: LocationSpec;
}, object>;
@@ -316,7 +316,7 @@ export { LocationEntityV1alpha1 }
// @public (undocumented)
export const locationEntityV1alpha1Validator: KindValidator;
-// @public (undocumented)
+// @public @deprecated (undocumented)
export const locationSchema: yup.ObjectSchema;
// @public (undocumented)
@@ -326,7 +326,7 @@ export type LocationSpec = {
presence?: 'optional' | 'required';
};
-// @public (undocumented)
+// @public @deprecated (undocumented)
export const locationSpecSchema: yup.ObjectSchema;
// @public (undocumented)
diff --git a/packages/catalog-model/examples/apis/wayback-archive-api.yaml b/packages/catalog-model/examples/apis/wayback-archive-api.yaml
index dbed93dbe8..8c2a9c7d6e 100644
--- a/packages/catalog-model/examples/apis/wayback-archive-api.yaml
+++ b/packages/catalog-model/examples/apis/wayback-archive-api.yaml
@@ -8,4 +8,4 @@ spec:
lifecycle: production
owner: team-a
definition:
- $text: https://github.com/APIs-guru/openapi-directory/blob/master/APIs/archive.org/wayback/1.0.0/openapi.yaml
+ $text: https://github.com/APIs-guru/openapi-directory/blob/main/APIs/archive.org/wayback/1.0.0/openapi.yaml
diff --git a/packages/catalog-model/examples/apis/wayback-search-api.yaml b/packages/catalog-model/examples/apis/wayback-search-api.yaml
index b39b5df468..45fa5d1b19 100644
--- a/packages/catalog-model/examples/apis/wayback-search-api.yaml
+++ b/packages/catalog-model/examples/apis/wayback-search-api.yaml
@@ -8,4 +8,4 @@ spec:
lifecycle: production
owner: team-a
definition:
- $text: https://github.com/APIs-guru/openapi-directory/blob/master/APIs/archive.org/search/1.0.0/openapi.yaml
+ $text: https://github.com/APIs-guru/openapi-directory/blob/main/APIs/archive.org/search/1.0.0/openapi.yaml
diff --git a/packages/catalog-model/package.json b/packages/catalog-model/package.json
index e2ea7fad92..3477d57e71 100644
--- a/packages/catalog-model/package.json
+++ b/packages/catalog-model/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/catalog-model",
- "version": "0.8.2",
+ "version": "0.8.3",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -35,13 +35,12 @@
"@types/yup": "^0.29.8",
"ajv": "^7.0.3",
"json-schema": "^0.3.0",
- "typescript-json-schema": "^0.49.0",
"lodash": "^4.17.15",
"uuid": "^8.0.0",
"yup": "^0.29.3"
},
"devDependencies": {
- "@backstage/cli": "^0.7.0",
+ "@backstage/cli": "^0.7.1",
"@types/express": "^4.17.6",
"@types/jest": "^26.0.7",
"@types/lodash": "^4.14.151",
diff --git a/packages/catalog-model/src/EntityPolicies.test.ts b/packages/catalog-model/src/EntityPolicies.test.ts
index b67180241e..c630094621 100644
--- a/packages/catalog-model/src/EntityPolicies.test.ts
+++ b/packages/catalog-model/src/EntityPolicies.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/EntityPolicies.ts b/packages/catalog-model/src/EntityPolicies.ts
index 2d576b1670..eca5e4b77a 100644
--- a/packages/catalog-model/src/EntityPolicies.ts
+++ b/packages/catalog-model/src/EntityPolicies.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/entity/Entity.ts b/packages/catalog-model/src/entity/Entity.ts
index 07b3d939aa..8843f10f5f 100644
--- a/packages/catalog-model/src/entity/Entity.ts
+++ b/packages/catalog-model/src/entity/Entity.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/entity/EntityEnvelope.ts b/packages/catalog-model/src/entity/EntityEnvelope.ts
index 631a8873c7..ed21a7d666 100644
--- a/packages/catalog-model/src/entity/EntityEnvelope.ts
+++ b/packages/catalog-model/src/entity/EntityEnvelope.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/entity/EntityStatus.ts b/packages/catalog-model/src/entity/EntityStatus.ts
index 67090f2bc2..92e1d1454f 100644
--- a/packages/catalog-model/src/entity/EntityStatus.ts
+++ b/packages/catalog-model/src/entity/EntityStatus.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/entity/constants.ts b/packages/catalog-model/src/entity/constants.ts
index c8f88e3b0c..d46d839720 100644
--- a/packages/catalog-model/src/entity/constants.ts
+++ b/packages/catalog-model/src/entity/constants.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/entity/index.ts b/packages/catalog-model/src/entity/index.ts
index ae2c0bf503..d05045fc78 100644
--- a/packages/catalog-model/src/entity/index.ts
+++ b/packages/catalog-model/src/entity/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/entity/policies/DefaultNamespaceEntityPolicy.test.ts b/packages/catalog-model/src/entity/policies/DefaultNamespaceEntityPolicy.test.ts
index c6bda864cb..55188d84c8 100644
--- a/packages/catalog-model/src/entity/policies/DefaultNamespaceEntityPolicy.test.ts
+++ b/packages/catalog-model/src/entity/policies/DefaultNamespaceEntityPolicy.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/entity/policies/DefaultNamespaceEntityPolicy.ts b/packages/catalog-model/src/entity/policies/DefaultNamespaceEntityPolicy.ts
index 4f5bbe04f4..1750aece17 100644
--- a/packages/catalog-model/src/entity/policies/DefaultNamespaceEntityPolicy.ts
+++ b/packages/catalog-model/src/entity/policies/DefaultNamespaceEntityPolicy.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/entity/policies/FieldFormatEntityPolicy.test.ts b/packages/catalog-model/src/entity/policies/FieldFormatEntityPolicy.test.ts
index 33ee045c1e..3e2639fff9 100644
--- a/packages/catalog-model/src/entity/policies/FieldFormatEntityPolicy.test.ts
+++ b/packages/catalog-model/src/entity/policies/FieldFormatEntityPolicy.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/entity/policies/FieldFormatEntityPolicy.ts b/packages/catalog-model/src/entity/policies/FieldFormatEntityPolicy.ts
index 1ed13c972c..ee95fd16ea 100644
--- a/packages/catalog-model/src/entity/policies/FieldFormatEntityPolicy.ts
+++ b/packages/catalog-model/src/entity/policies/FieldFormatEntityPolicy.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/entity/policies/NoForeignRootFieldsEntityPolicy.test.ts b/packages/catalog-model/src/entity/policies/NoForeignRootFieldsEntityPolicy.test.ts
index 03b0ed2eb5..fb1d703829 100644
--- a/packages/catalog-model/src/entity/policies/NoForeignRootFieldsEntityPolicy.test.ts
+++ b/packages/catalog-model/src/entity/policies/NoForeignRootFieldsEntityPolicy.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/entity/policies/NoForeignRootFieldsEntityPolicy.ts b/packages/catalog-model/src/entity/policies/NoForeignRootFieldsEntityPolicy.ts
index 7d401542ba..6700a935d5 100644
--- a/packages/catalog-model/src/entity/policies/NoForeignRootFieldsEntityPolicy.ts
+++ b/packages/catalog-model/src/entity/policies/NoForeignRootFieldsEntityPolicy.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/entity/policies/SchemaValidEntityPolicy.test.ts b/packages/catalog-model/src/entity/policies/SchemaValidEntityPolicy.test.ts
index c84bdbdd38..21539aaba4 100644
--- a/packages/catalog-model/src/entity/policies/SchemaValidEntityPolicy.test.ts
+++ b/packages/catalog-model/src/entity/policies/SchemaValidEntityPolicy.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/entity/policies/SchemaValidEntityPolicy.ts b/packages/catalog-model/src/entity/policies/SchemaValidEntityPolicy.ts
index 7e0a8df268..b5a4305a3c 100644
--- a/packages/catalog-model/src/entity/policies/SchemaValidEntityPolicy.ts
+++ b/packages/catalog-model/src/entity/policies/SchemaValidEntityPolicy.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/entity/policies/index.ts b/packages/catalog-model/src/entity/policies/index.ts
index 5d75ef4d84..ae14007d80 100644
--- a/packages/catalog-model/src/entity/policies/index.ts
+++ b/packages/catalog-model/src/entity/policies/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/entity/policies/types.ts b/packages/catalog-model/src/entity/policies/types.ts
index 415c98bbd2..6c7f47c332 100644
--- a/packages/catalog-model/src/entity/policies/types.ts
+++ b/packages/catalog-model/src/entity/policies/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/entity/ref.test.ts b/packages/catalog-model/src/entity/ref.test.ts
index 5ca511ee03..cf4bf0d869 100644
--- a/packages/catalog-model/src/entity/ref.test.ts
+++ b/packages/catalog-model/src/entity/ref.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/entity/ref.ts b/packages/catalog-model/src/entity/ref.ts
index 09660811f0..91d8547c6b 100644
--- a/packages/catalog-model/src/entity/ref.ts
+++ b/packages/catalog-model/src/entity/ref.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/entity/util.test.ts b/packages/catalog-model/src/entity/util.test.ts
index c7e2c036b5..1c39961c0f 100644
--- a/packages/catalog-model/src/entity/util.test.ts
+++ b/packages/catalog-model/src/entity/util.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/entity/util.ts b/packages/catalog-model/src/entity/util.ts
index 116913c85c..84b6845347 100644
--- a/packages/catalog-model/src/entity/util.ts
+++ b/packages/catalog-model/src/entity/util.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/index.ts b/packages/catalog-model/src/index.ts
index 976b5f6148..c6b9b6b956 100644
--- a/packages/catalog-model/src/index.ts
+++ b/packages/catalog-model/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/kinds/ApiEntityV1alpha1.test.ts b/packages/catalog-model/src/kinds/ApiEntityV1alpha1.test.ts
index 249243bed3..6deaf2871a 100644
--- a/packages/catalog-model/src/kinds/ApiEntityV1alpha1.test.ts
+++ b/packages/catalog-model/src/kinds/ApiEntityV1alpha1.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/kinds/ApiEntityV1alpha1.ts b/packages/catalog-model/src/kinds/ApiEntityV1alpha1.ts
index 37d5a4fba0..737037e6b2 100644
--- a/packages/catalog-model/src/kinds/ApiEntityV1alpha1.ts
+++ b/packages/catalog-model/src/kinds/ApiEntityV1alpha1.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/kinds/ComponentEntityV1alpha1.test.ts b/packages/catalog-model/src/kinds/ComponentEntityV1alpha1.test.ts
index 358e7b6526..419b72d6a6 100644
--- a/packages/catalog-model/src/kinds/ComponentEntityV1alpha1.test.ts
+++ b/packages/catalog-model/src/kinds/ComponentEntityV1alpha1.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/kinds/ComponentEntityV1alpha1.ts b/packages/catalog-model/src/kinds/ComponentEntityV1alpha1.ts
index 6ef45fda6e..4e08d4cce9 100644
--- a/packages/catalog-model/src/kinds/ComponentEntityV1alpha1.ts
+++ b/packages/catalog-model/src/kinds/ComponentEntityV1alpha1.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/kinds/DomainEntityV1alpha1.test.ts b/packages/catalog-model/src/kinds/DomainEntityV1alpha1.test.ts
index 0e989f22ca..822a7984e9 100644
--- a/packages/catalog-model/src/kinds/DomainEntityV1alpha1.test.ts
+++ b/packages/catalog-model/src/kinds/DomainEntityV1alpha1.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/kinds/DomainEntityV1alpha1.ts b/packages/catalog-model/src/kinds/DomainEntityV1alpha1.ts
index f23c330a87..c2f39de321 100644
--- a/packages/catalog-model/src/kinds/DomainEntityV1alpha1.ts
+++ b/packages/catalog-model/src/kinds/DomainEntityV1alpha1.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/kinds/GroupEntityV1alpha1.test.ts b/packages/catalog-model/src/kinds/GroupEntityV1alpha1.test.ts
index 6e59637c67..284c3da7de 100644
--- a/packages/catalog-model/src/kinds/GroupEntityV1alpha1.test.ts
+++ b/packages/catalog-model/src/kinds/GroupEntityV1alpha1.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/kinds/GroupEntityV1alpha1.ts b/packages/catalog-model/src/kinds/GroupEntityV1alpha1.ts
index 62a6edbc5e..28f1503223 100644
--- a/packages/catalog-model/src/kinds/GroupEntityV1alpha1.ts
+++ b/packages/catalog-model/src/kinds/GroupEntityV1alpha1.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/kinds/LocationEntityV1alpha1.test.ts b/packages/catalog-model/src/kinds/LocationEntityV1alpha1.test.ts
index 2451df8e64..7efec38395 100644
--- a/packages/catalog-model/src/kinds/LocationEntityV1alpha1.test.ts
+++ b/packages/catalog-model/src/kinds/LocationEntityV1alpha1.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/kinds/LocationEntityV1alpha1.ts b/packages/catalog-model/src/kinds/LocationEntityV1alpha1.ts
index dc79ff1921..4a37340bee 100644
--- a/packages/catalog-model/src/kinds/LocationEntityV1alpha1.ts
+++ b/packages/catalog-model/src/kinds/LocationEntityV1alpha1.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/kinds/ResourceEntityV1alpha1.test.ts b/packages/catalog-model/src/kinds/ResourceEntityV1alpha1.test.ts
index 953ec5889a..5fda94ad2d 100644
--- a/packages/catalog-model/src/kinds/ResourceEntityV1alpha1.test.ts
+++ b/packages/catalog-model/src/kinds/ResourceEntityV1alpha1.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/kinds/ResourceEntityV1alpha1.ts b/packages/catalog-model/src/kinds/ResourceEntityV1alpha1.ts
index 4c79209c9c..c8f96b87e3 100644
--- a/packages/catalog-model/src/kinds/ResourceEntityV1alpha1.ts
+++ b/packages/catalog-model/src/kinds/ResourceEntityV1alpha1.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/kinds/SystemEntityV1alpha1.test.ts b/packages/catalog-model/src/kinds/SystemEntityV1alpha1.test.ts
index 7d744b7d0d..fd78633a89 100644
--- a/packages/catalog-model/src/kinds/SystemEntityV1alpha1.test.ts
+++ b/packages/catalog-model/src/kinds/SystemEntityV1alpha1.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/kinds/SystemEntityV1alpha1.ts b/packages/catalog-model/src/kinds/SystemEntityV1alpha1.ts
index 41203083a5..7c719566ad 100644
--- a/packages/catalog-model/src/kinds/SystemEntityV1alpha1.ts
+++ b/packages/catalog-model/src/kinds/SystemEntityV1alpha1.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/kinds/TemplateEntityV1alpha1.test.ts b/packages/catalog-model/src/kinds/TemplateEntityV1alpha1.test.ts
index bfb27b4ed6..f03519a3c6 100644
--- a/packages/catalog-model/src/kinds/TemplateEntityV1alpha1.test.ts
+++ b/packages/catalog-model/src/kinds/TemplateEntityV1alpha1.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/kinds/TemplateEntityV1alpha1.ts b/packages/catalog-model/src/kinds/TemplateEntityV1alpha1.ts
index 0600c58278..bdc6f35df2 100644
--- a/packages/catalog-model/src/kinds/TemplateEntityV1alpha1.ts
+++ b/packages/catalog-model/src/kinds/TemplateEntityV1alpha1.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/kinds/TemplateEntityV1beta2.test.ts b/packages/catalog-model/src/kinds/TemplateEntityV1beta2.test.ts
index b06a71c8da..f715f3c2b6 100644
--- a/packages/catalog-model/src/kinds/TemplateEntityV1beta2.test.ts
+++ b/packages/catalog-model/src/kinds/TemplateEntityV1beta2.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/kinds/TemplateEntityV1beta2.ts b/packages/catalog-model/src/kinds/TemplateEntityV1beta2.ts
index 6ee6fcb1f1..2710fe1275 100644
--- a/packages/catalog-model/src/kinds/TemplateEntityV1beta2.ts
+++ b/packages/catalog-model/src/kinds/TemplateEntityV1beta2.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/kinds/UserEntityV1alpha1.test.ts b/packages/catalog-model/src/kinds/UserEntityV1alpha1.test.ts
index 075f97e92c..3dfaea4617 100644
--- a/packages/catalog-model/src/kinds/UserEntityV1alpha1.test.ts
+++ b/packages/catalog-model/src/kinds/UserEntityV1alpha1.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/kinds/UserEntityV1alpha1.ts b/packages/catalog-model/src/kinds/UserEntityV1alpha1.ts
index d73fa7aaf3..267a9f07fd 100644
--- a/packages/catalog-model/src/kinds/UserEntityV1alpha1.ts
+++ b/packages/catalog-model/src/kinds/UserEntityV1alpha1.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/kinds/index.ts b/packages/catalog-model/src/kinds/index.ts
index e36575f51d..ccdf0051db 100644
--- a/packages/catalog-model/src/kinds/index.ts
+++ b/packages/catalog-model/src/kinds/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/kinds/relations.ts b/packages/catalog-model/src/kinds/relations.ts
index 8ad5017fba..57977e7168 100644
--- a/packages/catalog-model/src/kinds/relations.ts
+++ b/packages/catalog-model/src/kinds/relations.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/kinds/types.ts b/packages/catalog-model/src/kinds/types.ts
index 4b947680c7..0ec0d313bb 100644
--- a/packages/catalog-model/src/kinds/types.ts
+++ b/packages/catalog-model/src/kinds/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/kinds/util.ts b/packages/catalog-model/src/kinds/util.ts
index a907df7f8a..c77b77cb97 100644
--- a/packages/catalog-model/src/kinds/util.ts
+++ b/packages/catalog-model/src/kinds/util.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/location/annotation.ts b/packages/catalog-model/src/location/annotation.ts
index ba875c3edf..137d36a0da 100644
--- a/packages/catalog-model/src/location/annotation.ts
+++ b/packages/catalog-model/src/location/annotation.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/location/helpers.test.ts b/packages/catalog-model/src/location/helpers.test.ts
index 3b5994b956..020f7be1a1 100644
--- a/packages/catalog-model/src/location/helpers.test.ts
+++ b/packages/catalog-model/src/location/helpers.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/location/helpers.ts b/packages/catalog-model/src/location/helpers.ts
index 5eff598c87..431ee71218 100644
--- a/packages/catalog-model/src/location/helpers.ts
+++ b/packages/catalog-model/src/location/helpers.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/location/index.ts b/packages/catalog-model/src/location/index.ts
index 751172c6ba..ead4a6b564 100644
--- a/packages/catalog-model/src/location/index.ts
+++ b/packages/catalog-model/src/location/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/location/types.ts b/packages/catalog-model/src/location/types.ts
index 33e443e04f..9837ce384d 100644
--- a/packages/catalog-model/src/location/types.ts
+++ b/packages/catalog-model/src/location/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/location/validation.ts b/packages/catalog-model/src/location/validation.ts
index 4d2e602862..4857fc76bc 100644
--- a/packages/catalog-model/src/location/validation.ts
+++ b/packages/catalog-model/src/location/validation.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,6 +17,7 @@
import * as yup from 'yup';
import { LocationSpec, Location } from './types';
+/** @deprecated */
export const locationSpecSchema = yup
.object({
type: yup.string().required(),
@@ -26,6 +27,7 @@ export const locationSpecSchema = yup
.noUnknown()
.required();
+/** @deprecated */
export const locationSchema = yup
.object({
id: yup.string().required(),
@@ -35,6 +37,7 @@ export const locationSchema = yup
.noUnknown()
.required();
+/** @deprecated */
export const analyzeLocationSchema = yup
.object<{ location: LocationSpec }>({
location: locationSpecSchema,
diff --git a/packages/catalog-model/src/setupTests.ts b/packages/catalog-model/src/setupTests.ts
index ba33cf996b..d3232290a7 100644
--- a/packages/catalog-model/src/setupTests.ts
+++ b/packages/catalog-model/src/setupTests.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/types.ts b/packages/catalog-model/src/types.ts
index edac03466d..50de5a1cea 100644
--- a/packages/catalog-model/src/types.ts
+++ b/packages/catalog-model/src/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/validation/CommonValidatorFunctions.test.ts b/packages/catalog-model/src/validation/CommonValidatorFunctions.test.ts
index bef997d54a..b15ac385b1 100644
--- a/packages/catalog-model/src/validation/CommonValidatorFunctions.test.ts
+++ b/packages/catalog-model/src/validation/CommonValidatorFunctions.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/validation/CommonValidatorFunctions.ts b/packages/catalog-model/src/validation/CommonValidatorFunctions.ts
index 87b6ad3838..7c9736baf7 100644
--- a/packages/catalog-model/src/validation/CommonValidatorFunctions.ts
+++ b/packages/catalog-model/src/validation/CommonValidatorFunctions.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/validation/KubernetesValidatorFunctions.test.ts b/packages/catalog-model/src/validation/KubernetesValidatorFunctions.test.ts
index d0673085b4..f9b2b6b957 100644
--- a/packages/catalog-model/src/validation/KubernetesValidatorFunctions.test.ts
+++ b/packages/catalog-model/src/validation/KubernetesValidatorFunctions.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/validation/KubernetesValidatorFunctions.ts b/packages/catalog-model/src/validation/KubernetesValidatorFunctions.ts
index ada0aa71ff..049678e3a9 100644
--- a/packages/catalog-model/src/validation/KubernetesValidatorFunctions.ts
+++ b/packages/catalog-model/src/validation/KubernetesValidatorFunctions.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/validation/ajv.ts b/packages/catalog-model/src/validation/ajv.ts
index 02d53fcd15..c65c3df18a 100644
--- a/packages/catalog-model/src/validation/ajv.ts
+++ b/packages/catalog-model/src/validation/ajv.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/validation/entityEnvelopeSchemaValidator.test.ts b/packages/catalog-model/src/validation/entityEnvelopeSchemaValidator.test.ts
index 7c6613936c..e0cd08c95c 100644
--- a/packages/catalog-model/src/validation/entityEnvelopeSchemaValidator.test.ts
+++ b/packages/catalog-model/src/validation/entityEnvelopeSchemaValidator.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/validation/entityEnvelopeSchemaValidator.ts b/packages/catalog-model/src/validation/entityEnvelopeSchemaValidator.ts
index 52ae00e399..2fe74ea2a4 100644
--- a/packages/catalog-model/src/validation/entityEnvelopeSchemaValidator.ts
+++ b/packages/catalog-model/src/validation/entityEnvelopeSchemaValidator.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/validation/entityKindSchemaValidator.test.ts b/packages/catalog-model/src/validation/entityKindSchemaValidator.test.ts
index 4b258aed14..f954a2388c 100644
--- a/packages/catalog-model/src/validation/entityKindSchemaValidator.test.ts
+++ b/packages/catalog-model/src/validation/entityKindSchemaValidator.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/validation/entityKindSchemaValidator.ts b/packages/catalog-model/src/validation/entityKindSchemaValidator.ts
index c722687f9e..a295fac205 100644
--- a/packages/catalog-model/src/validation/entityKindSchemaValidator.ts
+++ b/packages/catalog-model/src/validation/entityKindSchemaValidator.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/validation/entitySchemaValidator.test.ts b/packages/catalog-model/src/validation/entitySchemaValidator.test.ts
index 6ab2744c0f..3dfe307f92 100644
--- a/packages/catalog-model/src/validation/entitySchemaValidator.test.ts
+++ b/packages/catalog-model/src/validation/entitySchemaValidator.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/validation/entitySchemaValidator.ts b/packages/catalog-model/src/validation/entitySchemaValidator.ts
index 8a30f09d31..8683ab6de6 100644
--- a/packages/catalog-model/src/validation/entitySchemaValidator.ts
+++ b/packages/catalog-model/src/validation/entitySchemaValidator.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/validation/index.ts b/packages/catalog-model/src/validation/index.ts
index bdf812b4ad..1ee14abb4a 100644
--- a/packages/catalog-model/src/validation/index.ts
+++ b/packages/catalog-model/src/validation/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/validation/makeValidator.ts b/packages/catalog-model/src/validation/makeValidator.ts
index 63341f5c33..0ddd9d1088 100644
--- a/packages/catalog-model/src/validation/makeValidator.ts
+++ b/packages/catalog-model/src/validation/makeValidator.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/catalog-model/src/validation/types.ts b/packages/catalog-model/src/validation/types.ts
index a4475c4809..cfa9d845bc 100644
--- a/packages/catalog-model/src/validation/types.ts
+++ b/packages/catalog-model/src/validation/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli-common/src/index.ts b/packages/cli-common/src/index.ts
index a080f49b6b..d36314ba35 100644
--- a/packages/cli-common/src/index.ts
+++ b/packages/cli-common/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli-common/src/paths.test.ts b/packages/cli-common/src/paths.test.ts
index 2278ee3581..ba53ef13a5 100644
--- a/packages/cli-common/src/paths.test.ts
+++ b/packages/cli-common/src/paths.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli-common/src/paths.ts b/packages/cli-common/src/paths.ts
index 0db712e6cb..12a8484797 100644
--- a/packages/cli-common/src/paths.ts
+++ b/packages/cli-common/src/paths.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md
index 8eae37ef56..32d028a32d 100644
--- a/packages/cli/CHANGELOG.md
+++ b/packages/cli/CHANGELOG.md
@@ -1,5 +1,33 @@
# @backstage/cli
+## 0.7.1
+
+### Patch Changes
+
+- 3108ff7bf: Make `yarn dev` in newly created backend plugins respect the `PLUGIN_PORT` environment variable.
+
+ You can achieve the same in your created backend plugins by making sure to properly call the port and CORS methods on your service builder. Typically in a file named `src/service/standaloneServer.ts` inside your backend plugin package, replace the following:
+
+ ```ts
+ const service = createServiceBuilder(module)
+ .enableCors({ origin: 'http://localhost:3000' })
+ .addRouter('/my-plugin', router);
+ ```
+
+ With something like the following:
+
+ ```ts
+ let service = createServiceBuilder(module)
+ .setPort(options.port)
+ .addRouter('/my-plugin', router);
+ if (options.enableCors) {
+ service = service.enableCors({ origin: 'http://localhost:3000' });
+ }
+ ```
+
+- Updated dependencies
+ - @backstage/config-loader@0.6.4
+
## 0.7.0
### Minor Changes
diff --git a/packages/cli/asset-types/asset-types.d.ts b/packages/cli/asset-types/asset-types.d.ts
index 9db4438fd4..879e9b0b05 100644
--- a/packages/cli/asset-types/asset-types.d.ts
+++ b/packages/cli/asset-types/asset-types.d.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/bin/backstage-cli b/packages/cli/bin/backstage-cli
index 5c127af2ec..9aa82f6c2a 100755
--- a/packages/cli/bin/backstage-cli
+++ b/packages/cli/bin/backstage-cli
@@ -1,6 +1,6 @@
#!/usr/bin/env node
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/config/eslint.backend.js b/packages/cli/config/eslint.backend.js
index e860e426d1..c619df9eee 100644
--- a/packages/cli/config/eslint.backend.js
+++ b/packages/cli/config/eslint.backend.js
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/config/eslint.js b/packages/cli/config/eslint.js
index 6448136769..b8d3d98c8f 100644
--- a/packages/cli/config/eslint.js
+++ b/packages/cli/config/eslint.js
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/config/jest.js b/packages/cli/config/jest.js
index 0cec82b468..e2ff338b4e 100644
--- a/packages/cli/config/jest.js
+++ b/packages/cli/config/jest.js
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/config/jestEsmTransform.js b/packages/cli/config/jestEsmTransform.js
index 99f1a600bc..742822274d 100644
--- a/packages/cli/config/jestEsmTransform.js
+++ b/packages/cli/config/jestEsmTransform.js
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/config/jestFileTransform.js b/packages/cli/config/jestFileTransform.js
index e6ff1895f8..bdd29fc296 100644
--- a/packages/cli/config/jestFileTransform.js
+++ b/packages/cli/config/jestFileTransform.js
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/package.json b/packages/cli/package.json
index c94647ae25..6198da69d4 100644
--- a/packages/cli/package.json
+++ b/packages/cli/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/cli",
"description": "CLI for developing Backstage plugins and apps",
- "version": "0.7.0",
+ "version": "0.7.1",
"private": false,
"publishConfig": {
"access": "public"
@@ -32,7 +32,7 @@
"@babel/plugin-transform-modules-commonjs": "^7.4.4",
"@backstage/cli-common": "^0.1.1",
"@backstage/config": "^0.1.5",
- "@backstage/config-loader": "^0.6.3",
+ "@backstage/config-loader": "^0.6.4",
"@hot-loader/react-dom": "^16.13.0",
"@lerna/package-graph": "^4.0.0",
"@lerna/project": "^4.0.0",
@@ -43,7 +43,7 @@
"@rollup/plugin-yaml": "^2.1.1",
"@spotify/eslint-config-base": "^9.0.0",
"@spotify/eslint-config-react": "^10.0.0",
- "@spotify/eslint-config-typescript": "^9.0.0",
+ "@spotify/eslint-config-typescript": "^10.0.0",
"@sucrase/jest-plugin": "^2.1.0",
"@sucrase/webpack-loader": "^2.0.0",
"@svgr/plugin-jsx": "5.5.x",
@@ -53,8 +53,8 @@
"@types/start-server-webpack-plugin": "^2.2.0",
"@types/webpack-env": "^1.15.2",
"@types/webpack-node-externals": "^2.5.0",
- "@typescript-eslint/eslint-plugin": "^v4.26.0",
- "@typescript-eslint/parser": "^v4.14.0",
+ "@typescript-eslint/eslint-plugin": "^v4.27.0",
+ "@typescript-eslint/parser": "^v4.27.0",
"@yarnpkg/lockfile": "^1.1.0",
"babel-plugin-dynamic-import-node": "^2.3.3",
"bfj": "^7.0.2",
@@ -94,8 +94,8 @@
"react-hot-loader": "^4.12.21",
"recursive-readdir": "^2.2.2",
"replace-in-file": "^6.0.0",
- "rollup": "2.33.x",
- "rollup-plugin-dts": "^2.0.1",
+ "rollup": "2.44.x",
+ "rollup-plugin-dts": "^3.0.1",
"rollup-plugin-esbuild": "2.6.x",
"rollup-plugin-peer-deps-external": "^2.2.2",
"rollup-plugin-postcss": "^4.0.0",
@@ -118,9 +118,9 @@
"yn": "^4.0.0"
},
"devDependencies": {
- "@backstage/backend-common": "^0.8.2",
+ "@backstage/backend-common": "^0.8.3",
"@backstage/config": "^0.1.5",
- "@backstage/core": "^0.7.12",
+ "@backstage/core": "^0.7.13",
"@backstage/dev-utils": "^0.1.17",
"@backstage/test-utils": "^0.1.13",
"@backstage/theme": "^0.2.8",
diff --git a/packages/cli/src/commands/app/build.ts b/packages/cli/src/commands/app/build.ts
index 0da4112646..22e7fb9de9 100644
--- a/packages/cli/src/commands/app/build.ts
+++ b/packages/cli/src/commands/app/build.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/commands/app/serve.ts b/packages/cli/src/commands/app/serve.ts
index b542030109..85fbdd97a0 100644
--- a/packages/cli/src/commands/app/serve.ts
+++ b/packages/cli/src/commands/app/serve.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/commands/backend/build.ts b/packages/cli/src/commands/backend/build.ts
index ceca5b0286..6cb1347b1e 100644
--- a/packages/cli/src/commands/backend/build.ts
+++ b/packages/cli/src/commands/backend/build.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/commands/backend/buildImage.ts b/packages/cli/src/commands/backend/buildImage.ts
index 8434017cd9..b352e38203 100644
--- a/packages/cli/src/commands/backend/buildImage.ts
+++ b/packages/cli/src/commands/backend/buildImage.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/commands/backend/bundle.ts b/packages/cli/src/commands/backend/bundle.ts
index 25322045e1..338d5cdaa0 100644
--- a/packages/cli/src/commands/backend/bundle.ts
+++ b/packages/cli/src/commands/backend/bundle.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/commands/backend/dev.ts b/packages/cli/src/commands/backend/dev.ts
index 395fe8a4ab..a09cea0e8a 100644
--- a/packages/cli/src/commands/backend/dev.ts
+++ b/packages/cli/src/commands/backend/dev.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/commands/build.ts b/packages/cli/src/commands/build.ts
index bd5bbc5e9f..dec0b1a293 100644
--- a/packages/cli/src/commands/build.ts
+++ b/packages/cli/src/commands/build.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/commands/buildWorkspace.ts b/packages/cli/src/commands/buildWorkspace.ts
index 624f104b3f..7a7aa28ad6 100644
--- a/packages/cli/src/commands/buildWorkspace.ts
+++ b/packages/cli/src/commands/buildWorkspace.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/commands/clean/clean.ts b/packages/cli/src/commands/clean/clean.ts
index bc2bcd23ac..74a1ea658b 100644
--- a/packages/cli/src/commands/clean/clean.ts
+++ b/packages/cli/src/commands/clean/clean.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/commands/config/docs.ts b/packages/cli/src/commands/config/docs.ts
index e06bc42c27..198244b941 100644
--- a/packages/cli/src/commands/config/docs.ts
+++ b/packages/cli/src/commands/config/docs.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/commands/config/print.ts b/packages/cli/src/commands/config/print.ts
index 930f2c98ca..6bd575f9bf 100644
--- a/packages/cli/src/commands/config/print.ts
+++ b/packages/cli/src/commands/config/print.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/commands/config/schema.ts b/packages/cli/src/commands/config/schema.ts
index 63c1524789..a36fc24f06 100644
--- a/packages/cli/src/commands/config/schema.ts
+++ b/packages/cli/src/commands/config/schema.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/commands/config/validate.ts b/packages/cli/src/commands/config/validate.ts
index 37f41164af..9041272c5a 100644
--- a/packages/cli/src/commands/config/validate.ts
+++ b/packages/cli/src/commands/config/validate.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/commands/create-github-app/GithubCreateAppServer.ts b/packages/cli/src/commands/create-github-app/GithubCreateAppServer.ts
index 45671c2ead..58a3e97a9a 100644
--- a/packages/cli/src/commands/create-github-app/GithubCreateAppServer.ts
+++ b/packages/cli/src/commands/create-github-app/GithubCreateAppServer.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -120,6 +120,7 @@ export class GithubCreateAppServer {
redirect_url: `${baseUrl}/callback`,
hook_attributes: {
url: this.webhookUrl,
+ active: false,
},
};
const manifestJson = JSON.stringify(manifest).replace(/\"/g, '"');
diff --git a/packages/cli/src/commands/create-github-app/index.ts b/packages/cli/src/commands/create-github-app/index.ts
index cd9e8dbe09..c62234c636 100644
--- a/packages/cli/src/commands/create-github-app/index.ts
+++ b/packages/cli/src/commands/create-github-app/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/commands/create-plugin/createPlugin.test.ts b/packages/cli/src/commands/create-plugin/createPlugin.test.ts
index 660caec189..012dc2be13 100644
--- a/packages/cli/src/commands/create-plugin/createPlugin.test.ts
+++ b/packages/cli/src/commands/create-plugin/createPlugin.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/commands/create-plugin/createPlugin.ts b/packages/cli/src/commands/create-plugin/createPlugin.ts
index 5ea8cdfbbc..c9784969af 100644
--- a/packages/cli/src/commands/create-plugin/createPlugin.ts
+++ b/packages/cli/src/commands/create-plugin/createPlugin.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/commands/index.ts b/packages/cli/src/commands/index.ts
index 431659a972..d21349a4e1 100644
--- a/packages/cli/src/commands/index.ts
+++ b/packages/cli/src/commands/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/commands/lint.ts b/packages/cli/src/commands/lint.ts
index 7b4532ffa7..41b454ffff 100644
--- a/packages/cli/src/commands/lint.ts
+++ b/packages/cli/src/commands/lint.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/commands/pack.ts b/packages/cli/src/commands/pack.ts
index 58efece6e4..83b866aa88 100644
--- a/packages/cli/src/commands/pack.ts
+++ b/packages/cli/src/commands/pack.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/commands/plugin/build.ts b/packages/cli/src/commands/plugin/build.ts
index d62ffbeebd..8a63a017a2 100644
--- a/packages/cli/src/commands/plugin/build.ts
+++ b/packages/cli/src/commands/plugin/build.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/commands/plugin/diff.ts b/packages/cli/src/commands/plugin/diff.ts
index fb96250567..6a0127794f 100644
--- a/packages/cli/src/commands/plugin/diff.ts
+++ b/packages/cli/src/commands/plugin/diff.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/commands/plugin/serve.ts b/packages/cli/src/commands/plugin/serve.ts
index 27db824d2f..b9ba93bc62 100644
--- a/packages/cli/src/commands/plugin/serve.ts
+++ b/packages/cli/src/commands/plugin/serve.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/commands/plugin/testCommand.ts b/packages/cli/src/commands/plugin/testCommand.ts
index df031d8e89..e1ff0f36f9 100644
--- a/packages/cli/src/commands/plugin/testCommand.ts
+++ b/packages/cli/src/commands/plugin/testCommand.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/commands/remove-plugin/file-mocks.ts b/packages/cli/src/commands/remove-plugin/file-mocks.ts
index 5768f5c398..1264dc8f2e 100644
--- a/packages/cli/src/commands/remove-plugin/file-mocks.ts
+++ b/packages/cli/src/commands/remove-plugin/file-mocks.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/commands/remove-plugin/removePlugin.test.ts b/packages/cli/src/commands/remove-plugin/removePlugin.test.ts
index 56cde2ca9e..0390320128 100644
--- a/packages/cli/src/commands/remove-plugin/removePlugin.test.ts
+++ b/packages/cli/src/commands/remove-plugin/removePlugin.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/commands/remove-plugin/removePlugin.ts b/packages/cli/src/commands/remove-plugin/removePlugin.ts
index 72d619e0bc..9e1e18bb7b 100644
--- a/packages/cli/src/commands/remove-plugin/removePlugin.ts
+++ b/packages/cli/src/commands/remove-plugin/removePlugin.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/commands/testCommand.ts b/packages/cli/src/commands/testCommand.ts
index 2c3f9fe895..d885e1aec9 100644
--- a/packages/cli/src/commands/testCommand.ts
+++ b/packages/cli/src/commands/testCommand.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/commands/versions/bump.test.ts b/packages/cli/src/commands/versions/bump.test.ts
index e5128fc995..96bd1ab6fd 100644
--- a/packages/cli/src/commands/versions/bump.test.ts
+++ b/packages/cli/src/commands/versions/bump.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/commands/versions/bump.ts b/packages/cli/src/commands/versions/bump.ts
index d046283aab..257a83e2be 100644
--- a/packages/cli/src/commands/versions/bump.ts
+++ b/packages/cli/src/commands/versions/bump.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/commands/versions/lint.ts b/packages/cli/src/commands/versions/lint.ts
index aa0bcd6f6a..68d0766217 100644
--- a/packages/cli/src/commands/versions/lint.ts
+++ b/packages/cli/src/commands/versions/lint.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts
index 28e46bbd1a..3e575a495b 100644
--- a/packages/cli/src/index.ts
+++ b/packages/cli/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/builder/config.ts b/packages/cli/src/lib/builder/config.ts
index f8305ad6e0..60a5f0efca 100644
--- a/packages/cli/src/lib/builder/config.ts
+++ b/packages/cli/src/lib/builder/config.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/builder/index.ts b/packages/cli/src/lib/builder/index.ts
index 17aae25ec4..c39d964ade 100644
--- a/packages/cli/src/lib/builder/index.ts
+++ b/packages/cli/src/lib/builder/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/builder/packager.test.ts b/packages/cli/src/lib/builder/packager.test.ts
index f5e101cfc6..6264eb57ac 100644
--- a/packages/cli/src/lib/builder/packager.test.ts
+++ b/packages/cli/src/lib/builder/packager.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/builder/packager.ts b/packages/cli/src/lib/builder/packager.ts
index 6deded5f69..3e0f1b9a46 100644
--- a/packages/cli/src/lib/builder/packager.ts
+++ b/packages/cli/src/lib/builder/packager.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/builder/plugins.test.ts b/packages/cli/src/lib/builder/plugins.test.ts
index d1e1b3e2bd..dcbdc55cc0 100644
--- a/packages/cli/src/lib/builder/plugins.test.ts
+++ b/packages/cli/src/lib/builder/plugins.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/builder/plugins.ts b/packages/cli/src/lib/builder/plugins.ts
index 48b6b65c61..3b1cbe4f1c 100644
--- a/packages/cli/src/lib/builder/plugins.ts
+++ b/packages/cli/src/lib/builder/plugins.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/builder/types.ts b/packages/cli/src/lib/builder/types.ts
index 853789df59..f75d1b1dda 100644
--- a/packages/cli/src/lib/builder/types.ts
+++ b/packages/cli/src/lib/builder/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/bundler/LinkedPackageResolvePlugin.test.ts b/packages/cli/src/lib/bundler/LinkedPackageResolvePlugin.test.ts
index f3906bfd0d..d22b9b3701 100644
--- a/packages/cli/src/lib/bundler/LinkedPackageResolvePlugin.test.ts
+++ b/packages/cli/src/lib/bundler/LinkedPackageResolvePlugin.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/bundler/LinkedPackageResolvePlugin.ts b/packages/cli/src/lib/bundler/LinkedPackageResolvePlugin.ts
index fed8b39a19..2360078a18 100644
--- a/packages/cli/src/lib/bundler/LinkedPackageResolvePlugin.ts
+++ b/packages/cli/src/lib/bundler/LinkedPackageResolvePlugin.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/bundler/backend.ts b/packages/cli/src/lib/bundler/backend.ts
index 9633c1b963..bddeac0de3 100644
--- a/packages/cli/src/lib/bundler/backend.ts
+++ b/packages/cli/src/lib/bundler/backend.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/bundler/bundle.ts b/packages/cli/src/lib/bundler/bundle.ts
index 30fef2e8b7..17a7398b2a 100644
--- a/packages/cli/src/lib/bundler/bundle.ts
+++ b/packages/cli/src/lib/bundler/bundle.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/bundler/config.ts b/packages/cli/src/lib/bundler/config.ts
index 7270f7b01a..89f677109d 100644
--- a/packages/cli/src/lib/bundler/config.ts
+++ b/packages/cli/src/lib/bundler/config.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/bundler/index.ts b/packages/cli/src/lib/bundler/index.ts
index 2030b4bb96..a3b584efc4 100644
--- a/packages/cli/src/lib/bundler/index.ts
+++ b/packages/cli/src/lib/bundler/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/bundler/optimization.ts b/packages/cli/src/lib/bundler/optimization.ts
index 665eb10b21..e97b2ae868 100644
--- a/packages/cli/src/lib/bundler/optimization.ts
+++ b/packages/cli/src/lib/bundler/optimization.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/bundler/paths.ts b/packages/cli/src/lib/bundler/paths.ts
index c8d48a7199..01fdcdefe5 100644
--- a/packages/cli/src/lib/bundler/paths.ts
+++ b/packages/cli/src/lib/bundler/paths.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/bundler/server.ts b/packages/cli/src/lib/bundler/server.ts
index 24a24d25d2..088128c805 100644
--- a/packages/cli/src/lib/bundler/server.ts
+++ b/packages/cli/src/lib/bundler/server.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/bundler/transforms.ts b/packages/cli/src/lib/bundler/transforms.ts
index 6107485d78..6eb4920326 100644
--- a/packages/cli/src/lib/bundler/transforms.ts
+++ b/packages/cli/src/lib/bundler/transforms.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/bundler/types.ts b/packages/cli/src/lib/bundler/types.ts
index 3bd941dd0f..283074a295 100644
--- a/packages/cli/src/lib/bundler/types.ts
+++ b/packages/cli/src/lib/bundler/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/codeowners/codeowners.test.ts b/packages/cli/src/lib/codeowners/codeowners.test.ts
index 89386522f5..3be2f4a2fd 100644
--- a/packages/cli/src/lib/codeowners/codeowners.test.ts
+++ b/packages/cli/src/lib/codeowners/codeowners.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/codeowners/codeowners.ts b/packages/cli/src/lib/codeowners/codeowners.ts
index aa24f91aac..563bd1052d 100644
--- a/packages/cli/src/lib/codeowners/codeowners.ts
+++ b/packages/cli/src/lib/codeowners/codeowners.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/codeowners/index.ts b/packages/cli/src/lib/codeowners/index.ts
index 97c613488c..c40619f5f9 100644
--- a/packages/cli/src/lib/codeowners/index.ts
+++ b/packages/cli/src/lib/codeowners/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/config.ts b/packages/cli/src/lib/config.ts
index de6bd6353d..db96ca7686 100644
--- a/packages/cli/src/lib/config.ts
+++ b/packages/cli/src/lib/config.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/diff/handlers.ts b/packages/cli/src/lib/diff/handlers.ts
index 36e163d67e..77bd0e78d2 100644
--- a/packages/cli/src/lib/diff/handlers.ts
+++ b/packages/cli/src/lib/diff/handlers.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/diff/index.ts b/packages/cli/src/lib/diff/index.ts
index 04c5ee2e45..79a55f023e 100644
--- a/packages/cli/src/lib/diff/index.ts
+++ b/packages/cli/src/lib/diff/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/diff/prompts.ts b/packages/cli/src/lib/diff/prompts.ts
index ac04fc3559..d2ddca5fc0 100644
--- a/packages/cli/src/lib/diff/prompts.ts
+++ b/packages/cli/src/lib/diff/prompts.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/diff/read.ts b/packages/cli/src/lib/diff/read.ts
index d37dfe4b03..8388d22196 100644
--- a/packages/cli/src/lib/diff/read.ts
+++ b/packages/cli/src/lib/diff/read.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/diff/types.ts b/packages/cli/src/lib/diff/types.ts
index 6c50d9fcf9..d22d690196 100644
--- a/packages/cli/src/lib/diff/types.ts
+++ b/packages/cli/src/lib/diff/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/errors.ts b/packages/cli/src/lib/errors.ts
index 110a095fe3..c0b4c45b6c 100644
--- a/packages/cli/src/lib/errors.ts
+++ b/packages/cli/src/lib/errors.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/logging.ts b/packages/cli/src/lib/logging.ts
index ef79b34097..8745585d1e 100644
--- a/packages/cli/src/lib/logging.ts
+++ b/packages/cli/src/lib/logging.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/packager/index.ts b/packages/cli/src/lib/packager/index.ts
index afe29fbd7c..6917795e83 100644
--- a/packages/cli/src/lib/packager/index.ts
+++ b/packages/cli/src/lib/packager/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/parallel.test.ts b/packages/cli/src/lib/parallel.test.ts
index 8047774a6e..c5c33473ff 100644
--- a/packages/cli/src/lib/parallel.test.ts
+++ b/packages/cli/src/lib/parallel.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/parallel.ts b/packages/cli/src/lib/parallel.ts
index b6926115aa..f922295a89 100644
--- a/packages/cli/src/lib/parallel.ts
+++ b/packages/cli/src/lib/parallel.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/paths.ts b/packages/cli/src/lib/paths.ts
index a17034344d..2c658c27b3 100644
--- a/packages/cli/src/lib/paths.ts
+++ b/packages/cli/src/lib/paths.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/run.ts b/packages/cli/src/lib/run.ts
index 571c75a39d..7cf22a6df9 100644
--- a/packages/cli/src/lib/run.ts
+++ b/packages/cli/src/lib/run.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/svgrTemplate.ts b/packages/cli/src/lib/svgrTemplate.ts
index 5f7c7f9a4c..ca2a8c38fa 100644
--- a/packages/cli/src/lib/svgrTemplate.ts
+++ b/packages/cli/src/lib/svgrTemplate.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/tasks.test.ts b/packages/cli/src/lib/tasks.test.ts
index 88d8050290..9ee4e93336 100644
--- a/packages/cli/src/lib/tasks.test.ts
+++ b/packages/cli/src/lib/tasks.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/tasks.ts b/packages/cli/src/lib/tasks.ts
index 4b92c6b9cb..be6d052365 100644
--- a/packages/cli/src/lib/tasks.ts
+++ b/packages/cli/src/lib/tasks.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/version.ts b/packages/cli/src/lib/version.ts
index b2b793717d..e50a0b5c60 100644
--- a/packages/cli/src/lib/version.ts
+++ b/packages/cli/src/lib/version.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/versioning/Lockfile.test.ts b/packages/cli/src/lib/versioning/Lockfile.test.ts
index 89126c7ce1..f182aabdad 100644
--- a/packages/cli/src/lib/versioning/Lockfile.test.ts
+++ b/packages/cli/src/lib/versioning/Lockfile.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/versioning/Lockfile.ts b/packages/cli/src/lib/versioning/Lockfile.ts
index f0867c6408..7b23652c33 100644
--- a/packages/cli/src/lib/versioning/Lockfile.ts
+++ b/packages/cli/src/lib/versioning/Lockfile.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/versioning/index.ts b/packages/cli/src/lib/versioning/index.ts
index 71fb7647ce..fb3b8989b4 100644
--- a/packages/cli/src/lib/versioning/index.ts
+++ b/packages/cli/src/lib/versioning/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/versioning/packages.test.ts b/packages/cli/src/lib/versioning/packages.test.ts
index aca439a0e7..dd63e57187 100644
--- a/packages/cli/src/lib/versioning/packages.test.ts
+++ b/packages/cli/src/lib/versioning/packages.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/lib/versioning/packages.ts b/packages/cli/src/lib/versioning/packages.ts
index 777dc72757..6ed584a249 100644
--- a/packages/cli/src/lib/versioning/packages.ts
+++ b/packages/cli/src/lib/versioning/packages.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/src/types.d.ts b/packages/cli/src/types.d.ts
index 828819ad17..9088a86369 100644
--- a/packages/cli/src/types.d.ts
+++ b/packages/cli/src/types.d.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/templates/default-backend-plugin/src/index.ts b/packages/cli/templates/default-backend-plugin/src/index.ts
index 7612c392a2..ca73cb27ba 100644
--- a/packages/cli/templates/default-backend-plugin/src/index.ts
+++ b/packages/cli/templates/default-backend-plugin/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/templates/default-backend-plugin/src/run.ts.hbs b/packages/cli/templates/default-backend-plugin/src/run.ts.hbs
index b96989e4b8..54d2716290 100644
--- a/packages/cli/templates/default-backend-plugin/src/run.ts.hbs
+++ b/packages/cli/templates/default-backend-plugin/src/run.ts.hbs
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/templates/default-backend-plugin/src/service/router.test.ts b/packages/cli/templates/default-backend-plugin/src/service/router.test.ts
index 0aaeafa379..8b77a04348 100644
--- a/packages/cli/templates/default-backend-plugin/src/service/router.test.ts
+++ b/packages/cli/templates/default-backend-plugin/src/service/router.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/templates/default-backend-plugin/src/service/router.ts b/packages/cli/templates/default-backend-plugin/src/service/router.ts
index 3ea8219365..9ceaa47627 100644
--- a/packages/cli/templates/default-backend-plugin/src/service/router.ts
+++ b/packages/cli/templates/default-backend-plugin/src/service/router.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/templates/default-backend-plugin/src/service/standaloneServer.ts.hbs b/packages/cli/templates/default-backend-plugin/src/service/standaloneServer.ts.hbs
index 6e38965246..171b6da0e5 100644
--- a/packages/cli/templates/default-backend-plugin/src/service/standaloneServer.ts.hbs
+++ b/packages/cli/templates/default-backend-plugin/src/service/standaloneServer.ts.hbs
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -34,9 +34,12 @@ export async function startStandaloneServer(
logger,
});
- const service = createServiceBuilder(module)
- .enableCors({ origin: 'http://localhost:3000' })
+ let service = createServiceBuilder(module)
+ .setPort(options.port)
.addRouter('/{{id}}', router);
+ if (options.enableCors) {
+ service = service.enableCors({ origin: 'http://localhost:3000' });
+ }
return await service.start().catch(err => {
logger.error(err);
diff --git a/packages/cli/templates/default-backend-plugin/src/setupTests.ts b/packages/cli/templates/default-backend-plugin/src/setupTests.ts
index ba33cf996b..d3232290a7 100644
--- a/packages/cli/templates/default-backend-plugin/src/setupTests.ts
+++ b/packages/cli/templates/default-backend-plugin/src/setupTests.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/cli/templates/default-plugin/dev/index.tsx.hbs b/packages/cli/templates/default-plugin/dev/index.tsx.hbs
index ade00a1613..14fecf73e1 100644
--- a/packages/cli/templates/default-plugin/dev/index.tsx.hbs
+++ b/packages/cli/templates/default-plugin/dev/index.tsx.hbs
@@ -7,5 +7,6 @@ createDevApp()
.addPage({
element: <{{ extensionName }} />,
title: 'Root Page',
+ path: '/{{ id }}'
})
.render();
diff --git a/packages/codemods/CHANGELOG.md b/packages/codemods/CHANGELOG.md
index 9f2ae5d214..524ffc18a1 100644
--- a/packages/codemods/CHANGELOG.md
+++ b/packages/codemods/CHANGELOG.md
@@ -1,9 +1,21 @@
# @backstage/codemods
+## 0.1.2
+
+Fixed a publish issue, making this package available to the public.
+
## 0.1.1
### Patch Changes
+- 59752e103: Fix execution of `jscodeshift` on windows.
+- Updated dependencies
+ - @backstage/core-components@0.1.3
+
+## 0.1.0
+
+### Patch Changes
+
- Updated dependencies [9bca2a252]
- Updated dependencies [e47336ea4]
- Updated dependencies [75b8537ce]
diff --git a/packages/codemods/bin/backstage-codemods b/packages/codemods/bin/backstage-codemods
index d6d449fe31..0bc4088cae 100755
--- a/packages/codemods/bin/backstage-codemods
+++ b/packages/codemods/bin/backstage-codemods
@@ -1,6 +1,6 @@
#!/usr/bin/env node
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,13 +17,21 @@
const path = require('path');
-require('ts-node').register({
- transpileOnly: true,
- /* eslint-disable-next-line no-restricted-syntax */
- project: path.resolve(__dirname, '../../../tsconfig.json'),
- compilerOptions: {
- module: 'CommonJS',
- },
-});
+// Figure out whether we're running inside the backstage repo or as an installed dependency
+/* eslint-disable-next-line no-restricted-syntax */
+const isLocal = require('fs').existsSync(path.resolve(__dirname, '../src'));
-require('../src');
+if (!isLocal) {
+ require('..');
+} else {
+ require('ts-node').register({
+ transpileOnly: true,
+ /* eslint-disable-next-line no-restricted-syntax */
+ project: path.resolve(__dirname, '../../../tsconfig.json'),
+ compilerOptions: {
+ module: 'CommonJS',
+ },
+ });
+
+ require('../src');
+}
diff --git a/packages/codemods/package.json b/packages/codemods/package.json
index 2ce0172b75..f97d9cdde0 100644
--- a/packages/codemods/package.json
+++ b/packages/codemods/package.json
@@ -1,8 +1,12 @@
{
"name": "@backstage/codemods",
"description": "A collection of codemods for Backstage projects",
- "version": "0.1.1",
- "private": true,
+ "version": "0.1.2",
+ "private": false,
+ "publishConfig": {
+ "access": "public",
+ "main": "dist/index.cjs.js"
+ },
"homepage": "https://backstage.io",
"repository": {
"type": "git",
@@ -16,8 +20,12 @@
"main": "src/index.ts",
"scripts": {
"start": "nodemon --",
+ "build": "backstage-cli build --outputs cjs",
"lint": "backstage-cli lint",
- "test": "backstage-cli test"
+ "test": "backstage-cli test",
+ "prepack": "backstage-cli prepack",
+ "postpack": "backstage-cli postpack",
+ "clean": "backstage-cli clean"
},
"bin": {
"backstage-codemods": "bin/backstage-codemods"
@@ -43,6 +51,7 @@
"ext": "ts"
},
"files": [
+ "bin",
"dist",
"transforms"
]
diff --git a/packages/codemods/src/action.ts b/packages/codemods/src/action.ts
index c3eba8aecc..bc9104425e 100644
--- a/packages/codemods/src/action.ts
+++ b/packages/codemods/src/action.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/codemods/src/codemods.ts b/packages/codemods/src/codemods.ts
index 23e02daabd..6cdd9d8977 100644
--- a/packages/codemods/src/codemods.ts
+++ b/packages/codemods/src/codemods.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/codemods/src/errors.ts b/packages/codemods/src/errors.ts
index a1eab4c9e5..2f67b94ae1 100644
--- a/packages/codemods/src/errors.ts
+++ b/packages/codemods/src/errors.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/codemods/src/index.ts b/packages/codemods/src/index.ts
index 967c906477..0458712522 100644
--- a/packages/codemods/src/index.ts
+++ b/packages/codemods/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/codemods/src/tests/core-imports.test.ts b/packages/codemods/src/tests/core-imports.test.ts
index e5924156b6..d8dea7eb90 100644
--- a/packages/codemods/src/tests/core-imports.test.ts
+++ b/packages/codemods/src/tests/core-imports.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/codemods/transforms/core-imports.js b/packages/codemods/transforms/core-imports.js
index 5ad38e02df..f744a9c412 100644
--- a/packages/codemods/transforms/core-imports.js
+++ b/packages/codemods/transforms/core-imports.js
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/config-loader/CHANGELOG.md b/packages/config-loader/CHANGELOG.md
index 67ed7472b5..e0be1eebc8 100644
--- a/packages/config-loader/CHANGELOG.md
+++ b/packages/config-loader/CHANGELOG.md
@@ -1,5 +1,11 @@
# @backstage/config-loader
+## 0.6.4
+
+### Patch Changes
+
+- f00493739: Removed workaround for breaking change in typescript 4.3 and bump `typescript-json-schema` instead. This should again allow the usage of `@items.visibility ` to set the visibility of array items.
+
## 0.6.3
### Patch Changes
diff --git a/packages/config-loader/package.json b/packages/config-loader/package.json
index de0adb4a4a..4a0ede9873 100644
--- a/packages/config-loader/package.json
+++ b/packages/config-loader/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/config-loader",
"description": "Config loading functionality used by Backstage backend, and CLI",
- "version": "0.6.3",
+ "version": "0.6.4",
"private": false,
"publishConfig": {
"access": "public",
@@ -37,7 +37,7 @@
"fs-extra": "^9.0.0",
"json-schema": "^0.3.0",
"json-schema-merge-allof": "^0.8.1",
- "typescript-json-schema": "^0.49.0",
+ "typescript-json-schema": "^0.50.1",
"yaml": "^1.9.2",
"yup": "^0.29.3"
},
diff --git a/packages/config-loader/src/index.ts b/packages/config-loader/src/index.ts
index d9e5ae1350..f605d53115 100644
--- a/packages/config-loader/src/index.ts
+++ b/packages/config-loader/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/config-loader/src/lib/env.test.ts b/packages/config-loader/src/lib/env.test.ts
index 6b1e49365a..6908f0adb0 100644
--- a/packages/config-loader/src/lib/env.test.ts
+++ b/packages/config-loader/src/lib/env.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/config-loader/src/lib/env.ts b/packages/config-loader/src/lib/env.ts
index 84d39263e3..7d28e6b6ef 100644
--- a/packages/config-loader/src/lib/env.ts
+++ b/packages/config-loader/src/lib/env.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/config-loader/src/lib/index.ts b/packages/config-loader/src/lib/index.ts
index 192ac81f5d..32a0191cae 100644
--- a/packages/config-loader/src/lib/index.ts
+++ b/packages/config-loader/src/lib/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/config-loader/src/lib/schema/collect.test.ts b/packages/config-loader/src/lib/schema/collect.test.ts
index 94fe2154c1..479e63c94c 100644
--- a/packages/config-loader/src/lib/schema/collect.test.ts
+++ b/packages/config-loader/src/lib/schema/collect.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -28,6 +28,15 @@ const mockSchema = {
},
};
+// We need to load in actual TS libraries when using mock-fs.
+// This lookup is to allow the `typescript` dependency to exist either
+// at top level or inside node_modules of typescript-json-schema
+const typescriptModuleDir = path.dirname(
+ require.resolve('typescript/package.json', {
+ paths: [require.resolve('typescript-json-schema')],
+ }),
+);
+
describe('collectConfigSchemas', () => {
afterEach(() => {
mockFs.restore();
@@ -157,9 +166,7 @@ describe('collectConfigSchemas', () => {
},
},
// TypeScript compilation needs to load some real files inside the typescript dir
- '../../node_modules/typescript': (mockFs as any).load(
- '../../node_modules/typescript',
- ),
+ [typescriptModuleDir]: (mockFs as any).load(typescriptModuleDir),
});
await expect(collectConfigSchemas(['a', 'b', 'c'])).resolves.toEqual([
@@ -218,9 +225,7 @@ describe('collectConfigSchemas', () => {
},
},
// TypeScript compilation needs to load some real files inside the typescript dir
- '../../node_modules/typescript': (mockFs as any).load(
- '../../node_modules/typescript',
- ),
+ [typescriptModuleDir]: (mockFs as any).load(typescriptModuleDir),
});
await expect(collectConfigSchemas(['a'])).rejects.toThrow(
diff --git a/packages/config-loader/src/lib/schema/collect.ts b/packages/config-loader/src/lib/schema/collect.ts
index 5baada2d6f..b53389d499 100644
--- a/packages/config-loader/src/lib/schema/collect.ts
+++ b/packages/config-loader/src/lib/schema/collect.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -168,23 +168,6 @@ function compileTsSchemas(paths: string[]) {
},
[path.split(sep).join('/')], // Unix paths are expected for all OSes here
) as JsonObject | null;
-
- // This is a workaround for an API change in TypeScript 4.3 where doc comments no
- // longer are represented by a single string, but instead an array of objects.
- // This isn't handled by typescript-json-schema so we do the conversion here instead.
- value = JSON.parse(JSON.stringify(value), (key, prop) => {
- if (key === 'visibility' && Array.isArray(prop)) {
- const text = prop[0]?.text;
- if (!text) {
- const propStr = JSON.stringify(prop);
- throw new Error(
- `Failed conversion of visibility schema, got ${propStr}`,
- );
- }
- return text;
- }
- return prop;
- });
} catch (error) {
if (error.message !== 'type Config not found') {
throw error;
diff --git a/packages/config-loader/src/lib/schema/compile.test.ts b/packages/config-loader/src/lib/schema/compile.test.ts
index e1d8ee5999..c9330a0440 100644
--- a/packages/config-loader/src/lib/schema/compile.test.ts
+++ b/packages/config-loader/src/lib/schema/compile.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/config-loader/src/lib/schema/compile.ts b/packages/config-loader/src/lib/schema/compile.ts
index e85b6023cc..4236fd2d17 100644
--- a/packages/config-loader/src/lib/schema/compile.ts
+++ b/packages/config-loader/src/lib/schema/compile.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/config-loader/src/lib/schema/filtering.test.ts b/packages/config-loader/src/lib/schema/filtering.test.ts
index feb31ebab0..5079afa876 100644
--- a/packages/config-loader/src/lib/schema/filtering.test.ts
+++ b/packages/config-loader/src/lib/schema/filtering.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/config-loader/src/lib/schema/filtering.ts b/packages/config-loader/src/lib/schema/filtering.ts
index 93e899c9d8..74d367a30a 100644
--- a/packages/config-loader/src/lib/schema/filtering.ts
+++ b/packages/config-loader/src/lib/schema/filtering.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/config-loader/src/lib/schema/index.ts b/packages/config-loader/src/lib/schema/index.ts
index 00bb5c7d10..851be36f84 100644
--- a/packages/config-loader/src/lib/schema/index.ts
+++ b/packages/config-loader/src/lib/schema/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/config-loader/src/lib/schema/load.test.ts b/packages/config-loader/src/lib/schema/load.test.ts
index 7d9f7cc803..4a2b719590 100644
--- a/packages/config-loader/src/lib/schema/load.test.ts
+++ b/packages/config-loader/src/lib/schema/load.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/config-loader/src/lib/schema/load.ts b/packages/config-loader/src/lib/schema/load.ts
index 67b9762f51..ae5823c8cc 100644
--- a/packages/config-loader/src/lib/schema/load.ts
+++ b/packages/config-loader/src/lib/schema/load.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/config-loader/src/lib/schema/types.ts b/packages/config-loader/src/lib/schema/types.ts
index db3d964aa0..30e47917bc 100644
--- a/packages/config-loader/src/lib/schema/types.ts
+++ b/packages/config-loader/src/lib/schema/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/config-loader/src/lib/transform/apply.test.ts b/packages/config-loader/src/lib/transform/apply.test.ts
index 4cdd0e97f5..ab79f3805a 100644
--- a/packages/config-loader/src/lib/transform/apply.test.ts
+++ b/packages/config-loader/src/lib/transform/apply.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/config-loader/src/lib/transform/apply.ts b/packages/config-loader/src/lib/transform/apply.ts
index 72c440a922..690d280266 100644
--- a/packages/config-loader/src/lib/transform/apply.ts
+++ b/packages/config-loader/src/lib/transform/apply.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/config-loader/src/lib/transform/include.test.ts b/packages/config-loader/src/lib/transform/include.test.ts
index 83f35d53d0..44bf07ab4d 100644
--- a/packages/config-loader/src/lib/transform/include.test.ts
+++ b/packages/config-loader/src/lib/transform/include.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/config-loader/src/lib/transform/include.ts b/packages/config-loader/src/lib/transform/include.ts
index 2b5ccf23b6..5ea7161e5f 100644
--- a/packages/config-loader/src/lib/transform/include.ts
+++ b/packages/config-loader/src/lib/transform/include.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/config-loader/src/lib/transform/index.ts b/packages/config-loader/src/lib/transform/index.ts
index cb9f077d43..5053cd7443 100644
--- a/packages/config-loader/src/lib/transform/index.ts
+++ b/packages/config-loader/src/lib/transform/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/config-loader/src/lib/transform/substitution.test.ts b/packages/config-loader/src/lib/transform/substitution.test.ts
index d07e88cfdd..dc6ed47597 100644
--- a/packages/config-loader/src/lib/transform/substitution.test.ts
+++ b/packages/config-loader/src/lib/transform/substitution.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/config-loader/src/lib/transform/substitution.ts b/packages/config-loader/src/lib/transform/substitution.ts
index 56695fa431..21edfb7e57 100644
--- a/packages/config-loader/src/lib/transform/substitution.ts
+++ b/packages/config-loader/src/lib/transform/substitution.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/config-loader/src/lib/transform/types.ts b/packages/config-loader/src/lib/transform/types.ts
index c13f01d016..20e5f88718 100644
--- a/packages/config-loader/src/lib/transform/types.ts
+++ b/packages/config-loader/src/lib/transform/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/config-loader/src/lib/transform/utils.ts b/packages/config-loader/src/lib/transform/utils.ts
index 9a72bc3c0e..a49e9b14bd 100644
--- a/packages/config-loader/src/lib/transform/utils.ts
+++ b/packages/config-loader/src/lib/transform/utils.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/config-loader/src/loader.test.ts b/packages/config-loader/src/loader.test.ts
index 27b1e20789..b0e236f9c9 100644
--- a/packages/config-loader/src/loader.test.ts
+++ b/packages/config-loader/src/loader.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/config-loader/src/loader.ts b/packages/config-loader/src/loader.ts
index 95e5b570ca..3846d6474b 100644
--- a/packages/config-loader/src/loader.ts
+++ b/packages/config-loader/src/loader.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/config/src/index.ts b/packages/config/src/index.ts
index 70a6a7a29b..d45b4e9e75 100644
--- a/packages/config/src/index.ts
+++ b/packages/config/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/config/src/reader.test.ts b/packages/config/src/reader.test.ts
index 3fe74aa637..b1ba536797 100644
--- a/packages/config/src/reader.test.ts
+++ b/packages/config/src/reader.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/config/src/reader.ts b/packages/config/src/reader.ts
index 99977d19cd..11346d4a50 100644
--- a/packages/config/src/reader.ts
+++ b/packages/config/src/reader.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/config/src/types.ts b/packages/config/src/types.ts
index 76bbc2f9bf..d8f12f4f6e 100644
--- a/packages/config/src/types.ts
+++ b/packages/config/src/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/definitions/AlertApi.ts b/packages/core-api/src/apis/definitions/AlertApi.ts
index 91641ac35b..22dd97ee38 100644
--- a/packages/core-api/src/apis/definitions/AlertApi.ts
+++ b/packages/core-api/src/apis/definitions/AlertApi.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/definitions/AppThemeApi.ts b/packages/core-api/src/apis/definitions/AppThemeApi.ts
index 515e8df082..75a2d6a4ec 100644
--- a/packages/core-api/src/apis/definitions/AppThemeApi.ts
+++ b/packages/core-api/src/apis/definitions/AppThemeApi.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/definitions/ConfigApi.ts b/packages/core-api/src/apis/definitions/ConfigApi.ts
index 459a361cf7..c060d878bf 100644
--- a/packages/core-api/src/apis/definitions/ConfigApi.ts
+++ b/packages/core-api/src/apis/definitions/ConfigApi.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/definitions/DiscoveryApi.ts b/packages/core-api/src/apis/definitions/DiscoveryApi.ts
index f62a97b61a..9ae5c8c4f9 100644
--- a/packages/core-api/src/apis/definitions/DiscoveryApi.ts
+++ b/packages/core-api/src/apis/definitions/DiscoveryApi.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/definitions/ErrorApi.ts b/packages/core-api/src/apis/definitions/ErrorApi.ts
index 6205f8e058..86ca407718 100644
--- a/packages/core-api/src/apis/definitions/ErrorApi.ts
+++ b/packages/core-api/src/apis/definitions/ErrorApi.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/definitions/FeatureFlagsApi.ts b/packages/core-api/src/apis/definitions/FeatureFlagsApi.ts
index 243af562b1..56fcd7cacf 100644
--- a/packages/core-api/src/apis/definitions/FeatureFlagsApi.ts
+++ b/packages/core-api/src/apis/definitions/FeatureFlagsApi.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/definitions/IdentityApi.ts b/packages/core-api/src/apis/definitions/IdentityApi.ts
index 2d29709b02..222cf12547 100644
--- a/packages/core-api/src/apis/definitions/IdentityApi.ts
+++ b/packages/core-api/src/apis/definitions/IdentityApi.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/definitions/OAuthRequestApi.ts b/packages/core-api/src/apis/definitions/OAuthRequestApi.ts
index fc4f1ef166..4e9b2cdbc8 100644
--- a/packages/core-api/src/apis/definitions/OAuthRequestApi.ts
+++ b/packages/core-api/src/apis/definitions/OAuthRequestApi.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/definitions/StorageApi.ts b/packages/core-api/src/apis/definitions/StorageApi.ts
index 2482af6d63..bc243a65f3 100644
--- a/packages/core-api/src/apis/definitions/StorageApi.ts
+++ b/packages/core-api/src/apis/definitions/StorageApi.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/definitions/auth.ts b/packages/core-api/src/apis/definitions/auth.ts
index 30b07887ad..f71aa5df9c 100644
--- a/packages/core-api/src/apis/definitions/auth.ts
+++ b/packages/core-api/src/apis/definitions/auth.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/definitions/index.ts b/packages/core-api/src/apis/definitions/index.ts
index e29d1022c4..d4350ddbf6 100644
--- a/packages/core-api/src/apis/definitions/index.ts
+++ b/packages/core-api/src/apis/definitions/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/AlertApi/AlertApiForwarder.ts b/packages/core-api/src/apis/implementations/AlertApi/AlertApiForwarder.ts
index f18829d99c..9f7adc260d 100644
--- a/packages/core-api/src/apis/implementations/AlertApi/AlertApiForwarder.ts
+++ b/packages/core-api/src/apis/implementations/AlertApi/AlertApiForwarder.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/AlertApi/index.ts b/packages/core-api/src/apis/implementations/AlertApi/index.ts
index 12ab8bc60c..d572845809 100644
--- a/packages/core-api/src/apis/implementations/AlertApi/index.ts
+++ b/packages/core-api/src/apis/implementations/AlertApi/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/AppThemeApi/AppThemeSelector.test.ts b/packages/core-api/src/apis/implementations/AppThemeApi/AppThemeSelector.test.ts
index 0c23fe5219..363e829ac2 100644
--- a/packages/core-api/src/apis/implementations/AppThemeApi/AppThemeSelector.test.ts
+++ b/packages/core-api/src/apis/implementations/AppThemeApi/AppThemeSelector.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/AppThemeApi/AppThemeSelector.ts b/packages/core-api/src/apis/implementations/AppThemeApi/AppThemeSelector.ts
index 837c5f54db..5856199733 100644
--- a/packages/core-api/src/apis/implementations/AppThemeApi/AppThemeSelector.ts
+++ b/packages/core-api/src/apis/implementations/AppThemeApi/AppThemeSelector.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/AppThemeApi/index.ts b/packages/core-api/src/apis/implementations/AppThemeApi/index.ts
index cb42c0f875..b0a314303b 100644
--- a/packages/core-api/src/apis/implementations/AppThemeApi/index.ts
+++ b/packages/core-api/src/apis/implementations/AppThemeApi/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/ConfigApi/index.ts b/packages/core-api/src/apis/implementations/ConfigApi/index.ts
index 7c7f88a3e5..708c1d4573 100644
--- a/packages/core-api/src/apis/implementations/ConfigApi/index.ts
+++ b/packages/core-api/src/apis/implementations/ConfigApi/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/DiscoveryApi/UrlPatternDiscovery.test.ts b/packages/core-api/src/apis/implementations/DiscoveryApi/UrlPatternDiscovery.test.ts
index 9597443b98..9cd666e8a3 100644
--- a/packages/core-api/src/apis/implementations/DiscoveryApi/UrlPatternDiscovery.test.ts
+++ b/packages/core-api/src/apis/implementations/DiscoveryApi/UrlPatternDiscovery.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/DiscoveryApi/UrlPatternDiscovery.ts b/packages/core-api/src/apis/implementations/DiscoveryApi/UrlPatternDiscovery.ts
index ca48784584..10d3d90c63 100644
--- a/packages/core-api/src/apis/implementations/DiscoveryApi/UrlPatternDiscovery.ts
+++ b/packages/core-api/src/apis/implementations/DiscoveryApi/UrlPatternDiscovery.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/DiscoveryApi/index.ts b/packages/core-api/src/apis/implementations/DiscoveryApi/index.ts
index 24468fdcb6..184346401f 100644
--- a/packages/core-api/src/apis/implementations/DiscoveryApi/index.ts
+++ b/packages/core-api/src/apis/implementations/DiscoveryApi/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/ErrorApi/ErrorAlerter.ts b/packages/core-api/src/apis/implementations/ErrorApi/ErrorAlerter.ts
index 84bc958698..f537205917 100644
--- a/packages/core-api/src/apis/implementations/ErrorApi/ErrorAlerter.ts
+++ b/packages/core-api/src/apis/implementations/ErrorApi/ErrorAlerter.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/ErrorApi/ErrorApiForwarder.ts b/packages/core-api/src/apis/implementations/ErrorApi/ErrorApiForwarder.ts
index 5993ede367..226c4f5488 100644
--- a/packages/core-api/src/apis/implementations/ErrorApi/ErrorApiForwarder.ts
+++ b/packages/core-api/src/apis/implementations/ErrorApi/ErrorApiForwarder.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/ErrorApi/index.ts b/packages/core-api/src/apis/implementations/ErrorApi/index.ts
index 757dfd0d8f..49e12b4646 100644
--- a/packages/core-api/src/apis/implementations/ErrorApi/index.ts
+++ b/packages/core-api/src/apis/implementations/ErrorApi/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/FeatureFlagsApi/LocalStorageFeatureFlags.test.tsx b/packages/core-api/src/apis/implementations/FeatureFlagsApi/LocalStorageFeatureFlags.test.tsx
index 2902e399c9..64ab907d5c 100644
--- a/packages/core-api/src/apis/implementations/FeatureFlagsApi/LocalStorageFeatureFlags.test.tsx
+++ b/packages/core-api/src/apis/implementations/FeatureFlagsApi/LocalStorageFeatureFlags.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/FeatureFlagsApi/LocalStorageFeatureFlags.tsx b/packages/core-api/src/apis/implementations/FeatureFlagsApi/LocalStorageFeatureFlags.tsx
index 00b3eff906..3d47e60de8 100644
--- a/packages/core-api/src/apis/implementations/FeatureFlagsApi/LocalStorageFeatureFlags.tsx
+++ b/packages/core-api/src/apis/implementations/FeatureFlagsApi/LocalStorageFeatureFlags.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/FeatureFlagsApi/index.ts b/packages/core-api/src/apis/implementations/FeatureFlagsApi/index.ts
index 33990584f3..fc806c9ae1 100644
--- a/packages/core-api/src/apis/implementations/FeatureFlagsApi/index.ts
+++ b/packages/core-api/src/apis/implementations/FeatureFlagsApi/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/OAuthRequestApi/MockOAuthApi.test.ts b/packages/core-api/src/apis/implementations/OAuthRequestApi/MockOAuthApi.test.ts
index 32170acc6f..d0f137f0be 100644
--- a/packages/core-api/src/apis/implementations/OAuthRequestApi/MockOAuthApi.test.ts
+++ b/packages/core-api/src/apis/implementations/OAuthRequestApi/MockOAuthApi.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/OAuthRequestApi/MockOAuthApi.ts b/packages/core-api/src/apis/implementations/OAuthRequestApi/MockOAuthApi.ts
index 523f713f45..7c37d702d6 100644
--- a/packages/core-api/src/apis/implementations/OAuthRequestApi/MockOAuthApi.ts
+++ b/packages/core-api/src/apis/implementations/OAuthRequestApi/MockOAuthApi.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/OAuthRequestApi/OAuthPendingRequests.test.ts b/packages/core-api/src/apis/implementations/OAuthRequestApi/OAuthPendingRequests.test.ts
index 280321daa0..20b0cbba67 100644
--- a/packages/core-api/src/apis/implementations/OAuthRequestApi/OAuthPendingRequests.test.ts
+++ b/packages/core-api/src/apis/implementations/OAuthRequestApi/OAuthPendingRequests.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/OAuthRequestApi/OAuthPendingRequests.ts b/packages/core-api/src/apis/implementations/OAuthRequestApi/OAuthPendingRequests.ts
index f0710cb466..9e65ca007f 100644
--- a/packages/core-api/src/apis/implementations/OAuthRequestApi/OAuthPendingRequests.ts
+++ b/packages/core-api/src/apis/implementations/OAuthRequestApi/OAuthPendingRequests.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/OAuthRequestApi/OAuthRequestManager.test.ts b/packages/core-api/src/apis/implementations/OAuthRequestApi/OAuthRequestManager.test.ts
index 46a5362f35..d8faf90229 100644
--- a/packages/core-api/src/apis/implementations/OAuthRequestApi/OAuthRequestManager.test.ts
+++ b/packages/core-api/src/apis/implementations/OAuthRequestApi/OAuthRequestManager.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/OAuthRequestApi/OAuthRequestManager.ts b/packages/core-api/src/apis/implementations/OAuthRequestApi/OAuthRequestManager.ts
index a0a01d1bc9..c8cea322e8 100644
--- a/packages/core-api/src/apis/implementations/OAuthRequestApi/OAuthRequestManager.ts
+++ b/packages/core-api/src/apis/implementations/OAuthRequestApi/OAuthRequestManager.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/OAuthRequestApi/index.ts b/packages/core-api/src/apis/implementations/OAuthRequestApi/index.ts
index 0fe9bfae0f..72e42872fd 100644
--- a/packages/core-api/src/apis/implementations/OAuthRequestApi/index.ts
+++ b/packages/core-api/src/apis/implementations/OAuthRequestApi/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/StorageApi/WebStorage.test.ts b/packages/core-api/src/apis/implementations/StorageApi/WebStorage.test.ts
index 81140ffcc9..8551eed4a6 100644
--- a/packages/core-api/src/apis/implementations/StorageApi/WebStorage.test.ts
+++ b/packages/core-api/src/apis/implementations/StorageApi/WebStorage.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/StorageApi/WebStorage.ts b/packages/core-api/src/apis/implementations/StorageApi/WebStorage.ts
index b9b01cd20b..1b4f4a88bb 100644
--- a/packages/core-api/src/apis/implementations/StorageApi/WebStorage.ts
+++ b/packages/core-api/src/apis/implementations/StorageApi/WebStorage.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/StorageApi/index.ts b/packages/core-api/src/apis/implementations/StorageApi/index.ts
index 33b0094551..2f941381fd 100644
--- a/packages/core-api/src/apis/implementations/StorageApi/index.ts
+++ b/packages/core-api/src/apis/implementations/StorageApi/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/auth/auth0/Auth0Auth.ts b/packages/core-api/src/apis/implementations/auth/auth0/Auth0Auth.ts
index b41e705726..2dac460fbe 100644
--- a/packages/core-api/src/apis/implementations/auth/auth0/Auth0Auth.ts
+++ b/packages/core-api/src/apis/implementations/auth/auth0/Auth0Auth.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/auth/auth0/index.ts b/packages/core-api/src/apis/implementations/auth/auth0/index.ts
index dda27d0fa3..9daed7d13e 100644
--- a/packages/core-api/src/apis/implementations/auth/auth0/index.ts
+++ b/packages/core-api/src/apis/implementations/auth/auth0/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/auth/github/GithubAuth.test.ts b/packages/core-api/src/apis/implementations/auth/github/GithubAuth.test.ts
index 3ff29cc6ef..04bfff028d 100644
--- a/packages/core-api/src/apis/implementations/auth/github/GithubAuth.test.ts
+++ b/packages/core-api/src/apis/implementations/auth/github/GithubAuth.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/auth/github/GithubAuth.ts b/packages/core-api/src/apis/implementations/auth/github/GithubAuth.ts
index a7c945a907..60ee6a2629 100644
--- a/packages/core-api/src/apis/implementations/auth/github/GithubAuth.ts
+++ b/packages/core-api/src/apis/implementations/auth/github/GithubAuth.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/auth/github/index.ts b/packages/core-api/src/apis/implementations/auth/github/index.ts
index 9e1722f4a4..ee4334f6fc 100644
--- a/packages/core-api/src/apis/implementations/auth/github/index.ts
+++ b/packages/core-api/src/apis/implementations/auth/github/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/auth/github/types.ts b/packages/core-api/src/apis/implementations/auth/github/types.ts
index cc42d59fec..90573d2429 100644
--- a/packages/core-api/src/apis/implementations/auth/github/types.ts
+++ b/packages/core-api/src/apis/implementations/auth/github/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/auth/gitlab/GitlabAuth.test.ts b/packages/core-api/src/apis/implementations/auth/gitlab/GitlabAuth.test.ts
index 6a592c7fbe..3346af9b7c 100644
--- a/packages/core-api/src/apis/implementations/auth/gitlab/GitlabAuth.test.ts
+++ b/packages/core-api/src/apis/implementations/auth/gitlab/GitlabAuth.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/auth/gitlab/GitlabAuth.ts b/packages/core-api/src/apis/implementations/auth/gitlab/GitlabAuth.ts
index 3f4bc814e3..37a3c89dd6 100644
--- a/packages/core-api/src/apis/implementations/auth/gitlab/GitlabAuth.ts
+++ b/packages/core-api/src/apis/implementations/auth/gitlab/GitlabAuth.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/auth/gitlab/index.ts b/packages/core-api/src/apis/implementations/auth/gitlab/index.ts
index 42d7210551..935a11dd54 100644
--- a/packages/core-api/src/apis/implementations/auth/gitlab/index.ts
+++ b/packages/core-api/src/apis/implementations/auth/gitlab/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/auth/google/GoogleAuth.test.ts b/packages/core-api/src/apis/implementations/auth/google/GoogleAuth.test.ts
index 9e8569c5cf..f8a1c3a1f5 100644
--- a/packages/core-api/src/apis/implementations/auth/google/GoogleAuth.test.ts
+++ b/packages/core-api/src/apis/implementations/auth/google/GoogleAuth.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/auth/google/GoogleAuth.ts b/packages/core-api/src/apis/implementations/auth/google/GoogleAuth.ts
index fbc902cdd8..988ef9c2e0 100644
--- a/packages/core-api/src/apis/implementations/auth/google/GoogleAuth.ts
+++ b/packages/core-api/src/apis/implementations/auth/google/GoogleAuth.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/auth/google/index.ts b/packages/core-api/src/apis/implementations/auth/google/index.ts
index 2521d46046..96a8699eab 100644
--- a/packages/core-api/src/apis/implementations/auth/google/index.ts
+++ b/packages/core-api/src/apis/implementations/auth/google/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/auth/index.ts b/packages/core-api/src/apis/implementations/auth/index.ts
index 7ef78d19cf..9889a33878 100644
--- a/packages/core-api/src/apis/implementations/auth/index.ts
+++ b/packages/core-api/src/apis/implementations/auth/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/auth/microsoft/MicrosoftAuth.ts b/packages/core-api/src/apis/implementations/auth/microsoft/MicrosoftAuth.ts
index 3e2711db3b..5f0e018add 100644
--- a/packages/core-api/src/apis/implementations/auth/microsoft/MicrosoftAuth.ts
+++ b/packages/core-api/src/apis/implementations/auth/microsoft/MicrosoftAuth.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/auth/microsoft/index.ts b/packages/core-api/src/apis/implementations/auth/microsoft/index.ts
index 77328d8557..44bca3d37c 100644
--- a/packages/core-api/src/apis/implementations/auth/microsoft/index.ts
+++ b/packages/core-api/src/apis/implementations/auth/microsoft/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/auth/oauth2/OAuth2.test.ts b/packages/core-api/src/apis/implementations/auth/oauth2/OAuth2.test.ts
index 93db2c732d..4f030d1c64 100644
--- a/packages/core-api/src/apis/implementations/auth/oauth2/OAuth2.test.ts
+++ b/packages/core-api/src/apis/implementations/auth/oauth2/OAuth2.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/auth/oauth2/OAuth2.ts b/packages/core-api/src/apis/implementations/auth/oauth2/OAuth2.ts
index 73ad3dcf14..10d9792799 100644
--- a/packages/core-api/src/apis/implementations/auth/oauth2/OAuth2.ts
+++ b/packages/core-api/src/apis/implementations/auth/oauth2/OAuth2.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/auth/oauth2/index.ts b/packages/core-api/src/apis/implementations/auth/oauth2/index.ts
index 52bcb1df2c..793be515b7 100644
--- a/packages/core-api/src/apis/implementations/auth/oauth2/index.ts
+++ b/packages/core-api/src/apis/implementations/auth/oauth2/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/auth/oauth2/types.ts b/packages/core-api/src/apis/implementations/auth/oauth2/types.ts
index 0e9c6f124d..ca34de9f78 100644
--- a/packages/core-api/src/apis/implementations/auth/oauth2/types.ts
+++ b/packages/core-api/src/apis/implementations/auth/oauth2/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/auth/okta/OktaAuth.test.ts b/packages/core-api/src/apis/implementations/auth/okta/OktaAuth.test.ts
index d6b1a07d9d..6489b326ff 100644
--- a/packages/core-api/src/apis/implementations/auth/okta/OktaAuth.test.ts
+++ b/packages/core-api/src/apis/implementations/auth/okta/OktaAuth.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/auth/okta/OktaAuth.ts b/packages/core-api/src/apis/implementations/auth/okta/OktaAuth.ts
index 2df908e9fb..3f29a56deb 100644
--- a/packages/core-api/src/apis/implementations/auth/okta/OktaAuth.ts
+++ b/packages/core-api/src/apis/implementations/auth/okta/OktaAuth.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/auth/okta/index.ts b/packages/core-api/src/apis/implementations/auth/okta/index.ts
index 4cc774b26b..c20ce4e16b 100644
--- a/packages/core-api/src/apis/implementations/auth/okta/index.ts
+++ b/packages/core-api/src/apis/implementations/auth/okta/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/auth/onelogin/OneLoginAuth.ts b/packages/core-api/src/apis/implementations/auth/onelogin/OneLoginAuth.ts
index ff5c7c1990..6d34e63669 100644
--- a/packages/core-api/src/apis/implementations/auth/onelogin/OneLoginAuth.ts
+++ b/packages/core-api/src/apis/implementations/auth/onelogin/OneLoginAuth.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/auth/onelogin/index.ts b/packages/core-api/src/apis/implementations/auth/onelogin/index.ts
index 1d163207db..e1826f17dd 100644
--- a/packages/core-api/src/apis/implementations/auth/onelogin/index.ts
+++ b/packages/core-api/src/apis/implementations/auth/onelogin/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/auth/saml/SamlAuth.ts b/packages/core-api/src/apis/implementations/auth/saml/SamlAuth.ts
index af97ad8f36..b8f41cfc18 100644
--- a/packages/core-api/src/apis/implementations/auth/saml/SamlAuth.ts
+++ b/packages/core-api/src/apis/implementations/auth/saml/SamlAuth.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/auth/saml/index.ts b/packages/core-api/src/apis/implementations/auth/saml/index.ts
index c2436ab435..930e6cb115 100644
--- a/packages/core-api/src/apis/implementations/auth/saml/index.ts
+++ b/packages/core-api/src/apis/implementations/auth/saml/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/auth/saml/types.ts b/packages/core-api/src/apis/implementations/auth/saml/types.ts
index 296f70b0ea..2827c6aa24 100644
--- a/packages/core-api/src/apis/implementations/auth/saml/types.ts
+++ b/packages/core-api/src/apis/implementations/auth/saml/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/auth/types.ts b/packages/core-api/src/apis/implementations/auth/types.ts
index db3b718d25..14202f4e29 100644
--- a/packages/core-api/src/apis/implementations/auth/types.ts
+++ b/packages/core-api/src/apis/implementations/auth/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/implementations/index.ts b/packages/core-api/src/apis/implementations/index.ts
index d0df2760ab..31f01f2bff 100644
--- a/packages/core-api/src/apis/implementations/index.ts
+++ b/packages/core-api/src/apis/implementations/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/index.ts b/packages/core-api/src/apis/index.ts
index 03569f9570..05b920c88a 100644
--- a/packages/core-api/src/apis/index.ts
+++ b/packages/core-api/src/apis/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/system/ApiAggregator.test.ts b/packages/core-api/src/apis/system/ApiAggregator.test.ts
index 2d14087fa2..5a7cd12683 100644
--- a/packages/core-api/src/apis/system/ApiAggregator.test.ts
+++ b/packages/core-api/src/apis/system/ApiAggregator.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/system/ApiAggregator.ts b/packages/core-api/src/apis/system/ApiAggregator.ts
index 1587a1d10b..28b2827d54 100644
--- a/packages/core-api/src/apis/system/ApiAggregator.ts
+++ b/packages/core-api/src/apis/system/ApiAggregator.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/system/ApiFactoryRegistry.test.ts b/packages/core-api/src/apis/system/ApiFactoryRegistry.test.ts
index a51ed03fea..c20d0805b1 100644
--- a/packages/core-api/src/apis/system/ApiFactoryRegistry.test.ts
+++ b/packages/core-api/src/apis/system/ApiFactoryRegistry.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/system/ApiFactoryRegistry.ts b/packages/core-api/src/apis/system/ApiFactoryRegistry.ts
index c5a76ee1d4..0c37078d42 100644
--- a/packages/core-api/src/apis/system/ApiFactoryRegistry.ts
+++ b/packages/core-api/src/apis/system/ApiFactoryRegistry.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/system/ApiProvider.test.tsx b/packages/core-api/src/apis/system/ApiProvider.test.tsx
index e95842aebc..a212f253ce 100644
--- a/packages/core-api/src/apis/system/ApiProvider.test.tsx
+++ b/packages/core-api/src/apis/system/ApiProvider.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/system/ApiProvider.tsx b/packages/core-api/src/apis/system/ApiProvider.tsx
index 807b2ff7e0..40e3cddb72 100644
--- a/packages/core-api/src/apis/system/ApiProvider.tsx
+++ b/packages/core-api/src/apis/system/ApiProvider.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/system/ApiRef.test.ts b/packages/core-api/src/apis/system/ApiRef.test.ts
index b9ea1470cd..7cd778634c 100644
--- a/packages/core-api/src/apis/system/ApiRef.test.ts
+++ b/packages/core-api/src/apis/system/ApiRef.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/system/ApiRef.ts b/packages/core-api/src/apis/system/ApiRef.ts
index e61036c61c..5a774474d8 100644
--- a/packages/core-api/src/apis/system/ApiRef.ts
+++ b/packages/core-api/src/apis/system/ApiRef.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/system/ApiRegistry.test.ts b/packages/core-api/src/apis/system/ApiRegistry.test.ts
index 93dd6dc085..66fcb70262 100644
--- a/packages/core-api/src/apis/system/ApiRegistry.test.ts
+++ b/packages/core-api/src/apis/system/ApiRegistry.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/system/ApiRegistry.ts b/packages/core-api/src/apis/system/ApiRegistry.ts
index 01101b2b62..6fcfe03f62 100644
--- a/packages/core-api/src/apis/system/ApiRegistry.ts
+++ b/packages/core-api/src/apis/system/ApiRegistry.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/system/ApiResolver.test.ts b/packages/core-api/src/apis/system/ApiResolver.test.ts
index 7a46d2db3b..064a4f8d77 100644
--- a/packages/core-api/src/apis/system/ApiResolver.test.ts
+++ b/packages/core-api/src/apis/system/ApiResolver.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/system/ApiResolver.ts b/packages/core-api/src/apis/system/ApiResolver.ts
index 9738e09622..4d69067b43 100644
--- a/packages/core-api/src/apis/system/ApiResolver.ts
+++ b/packages/core-api/src/apis/system/ApiResolver.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/system/helpers.ts b/packages/core-api/src/apis/system/helpers.ts
index cabff73060..8e84dd6c09 100644
--- a/packages/core-api/src/apis/system/helpers.ts
+++ b/packages/core-api/src/apis/system/helpers.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/system/index.ts b/packages/core-api/src/apis/system/index.ts
index 10b2e0f084..c9b9fac936 100644
--- a/packages/core-api/src/apis/system/index.ts
+++ b/packages/core-api/src/apis/system/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/apis/system/types.ts b/packages/core-api/src/apis/system/types.ts
index a4bc95a3c3..17ceff4649 100644
--- a/packages/core-api/src/apis/system/types.ts
+++ b/packages/core-api/src/apis/system/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/app/App.test.tsx b/packages/core-api/src/app/App.test.tsx
index 3cade002de..5404c111e4 100644
--- a/packages/core-api/src/app/App.test.tsx
+++ b/packages/core-api/src/app/App.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/app/App.tsx b/packages/core-api/src/app/App.tsx
index 0557f4159c..3a5e151466 100644
--- a/packages/core-api/src/app/App.tsx
+++ b/packages/core-api/src/app/App.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/app/AppContext.test.tsx b/packages/core-api/src/app/AppContext.test.tsx
index 55d98c18c0..526b397130 100644
--- a/packages/core-api/src/app/AppContext.test.tsx
+++ b/packages/core-api/src/app/AppContext.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/app/AppContext.tsx b/packages/core-api/src/app/AppContext.tsx
index c143aa86bc..ab2d2d7861 100644
--- a/packages/core-api/src/app/AppContext.tsx
+++ b/packages/core-api/src/app/AppContext.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/app/AppIdentity.ts b/packages/core-api/src/app/AppIdentity.ts
index d3e5fe567a..7dd87de392 100644
--- a/packages/core-api/src/app/AppIdentity.ts
+++ b/packages/core-api/src/app/AppIdentity.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/app/AppThemeProvider.tsx b/packages/core-api/src/app/AppThemeProvider.tsx
index 993de23a7a..b6a88e6fcc 100644
--- a/packages/core-api/src/app/AppThemeProvider.tsx
+++ b/packages/core-api/src/app/AppThemeProvider.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/app/index.ts b/packages/core-api/src/app/index.ts
index 17610ea3ee..56e0800809 100644
--- a/packages/core-api/src/app/index.ts
+++ b/packages/core-api/src/app/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/app/types.ts b/packages/core-api/src/app/types.ts
index df0f65f33f..a3eb6f423f 100644
--- a/packages/core-api/src/app/types.ts
+++ b/packages/core-api/src/app/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/extensions/componentData.test.tsx b/packages/core-api/src/extensions/componentData.test.tsx
index 417fe07414..808ab08cf1 100644
--- a/packages/core-api/src/extensions/componentData.test.tsx
+++ b/packages/core-api/src/extensions/componentData.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/extensions/componentData.tsx b/packages/core-api/src/extensions/componentData.tsx
index fc8594039c..d4975d9eef 100644
--- a/packages/core-api/src/extensions/componentData.tsx
+++ b/packages/core-api/src/extensions/componentData.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/extensions/extensions.test.tsx b/packages/core-api/src/extensions/extensions.test.tsx
index 26755b3bcf..bd649bc0f8 100644
--- a/packages/core-api/src/extensions/extensions.test.tsx
+++ b/packages/core-api/src/extensions/extensions.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/extensions/extensions.tsx b/packages/core-api/src/extensions/extensions.tsx
index 9f6412f960..bca4c25f97 100644
--- a/packages/core-api/src/extensions/extensions.tsx
+++ b/packages/core-api/src/extensions/extensions.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/extensions/index.ts b/packages/core-api/src/extensions/index.ts
index 26a0c597b1..914d76aebf 100644
--- a/packages/core-api/src/extensions/index.ts
+++ b/packages/core-api/src/extensions/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/extensions/traversal.test.tsx b/packages/core-api/src/extensions/traversal.test.tsx
index 38571fdcc7..0acc51fb27 100644
--- a/packages/core-api/src/extensions/traversal.test.tsx
+++ b/packages/core-api/src/extensions/traversal.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/extensions/traversal.ts b/packages/core-api/src/extensions/traversal.ts
index 4431bbd24c..79f44523b3 100644
--- a/packages/core-api/src/extensions/traversal.ts
+++ b/packages/core-api/src/extensions/traversal.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/icons/icons.tsx b/packages/core-api/src/icons/icons.tsx
index fd3d0dcdab..c90ee5cfc4 100644
--- a/packages/core-api/src/icons/icons.tsx
+++ b/packages/core-api/src/icons/icons.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/icons/index.ts b/packages/core-api/src/icons/index.ts
index 4c97d27176..10045c4513 100644
--- a/packages/core-api/src/icons/index.ts
+++ b/packages/core-api/src/icons/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/icons/types.ts b/packages/core-api/src/icons/types.ts
index f2a9a3ba59..bfaf9c5122 100644
--- a/packages/core-api/src/icons/types.ts
+++ b/packages/core-api/src/icons/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/index.ts b/packages/core-api/src/index.ts
index 90bde248f6..9d4b2f770a 100644
--- a/packages/core-api/src/index.ts
+++ b/packages/core-api/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/lib/AuthConnector/DefaultAuthConnector.test.ts b/packages/core-api/src/lib/AuthConnector/DefaultAuthConnector.test.ts
index 391b86952d..524a0c5709 100644
--- a/packages/core-api/src/lib/AuthConnector/DefaultAuthConnector.test.ts
+++ b/packages/core-api/src/lib/AuthConnector/DefaultAuthConnector.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/lib/AuthConnector/DefaultAuthConnector.ts b/packages/core-api/src/lib/AuthConnector/DefaultAuthConnector.ts
index 1a1bab0eb9..41a281dc6c 100644
--- a/packages/core-api/src/lib/AuthConnector/DefaultAuthConnector.ts
+++ b/packages/core-api/src/lib/AuthConnector/DefaultAuthConnector.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/lib/AuthConnector/DirectAuthConnector.ts b/packages/core-api/src/lib/AuthConnector/DirectAuthConnector.ts
index e7764fcbaa..ea3704f7f9 100644
--- a/packages/core-api/src/lib/AuthConnector/DirectAuthConnector.ts
+++ b/packages/core-api/src/lib/AuthConnector/DirectAuthConnector.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/lib/AuthConnector/MockAuthConnector.test.ts b/packages/core-api/src/lib/AuthConnector/MockAuthConnector.test.ts
index cd7986ffd0..0758c0ba29 100644
--- a/packages/core-api/src/lib/AuthConnector/MockAuthConnector.test.ts
+++ b/packages/core-api/src/lib/AuthConnector/MockAuthConnector.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/lib/AuthConnector/MockAuthConnector.ts b/packages/core-api/src/lib/AuthConnector/MockAuthConnector.ts
index 9134fd0773..db978e7018 100644
--- a/packages/core-api/src/lib/AuthConnector/MockAuthConnector.ts
+++ b/packages/core-api/src/lib/AuthConnector/MockAuthConnector.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/lib/AuthConnector/index.ts b/packages/core-api/src/lib/AuthConnector/index.ts
index 388619e2c1..047583f3ac 100644
--- a/packages/core-api/src/lib/AuthConnector/index.ts
+++ b/packages/core-api/src/lib/AuthConnector/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/lib/AuthConnector/types.ts b/packages/core-api/src/lib/AuthConnector/types.ts
index 46175a265f..464a2ed627 100644
--- a/packages/core-api/src/lib/AuthConnector/types.ts
+++ b/packages/core-api/src/lib/AuthConnector/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/lib/AuthSessionManager/AuthSessionStore.test.ts b/packages/core-api/src/lib/AuthSessionManager/AuthSessionStore.test.ts
index 5c960f7876..4ceadd51ba 100644
--- a/packages/core-api/src/lib/AuthSessionManager/AuthSessionStore.test.ts
+++ b/packages/core-api/src/lib/AuthSessionManager/AuthSessionStore.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/lib/AuthSessionManager/AuthSessionStore.ts b/packages/core-api/src/lib/AuthSessionManager/AuthSessionStore.ts
index 224036d283..057a70e58d 100644
--- a/packages/core-api/src/lib/AuthSessionManager/AuthSessionStore.ts
+++ b/packages/core-api/src/lib/AuthSessionManager/AuthSessionStore.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/lib/AuthSessionManager/RefreshingAuthSessionManager.test.ts b/packages/core-api/src/lib/AuthSessionManager/RefreshingAuthSessionManager.test.ts
index 9e22e4cd69..99a10002c3 100644
--- a/packages/core-api/src/lib/AuthSessionManager/RefreshingAuthSessionManager.test.ts
+++ b/packages/core-api/src/lib/AuthSessionManager/RefreshingAuthSessionManager.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/lib/AuthSessionManager/RefreshingAuthSessionManager.ts b/packages/core-api/src/lib/AuthSessionManager/RefreshingAuthSessionManager.ts
index a098b384f9..d31f5e29bf 100644
--- a/packages/core-api/src/lib/AuthSessionManager/RefreshingAuthSessionManager.ts
+++ b/packages/core-api/src/lib/AuthSessionManager/RefreshingAuthSessionManager.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/lib/AuthSessionManager/SessionStateTracker.ts b/packages/core-api/src/lib/AuthSessionManager/SessionStateTracker.ts
index af3d8bc9b6..525cfd7313 100644
--- a/packages/core-api/src/lib/AuthSessionManager/SessionStateTracker.ts
+++ b/packages/core-api/src/lib/AuthSessionManager/SessionStateTracker.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/lib/AuthSessionManager/StaticAuthSessionManager.test.ts b/packages/core-api/src/lib/AuthSessionManager/StaticAuthSessionManager.test.ts
index 6280750875..26f489a1b4 100644
--- a/packages/core-api/src/lib/AuthSessionManager/StaticAuthSessionManager.test.ts
+++ b/packages/core-api/src/lib/AuthSessionManager/StaticAuthSessionManager.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/lib/AuthSessionManager/StaticAuthSessionManager.ts b/packages/core-api/src/lib/AuthSessionManager/StaticAuthSessionManager.ts
index e4f144b0a9..b7940d88c4 100644
--- a/packages/core-api/src/lib/AuthSessionManager/StaticAuthSessionManager.ts
+++ b/packages/core-api/src/lib/AuthSessionManager/StaticAuthSessionManager.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/lib/AuthSessionManager/common.ts b/packages/core-api/src/lib/AuthSessionManager/common.ts
index ff2897535d..002b6c616b 100644
--- a/packages/core-api/src/lib/AuthSessionManager/common.ts
+++ b/packages/core-api/src/lib/AuthSessionManager/common.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/lib/AuthSessionManager/index.ts b/packages/core-api/src/lib/AuthSessionManager/index.ts
index 5f4dde8662..85ef2013e9 100644
--- a/packages/core-api/src/lib/AuthSessionManager/index.ts
+++ b/packages/core-api/src/lib/AuthSessionManager/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/lib/AuthSessionManager/types.ts b/packages/core-api/src/lib/AuthSessionManager/types.ts
index 332824e438..a58f838037 100644
--- a/packages/core-api/src/lib/AuthSessionManager/types.ts
+++ b/packages/core-api/src/lib/AuthSessionManager/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/lib/globalObject.test.ts b/packages/core-api/src/lib/globalObject.test.ts
index e72f027b46..a658b253a6 100644
--- a/packages/core-api/src/lib/globalObject.test.ts
+++ b/packages/core-api/src/lib/globalObject.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/lib/globalObject.ts b/packages/core-api/src/lib/globalObject.ts
index 87be58499d..ad70a61110 100644
--- a/packages/core-api/src/lib/globalObject.ts
+++ b/packages/core-api/src/lib/globalObject.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/lib/index.ts b/packages/core-api/src/lib/index.ts
index 10f213b50f..1327aab4c2 100644
--- a/packages/core-api/src/lib/index.ts
+++ b/packages/core-api/src/lib/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/lib/loginPopup.test.ts b/packages/core-api/src/lib/loginPopup.test.ts
index 98541c268e..1eb7c3f8b9 100644
--- a/packages/core-api/src/lib/loginPopup.test.ts
+++ b/packages/core-api/src/lib/loginPopup.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/lib/loginPopup.ts b/packages/core-api/src/lib/loginPopup.ts
index 716c4f9651..b6c14d60c9 100644
--- a/packages/core-api/src/lib/loginPopup.ts
+++ b/packages/core-api/src/lib/loginPopup.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/lib/subjects.test.ts b/packages/core-api/src/lib/subjects.test.ts
index 31ed26d97d..eab5757898 100644
--- a/packages/core-api/src/lib/subjects.test.ts
+++ b/packages/core-api/src/lib/subjects.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/lib/subjects.ts b/packages/core-api/src/lib/subjects.ts
index 5239e460af..4b60596bd9 100644
--- a/packages/core-api/src/lib/subjects.ts
+++ b/packages/core-api/src/lib/subjects.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/lib/versionedValues.test.ts b/packages/core-api/src/lib/versionedValues.test.ts
index 6ba7db4970..19f9c8f349 100644
--- a/packages/core-api/src/lib/versionedValues.test.ts
+++ b/packages/core-api/src/lib/versionedValues.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/lib/versionedValues.ts b/packages/core-api/src/lib/versionedValues.ts
index 88e4e90084..3d0a4a41ae 100644
--- a/packages/core-api/src/lib/versionedValues.ts
+++ b/packages/core-api/src/lib/versionedValues.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/plugin/Plugin.tsx b/packages/core-api/src/plugin/Plugin.tsx
index cc168707be..8ccdb267ba 100644
--- a/packages/core-api/src/plugin/Plugin.tsx
+++ b/packages/core-api/src/plugin/Plugin.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/plugin/collectors.test.tsx b/packages/core-api/src/plugin/collectors.test.tsx
index 5baf2539ab..8c0ba2bc9e 100644
--- a/packages/core-api/src/plugin/collectors.test.tsx
+++ b/packages/core-api/src/plugin/collectors.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/plugin/collectors.ts b/packages/core-api/src/plugin/collectors.ts
index bbcca88e98..7e021beb24 100644
--- a/packages/core-api/src/plugin/collectors.ts
+++ b/packages/core-api/src/plugin/collectors.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/plugin/index.ts b/packages/core-api/src/plugin/index.ts
index bbeeca4824..54903ecf17 100644
--- a/packages/core-api/src/plugin/index.ts
+++ b/packages/core-api/src/plugin/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/plugin/types.ts b/packages/core-api/src/plugin/types.ts
index 2ad02b243d..a00897da43 100644
--- a/packages/core-api/src/plugin/types.ts
+++ b/packages/core-api/src/plugin/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/private.ts b/packages/core-api/src/private.ts
index 65462d8d51..56a7546925 100644
--- a/packages/core-api/src/private.ts
+++ b/packages/core-api/src/private.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/public.ts b/packages/core-api/src/public.ts
index f91d97c31d..28b078357d 100644
--- a/packages/core-api/src/public.ts
+++ b/packages/core-api/src/public.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/routing/ExternalRouteRef.test.ts b/packages/core-api/src/routing/ExternalRouteRef.test.ts
index 785ad2732f..458f7d9426 100644
--- a/packages/core-api/src/routing/ExternalRouteRef.test.ts
+++ b/packages/core-api/src/routing/ExternalRouteRef.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/routing/ExternalRouteRef.ts b/packages/core-api/src/routing/ExternalRouteRef.ts
index af61ad8dfc..0bc5809449 100644
--- a/packages/core-api/src/routing/ExternalRouteRef.ts
+++ b/packages/core-api/src/routing/ExternalRouteRef.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/routing/FlatRoutes.test.tsx b/packages/core-api/src/routing/FlatRoutes.test.tsx
index a9b83d1016..20ee0db235 100644
--- a/packages/core-api/src/routing/FlatRoutes.test.tsx
+++ b/packages/core-api/src/routing/FlatRoutes.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/routing/FlatRoutes.tsx b/packages/core-api/src/routing/FlatRoutes.tsx
index 5f2cfc150d..9280e183be 100644
--- a/packages/core-api/src/routing/FlatRoutes.tsx
+++ b/packages/core-api/src/routing/FlatRoutes.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/routing/RouteRef.test.ts b/packages/core-api/src/routing/RouteRef.test.ts
index 279589a6c7..92d218eb5b 100644
--- a/packages/core-api/src/routing/RouteRef.test.ts
+++ b/packages/core-api/src/routing/RouteRef.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/routing/RouteRef.ts b/packages/core-api/src/routing/RouteRef.ts
index a6a8d60326..21f28eba86 100644
--- a/packages/core-api/src/routing/RouteRef.ts
+++ b/packages/core-api/src/routing/RouteRef.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/routing/RouteResolver.test.ts b/packages/core-api/src/routing/RouteResolver.test.ts
index b46c5fc42a..901c30dfc1 100644
--- a/packages/core-api/src/routing/RouteResolver.test.ts
+++ b/packages/core-api/src/routing/RouteResolver.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/routing/RouteResolver.ts b/packages/core-api/src/routing/RouteResolver.ts
index fb44b8c486..4d4096a026 100644
--- a/packages/core-api/src/routing/RouteResolver.ts
+++ b/packages/core-api/src/routing/RouteResolver.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/routing/SubRouteRef.test.ts b/packages/core-api/src/routing/SubRouteRef.test.ts
index 1c1a3c1b21..0a12b2a153 100644
--- a/packages/core-api/src/routing/SubRouteRef.test.ts
+++ b/packages/core-api/src/routing/SubRouteRef.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/routing/SubRouteRef.ts b/packages/core-api/src/routing/SubRouteRef.ts
index 61d3450e27..b64bce9d8a 100644
--- a/packages/core-api/src/routing/SubRouteRef.ts
+++ b/packages/core-api/src/routing/SubRouteRef.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/routing/collectors.test.tsx b/packages/core-api/src/routing/collectors.test.tsx
index 498d1dd9fc..21ef219555 100644
--- a/packages/core-api/src/routing/collectors.test.tsx
+++ b/packages/core-api/src/routing/collectors.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/routing/collectors.tsx b/packages/core-api/src/routing/collectors.tsx
index 9d651dbc0d..7db51e5014 100644
--- a/packages/core-api/src/routing/collectors.tsx
+++ b/packages/core-api/src/routing/collectors.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/routing/hooks.test.tsx b/packages/core-api/src/routing/hooks.test.tsx
index 8a9b70ed7d..3d723053b0 100644
--- a/packages/core-api/src/routing/hooks.test.tsx
+++ b/packages/core-api/src/routing/hooks.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/routing/hooks.tsx b/packages/core-api/src/routing/hooks.tsx
index 1867ac5c67..d498027efb 100644
--- a/packages/core-api/src/routing/hooks.tsx
+++ b/packages/core-api/src/routing/hooks.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/routing/index.ts b/packages/core-api/src/routing/index.ts
index 0c01e74f3f..835568c313 100644
--- a/packages/core-api/src/routing/index.ts
+++ b/packages/core-api/src/routing/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/routing/types.ts b/packages/core-api/src/routing/types.ts
index 0e5a786770..5ecb64c7fe 100644
--- a/packages/core-api/src/routing/types.ts
+++ b/packages/core-api/src/routing/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/routing/validation.ts b/packages/core-api/src/routing/validation.ts
index 2d32471a14..51078a0130 100644
--- a/packages/core-api/src/routing/validation.ts
+++ b/packages/core-api/src/routing/validation.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/setupTests.ts b/packages/core-api/src/setupTests.ts
index aea2220869..c1d649f2ad 100644
--- a/packages/core-api/src/setupTests.ts
+++ b/packages/core-api/src/setupTests.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-api/src/types.ts b/packages/core-api/src/types.ts
index ab0aa56a1b..fff4cb1515 100644
--- a/packages/core-api/src/types.ts
+++ b/packages/core-api/src/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/api-report.md b/packages/core-app-api/api-report.md
index b85c9392d7..5aa709121a 100644
--- a/packages/core-app-api/api-report.md
+++ b/packages/core-app-api/api-report.md
@@ -234,6 +234,18 @@ export type ErrorBoundaryFallbackProps = {
resetError: () => void;
};
+// @public (undocumented)
+export const FeatureFlagged: (props: FeatureFlaggedProps) => JSX.Element;
+
+// @public (undocumented)
+export type FeatureFlaggedProps = {
+ children: ReactNode;
+} & ({
+ with: string;
+} | {
+ without: string;
+});
+
// @public (undocumented)
export const FlatRoutes: (props: FlatRoutesProps) => JSX.Element | null;
diff --git a/packages/core-app-api/config.d.ts b/packages/core-app-api/config.d.ts
index 0e1d531226..d88c818d11 100644
--- a/packages/core-app-api/config.d.ts
+++ b/packages/core-app-api/config.d.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/AlertApi/AlertApiForwarder.ts b/packages/core-app-api/src/apis/implementations/AlertApi/AlertApiForwarder.ts
index 28cb5bc068..0ba275ea4d 100644
--- a/packages/core-app-api/src/apis/implementations/AlertApi/AlertApiForwarder.ts
+++ b/packages/core-app-api/src/apis/implementations/AlertApi/AlertApiForwarder.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/AlertApi/index.ts b/packages/core-app-api/src/apis/implementations/AlertApi/index.ts
index 12ab8bc60c..d572845809 100644
--- a/packages/core-app-api/src/apis/implementations/AlertApi/index.ts
+++ b/packages/core-app-api/src/apis/implementations/AlertApi/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/AppThemeApi/AppThemeSelector.test.ts b/packages/core-app-api/src/apis/implementations/AppThemeApi/AppThemeSelector.test.ts
index 8d36e6b10e..cab4ec8a88 100644
--- a/packages/core-app-api/src/apis/implementations/AppThemeApi/AppThemeSelector.test.ts
+++ b/packages/core-app-api/src/apis/implementations/AppThemeApi/AppThemeSelector.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/AppThemeApi/AppThemeSelector.ts b/packages/core-app-api/src/apis/implementations/AppThemeApi/AppThemeSelector.ts
index 3bd4d764ea..4dceed4749 100644
--- a/packages/core-app-api/src/apis/implementations/AppThemeApi/AppThemeSelector.ts
+++ b/packages/core-app-api/src/apis/implementations/AppThemeApi/AppThemeSelector.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/AppThemeApi/index.ts b/packages/core-app-api/src/apis/implementations/AppThemeApi/index.ts
index cb42c0f875..b0a314303b 100644
--- a/packages/core-app-api/src/apis/implementations/AppThemeApi/index.ts
+++ b/packages/core-app-api/src/apis/implementations/AppThemeApi/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/ConfigApi/index.ts b/packages/core-app-api/src/apis/implementations/ConfigApi/index.ts
index 7c7f88a3e5..708c1d4573 100644
--- a/packages/core-app-api/src/apis/implementations/ConfigApi/index.ts
+++ b/packages/core-app-api/src/apis/implementations/ConfigApi/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/DiscoveryApi/UrlPatternDiscovery.test.ts b/packages/core-app-api/src/apis/implementations/DiscoveryApi/UrlPatternDiscovery.test.ts
index 9597443b98..9cd666e8a3 100644
--- a/packages/core-app-api/src/apis/implementations/DiscoveryApi/UrlPatternDiscovery.test.ts
+++ b/packages/core-app-api/src/apis/implementations/DiscoveryApi/UrlPatternDiscovery.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/DiscoveryApi/UrlPatternDiscovery.ts b/packages/core-app-api/src/apis/implementations/DiscoveryApi/UrlPatternDiscovery.ts
index a9decd9ef9..81cc5a26b1 100644
--- a/packages/core-app-api/src/apis/implementations/DiscoveryApi/UrlPatternDiscovery.ts
+++ b/packages/core-app-api/src/apis/implementations/DiscoveryApi/UrlPatternDiscovery.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/DiscoveryApi/index.ts b/packages/core-app-api/src/apis/implementations/DiscoveryApi/index.ts
index 24468fdcb6..184346401f 100644
--- a/packages/core-app-api/src/apis/implementations/DiscoveryApi/index.ts
+++ b/packages/core-app-api/src/apis/implementations/DiscoveryApi/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/ErrorApi/ErrorAlerter.ts b/packages/core-app-api/src/apis/implementations/ErrorApi/ErrorAlerter.ts
index 73d5042c11..57f1ffab66 100644
--- a/packages/core-app-api/src/apis/implementations/ErrorApi/ErrorAlerter.ts
+++ b/packages/core-app-api/src/apis/implementations/ErrorApi/ErrorAlerter.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/ErrorApi/ErrorApiForwarder.ts b/packages/core-app-api/src/apis/implementations/ErrorApi/ErrorApiForwarder.ts
index 875d07c0a3..9c9a6f20f1 100644
--- a/packages/core-app-api/src/apis/implementations/ErrorApi/ErrorApiForwarder.ts
+++ b/packages/core-app-api/src/apis/implementations/ErrorApi/ErrorApiForwarder.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/ErrorApi/index.ts b/packages/core-app-api/src/apis/implementations/ErrorApi/index.ts
index 757dfd0d8f..49e12b4646 100644
--- a/packages/core-app-api/src/apis/implementations/ErrorApi/index.ts
+++ b/packages/core-app-api/src/apis/implementations/ErrorApi/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/FeatureFlagsApi/LocalStorageFeatureFlags.test.tsx b/packages/core-app-api/src/apis/implementations/FeatureFlagsApi/LocalStorageFeatureFlags.test.tsx
index a100f01a52..afc25b2e8c 100644
--- a/packages/core-app-api/src/apis/implementations/FeatureFlagsApi/LocalStorageFeatureFlags.test.tsx
+++ b/packages/core-app-api/src/apis/implementations/FeatureFlagsApi/LocalStorageFeatureFlags.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/FeatureFlagsApi/LocalStorageFeatureFlags.tsx b/packages/core-app-api/src/apis/implementations/FeatureFlagsApi/LocalStorageFeatureFlags.tsx
index 800ae98f24..3ee62b3d6e 100644
--- a/packages/core-app-api/src/apis/implementations/FeatureFlagsApi/LocalStorageFeatureFlags.tsx
+++ b/packages/core-app-api/src/apis/implementations/FeatureFlagsApi/LocalStorageFeatureFlags.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/FeatureFlagsApi/index.ts b/packages/core-app-api/src/apis/implementations/FeatureFlagsApi/index.ts
index 33990584f3..fc806c9ae1 100644
--- a/packages/core-app-api/src/apis/implementations/FeatureFlagsApi/index.ts
+++ b/packages/core-app-api/src/apis/implementations/FeatureFlagsApi/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/OAuthRequestApi/MockOAuthApi.test.ts b/packages/core-app-api/src/apis/implementations/OAuthRequestApi/MockOAuthApi.test.ts
index 32170acc6f..d0f137f0be 100644
--- a/packages/core-app-api/src/apis/implementations/OAuthRequestApi/MockOAuthApi.test.ts
+++ b/packages/core-app-api/src/apis/implementations/OAuthRequestApi/MockOAuthApi.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/OAuthRequestApi/MockOAuthApi.ts b/packages/core-app-api/src/apis/implementations/OAuthRequestApi/MockOAuthApi.ts
index 46d620c329..4a0a07ef34 100644
--- a/packages/core-app-api/src/apis/implementations/OAuthRequestApi/MockOAuthApi.ts
+++ b/packages/core-app-api/src/apis/implementations/OAuthRequestApi/MockOAuthApi.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/OAuthRequestApi/OAuthPendingRequests.test.ts b/packages/core-app-api/src/apis/implementations/OAuthRequestApi/OAuthPendingRequests.test.ts
index 280321daa0..20b0cbba67 100644
--- a/packages/core-app-api/src/apis/implementations/OAuthRequestApi/OAuthPendingRequests.test.ts
+++ b/packages/core-app-api/src/apis/implementations/OAuthRequestApi/OAuthPendingRequests.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/OAuthRequestApi/OAuthPendingRequests.ts b/packages/core-app-api/src/apis/implementations/OAuthRequestApi/OAuthPendingRequests.ts
index 370ba9a3a1..d91cb0ebb0 100644
--- a/packages/core-app-api/src/apis/implementations/OAuthRequestApi/OAuthPendingRequests.ts
+++ b/packages/core-app-api/src/apis/implementations/OAuthRequestApi/OAuthPendingRequests.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/OAuthRequestApi/OAuthRequestManager.test.ts b/packages/core-app-api/src/apis/implementations/OAuthRequestApi/OAuthRequestManager.test.ts
index 46a5362f35..d8faf90229 100644
--- a/packages/core-app-api/src/apis/implementations/OAuthRequestApi/OAuthRequestManager.test.ts
+++ b/packages/core-app-api/src/apis/implementations/OAuthRequestApi/OAuthRequestManager.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/OAuthRequestApi/OAuthRequestManager.ts b/packages/core-app-api/src/apis/implementations/OAuthRequestApi/OAuthRequestManager.ts
index e50c18d271..6c00cd85cd 100644
--- a/packages/core-app-api/src/apis/implementations/OAuthRequestApi/OAuthRequestManager.ts
+++ b/packages/core-app-api/src/apis/implementations/OAuthRequestApi/OAuthRequestManager.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/OAuthRequestApi/index.ts b/packages/core-app-api/src/apis/implementations/OAuthRequestApi/index.ts
index 0fe9bfae0f..72e42872fd 100644
--- a/packages/core-app-api/src/apis/implementations/OAuthRequestApi/index.ts
+++ b/packages/core-app-api/src/apis/implementations/OAuthRequestApi/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/StorageApi/WebStorage.test.ts b/packages/core-app-api/src/apis/implementations/StorageApi/WebStorage.test.ts
index da5b2509db..6ae43b6100 100644
--- a/packages/core-app-api/src/apis/implementations/StorageApi/WebStorage.test.ts
+++ b/packages/core-app-api/src/apis/implementations/StorageApi/WebStorage.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/StorageApi/WebStorage.ts b/packages/core-app-api/src/apis/implementations/StorageApi/WebStorage.ts
index 3f49b644f6..d1f712e72a 100644
--- a/packages/core-app-api/src/apis/implementations/StorageApi/WebStorage.ts
+++ b/packages/core-app-api/src/apis/implementations/StorageApi/WebStorage.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/StorageApi/index.ts b/packages/core-app-api/src/apis/implementations/StorageApi/index.ts
index 33b0094551..2f941381fd 100644
--- a/packages/core-app-api/src/apis/implementations/StorageApi/index.ts
+++ b/packages/core-app-api/src/apis/implementations/StorageApi/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/auth/auth0/Auth0Auth.ts b/packages/core-app-api/src/apis/implementations/auth/auth0/Auth0Auth.ts
index 391a709935..5f074252bf 100644
--- a/packages/core-app-api/src/apis/implementations/auth/auth0/Auth0Auth.ts
+++ b/packages/core-app-api/src/apis/implementations/auth/auth0/Auth0Auth.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/auth/auth0/index.ts b/packages/core-app-api/src/apis/implementations/auth/auth0/index.ts
index dda27d0fa3..9daed7d13e 100644
--- a/packages/core-app-api/src/apis/implementations/auth/auth0/index.ts
+++ b/packages/core-app-api/src/apis/implementations/auth/auth0/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/auth/github/GithubAuth.test.ts b/packages/core-app-api/src/apis/implementations/auth/github/GithubAuth.test.ts
index 3ff29cc6ef..04bfff028d 100644
--- a/packages/core-app-api/src/apis/implementations/auth/github/GithubAuth.test.ts
+++ b/packages/core-app-api/src/apis/implementations/auth/github/GithubAuth.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/auth/github/GithubAuth.ts b/packages/core-app-api/src/apis/implementations/auth/github/GithubAuth.ts
index 2ab0e5390f..21ebc5699a 100644
--- a/packages/core-app-api/src/apis/implementations/auth/github/GithubAuth.ts
+++ b/packages/core-app-api/src/apis/implementations/auth/github/GithubAuth.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/auth/github/index.ts b/packages/core-app-api/src/apis/implementations/auth/github/index.ts
index 9e1722f4a4..ee4334f6fc 100644
--- a/packages/core-app-api/src/apis/implementations/auth/github/index.ts
+++ b/packages/core-app-api/src/apis/implementations/auth/github/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/auth/github/types.ts b/packages/core-app-api/src/apis/implementations/auth/github/types.ts
index 95beef3668..88df25b49d 100644
--- a/packages/core-app-api/src/apis/implementations/auth/github/types.ts
+++ b/packages/core-app-api/src/apis/implementations/auth/github/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/auth/gitlab/GitlabAuth.test.ts b/packages/core-app-api/src/apis/implementations/auth/gitlab/GitlabAuth.test.ts
index 6a592c7fbe..3346af9b7c 100644
--- a/packages/core-app-api/src/apis/implementations/auth/gitlab/GitlabAuth.test.ts
+++ b/packages/core-app-api/src/apis/implementations/auth/gitlab/GitlabAuth.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/auth/gitlab/GitlabAuth.ts b/packages/core-app-api/src/apis/implementations/auth/gitlab/GitlabAuth.ts
index fbb9509e7d..642600558c 100644
--- a/packages/core-app-api/src/apis/implementations/auth/gitlab/GitlabAuth.ts
+++ b/packages/core-app-api/src/apis/implementations/auth/gitlab/GitlabAuth.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/auth/gitlab/index.ts b/packages/core-app-api/src/apis/implementations/auth/gitlab/index.ts
index 42d7210551..935a11dd54 100644
--- a/packages/core-app-api/src/apis/implementations/auth/gitlab/index.ts
+++ b/packages/core-app-api/src/apis/implementations/auth/gitlab/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/auth/google/GoogleAuth.test.ts b/packages/core-app-api/src/apis/implementations/auth/google/GoogleAuth.test.ts
index 9e8569c5cf..f8a1c3a1f5 100644
--- a/packages/core-app-api/src/apis/implementations/auth/google/GoogleAuth.test.ts
+++ b/packages/core-app-api/src/apis/implementations/auth/google/GoogleAuth.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/auth/google/GoogleAuth.ts b/packages/core-app-api/src/apis/implementations/auth/google/GoogleAuth.ts
index 1074a192ef..39e4a896e4 100644
--- a/packages/core-app-api/src/apis/implementations/auth/google/GoogleAuth.ts
+++ b/packages/core-app-api/src/apis/implementations/auth/google/GoogleAuth.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/auth/google/index.ts b/packages/core-app-api/src/apis/implementations/auth/google/index.ts
index 2521d46046..96a8699eab 100644
--- a/packages/core-app-api/src/apis/implementations/auth/google/index.ts
+++ b/packages/core-app-api/src/apis/implementations/auth/google/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/auth/index.ts b/packages/core-app-api/src/apis/implementations/auth/index.ts
index 7ef78d19cf..9889a33878 100644
--- a/packages/core-app-api/src/apis/implementations/auth/index.ts
+++ b/packages/core-app-api/src/apis/implementations/auth/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/auth/microsoft/MicrosoftAuth.ts b/packages/core-app-api/src/apis/implementations/auth/microsoft/MicrosoftAuth.ts
index 490e74b532..b0f7f42a10 100644
--- a/packages/core-app-api/src/apis/implementations/auth/microsoft/MicrosoftAuth.ts
+++ b/packages/core-app-api/src/apis/implementations/auth/microsoft/MicrosoftAuth.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/auth/microsoft/index.ts b/packages/core-app-api/src/apis/implementations/auth/microsoft/index.ts
index 77328d8557..44bca3d37c 100644
--- a/packages/core-app-api/src/apis/implementations/auth/microsoft/index.ts
+++ b/packages/core-app-api/src/apis/implementations/auth/microsoft/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/auth/oauth2/OAuth2.test.ts b/packages/core-app-api/src/apis/implementations/auth/oauth2/OAuth2.test.ts
index 93db2c732d..4f030d1c64 100644
--- a/packages/core-app-api/src/apis/implementations/auth/oauth2/OAuth2.test.ts
+++ b/packages/core-app-api/src/apis/implementations/auth/oauth2/OAuth2.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/auth/oauth2/OAuth2.ts b/packages/core-app-api/src/apis/implementations/auth/oauth2/OAuth2.ts
index c6c251a4f5..8c27e0aa63 100644
--- a/packages/core-app-api/src/apis/implementations/auth/oauth2/OAuth2.ts
+++ b/packages/core-app-api/src/apis/implementations/auth/oauth2/OAuth2.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/auth/oauth2/index.ts b/packages/core-app-api/src/apis/implementations/auth/oauth2/index.ts
index 52bcb1df2c..793be515b7 100644
--- a/packages/core-app-api/src/apis/implementations/auth/oauth2/index.ts
+++ b/packages/core-app-api/src/apis/implementations/auth/oauth2/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/auth/oauth2/types.ts b/packages/core-app-api/src/apis/implementations/auth/oauth2/types.ts
index ade0f1a6c6..be0fbf38a2 100644
--- a/packages/core-app-api/src/apis/implementations/auth/oauth2/types.ts
+++ b/packages/core-app-api/src/apis/implementations/auth/oauth2/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/auth/okta/OktaAuth.test.ts b/packages/core-app-api/src/apis/implementations/auth/okta/OktaAuth.test.ts
index d6b1a07d9d..6489b326ff 100644
--- a/packages/core-app-api/src/apis/implementations/auth/okta/OktaAuth.test.ts
+++ b/packages/core-app-api/src/apis/implementations/auth/okta/OktaAuth.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/auth/okta/OktaAuth.ts b/packages/core-app-api/src/apis/implementations/auth/okta/OktaAuth.ts
index a86e3f272d..5ef9bf04a0 100644
--- a/packages/core-app-api/src/apis/implementations/auth/okta/OktaAuth.ts
+++ b/packages/core-app-api/src/apis/implementations/auth/okta/OktaAuth.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/auth/okta/index.ts b/packages/core-app-api/src/apis/implementations/auth/okta/index.ts
index 4cc774b26b..c20ce4e16b 100644
--- a/packages/core-app-api/src/apis/implementations/auth/okta/index.ts
+++ b/packages/core-app-api/src/apis/implementations/auth/okta/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/auth/onelogin/OneLoginAuth.ts b/packages/core-app-api/src/apis/implementations/auth/onelogin/OneLoginAuth.ts
index 2e8c7ac2e8..bb0aebae94 100644
--- a/packages/core-app-api/src/apis/implementations/auth/onelogin/OneLoginAuth.ts
+++ b/packages/core-app-api/src/apis/implementations/auth/onelogin/OneLoginAuth.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/auth/onelogin/index.ts b/packages/core-app-api/src/apis/implementations/auth/onelogin/index.ts
index 1d163207db..e1826f17dd 100644
--- a/packages/core-app-api/src/apis/implementations/auth/onelogin/index.ts
+++ b/packages/core-app-api/src/apis/implementations/auth/onelogin/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/auth/saml/SamlAuth.ts b/packages/core-app-api/src/apis/implementations/auth/saml/SamlAuth.ts
index 7f747d6977..ae4f80c9b1 100644
--- a/packages/core-app-api/src/apis/implementations/auth/saml/SamlAuth.ts
+++ b/packages/core-app-api/src/apis/implementations/auth/saml/SamlAuth.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/auth/saml/index.ts b/packages/core-app-api/src/apis/implementations/auth/saml/index.ts
index c2436ab435..930e6cb115 100644
--- a/packages/core-app-api/src/apis/implementations/auth/saml/index.ts
+++ b/packages/core-app-api/src/apis/implementations/auth/saml/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/auth/saml/types.ts b/packages/core-app-api/src/apis/implementations/auth/saml/types.ts
index b62826b2ea..70cbf41ee4 100644
--- a/packages/core-app-api/src/apis/implementations/auth/saml/types.ts
+++ b/packages/core-app-api/src/apis/implementations/auth/saml/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/auth/types.ts b/packages/core-app-api/src/apis/implementations/auth/types.ts
index a752e68eba..89343e9e06 100644
--- a/packages/core-app-api/src/apis/implementations/auth/types.ts
+++ b/packages/core-app-api/src/apis/implementations/auth/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/implementations/index.ts b/packages/core-app-api/src/apis/implementations/index.ts
index d0df2760ab..31f01f2bff 100644
--- a/packages/core-app-api/src/apis/implementations/index.ts
+++ b/packages/core-app-api/src/apis/implementations/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/index.ts b/packages/core-app-api/src/apis/index.ts
index 5652dadf79..088eba3c4c 100644
--- a/packages/core-app-api/src/apis/index.ts
+++ b/packages/core-app-api/src/apis/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/system/ApiAggregator.test.ts b/packages/core-app-api/src/apis/system/ApiAggregator.test.ts
index c38aa08fad..c2754878f2 100644
--- a/packages/core-app-api/src/apis/system/ApiAggregator.test.ts
+++ b/packages/core-app-api/src/apis/system/ApiAggregator.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/system/ApiAggregator.ts b/packages/core-app-api/src/apis/system/ApiAggregator.ts
index 1299e38da0..a6b4471f8c 100644
--- a/packages/core-app-api/src/apis/system/ApiAggregator.ts
+++ b/packages/core-app-api/src/apis/system/ApiAggregator.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/system/ApiFactoryRegistry.test.ts b/packages/core-app-api/src/apis/system/ApiFactoryRegistry.test.ts
index 160019604e..e859e8a491 100644
--- a/packages/core-app-api/src/apis/system/ApiFactoryRegistry.test.ts
+++ b/packages/core-app-api/src/apis/system/ApiFactoryRegistry.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/system/ApiFactoryRegistry.ts b/packages/core-app-api/src/apis/system/ApiFactoryRegistry.ts
index fe17f5a600..28ed9f85a1 100644
--- a/packages/core-app-api/src/apis/system/ApiFactoryRegistry.ts
+++ b/packages/core-app-api/src/apis/system/ApiFactoryRegistry.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/system/ApiProvider.test.tsx b/packages/core-app-api/src/apis/system/ApiProvider.test.tsx
index 7d38ec3cf9..5afb39a2ec 100644
--- a/packages/core-app-api/src/apis/system/ApiProvider.test.tsx
+++ b/packages/core-app-api/src/apis/system/ApiProvider.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/system/ApiProvider.tsx b/packages/core-app-api/src/apis/system/ApiProvider.tsx
index 93d20b12fc..ce6c388087 100644
--- a/packages/core-app-api/src/apis/system/ApiProvider.tsx
+++ b/packages/core-app-api/src/apis/system/ApiProvider.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/system/ApiRegistry.test.ts b/packages/core-app-api/src/apis/system/ApiRegistry.test.ts
index 0931e2c103..c0be9f8d02 100644
--- a/packages/core-app-api/src/apis/system/ApiRegistry.test.ts
+++ b/packages/core-app-api/src/apis/system/ApiRegistry.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/system/ApiRegistry.ts b/packages/core-app-api/src/apis/system/ApiRegistry.ts
index 4571d52cce..7669810a1e 100644
--- a/packages/core-app-api/src/apis/system/ApiRegistry.ts
+++ b/packages/core-app-api/src/apis/system/ApiRegistry.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/system/ApiResolver.test.ts b/packages/core-app-api/src/apis/system/ApiResolver.test.ts
index af8dbc28c6..01491684f4 100644
--- a/packages/core-app-api/src/apis/system/ApiResolver.test.ts
+++ b/packages/core-app-api/src/apis/system/ApiResolver.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/system/ApiResolver.ts b/packages/core-app-api/src/apis/system/ApiResolver.ts
index 1fbce4871a..dd29ff5010 100644
--- a/packages/core-app-api/src/apis/system/ApiResolver.ts
+++ b/packages/core-app-api/src/apis/system/ApiResolver.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/system/index.ts b/packages/core-app-api/src/apis/system/index.ts
index dd7c081f62..23e1a9a4b8 100644
--- a/packages/core-app-api/src/apis/system/index.ts
+++ b/packages/core-app-api/src/apis/system/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/apis/system/types.ts b/packages/core-app-api/src/apis/system/types.ts
index f1ba82c21e..bb0b9d42ea 100644
--- a/packages/core-app-api/src/apis/system/types.ts
+++ b/packages/core-app-api/src/apis/system/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/app/App.test.tsx b/packages/core-app-api/src/app/App.test.tsx
index 0539c2146c..14ec71cb36 100644
--- a/packages/core-app-api/src/app/App.test.tsx
+++ b/packages/core-app-api/src/app/App.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/app/App.tsx b/packages/core-app-api/src/app/App.tsx
index a5ba5c4bca..a95554709a 100644
--- a/packages/core-app-api/src/app/App.tsx
+++ b/packages/core-app-api/src/app/App.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -57,6 +57,7 @@ import {
} from '../extensions/traversal';
import { pluginCollector } from '../plugins/collectors';
import {
+ featureFlagCollector,
routeObjectCollector,
routeParentCollector,
routePathCollector,
@@ -215,7 +216,12 @@ export class PrivateAppImpl implements BackstageApp {
[],
);
- const { routePaths, routeParents, routeObjects } = useMemo(() => {
+ const {
+ routePaths,
+ routeParents,
+ routeObjects,
+ featureFlags,
+ } = useMemo(() => {
const result = traverseElementTree({
root: children,
discoverers: [childDiscoverer, routeElementDiscoverer],
@@ -224,6 +230,7 @@ export class PrivateAppImpl implements BackstageApp {
routeParents: routeParentCollector,
routeObjects: routeObjectCollector,
collectedPlugins: pluginCollector,
+ featureFlags: featureFlagCollector,
},
});
@@ -238,7 +245,6 @@ export class PrivateAppImpl implements BackstageApp {
// Initialize APIs once all plugins are available
this.getApiHolder();
-
return result;
}, [children]);
@@ -273,8 +279,14 @@ export class PrivateAppImpl implements BackstageApp {
}
}
}
+
+ // Go through the featureFlags returned from the traversal and
+ // register those now the configApi has been loaded
+ for (const name of featureFlags) {
+ featureFlagsApi.registerFlag({ name, pluginId: '' });
+ }
}
- }, [hasConfigApi, loadedConfig]);
+ }, [hasConfigApi, loadedConfig, featureFlags]);
if ('node' in loadedConfig) {
// Loading or error
diff --git a/packages/core-app-api/src/app/AppContext.test.tsx b/packages/core-app-api/src/app/AppContext.test.tsx
index 224499b148..d87bf7d228 100644
--- a/packages/core-app-api/src/app/AppContext.test.tsx
+++ b/packages/core-app-api/src/app/AppContext.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/app/AppContext.tsx b/packages/core-app-api/src/app/AppContext.tsx
index 9cdd4cdc13..c583478ec2 100644
--- a/packages/core-app-api/src/app/AppContext.tsx
+++ b/packages/core-app-api/src/app/AppContext.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/app/AppIdentity.ts b/packages/core-app-api/src/app/AppIdentity.ts
index b2b4a0bcdc..64e698102f 100644
--- a/packages/core-app-api/src/app/AppIdentity.ts
+++ b/packages/core-app-api/src/app/AppIdentity.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/app/AppThemeProvider.tsx b/packages/core-app-api/src/app/AppThemeProvider.tsx
index d297b05ced..4e283a1d00 100644
--- a/packages/core-app-api/src/app/AppThemeProvider.tsx
+++ b/packages/core-app-api/src/app/AppThemeProvider.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/app/createApp.test.tsx b/packages/core-app-api/src/app/createApp.test.tsx
index a800c11ea6..8c16dfe45e 100644
--- a/packages/core-app-api/src/app/createApp.test.tsx
+++ b/packages/core-app-api/src/app/createApp.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/app/createApp.tsx b/packages/core-app-api/src/app/createApp.tsx
index 1670978791..b7c49939e2 100644
--- a/packages/core-app-api/src/app/createApp.tsx
+++ b/packages/core-app-api/src/app/createApp.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/app/defaultApis.ts b/packages/core-app-api/src/app/defaultApis.ts
index 5d84e27f89..815418ac6c 100644
--- a/packages/core-app-api/src/app/defaultApis.ts
+++ b/packages/core-app-api/src/app/defaultApis.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/app/icons.tsx b/packages/core-app-api/src/app/icons.tsx
index 9ec278ba7f..bf45155096 100644
--- a/packages/core-app-api/src/app/icons.tsx
+++ b/packages/core-app-api/src/app/icons.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/app/index.ts b/packages/core-app-api/src/app/index.ts
index a7cdf22a43..4bf27851b2 100644
--- a/packages/core-app-api/src/app/index.ts
+++ b/packages/core-app-api/src/app/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/app/types.ts b/packages/core-app-api/src/app/types.ts
index cf5811beae..836f1b7fb0 100644
--- a/packages/core-app-api/src/app/types.ts
+++ b/packages/core-app-api/src/app/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/extensions/componentData.test.tsx b/packages/core-app-api/src/extensions/componentData.test.tsx
index 417fe07414..808ab08cf1 100644
--- a/packages/core-app-api/src/extensions/componentData.test.tsx
+++ b/packages/core-app-api/src/extensions/componentData.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/extensions/componentData.tsx b/packages/core-app-api/src/extensions/componentData.tsx
index fc8594039c..d4975d9eef 100644
--- a/packages/core-app-api/src/extensions/componentData.tsx
+++ b/packages/core-app-api/src/extensions/componentData.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/extensions/extensions.tsx b/packages/core-app-api/src/extensions/extensions.tsx
index a9121c4d15..063f34c659 100644
--- a/packages/core-app-api/src/extensions/extensions.tsx
+++ b/packages/core-app-api/src/extensions/extensions.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/extensions/index.ts b/packages/core-app-api/src/extensions/index.ts
index 26a0c597b1..914d76aebf 100644
--- a/packages/core-app-api/src/extensions/index.ts
+++ b/packages/core-app-api/src/extensions/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/extensions/traversal.test.tsx b/packages/core-app-api/src/extensions/traversal.test.tsx
index 38571fdcc7..0acc51fb27 100644
--- a/packages/core-app-api/src/extensions/traversal.test.tsx
+++ b/packages/core-app-api/src/extensions/traversal.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/extensions/traversal.ts b/packages/core-app-api/src/extensions/traversal.ts
index 4431bbd24c..79f44523b3 100644
--- a/packages/core-app-api/src/extensions/traversal.ts
+++ b/packages/core-app-api/src/extensions/traversal.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/index.test.ts b/packages/core-app-api/src/index.test.ts
index bec176fda8..55ed5c7a38 100644
--- a/packages/core-app-api/src/index.test.ts
+++ b/packages/core-app-api/src/index.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -37,6 +37,7 @@ describe('index', () => {
ConfigReader: expect.any(Function),
ErrorAlerter: expect.any(Function),
ErrorApiForwarder: expect.any(Function),
+ FeatureFlagged: expect.any(Function),
GithubAuth: expect.any(Function),
GitlabAuth: expect.any(Function),
GoogleAuth: expect.any(Function),
diff --git a/packages/core-app-api/src/index.ts b/packages/core-app-api/src/index.ts
index 816e788a2b..f522bf3a0c 100644
--- a/packages/core-app-api/src/index.ts
+++ b/packages/core-app-api/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/lib/AuthConnector/DefaultAuthConnector.test.ts b/packages/core-app-api/src/lib/AuthConnector/DefaultAuthConnector.test.ts
index 391b86952d..524a0c5709 100644
--- a/packages/core-app-api/src/lib/AuthConnector/DefaultAuthConnector.test.ts
+++ b/packages/core-app-api/src/lib/AuthConnector/DefaultAuthConnector.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/lib/AuthConnector/DefaultAuthConnector.ts b/packages/core-app-api/src/lib/AuthConnector/DefaultAuthConnector.ts
index 1498657281..81da04010c 100644
--- a/packages/core-app-api/src/lib/AuthConnector/DefaultAuthConnector.ts
+++ b/packages/core-app-api/src/lib/AuthConnector/DefaultAuthConnector.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/lib/AuthConnector/DirectAuthConnector.ts b/packages/core-app-api/src/lib/AuthConnector/DirectAuthConnector.ts
index e5b3ca1219..61fdd825a2 100644
--- a/packages/core-app-api/src/lib/AuthConnector/DirectAuthConnector.ts
+++ b/packages/core-app-api/src/lib/AuthConnector/DirectAuthConnector.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/lib/AuthConnector/MockAuthConnector.test.ts b/packages/core-app-api/src/lib/AuthConnector/MockAuthConnector.test.ts
index cd7986ffd0..0758c0ba29 100644
--- a/packages/core-app-api/src/lib/AuthConnector/MockAuthConnector.test.ts
+++ b/packages/core-app-api/src/lib/AuthConnector/MockAuthConnector.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/lib/AuthConnector/MockAuthConnector.ts b/packages/core-app-api/src/lib/AuthConnector/MockAuthConnector.ts
index 9134fd0773..db978e7018 100644
--- a/packages/core-app-api/src/lib/AuthConnector/MockAuthConnector.ts
+++ b/packages/core-app-api/src/lib/AuthConnector/MockAuthConnector.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/lib/AuthConnector/index.ts b/packages/core-app-api/src/lib/AuthConnector/index.ts
index 388619e2c1..047583f3ac 100644
--- a/packages/core-app-api/src/lib/AuthConnector/index.ts
+++ b/packages/core-app-api/src/lib/AuthConnector/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/lib/AuthConnector/types.ts b/packages/core-app-api/src/lib/AuthConnector/types.ts
index 46175a265f..464a2ed627 100644
--- a/packages/core-app-api/src/lib/AuthConnector/types.ts
+++ b/packages/core-app-api/src/lib/AuthConnector/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/lib/AuthSessionManager/AuthSessionStore.test.ts b/packages/core-app-api/src/lib/AuthSessionManager/AuthSessionStore.test.ts
index 5c960f7876..4ceadd51ba 100644
--- a/packages/core-app-api/src/lib/AuthSessionManager/AuthSessionStore.test.ts
+++ b/packages/core-app-api/src/lib/AuthSessionManager/AuthSessionStore.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/lib/AuthSessionManager/AuthSessionStore.ts b/packages/core-app-api/src/lib/AuthSessionManager/AuthSessionStore.ts
index 224036d283..057a70e58d 100644
--- a/packages/core-app-api/src/lib/AuthSessionManager/AuthSessionStore.ts
+++ b/packages/core-app-api/src/lib/AuthSessionManager/AuthSessionStore.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/lib/AuthSessionManager/RefreshingAuthSessionManager.test.ts b/packages/core-app-api/src/lib/AuthSessionManager/RefreshingAuthSessionManager.test.ts
index ce273847cd..41347d0106 100644
--- a/packages/core-app-api/src/lib/AuthSessionManager/RefreshingAuthSessionManager.test.ts
+++ b/packages/core-app-api/src/lib/AuthSessionManager/RefreshingAuthSessionManager.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/lib/AuthSessionManager/RefreshingAuthSessionManager.ts b/packages/core-app-api/src/lib/AuthSessionManager/RefreshingAuthSessionManager.ts
index a098b384f9..d31f5e29bf 100644
--- a/packages/core-app-api/src/lib/AuthSessionManager/RefreshingAuthSessionManager.ts
+++ b/packages/core-app-api/src/lib/AuthSessionManager/RefreshingAuthSessionManager.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/lib/AuthSessionManager/SessionStateTracker.ts b/packages/core-app-api/src/lib/AuthSessionManager/SessionStateTracker.ts
index 72ca789cc9..b70b4bf4ca 100644
--- a/packages/core-app-api/src/lib/AuthSessionManager/SessionStateTracker.ts
+++ b/packages/core-app-api/src/lib/AuthSessionManager/SessionStateTracker.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/lib/AuthSessionManager/StaticAuthSessionManager.test.ts b/packages/core-app-api/src/lib/AuthSessionManager/StaticAuthSessionManager.test.ts
index 6280750875..26f489a1b4 100644
--- a/packages/core-app-api/src/lib/AuthSessionManager/StaticAuthSessionManager.test.ts
+++ b/packages/core-app-api/src/lib/AuthSessionManager/StaticAuthSessionManager.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/lib/AuthSessionManager/StaticAuthSessionManager.ts b/packages/core-app-api/src/lib/AuthSessionManager/StaticAuthSessionManager.ts
index e4f144b0a9..b7940d88c4 100644
--- a/packages/core-app-api/src/lib/AuthSessionManager/StaticAuthSessionManager.ts
+++ b/packages/core-app-api/src/lib/AuthSessionManager/StaticAuthSessionManager.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/lib/AuthSessionManager/common.ts b/packages/core-app-api/src/lib/AuthSessionManager/common.ts
index ff2897535d..002b6c616b 100644
--- a/packages/core-app-api/src/lib/AuthSessionManager/common.ts
+++ b/packages/core-app-api/src/lib/AuthSessionManager/common.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/lib/AuthSessionManager/index.ts b/packages/core-app-api/src/lib/AuthSessionManager/index.ts
index 5f4dde8662..85ef2013e9 100644
--- a/packages/core-app-api/src/lib/AuthSessionManager/index.ts
+++ b/packages/core-app-api/src/lib/AuthSessionManager/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/lib/AuthSessionManager/types.ts b/packages/core-app-api/src/lib/AuthSessionManager/types.ts
index 0bed895fba..43655b8395 100644
--- a/packages/core-app-api/src/lib/AuthSessionManager/types.ts
+++ b/packages/core-app-api/src/lib/AuthSessionManager/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/lib/globalObject.test.ts b/packages/core-app-api/src/lib/globalObject.test.ts
index e72f027b46..a658b253a6 100644
--- a/packages/core-app-api/src/lib/globalObject.test.ts
+++ b/packages/core-app-api/src/lib/globalObject.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/lib/globalObject.ts b/packages/core-app-api/src/lib/globalObject.ts
index 87be58499d..ad70a61110 100644
--- a/packages/core-app-api/src/lib/globalObject.ts
+++ b/packages/core-app-api/src/lib/globalObject.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/lib/index.ts b/packages/core-app-api/src/lib/index.ts
index 10f213b50f..1327aab4c2 100644
--- a/packages/core-app-api/src/lib/index.ts
+++ b/packages/core-app-api/src/lib/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/lib/loginPopup.test.ts b/packages/core-app-api/src/lib/loginPopup.test.ts
index 98541c268e..1eb7c3f8b9 100644
--- a/packages/core-app-api/src/lib/loginPopup.test.ts
+++ b/packages/core-app-api/src/lib/loginPopup.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/lib/loginPopup.ts b/packages/core-app-api/src/lib/loginPopup.ts
index 716c4f9651..b6c14d60c9 100644
--- a/packages/core-app-api/src/lib/loginPopup.ts
+++ b/packages/core-app-api/src/lib/loginPopup.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/lib/subjects.test.ts b/packages/core-app-api/src/lib/subjects.test.ts
index 31ed26d97d..eab5757898 100644
--- a/packages/core-app-api/src/lib/subjects.test.ts
+++ b/packages/core-app-api/src/lib/subjects.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/lib/subjects.ts b/packages/core-app-api/src/lib/subjects.ts
index 52870538f0..0391050bda 100644
--- a/packages/core-app-api/src/lib/subjects.ts
+++ b/packages/core-app-api/src/lib/subjects.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/lib/versionedValues.test.ts b/packages/core-app-api/src/lib/versionedValues.test.ts
index 6ba7db4970..19f9c8f349 100644
--- a/packages/core-app-api/src/lib/versionedValues.test.ts
+++ b/packages/core-app-api/src/lib/versionedValues.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/lib/versionedValues.ts b/packages/core-app-api/src/lib/versionedValues.ts
index 88e4e90084..3d0a4a41ae 100644
--- a/packages/core-app-api/src/lib/versionedValues.ts
+++ b/packages/core-app-api/src/lib/versionedValues.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/plugins/collectors.test.tsx b/packages/core-app-api/src/plugins/collectors.test.tsx
index 46c19ec7bf..acbe337e44 100644
--- a/packages/core-app-api/src/plugins/collectors.test.tsx
+++ b/packages/core-app-api/src/plugins/collectors.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/plugins/collectors.ts b/packages/core-app-api/src/plugins/collectors.ts
index 8e5b623164..11e5cd51b3 100644
--- a/packages/core-app-api/src/plugins/collectors.ts
+++ b/packages/core-app-api/src/plugins/collectors.ts
@@ -1,20 +1,5 @@
/*
- * Copyright 2020 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.
- */
-/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/plugins/index.ts b/packages/core-app-api/src/plugins/index.ts
index 95794a7487..820697f8bb 100644
--- a/packages/core-app-api/src/plugins/index.ts
+++ b/packages/core-app-api/src/plugins/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/routing/FeatureFlagged.test.tsx b/packages/core-app-api/src/routing/FeatureFlagged.test.tsx
new file mode 100644
index 0000000000..2b05c8f61d
--- /dev/null
+++ b/packages/core-app-api/src/routing/FeatureFlagged.test.tsx
@@ -0,0 +1,102 @@
+/*
+ * Copyright 2021 The Backstage Authors
+ *
+ * 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.
+ */
+import React from 'react';
+import { FeatureFlagged } from './FeatureFlagged';
+import { render } from '@testing-library/react';
+import { ApiProvider, ApiRegistry, LocalStorageFeatureFlags } from '../apis';
+import { featureFlagsApiRef } from '@backstage/core-plugin-api';
+
+const mockFeatureFlagsApi = new LocalStorageFeatureFlags();
+const Wrapper = ({ children }: { children?: React.ReactNode }) => (
+
+ {children}
+
+);
+
+describe('FeatureFlagged', () => {
+ describe('with', () => {
+ it('should render contents when the feature flag is enabled', async () => {
+ jest
+ .spyOn(mockFeatureFlagsApi, 'isActive')
+ .mockImplementation(() => true);
+
+ const { queryByText } = render(
+
+
+ ,
+ );
+
+ expect(await queryByText('BACKSTAGE!')).toBeInTheDocument();
+ });
+ it('should not render contents when the feature flag is disabled', async () => {
+ jest
+ .spyOn(mockFeatureFlagsApi, 'isActive')
+ .mockImplementation(() => false);
+
+ const { queryByText } = render(
+
+
+ ,
+ );
+
+ expect(await queryByText('BACKSTAGE!')).not.toBeInTheDocument();
+ });
+ });
+ describe('without', () => {
+ it('should not render contents when the feature flag is enabled', async () => {
+ jest
+ .spyOn(mockFeatureFlagsApi, 'isActive')
+ .mockImplementation(() => true);
+
+ const { queryByText } = render(
+
+
+ ,
+ );
+
+ expect(await queryByText('BACKSTAGE!')).not.toBeInTheDocument();
+ });
+ it('should render contents when the feature flag is disabled', async () => {
+ jest
+ .spyOn(mockFeatureFlagsApi, 'isActive')
+ .mockImplementation(() => false);
+
+ const { queryByText } = render(
+
+
+ ,
+ );
+
+ expect(await queryByText('BACKSTAGE!')).toBeInTheDocument();
+ });
+ });
+});
diff --git a/packages/core-app-api/src/routing/FeatureFlagged.tsx b/packages/core-app-api/src/routing/FeatureFlagged.tsx
new file mode 100644
index 0000000000..47561d4135
--- /dev/null
+++ b/packages/core-app-api/src/routing/FeatureFlagged.tsx
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2021 The Backstage Authors
+ *
+ * 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.
+ */
+
+import {
+ featureFlagsApiRef,
+ useApi,
+ attachComponentData,
+} from '@backstage/core-plugin-api';
+import React, { ReactNode } from 'react';
+
+export type FeatureFlaggedProps = { children: ReactNode } & (
+ | { with: string }
+ | { without: string }
+);
+
+export const FeatureFlagged = (props: FeatureFlaggedProps) => {
+ const { children } = props;
+ const featureFlagApi = useApi(featureFlagsApiRef);
+ const isEnabled =
+ 'with' in props
+ ? featureFlagApi.isActive(props.with)
+ : !featureFlagApi.isActive(props.without);
+ return <>{isEnabled ? children : null}>;
+};
+
+attachComponentData(FeatureFlagged, 'core.featureFlagged', true);
diff --git a/packages/core-app-api/src/routing/FlatRoutes.test.tsx b/packages/core-app-api/src/routing/FlatRoutes.test.tsx
index a9b83d1016..a73534a272 100644
--- a/packages/core-app-api/src/routing/FlatRoutes.test.tsx
+++ b/packages/core-app-api/src/routing/FlatRoutes.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,25 +17,36 @@
import { render, RenderResult } from '@testing-library/react';
import React, { ReactNode } from 'react';
import { MemoryRouter, Route, Routes, useOutlet } from 'react-router-dom';
+import { ApiProvider, ApiRegistry, LocalStorageFeatureFlags } from '../apis';
+import { featureFlagsApiRef } from '@backstage/core-plugin-api';
import { AppContext } from '../app';
import { AppContextProvider } from '../app/AppContext';
import { FlatRoutes } from './FlatRoutes';
+const mockFeatureFlagsApi = new LocalStorageFeatureFlags();
+const Wrapper = ({ children }: { children?: React.ReactNode }) => (
+
+ {children}
+
+);
+
function makeRouteRenderer(node: ReactNode) {
let rendered: RenderResult | undefined = undefined;
return (path: string) => {
const content = (
- ({
- NotFoundErrorPage: () => <>Not Found>,
- }),
- } as unknown) as AppContext
- }
- >
-
-
+
+ ({
+ NotFoundErrorPage: () => <>Not Found>,
+ }),
+ } as unknown) as AppContext
+ }
+ >
+
+
+
);
if (rendered) {
rendered.unmount();
diff --git a/packages/core-app-api/src/routing/FlatRoutes.tsx b/packages/core-app-api/src/routing/FlatRoutes.tsx
index 54ef092965..6ba82203fd 100644
--- a/packages/core-app-api/src/routing/FlatRoutes.tsx
+++ b/packages/core-app-api/src/routing/FlatRoutes.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,53 +14,16 @@
* limitations under the License.
*/
-import React, { ReactNode, Children, isValidElement, Fragment } from 'react';
+import React, { ReactNode } from 'react';
import { useRoutes } from 'react-router-dom';
-import { useApp } from '@backstage/core-plugin-api';
+import { useApp, useElementFilter } from '@backstage/core-plugin-api';
type RouteObject = {
path: string;
- element: JSX.Element;
+ element: ReactNode;
children?: RouteObject[];
};
-// Similar to the same function from react-router, this collects routes from the
-// children, but only the first level of routes
-function createRoutesFromChildren(childrenNode: ReactNode): RouteObject[] {
- return Children.toArray(childrenNode).flatMap(child => {
- if (!isValidElement(child)) {
- return [];
- }
-
- const { children } = child.props;
-
- if (child.type === Fragment) {
- return createRoutesFromChildren(children);
- }
-
- let path = child.props.path as string | undefined;
-
- // TODO(Rugvip): Work around plugins registering empty paths, remove once deprecated routes are gone
- if (path === '') {
- return [];
- }
- path = path?.replace(/\/\*$/, '') ?? '/';
-
- return [
- {
- path,
- element: child,
- children: children && [
- {
- path: '/*',
- element: children,
- },
- ],
- },
- ];
- });
-}
-
type FlatRoutesProps = {
children: ReactNode;
};
@@ -68,14 +31,41 @@ type FlatRoutesProps = {
export const FlatRoutes = (props: FlatRoutesProps): JSX.Element | null => {
const app = useApp();
const { NotFoundErrorPage } = app.getComponents();
- const routes = createRoutesFromChildren(props.children)
- // Routes are sorted to work around a bug where prefixes are unexpectedly matched
- .sort((a, b) => b.path.localeCompare(a.path))
- // We make sure all routes have '/*' appended, except '/'
- .map(obj => {
- obj.path = obj.path === '/' ? '/' : `${obj.path}/*`;
- return obj;
- });
+ const routes = useElementFilter(props.children, elements =>
+ elements
+ .getElements<{ path?: string; children: ReactNode }>()
+ .flatMap(child => {
+ let path = child.props.path;
+
+ // TODO(Rugvip): Work around plugins registering empty paths, remove once deprecated routes are gone
+ if (path === '') {
+ return [];
+ }
+ path = path?.replace(/\/\*$/, '') ?? '/';
+
+ return [
+ {
+ path,
+ element: child,
+ children: child.props.children
+ ? [
+ {
+ path: '/*',
+ element: child.props.children,
+ },
+ ]
+ : undefined,
+ },
+ ];
+ })
+ // Routes are sorted to work around a bug where prefixes are unexpectedly matched
+ .sort((a, b) => b.path.localeCompare(a.path))
+ // We make sure all routes have '/*' appended, except '/'
+ .map(obj => {
+ obj.path = obj.path === '/' ? '/' : `${obj.path}/*`;
+ return obj;
+ }),
+ );
// TODO(Rugvip): Possibly add a way to skip this, like a noNotFoundPage prop
routes.push({
diff --git a/packages/core-app-api/src/routing/RouteResolver.test.ts b/packages/core-app-api/src/routing/RouteResolver.test.ts
index f75617e7a5..b47a18ecce 100644
--- a/packages/core-app-api/src/routing/RouteResolver.test.ts
+++ b/packages/core-app-api/src/routing/RouteResolver.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/routing/RouteResolver.ts b/packages/core-app-api/src/routing/RouteResolver.ts
index 38158f750e..e09da28df8 100644
--- a/packages/core-app-api/src/routing/RouteResolver.ts
+++ b/packages/core-app-api/src/routing/RouteResolver.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/routing/RoutingProvider.test.tsx b/packages/core-app-api/src/routing/RoutingProvider.test.tsx
index b75e68e7f0..499b81a743 100644
--- a/packages/core-app-api/src/routing/RoutingProvider.test.tsx
+++ b/packages/core-app-api/src/routing/RoutingProvider.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/routing/RoutingProvider.tsx b/packages/core-app-api/src/routing/RoutingProvider.tsx
index 86507d2ff4..ea8e8f76f8 100644
--- a/packages/core-app-api/src/routing/RoutingProvider.tsx
+++ b/packages/core-app-api/src/routing/RoutingProvider.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/routing/collectors.test.tsx b/packages/core-app-api/src/routing/collectors.test.tsx
index 50c8ec1772..d37b5e3016 100644
--- a/packages/core-app-api/src/routing/collectors.test.tsx
+++ b/packages/core-app-api/src/routing/collectors.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/routing/collectors.tsx b/packages/core-app-api/src/routing/collectors.tsx
index e940a2cada..fcbe3ca923 100644
--- a/packages/core-app-api/src/routing/collectors.tsx
+++ b/packages/core-app-api/src/routing/collectors.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,6 +19,7 @@ import { RouteRef } from '@backstage/core-plugin-api';
import { BackstageRouteObject } from './types';
import { getComponentData } from '../extensions';
import { createCollector } from '../extensions/traversal';
+import { FeatureFlagged, FeatureFlaggedProps } from './FeatureFlagged';
function getMountPoint(node: ReactElement): RouteRef | undefined {
const element: ReactNode = node.props?.element;
@@ -171,3 +172,13 @@ export const routeObjectCollector = createCollector(
return parentObj;
},
);
+
+export const featureFlagCollector = createCollector(
+ () => new Set(),
+ (acc, node) => {
+ if (node.type === FeatureFlagged) {
+ const props = node.props as FeatureFlaggedProps;
+ acc.add('with' in props ? props.with : props.without);
+ }
+ },
+);
diff --git a/packages/core-app-api/src/routing/index.ts b/packages/core-app-api/src/routing/index.ts
index 7982333f4b..4169fffc88 100644
--- a/packages/core-app-api/src/routing/index.ts
+++ b/packages/core-app-api/src/routing/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -15,3 +15,5 @@
*/
export { FlatRoutes } from './FlatRoutes';
+export { FeatureFlagged } from './FeatureFlagged';
+export type { FeatureFlaggedProps } from './FeatureFlagged';
diff --git a/packages/core-app-api/src/routing/types.ts b/packages/core-app-api/src/routing/types.ts
index 53128642f9..6561a0da70 100644
--- a/packages/core-app-api/src/routing/types.ts
+++ b/packages/core-app-api/src/routing/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/routing/validation.ts b/packages/core-app-api/src/routing/validation.ts
index 2d32471a14..51078a0130 100644
--- a/packages/core-app-api/src/routing/validation.ts
+++ b/packages/core-app-api/src/routing/validation.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-app-api/src/setupTests.ts b/packages/core-app-api/src/setupTests.ts
index aea2220869..c1d649f2ad 100644
--- a/packages/core-app-api/src/setupTests.ts
+++ b/packages/core-app-api/src/setupTests.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/CHANGELOG.md b/packages/core-components/CHANGELOG.md
index 83e5bad9f5..db49ad5adb 100644
--- a/packages/core-components/CHANGELOG.md
+++ b/packages/core-components/CHANGELOG.md
@@ -1,5 +1,12 @@
# @backstage/core-components
+## 0.1.3
+
+### Patch Changes
+
+- d2c31b132: Add title prop in SupportButton component
+- d4644f592: Use the Backstage `Link` component in the `Button`
+
## 0.1.2
### Patch Changes
diff --git a/packages/core-components/package.json b/packages/core-components/package.json
index 42a98b859a..428c0e9134 100644
--- a/packages/core-components/package.json
+++ b/packages/core-components/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/core-components",
"description": "Core components used by Backstage plugins and apps",
- "version": "0.1.2",
+ "version": "0.1.3",
"private": false,
"publishConfig": {
"access": "public",
@@ -71,7 +71,7 @@
},
"devDependencies": {
"@backstage/core-app-api": "^0.1.2",
- "@backstage/cli": "^0.7.0",
+ "@backstage/cli": "^0.7.1",
"@backstage/test-utils": "^0.1.13",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
diff --git a/packages/core-components/src/components/AlertDisplay/AlertDisplay.test.tsx b/packages/core-components/src/components/AlertDisplay/AlertDisplay.test.tsx
index 624337c49b..d6bf990f8a 100644
--- a/packages/core-components/src/components/AlertDisplay/AlertDisplay.test.tsx
+++ b/packages/core-components/src/components/AlertDisplay/AlertDisplay.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/AlertDisplay/AlertDisplay.tsx b/packages/core-components/src/components/AlertDisplay/AlertDisplay.tsx
index c841d234f6..495e2ea14c 100644
--- a/packages/core-components/src/components/AlertDisplay/AlertDisplay.tsx
+++ b/packages/core-components/src/components/AlertDisplay/AlertDisplay.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/AlertDisplay/index.ts b/packages/core-components/src/components/AlertDisplay/index.ts
index 72aa1c5ad8..34b2dfaabf 100644
--- a/packages/core-components/src/components/AlertDisplay/index.ts
+++ b/packages/core-components/src/components/AlertDisplay/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Avatar/Avatar.stories.tsx b/packages/core-components/src/components/Avatar/Avatar.stories.tsx
index 5ac628d72b..59f2fb6cfa 100644
--- a/packages/core-components/src/components/Avatar/Avatar.stories.tsx
+++ b/packages/core-components/src/components/Avatar/Avatar.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Avatar/Avatar.test.tsx b/packages/core-components/src/components/Avatar/Avatar.test.tsx
index da6ca8f42e..1c08d57679 100644
--- a/packages/core-components/src/components/Avatar/Avatar.test.tsx
+++ b/packages/core-components/src/components/Avatar/Avatar.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Avatar/Avatar.tsx b/packages/core-components/src/components/Avatar/Avatar.tsx
index 95aa4a8ced..df3c46fba7 100644
--- a/packages/core-components/src/components/Avatar/Avatar.tsx
+++ b/packages/core-components/src/components/Avatar/Avatar.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Avatar/index.ts b/packages/core-components/src/components/Avatar/index.ts
index 962414634e..a58b47eba9 100644
--- a/packages/core-components/src/components/Avatar/index.ts
+++ b/packages/core-components/src/components/Avatar/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Avatar/util.test.ts b/packages/core-components/src/components/Avatar/util.test.ts
index 94de957e8e..4d2b5417c0 100644
--- a/packages/core-components/src/components/Avatar/util.test.ts
+++ b/packages/core-components/src/components/Avatar/util.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Avatar/utils.ts b/packages/core-components/src/components/Avatar/utils.ts
index 5990a72955..98ce01664a 100644
--- a/packages/core-components/src/components/Avatar/utils.ts
+++ b/packages/core-components/src/components/Avatar/utils.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Button/Button.stories.tsx b/packages/core-components/src/components/Button/Button.stories.tsx
index 0fee0300ab..28deb1ad33 100644
--- a/packages/core-components/src/components/Button/Button.stories.tsx
+++ b/packages/core-components/src/components/Button/Button.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Button/Button.test.tsx b/packages/core-components/src/components/Button/Button.test.tsx
index 8bae5f2767..e3a1074e6f 100644
--- a/packages/core-components/src/components/Button/Button.test.tsx
+++ b/packages/core-components/src/components/Button/Button.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Button/Button.tsx b/packages/core-components/src/components/Button/Button.tsx
index ca45b3da7f..6dd593d776 100644
--- a/packages/core-components/src/components/Button/Button.tsx
+++ b/packages/core-components/src/components/Button/Button.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,17 +14,19 @@
* limitations under the License.
*/
-import React, { ComponentProps } from 'react';
-import { Button as MaterialButton } from '@material-ui/core';
-import { Link as RouterLink } from 'react-router-dom';
+import {
+ Button as MaterialButton,
+ ButtonProps as MaterialButtonProps,
+} from '@material-ui/core';
+import React from 'react';
+import { Link, LinkProps } from '../Link';
-type Props = ComponentProps &
- ComponentProps;
+type Props = MaterialButtonProps & Omit;
/**
* Thin wrapper on top of material-ui's Button component
* Makes the Button to utilise react-router
*/
export const Button = React.forwardRef((props, ref) => (
-
+
));
diff --git a/packages/core-components/src/components/Button/index.ts b/packages/core-components/src/components/Button/index.ts
index 7b584ed799..e2aa3aff98 100644
--- a/packages/core-components/src/components/Button/index.ts
+++ b/packages/core-components/src/components/Button/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/CheckboxTree/CheckboxTree.stories.tsx b/packages/core-components/src/components/CheckboxTree/CheckboxTree.stories.tsx
index 3416e94260..48da8b92b2 100644
--- a/packages/core-components/src/components/CheckboxTree/CheckboxTree.stories.tsx
+++ b/packages/core-components/src/components/CheckboxTree/CheckboxTree.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/CheckboxTree/CheckboxTree.test.tsx b/packages/core-components/src/components/CheckboxTree/CheckboxTree.test.tsx
index 0750867ff3..6c84a311d2 100644
--- a/packages/core-components/src/components/CheckboxTree/CheckboxTree.test.tsx
+++ b/packages/core-components/src/components/CheckboxTree/CheckboxTree.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/CheckboxTree/CheckboxTree.tsx b/packages/core-components/src/components/CheckboxTree/CheckboxTree.tsx
index d6d3410913..7e7155143b 100644
--- a/packages/core-components/src/components/CheckboxTree/CheckboxTree.tsx
+++ b/packages/core-components/src/components/CheckboxTree/CheckboxTree.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/CheckboxTree/index.tsx b/packages/core-components/src/components/CheckboxTree/index.tsx
index d8e62460ab..e1ceb98ee4 100644
--- a/packages/core-components/src/components/CheckboxTree/index.tsx
+++ b/packages/core-components/src/components/CheckboxTree/index.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Chip/Chip.stories.tsx b/packages/core-components/src/components/Chip/Chip.stories.tsx
index 87d904ad0e..ff52a81c16 100644
--- a/packages/core-components/src/components/Chip/Chip.stories.tsx
+++ b/packages/core-components/src/components/Chip/Chip.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/CodeSnippet/CodeSnippet.stories.tsx b/packages/core-components/src/components/CodeSnippet/CodeSnippet.stories.tsx
index 6df7e5bb6d..a266c8c6cb 100644
--- a/packages/core-components/src/components/CodeSnippet/CodeSnippet.stories.tsx
+++ b/packages/core-components/src/components/CodeSnippet/CodeSnippet.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/CodeSnippet/CodeSnippet.test.tsx b/packages/core-components/src/components/CodeSnippet/CodeSnippet.test.tsx
index 7d5d4de087..298a8d5780 100644
--- a/packages/core-components/src/components/CodeSnippet/CodeSnippet.test.tsx
+++ b/packages/core-components/src/components/CodeSnippet/CodeSnippet.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/CodeSnippet/CodeSnippet.tsx b/packages/core-components/src/components/CodeSnippet/CodeSnippet.tsx
index 84b5aa403e..a3badaad07 100644
--- a/packages/core-components/src/components/CodeSnippet/CodeSnippet.tsx
+++ b/packages/core-components/src/components/CodeSnippet/CodeSnippet.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/CodeSnippet/index.tsx b/packages/core-components/src/components/CodeSnippet/index.tsx
index 11ca1ecde2..bafcf145e9 100644
--- a/packages/core-components/src/components/CodeSnippet/index.tsx
+++ b/packages/core-components/src/components/CodeSnippet/index.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/CopyTextButton/CopyTextButton.stories.tsx b/packages/core-components/src/components/CopyTextButton/CopyTextButton.stories.tsx
index 745812a219..c1834091b5 100644
--- a/packages/core-components/src/components/CopyTextButton/CopyTextButton.stories.tsx
+++ b/packages/core-components/src/components/CopyTextButton/CopyTextButton.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/CopyTextButton/CopyTextButton.test.tsx b/packages/core-components/src/components/CopyTextButton/CopyTextButton.test.tsx
index 39d88d07ce..acd0fa809c 100644
--- a/packages/core-components/src/components/CopyTextButton/CopyTextButton.test.tsx
+++ b/packages/core-components/src/components/CopyTextButton/CopyTextButton.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/CopyTextButton/CopyTextButton.tsx b/packages/core-components/src/components/CopyTextButton/CopyTextButton.tsx
index 7ccb0371f4..b5bc516d1a 100644
--- a/packages/core-components/src/components/CopyTextButton/CopyTextButton.tsx
+++ b/packages/core-components/src/components/CopyTextButton/CopyTextButton.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/CopyTextButton/index.tsx b/packages/core-components/src/components/CopyTextButton/index.tsx
index adde10a927..a90975fa77 100644
--- a/packages/core-components/src/components/CopyTextButton/index.tsx
+++ b/packages/core-components/src/components/CopyTextButton/index.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/DependencyGraph/DefaultLabel.tsx b/packages/core-components/src/components/DependencyGraph/DefaultLabel.tsx
index 0679d1dae0..74f0a97a2b 100644
--- a/packages/core-components/src/components/DependencyGraph/DefaultLabel.tsx
+++ b/packages/core-components/src/components/DependencyGraph/DefaultLabel.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/DependencyGraph/DefaultNode.tsx b/packages/core-components/src/components/DependencyGraph/DefaultNode.tsx
index 9656c860ae..c93651e3e0 100644
--- a/packages/core-components/src/components/DependencyGraph/DefaultNode.tsx
+++ b/packages/core-components/src/components/DependencyGraph/DefaultNode.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/DependencyGraph/DependencyGraph.stories.tsx b/packages/core-components/src/components/DependencyGraph/DependencyGraph.stories.tsx
index e39ecfc5da..0b97059754 100644
--- a/packages/core-components/src/components/DependencyGraph/DependencyGraph.stories.tsx
+++ b/packages/core-components/src/components/DependencyGraph/DependencyGraph.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/DependencyGraph/DependencyGraph.test.tsx b/packages/core-components/src/components/DependencyGraph/DependencyGraph.test.tsx
index 526dc6d7dd..2020c2ba65 100644
--- a/packages/core-components/src/components/DependencyGraph/DependencyGraph.test.tsx
+++ b/packages/core-components/src/components/DependencyGraph/DependencyGraph.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/DependencyGraph/DependencyGraph.tsx b/packages/core-components/src/components/DependencyGraph/DependencyGraph.tsx
index ced0bdf276..5c0442f906 100644
--- a/packages/core-components/src/components/DependencyGraph/DependencyGraph.tsx
+++ b/packages/core-components/src/components/DependencyGraph/DependencyGraph.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/DependencyGraph/Edge.test.tsx b/packages/core-components/src/components/DependencyGraph/Edge.test.tsx
index b651c17bf0..323a445546 100644
--- a/packages/core-components/src/components/DependencyGraph/Edge.test.tsx
+++ b/packages/core-components/src/components/DependencyGraph/Edge.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/DependencyGraph/Edge.tsx b/packages/core-components/src/components/DependencyGraph/Edge.tsx
index 5e67aca63f..4e4c5ca5f7 100644
--- a/packages/core-components/src/components/DependencyGraph/Edge.tsx
+++ b/packages/core-components/src/components/DependencyGraph/Edge.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/DependencyGraph/Node.test.tsx b/packages/core-components/src/components/DependencyGraph/Node.test.tsx
index 9f9f7c693a..ebd6478db9 100644
--- a/packages/core-components/src/components/DependencyGraph/Node.test.tsx
+++ b/packages/core-components/src/components/DependencyGraph/Node.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/DependencyGraph/Node.tsx b/packages/core-components/src/components/DependencyGraph/Node.tsx
index 4d64e31335..d9e8cbfb78 100644
--- a/packages/core-components/src/components/DependencyGraph/Node.tsx
+++ b/packages/core-components/src/components/DependencyGraph/Node.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/DependencyGraph/constants.ts b/packages/core-components/src/components/DependencyGraph/constants.ts
index 412a677f87..155fd4e82a 100644
--- a/packages/core-components/src/components/DependencyGraph/constants.ts
+++ b/packages/core-components/src/components/DependencyGraph/constants.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/DependencyGraph/index.ts b/packages/core-components/src/components/DependencyGraph/index.ts
index 9a4f0071e3..5f5e7a5439 100644
--- a/packages/core-components/src/components/DependencyGraph/index.ts
+++ b/packages/core-components/src/components/DependencyGraph/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/DependencyGraph/types.ts b/packages/core-components/src/components/DependencyGraph/types.ts
index 19173db4b3..ed22007f9a 100644
--- a/packages/core-components/src/components/DependencyGraph/types.ts
+++ b/packages/core-components/src/components/DependencyGraph/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Dialog/Dialog.stories.tsx b/packages/core-components/src/components/Dialog/Dialog.stories.tsx
index c9388dcbec..b4c0a7da57 100644
--- a/packages/core-components/src/components/Dialog/Dialog.stories.tsx
+++ b/packages/core-components/src/components/Dialog/Dialog.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/DismissableBanner/DismissableBanner.stories.tsx b/packages/core-components/src/components/DismissableBanner/DismissableBanner.stories.tsx
index 3a2c9532a5..583413eb35 100644
--- a/packages/core-components/src/components/DismissableBanner/DismissableBanner.stories.tsx
+++ b/packages/core-components/src/components/DismissableBanner/DismissableBanner.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/DismissableBanner/DismissableBanner.test.tsx b/packages/core-components/src/components/DismissableBanner/DismissableBanner.test.tsx
index ed8e4f0fff..ddc119369b 100644
--- a/packages/core-components/src/components/DismissableBanner/DismissableBanner.test.tsx
+++ b/packages/core-components/src/components/DismissableBanner/DismissableBanner.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/DismissableBanner/DismissableBanner.tsx b/packages/core-components/src/components/DismissableBanner/DismissableBanner.tsx
index 8f222768a8..6c4e43811d 100644
--- a/packages/core-components/src/components/DismissableBanner/DismissableBanner.tsx
+++ b/packages/core-components/src/components/DismissableBanner/DismissableBanner.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/DismissableBanner/index.ts b/packages/core-components/src/components/DismissableBanner/index.ts
index c1d69cd95e..4390d44903 100644
--- a/packages/core-components/src/components/DismissableBanner/index.ts
+++ b/packages/core-components/src/components/DismissableBanner/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Drawer/Drawer.stories.tsx b/packages/core-components/src/components/Drawer/Drawer.stories.tsx
index b399cfed8e..2538af855e 100644
--- a/packages/core-components/src/components/Drawer/Drawer.stories.tsx
+++ b/packages/core-components/src/components/Drawer/Drawer.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/EmptyState/EmptyState.stories.tsx b/packages/core-components/src/components/EmptyState/EmptyState.stories.tsx
index dcfba73227..ed4dbe2101 100644
--- a/packages/core-components/src/components/EmptyState/EmptyState.stories.tsx
+++ b/packages/core-components/src/components/EmptyState/EmptyState.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/EmptyState/EmptyState.test.tsx b/packages/core-components/src/components/EmptyState/EmptyState.test.tsx
index 32e71f044d..2f4e4e883d 100644
--- a/packages/core-components/src/components/EmptyState/EmptyState.test.tsx
+++ b/packages/core-components/src/components/EmptyState/EmptyState.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/EmptyState/EmptyState.tsx b/packages/core-components/src/components/EmptyState/EmptyState.tsx
index fdd9738735..1d8d5a798f 100644
--- a/packages/core-components/src/components/EmptyState/EmptyState.tsx
+++ b/packages/core-components/src/components/EmptyState/EmptyState.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/EmptyState/EmptyStateImage.test.tsx b/packages/core-components/src/components/EmptyState/EmptyStateImage.test.tsx
index 258eee943d..904f5afc63 100644
--- a/packages/core-components/src/components/EmptyState/EmptyStateImage.test.tsx
+++ b/packages/core-components/src/components/EmptyState/EmptyStateImage.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/EmptyState/EmptyStateImage.tsx b/packages/core-components/src/components/EmptyState/EmptyStateImage.tsx
index 1973ff9a23..a76f0863f7 100644
--- a/packages/core-components/src/components/EmptyState/EmptyStateImage.tsx
+++ b/packages/core-components/src/components/EmptyState/EmptyStateImage.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/EmptyState/MissingAnnotationEmptyState.tsx b/packages/core-components/src/components/EmptyState/MissingAnnotationEmptyState.tsx
index 6c04b34a90..39cce709c0 100644
--- a/packages/core-components/src/components/EmptyState/MissingAnnotationEmptyState.tsx
+++ b/packages/core-components/src/components/EmptyState/MissingAnnotationEmptyState.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/EmptyState/index.ts b/packages/core-components/src/components/EmptyState/index.ts
index 2e2a88be94..95e12a014e 100644
--- a/packages/core-components/src/components/EmptyState/index.ts
+++ b/packages/core-components/src/components/EmptyState/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/ErrorPanel/ErrorPanel.tsx b/packages/core-components/src/components/ErrorPanel/ErrorPanel.tsx
index 1f7d2a4be7..14b5d50325 100644
--- a/packages/core-components/src/components/ErrorPanel/ErrorPanel.tsx
+++ b/packages/core-components/src/components/ErrorPanel/ErrorPanel.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/ErrorPanel/index.ts b/packages/core-components/src/components/ErrorPanel/index.ts
index 7103266eab..1da4a76959 100644
--- a/packages/core-components/src/components/ErrorPanel/index.ts
+++ b/packages/core-components/src/components/ErrorPanel/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/FeatureDiscovery/FeatureCalloutCircular.test.tsx b/packages/core-components/src/components/FeatureDiscovery/FeatureCalloutCircular.test.tsx
index 83a31f198d..35ea30ffa6 100644
--- a/packages/core-components/src/components/FeatureDiscovery/FeatureCalloutCircular.test.tsx
+++ b/packages/core-components/src/components/FeatureDiscovery/FeatureCalloutCircular.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/FeatureDiscovery/FeatureCalloutCircular.tsx b/packages/core-components/src/components/FeatureDiscovery/FeatureCalloutCircular.tsx
index 64722c24b0..9af6c30c3b 100644
--- a/packages/core-components/src/components/FeatureDiscovery/FeatureCalloutCircular.tsx
+++ b/packages/core-components/src/components/FeatureDiscovery/FeatureCalloutCircular.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/FeatureDiscovery/index.ts b/packages/core-components/src/components/FeatureDiscovery/index.ts
index 57e35e3855..ed9ab28b17 100644
--- a/packages/core-components/src/components/FeatureDiscovery/index.ts
+++ b/packages/core-components/src/components/FeatureDiscovery/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/FeatureDiscovery/lib/usePortal.ts b/packages/core-components/src/components/FeatureDiscovery/lib/usePortal.ts
index d5fd2c23c9..c1377b6060 100644
--- a/packages/core-components/src/components/FeatureDiscovery/lib/usePortal.ts
+++ b/packages/core-components/src/components/FeatureDiscovery/lib/usePortal.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/FeatureDiscovery/lib/useShowCallout.ts b/packages/core-components/src/components/FeatureDiscovery/lib/useShowCallout.ts
index 0bbcf3b8ec..617f1324ed 100644
--- a/packages/core-components/src/components/FeatureDiscovery/lib/useShowCallout.ts
+++ b/packages/core-components/src/components/FeatureDiscovery/lib/useShowCallout.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/HeaderIconLinkRow/HeaderIconLinkRow.tsx b/packages/core-components/src/components/HeaderIconLinkRow/HeaderIconLinkRow.tsx
index a2f86d133b..afceda165e 100644
--- a/packages/core-components/src/components/HeaderIconLinkRow/HeaderIconLinkRow.tsx
+++ b/packages/core-components/src/components/HeaderIconLinkRow/HeaderIconLinkRow.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/HeaderIconLinkRow/IconLinkVertical.tsx b/packages/core-components/src/components/HeaderIconLinkRow/IconLinkVertical.tsx
index 425bed3490..df26bc07b8 100644
--- a/packages/core-components/src/components/HeaderIconLinkRow/IconLinkVertical.tsx
+++ b/packages/core-components/src/components/HeaderIconLinkRow/IconLinkVertical.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/HeaderIconLinkRow/index.ts b/packages/core-components/src/components/HeaderIconLinkRow/index.ts
index fb25f9b7ed..fb732644e4 100644
--- a/packages/core-components/src/components/HeaderIconLinkRow/index.ts
+++ b/packages/core-components/src/components/HeaderIconLinkRow/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/HorizontalScrollGrid/HorizontalScrollGrid.stories.tsx b/packages/core-components/src/components/HorizontalScrollGrid/HorizontalScrollGrid.stories.tsx
index 9718393427..55fff2430a 100644
--- a/packages/core-components/src/components/HorizontalScrollGrid/HorizontalScrollGrid.stories.tsx
+++ b/packages/core-components/src/components/HorizontalScrollGrid/HorizontalScrollGrid.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/HorizontalScrollGrid/HorizontalScrollGrid.test.tsx b/packages/core-components/src/components/HorizontalScrollGrid/HorizontalScrollGrid.test.tsx
index 0d07d8ec84..080e48919b 100644
--- a/packages/core-components/src/components/HorizontalScrollGrid/HorizontalScrollGrid.test.tsx
+++ b/packages/core-components/src/components/HorizontalScrollGrid/HorizontalScrollGrid.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/HorizontalScrollGrid/HorizontalScrollGrid.tsx b/packages/core-components/src/components/HorizontalScrollGrid/HorizontalScrollGrid.tsx
index 073fb960e1..f5c45d3eb0 100644
--- a/packages/core-components/src/components/HorizontalScrollGrid/HorizontalScrollGrid.tsx
+++ b/packages/core-components/src/components/HorizontalScrollGrid/HorizontalScrollGrid.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/HorizontalScrollGrid/index.tsx b/packages/core-components/src/components/HorizontalScrollGrid/index.tsx
index cb1253cae2..bbf545dab3 100644
--- a/packages/core-components/src/components/HorizontalScrollGrid/index.tsx
+++ b/packages/core-components/src/components/HorizontalScrollGrid/index.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Lifecycle/Lifecycle.stories.tsx b/packages/core-components/src/components/Lifecycle/Lifecycle.stories.tsx
index ccce7fba25..8640dd28e9 100644
--- a/packages/core-components/src/components/Lifecycle/Lifecycle.stories.tsx
+++ b/packages/core-components/src/components/Lifecycle/Lifecycle.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Lifecycle/Lifecycle.test.tsx b/packages/core-components/src/components/Lifecycle/Lifecycle.test.tsx
index b5567b2b5a..05b0f650dd 100644
--- a/packages/core-components/src/components/Lifecycle/Lifecycle.test.tsx
+++ b/packages/core-components/src/components/Lifecycle/Lifecycle.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Lifecycle/Lifecycle.tsx b/packages/core-components/src/components/Lifecycle/Lifecycle.tsx
index 585f7a5c18..c72ea46f1b 100644
--- a/packages/core-components/src/components/Lifecycle/Lifecycle.tsx
+++ b/packages/core-components/src/components/Lifecycle/Lifecycle.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Lifecycle/index.ts b/packages/core-components/src/components/Lifecycle/index.ts
index 8854c04396..d52e79e08b 100644
--- a/packages/core-components/src/components/Lifecycle/index.ts
+++ b/packages/core-components/src/components/Lifecycle/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Link/Link.stories.tsx b/packages/core-components/src/components/Link/Link.stories.tsx
index ec5278133e..516a5adcff 100644
--- a/packages/core-components/src/components/Link/Link.stories.tsx
+++ b/packages/core-components/src/components/Link/Link.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Link/Link.test.tsx b/packages/core-components/src/components/Link/Link.test.tsx
index 46504e9adc..97a71c5760 100644
--- a/packages/core-components/src/components/Link/Link.test.tsx
+++ b/packages/core-components/src/components/Link/Link.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Link/Link.tsx b/packages/core-components/src/components/Link/Link.tsx
index 31800ddaf1..dd169390a5 100644
--- a/packages/core-components/src/components/Link/Link.tsx
+++ b/packages/core-components/src/components/Link/Link.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Link/index.ts b/packages/core-components/src/components/Link/index.ts
index 9be779feb7..2160508451 100644
--- a/packages/core-components/src/components/Link/index.ts
+++ b/packages/core-components/src/components/Link/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/MarkdownContent/MarkdownContent.stories.tsx b/packages/core-components/src/components/MarkdownContent/MarkdownContent.stories.tsx
index eb15aa92d3..b16eea150c 100644
--- a/packages/core-components/src/components/MarkdownContent/MarkdownContent.stories.tsx
+++ b/packages/core-components/src/components/MarkdownContent/MarkdownContent.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/MarkdownContent/MarkdownContent.test.tsx b/packages/core-components/src/components/MarkdownContent/MarkdownContent.test.tsx
index dcbe421dcb..d39e92c75e 100644
--- a/packages/core-components/src/components/MarkdownContent/MarkdownContent.test.tsx
+++ b/packages/core-components/src/components/MarkdownContent/MarkdownContent.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/MarkdownContent/MarkdownContent.tsx b/packages/core-components/src/components/MarkdownContent/MarkdownContent.tsx
index 0000e54a5f..2167da6fd2 100644
--- a/packages/core-components/src/components/MarkdownContent/MarkdownContent.tsx
+++ b/packages/core-components/src/components/MarkdownContent/MarkdownContent.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/MarkdownContent/index.ts b/packages/core-components/src/components/MarkdownContent/index.ts
index 7267ff191c..9218d9fcde 100644
--- a/packages/core-components/src/components/MarkdownContent/index.ts
+++ b/packages/core-components/src/components/MarkdownContent/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/OAuthRequestDialog/LoginRequestListItem.tsx b/packages/core-components/src/components/OAuthRequestDialog/LoginRequestListItem.tsx
index cbb3705bd6..e0102564fd 100644
--- a/packages/core-components/src/components/OAuthRequestDialog/LoginRequestListItem.tsx
+++ b/packages/core-components/src/components/OAuthRequestDialog/LoginRequestListItem.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/OAuthRequestDialog/OAuthRequestDialog.tsx b/packages/core-components/src/components/OAuthRequestDialog/OAuthRequestDialog.tsx
index 0eb9ac49a9..687e4211bf 100644
--- a/packages/core-components/src/components/OAuthRequestDialog/OAuthRequestDialog.tsx
+++ b/packages/core-components/src/components/OAuthRequestDialog/OAuthRequestDialog.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/OAuthRequestDialog/index.ts b/packages/core-components/src/components/OAuthRequestDialog/index.ts
index 45f87ece1d..d2a48eac06 100644
--- a/packages/core-components/src/components/OAuthRequestDialog/index.ts
+++ b/packages/core-components/src/components/OAuthRequestDialog/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/OverflowTooltip/OverflowTooltip.stories.tsx b/packages/core-components/src/components/OverflowTooltip/OverflowTooltip.stories.tsx
index e0cbe7c814..0882a63e9c 100644
--- a/packages/core-components/src/components/OverflowTooltip/OverflowTooltip.stories.tsx
+++ b/packages/core-components/src/components/OverflowTooltip/OverflowTooltip.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/OverflowTooltip/OverflowTooltip.test.tsx b/packages/core-components/src/components/OverflowTooltip/OverflowTooltip.test.tsx
index 52f44bb4d0..c61069f810 100644
--- a/packages/core-components/src/components/OverflowTooltip/OverflowTooltip.test.tsx
+++ b/packages/core-components/src/components/OverflowTooltip/OverflowTooltip.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/OverflowTooltip/OverflowTooltip.tsx b/packages/core-components/src/components/OverflowTooltip/OverflowTooltip.tsx
index b7bad6f377..1be7ebc7ed 100644
--- a/packages/core-components/src/components/OverflowTooltip/OverflowTooltip.tsx
+++ b/packages/core-components/src/components/OverflowTooltip/OverflowTooltip.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/OverflowTooltip/index.ts b/packages/core-components/src/components/OverflowTooltip/index.ts
index fe51e8267f..f7258b5364 100644
--- a/packages/core-components/src/components/OverflowTooltip/index.ts
+++ b/packages/core-components/src/components/OverflowTooltip/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Progress/Progress.stories.tsx b/packages/core-components/src/components/Progress/Progress.stories.tsx
index 807ad159d8..af24019a69 100644
--- a/packages/core-components/src/components/Progress/Progress.stories.tsx
+++ b/packages/core-components/src/components/Progress/Progress.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Progress/Progress.test.tsx b/packages/core-components/src/components/Progress/Progress.test.tsx
index 46a162e8b3..4f4e74ce08 100644
--- a/packages/core-components/src/components/Progress/Progress.test.tsx
+++ b/packages/core-components/src/components/Progress/Progress.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Progress/Progress.tsx b/packages/core-components/src/components/Progress/Progress.tsx
index aacdf8821b..68dcb91785 100644
--- a/packages/core-components/src/components/Progress/Progress.tsx
+++ b/packages/core-components/src/components/Progress/Progress.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Progress/index.ts b/packages/core-components/src/components/Progress/index.ts
index 6598103ab1..c7b3d202cf 100644
--- a/packages/core-components/src/components/Progress/index.ts
+++ b/packages/core-components/src/components/Progress/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/ProgressBars/Gauge.stories.tsx b/packages/core-components/src/components/ProgressBars/Gauge.stories.tsx
index ab9c263f05..3481c48cef 100644
--- a/packages/core-components/src/components/ProgressBars/Gauge.stories.tsx
+++ b/packages/core-components/src/components/ProgressBars/Gauge.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/ProgressBars/Gauge.test.tsx b/packages/core-components/src/components/ProgressBars/Gauge.test.tsx
index 00cf0fd009..066e1233a0 100644
--- a/packages/core-components/src/components/ProgressBars/Gauge.test.tsx
+++ b/packages/core-components/src/components/ProgressBars/Gauge.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/ProgressBars/Gauge.tsx b/packages/core-components/src/components/ProgressBars/Gauge.tsx
index ca6a3a66ab..46948d4af6 100644
--- a/packages/core-components/src/components/ProgressBars/Gauge.tsx
+++ b/packages/core-components/src/components/ProgressBars/Gauge.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/ProgressBars/GaugeCard.stories.tsx b/packages/core-components/src/components/ProgressBars/GaugeCard.stories.tsx
index 5d54e5eda6..da81100a99 100644
--- a/packages/core-components/src/components/ProgressBars/GaugeCard.stories.tsx
+++ b/packages/core-components/src/components/ProgressBars/GaugeCard.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/ProgressBars/GaugeCard.test.tsx b/packages/core-components/src/components/ProgressBars/GaugeCard.test.tsx
index db112fa2ab..ea29a288e6 100644
--- a/packages/core-components/src/components/ProgressBars/GaugeCard.test.tsx
+++ b/packages/core-components/src/components/ProgressBars/GaugeCard.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/ProgressBars/GaugeCard.tsx b/packages/core-components/src/components/ProgressBars/GaugeCard.tsx
index 8dcec129c5..39248b1786 100644
--- a/packages/core-components/src/components/ProgressBars/GaugeCard.tsx
+++ b/packages/core-components/src/components/ProgressBars/GaugeCard.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/ProgressBars/LinearGauge.stories.tsx b/packages/core-components/src/components/ProgressBars/LinearGauge.stories.tsx
index fa3c7c00f0..ee2ed2eae6 100644
--- a/packages/core-components/src/components/ProgressBars/LinearGauge.stories.tsx
+++ b/packages/core-components/src/components/ProgressBars/LinearGauge.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/ProgressBars/LinearGauge.test.tsx b/packages/core-components/src/components/ProgressBars/LinearGauge.test.tsx
index fc04b642fb..f7260a9a65 100644
--- a/packages/core-components/src/components/ProgressBars/LinearGauge.test.tsx
+++ b/packages/core-components/src/components/ProgressBars/LinearGauge.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/ProgressBars/LinearGauge.tsx b/packages/core-components/src/components/ProgressBars/LinearGauge.tsx
index 9bb7b34c09..d733cb2eae 100644
--- a/packages/core-components/src/components/ProgressBars/LinearGauge.tsx
+++ b/packages/core-components/src/components/ProgressBars/LinearGauge.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/ProgressBars/index.ts b/packages/core-components/src/components/ProgressBars/index.ts
index 4463aea29b..01cab20f27 100644
--- a/packages/core-components/src/components/ProgressBars/index.ts
+++ b/packages/core-components/src/components/ProgressBars/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/ResponseErrorPanel/ResponseErrorPanel.tsx b/packages/core-components/src/components/ResponseErrorPanel/ResponseErrorPanel.tsx
index 33da6261ec..231cd179c7 100644
--- a/packages/core-components/src/components/ResponseErrorPanel/ResponseErrorPanel.tsx
+++ b/packages/core-components/src/components/ResponseErrorPanel/ResponseErrorPanel.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/ResponseErrorPanel/index.ts b/packages/core-components/src/components/ResponseErrorPanel/index.ts
index 1fc6221a44..c93bd9eade 100644
--- a/packages/core-components/src/components/ResponseErrorPanel/index.ts
+++ b/packages/core-components/src/components/ResponseErrorPanel/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Select/Select.stories.tsx b/packages/core-components/src/components/Select/Select.stories.tsx
index 07b9e38bd5..c48f36c2e5 100644
--- a/packages/core-components/src/components/Select/Select.stories.tsx
+++ b/packages/core-components/src/components/Select/Select.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Select/Select.test.tsx b/packages/core-components/src/components/Select/Select.test.tsx
index 89ae2b1883..41e787a5b4 100644
--- a/packages/core-components/src/components/Select/Select.test.tsx
+++ b/packages/core-components/src/components/Select/Select.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Select/Select.tsx b/packages/core-components/src/components/Select/Select.tsx
index 1e6dba76e0..b4512b3562 100644
--- a/packages/core-components/src/components/Select/Select.tsx
+++ b/packages/core-components/src/components/Select/Select.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Select/index.tsx b/packages/core-components/src/components/Select/index.tsx
index 977ebc88eb..0c35cc1378 100644
--- a/packages/core-components/src/components/Select/index.tsx
+++ b/packages/core-components/src/components/Select/index.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Select/static/ClosedDropdown.tsx b/packages/core-components/src/components/Select/static/ClosedDropdown.tsx
index 235a91963b..41155bb268 100644
--- a/packages/core-components/src/components/Select/static/ClosedDropdown.tsx
+++ b/packages/core-components/src/components/Select/static/ClosedDropdown.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Select/static/OpenedDropdown.tsx b/packages/core-components/src/components/Select/static/OpenedDropdown.tsx
index e4a8021017..2c91dc6989 100644
--- a/packages/core-components/src/components/Select/static/OpenedDropdown.tsx
+++ b/packages/core-components/src/components/Select/static/OpenedDropdown.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/SimpleStepper/SimpleStepper.stories.tsx b/packages/core-components/src/components/SimpleStepper/SimpleStepper.stories.tsx
index 11bb06c723..9d958f766d 100644
--- a/packages/core-components/src/components/SimpleStepper/SimpleStepper.stories.tsx
+++ b/packages/core-components/src/components/SimpleStepper/SimpleStepper.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/SimpleStepper/SimpleStepper.test.tsx b/packages/core-components/src/components/SimpleStepper/SimpleStepper.test.tsx
index 527160c4ff..5897054ed5 100644
--- a/packages/core-components/src/components/SimpleStepper/SimpleStepper.test.tsx
+++ b/packages/core-components/src/components/SimpleStepper/SimpleStepper.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/SimpleStepper/SimpleStepper.tsx b/packages/core-components/src/components/SimpleStepper/SimpleStepper.tsx
index ff65534843..46b2ce551a 100644
--- a/packages/core-components/src/components/SimpleStepper/SimpleStepper.tsx
+++ b/packages/core-components/src/components/SimpleStepper/SimpleStepper.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/SimpleStepper/SimpleStepperFooter.tsx b/packages/core-components/src/components/SimpleStepper/SimpleStepperFooter.tsx
index 750ee55c10..b126b5ba75 100644
--- a/packages/core-components/src/components/SimpleStepper/SimpleStepperFooter.tsx
+++ b/packages/core-components/src/components/SimpleStepper/SimpleStepperFooter.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/SimpleStepper/SimpleStepperStep.tsx b/packages/core-components/src/components/SimpleStepper/SimpleStepperStep.tsx
index bdf3e8c59d..51fcee1f71 100644
--- a/packages/core-components/src/components/SimpleStepper/SimpleStepperStep.tsx
+++ b/packages/core-components/src/components/SimpleStepper/SimpleStepperStep.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/SimpleStepper/index.ts b/packages/core-components/src/components/SimpleStepper/index.ts
index 392a66affa..ddb6d2537a 100644
--- a/packages/core-components/src/components/SimpleStepper/index.ts
+++ b/packages/core-components/src/components/SimpleStepper/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/SimpleStepper/types.ts b/packages/core-components/src/components/SimpleStepper/types.ts
index 0a488ff356..ef0fc46a84 100644
--- a/packages/core-components/src/components/SimpleStepper/types.ts
+++ b/packages/core-components/src/components/SimpleStepper/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Status/Status.stories.tsx b/packages/core-components/src/components/Status/Status.stories.tsx
index 205645e1ec..26a6fd2219 100644
--- a/packages/core-components/src/components/Status/Status.stories.tsx
+++ b/packages/core-components/src/components/Status/Status.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Status/Status.test.tsx b/packages/core-components/src/components/Status/Status.test.tsx
index 9a8daecd33..c1e1d42af2 100644
--- a/packages/core-components/src/components/Status/Status.test.tsx
+++ b/packages/core-components/src/components/Status/Status.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Status/Status.tsx b/packages/core-components/src/components/Status/Status.tsx
index f12f886b68..3d79c38581 100644
--- a/packages/core-components/src/components/Status/Status.tsx
+++ b/packages/core-components/src/components/Status/Status.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Status/index.ts b/packages/core-components/src/components/Status/index.ts
index 4c0fd6322b..2e34890482 100644
--- a/packages/core-components/src/components/Status/index.ts
+++ b/packages/core-components/src/components/Status/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/StructuredMetadataTable/MetadataTable.tsx b/packages/core-components/src/components/StructuredMetadataTable/MetadataTable.tsx
index b34e535a00..b7790e38da 100644
--- a/packages/core-components/src/components/StructuredMetadataTable/MetadataTable.tsx
+++ b/packages/core-components/src/components/StructuredMetadataTable/MetadataTable.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/StructuredMetadataTable/StructuredMetadataTable.stories.tsx b/packages/core-components/src/components/StructuredMetadataTable/StructuredMetadataTable.stories.tsx
index 7f07018f6f..458c431b27 100644
--- a/packages/core-components/src/components/StructuredMetadataTable/StructuredMetadataTable.stories.tsx
+++ b/packages/core-components/src/components/StructuredMetadataTable/StructuredMetadataTable.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/StructuredMetadataTable/StructuredMetadataTable.test.tsx b/packages/core-components/src/components/StructuredMetadataTable/StructuredMetadataTable.test.tsx
index 0844710876..7ebe15c931 100644
--- a/packages/core-components/src/components/StructuredMetadataTable/StructuredMetadataTable.test.tsx
+++ b/packages/core-components/src/components/StructuredMetadataTable/StructuredMetadataTable.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/StructuredMetadataTable/StructuredMetadataTable.tsx b/packages/core-components/src/components/StructuredMetadataTable/StructuredMetadataTable.tsx
index 916259042c..af56cb5b89 100644
--- a/packages/core-components/src/components/StructuredMetadataTable/StructuredMetadataTable.tsx
+++ b/packages/core-components/src/components/StructuredMetadataTable/StructuredMetadataTable.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/StructuredMetadataTable/index.tsx b/packages/core-components/src/components/StructuredMetadataTable/index.tsx
index 628f3395db..32ba94edd6 100644
--- a/packages/core-components/src/components/StructuredMetadataTable/index.tsx
+++ b/packages/core-components/src/components/StructuredMetadataTable/index.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/SupportButton/SupportButton.test.tsx b/packages/core-components/src/components/SupportButton/SupportButton.test.tsx
index 7c6cab99c1..341ed145a6 100644
--- a/packages/core-components/src/components/SupportButton/SupportButton.test.tsx
+++ b/packages/core-components/src/components/SupportButton/SupportButton.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/SupportButton/SupportButton.tsx b/packages/core-components/src/components/SupportButton/SupportButton.tsx
index 96cc308f74..2ffef89878 100644
--- a/packages/core-components/src/components/SupportButton/SupportButton.tsx
+++ b/packages/core-components/src/components/SupportButton/SupportButton.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/SupportButton/index.ts b/packages/core-components/src/components/SupportButton/index.ts
index e133900d0a..57e6103889 100644
--- a/packages/core-components/src/components/SupportButton/index.ts
+++ b/packages/core-components/src/components/SupportButton/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/TabbedLayout/RoutedTabs.test.tsx b/packages/core-components/src/components/TabbedLayout/RoutedTabs.test.tsx
index 549aa55eff..9b33304a95 100644
--- a/packages/core-components/src/components/TabbedLayout/RoutedTabs.test.tsx
+++ b/packages/core-components/src/components/TabbedLayout/RoutedTabs.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/TabbedLayout/RoutedTabs.tsx b/packages/core-components/src/components/TabbedLayout/RoutedTabs.tsx
index 8d32e63688..531262544c 100644
--- a/packages/core-components/src/components/TabbedLayout/RoutedTabs.tsx
+++ b/packages/core-components/src/components/TabbedLayout/RoutedTabs.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/TabbedLayout/TabbedLayout.stories.tsx b/packages/core-components/src/components/TabbedLayout/TabbedLayout.stories.tsx
index bf6175a9a2..9686409c43 100644
--- a/packages/core-components/src/components/TabbedLayout/TabbedLayout.stories.tsx
+++ b/packages/core-components/src/components/TabbedLayout/TabbedLayout.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/TabbedLayout/TabbedLayout.test.tsx b/packages/core-components/src/components/TabbedLayout/TabbedLayout.test.tsx
index 77230ab6cd..2bc60783d7 100644
--- a/packages/core-components/src/components/TabbedLayout/TabbedLayout.test.tsx
+++ b/packages/core-components/src/components/TabbedLayout/TabbedLayout.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/TabbedLayout/TabbedLayout.tsx b/packages/core-components/src/components/TabbedLayout/TabbedLayout.tsx
index 87f9473f15..f7671928f2 100644
--- a/packages/core-components/src/components/TabbedLayout/TabbedLayout.tsx
+++ b/packages/core-components/src/components/TabbedLayout/TabbedLayout.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/TabbedLayout/index.ts b/packages/core-components/src/components/TabbedLayout/index.ts
index fe72b199ec..af2fc1a20d 100644
--- a/packages/core-components/src/components/TabbedLayout/index.ts
+++ b/packages/core-components/src/components/TabbedLayout/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/TabbedLayout/types.ts b/packages/core-components/src/components/TabbedLayout/types.ts
index 24ee011933..b70ab3da0a 100644
--- a/packages/core-components/src/components/TabbedLayout/types.ts
+++ b/packages/core-components/src/components/TabbedLayout/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Table/Filters.tsx b/packages/core-components/src/components/Table/Filters.tsx
index 138fec4736..5e2611fba4 100644
--- a/packages/core-components/src/components/Table/Filters.tsx
+++ b/packages/core-components/src/components/Table/Filters.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Table/SubvalueCell.tsx b/packages/core-components/src/components/Table/SubvalueCell.tsx
index 944195a2db..1dab2e1f49 100644
--- a/packages/core-components/src/components/Table/SubvalueCell.tsx
+++ b/packages/core-components/src/components/Table/SubvalueCell.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Table/Table.stories.tsx b/packages/core-components/src/components/Table/Table.stories.tsx
index 518114463d..fd05235096 100644
--- a/packages/core-components/src/components/Table/Table.stories.tsx
+++ b/packages/core-components/src/components/Table/Table.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Table/Table.test.tsx b/packages/core-components/src/components/Table/Table.test.tsx
index 3ba1c12ebd..fb231fde31 100644
--- a/packages/core-components/src/components/Table/Table.test.tsx
+++ b/packages/core-components/src/components/Table/Table.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Table/Table.tsx b/packages/core-components/src/components/Table/Table.tsx
index 1dd09e7ab8..d8db602e93 100644
--- a/packages/core-components/src/components/Table/Table.tsx
+++ b/packages/core-components/src/components/Table/Table.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Table/index.ts b/packages/core-components/src/components/Table/index.ts
index 83432ffc70..f46aab42df 100644
--- a/packages/core-components/src/components/Table/index.ts
+++ b/packages/core-components/src/components/Table/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Tabs/Tab.test.tsx b/packages/core-components/src/components/Tabs/Tab.test.tsx
index df8540ff14..d30420ebb6 100644
--- a/packages/core-components/src/components/Tabs/Tab.test.tsx
+++ b/packages/core-components/src/components/Tabs/Tab.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Tabs/Tab.tsx b/packages/core-components/src/components/Tabs/Tab.tsx
index 93243b2900..7b284940f1 100644
--- a/packages/core-components/src/components/Tabs/Tab.tsx
+++ b/packages/core-components/src/components/Tabs/Tab.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Tabs/TabBar.tsx b/packages/core-components/src/components/Tabs/TabBar.tsx
index c874200161..a5f2d6b0d6 100644
--- a/packages/core-components/src/components/Tabs/TabBar.tsx
+++ b/packages/core-components/src/components/Tabs/TabBar.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Tabs/TabIcon.tsx b/packages/core-components/src/components/Tabs/TabIcon.tsx
index ffb2e12cbd..dde01835a3 100644
--- a/packages/core-components/src/components/Tabs/TabIcon.tsx
+++ b/packages/core-components/src/components/Tabs/TabIcon.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Tabs/TabPanel.tsx b/packages/core-components/src/components/Tabs/TabPanel.tsx
index 360893b7c4..b6dd4f9f91 100644
--- a/packages/core-components/src/components/Tabs/TabPanel.tsx
+++ b/packages/core-components/src/components/Tabs/TabPanel.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Tabs/Tabs.stories.tsx b/packages/core-components/src/components/Tabs/Tabs.stories.tsx
index 00819c44f1..4d4cad8757 100644
--- a/packages/core-components/src/components/Tabs/Tabs.stories.tsx
+++ b/packages/core-components/src/components/Tabs/Tabs.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Tabs/Tabs.tsx b/packages/core-components/src/components/Tabs/Tabs.tsx
index f34afc1350..c6e5ad765e 100644
--- a/packages/core-components/src/components/Tabs/Tabs.tsx
+++ b/packages/core-components/src/components/Tabs/Tabs.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Tabs/index.ts b/packages/core-components/src/components/Tabs/index.ts
index 76275f1d6b..ae9e0b7486 100644
--- a/packages/core-components/src/components/Tabs/index.ts
+++ b/packages/core-components/src/components/Tabs/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/Tabs/utils.ts b/packages/core-components/src/components/Tabs/utils.ts
index 8d6a3be5f3..80705fdfc0 100644
--- a/packages/core-components/src/components/Tabs/utils.ts
+++ b/packages/core-components/src/components/Tabs/utils.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/TrendLine/TrendLine.stories.tsx b/packages/core-components/src/components/TrendLine/TrendLine.stories.tsx
index 6a5f8564f7..03d227fad3 100644
--- a/packages/core-components/src/components/TrendLine/TrendLine.stories.tsx
+++ b/packages/core-components/src/components/TrendLine/TrendLine.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/TrendLine/TrendLine.test.tsx b/packages/core-components/src/components/TrendLine/TrendLine.test.tsx
index f3d658265b..eb22c80769 100644
--- a/packages/core-components/src/components/TrendLine/TrendLine.test.tsx
+++ b/packages/core-components/src/components/TrendLine/TrendLine.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/TrendLine/TrendLine.tsx b/packages/core-components/src/components/TrendLine/TrendLine.tsx
index 84024634d3..0cbc2ca9d7 100644
--- a/packages/core-components/src/components/TrendLine/TrendLine.tsx
+++ b/packages/core-components/src/components/TrendLine/TrendLine.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/TrendLine/index.ts b/packages/core-components/src/components/TrendLine/index.ts
index ed98e53389..dd6345cd6d 100644
--- a/packages/core-components/src/components/TrendLine/index.ts
+++ b/packages/core-components/src/components/TrendLine/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/WarningPanel/WarningPanel.stories.tsx b/packages/core-components/src/components/WarningPanel/WarningPanel.stories.tsx
index ef99a0fce4..d88e190910 100644
--- a/packages/core-components/src/components/WarningPanel/WarningPanel.stories.tsx
+++ b/packages/core-components/src/components/WarningPanel/WarningPanel.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/WarningPanel/WarningPanel.test.tsx b/packages/core-components/src/components/WarningPanel/WarningPanel.test.tsx
index 38ba4bff9b..36b5372900 100644
--- a/packages/core-components/src/components/WarningPanel/WarningPanel.test.tsx
+++ b/packages/core-components/src/components/WarningPanel/WarningPanel.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/WarningPanel/WarningPanel.tsx b/packages/core-components/src/components/WarningPanel/WarningPanel.tsx
index 3b280dea9d..c90874fba0 100644
--- a/packages/core-components/src/components/WarningPanel/WarningPanel.tsx
+++ b/packages/core-components/src/components/WarningPanel/WarningPanel.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/WarningPanel/index.ts b/packages/core-components/src/components/WarningPanel/index.ts
index 5cc9b8bb65..07f7acca42 100644
--- a/packages/core-components/src/components/WarningPanel/index.ts
+++ b/packages/core-components/src/components/WarningPanel/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/components/index.ts b/packages/core-components/src/components/index.ts
index 28b6f6637a..9f89a58248 100644
--- a/packages/core-components/src/components/index.ts
+++ b/packages/core-components/src/components/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/hooks/index.ts b/packages/core-components/src/hooks/index.ts
index 6408790b8d..07e585bf27 100644
--- a/packages/core-components/src/hooks/index.ts
+++ b/packages/core-components/src/hooks/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/hooks/useQueryParamState.ts b/packages/core-components/src/hooks/useQueryParamState.ts
index 173993a466..57fcdc22c0 100644
--- a/packages/core-components/src/hooks/useQueryParamState.ts
+++ b/packages/core-components/src/hooks/useQueryParamState.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/hooks/useSupportConfig.ts b/packages/core-components/src/hooks/useSupportConfig.ts
index 751d5a3b56..5bab9a3c6b 100644
--- a/packages/core-components/src/hooks/useSupportConfig.ts
+++ b/packages/core-components/src/hooks/useSupportConfig.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/icons/icons.tsx b/packages/core-components/src/icons/icons.tsx
index 59cec61523..258bc9f8e1 100644
--- a/packages/core-components/src/icons/icons.tsx
+++ b/packages/core-components/src/icons/icons.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/icons/index.ts b/packages/core-components/src/icons/index.ts
index ae2b076176..62873b4270 100644
--- a/packages/core-components/src/icons/index.ts
+++ b/packages/core-components/src/icons/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/index.ts b/packages/core-components/src/index.ts
index a41bd26c8f..e13c47b945 100644
--- a/packages/core-components/src/index.ts
+++ b/packages/core-components/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/BottomLink/BottomLink.test.tsx b/packages/core-components/src/layout/BottomLink/BottomLink.test.tsx
index 8bea00e35d..6eae7d2bef 100644
--- a/packages/core-components/src/layout/BottomLink/BottomLink.test.tsx
+++ b/packages/core-components/src/layout/BottomLink/BottomLink.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/BottomLink/BottomLink.tsx b/packages/core-components/src/layout/BottomLink/BottomLink.tsx
index f412dee674..f92f546809 100644
--- a/packages/core-components/src/layout/BottomLink/BottomLink.tsx
+++ b/packages/core-components/src/layout/BottomLink/BottomLink.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/BottomLink/index.ts b/packages/core-components/src/layout/BottomLink/index.ts
index 18befcc9bf..853c74c880 100644
--- a/packages/core-components/src/layout/BottomLink/index.ts
+++ b/packages/core-components/src/layout/BottomLink/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/Breadcrumbs/Breadcrumbs.stories.tsx b/packages/core-components/src/layout/Breadcrumbs/Breadcrumbs.stories.tsx
index 31ff2206f1..9716471d9f 100644
--- a/packages/core-components/src/layout/Breadcrumbs/Breadcrumbs.stories.tsx
+++ b/packages/core-components/src/layout/Breadcrumbs/Breadcrumbs.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/Breadcrumbs/Breadcrumbs.test.tsx b/packages/core-components/src/layout/Breadcrumbs/Breadcrumbs.test.tsx
index 2ce170d814..4c8d707501 100644
--- a/packages/core-components/src/layout/Breadcrumbs/Breadcrumbs.test.tsx
+++ b/packages/core-components/src/layout/Breadcrumbs/Breadcrumbs.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/Breadcrumbs/Breadcrumbs.tsx b/packages/core-components/src/layout/Breadcrumbs/Breadcrumbs.tsx
index a64b462377..418217f3b5 100644
--- a/packages/core-components/src/layout/Breadcrumbs/Breadcrumbs.tsx
+++ b/packages/core-components/src/layout/Breadcrumbs/Breadcrumbs.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/Breadcrumbs/index.ts b/packages/core-components/src/layout/Breadcrumbs/index.ts
index 6c5c2539df..31bae893a4 100644
--- a/packages/core-components/src/layout/Breadcrumbs/index.ts
+++ b/packages/core-components/src/layout/Breadcrumbs/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/Content/Content.tsx b/packages/core-components/src/layout/Content/Content.tsx
index bf305deaea..cb6a841cf3 100644
--- a/packages/core-components/src/layout/Content/Content.tsx
+++ b/packages/core-components/src/layout/Content/Content.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/Content/index.ts b/packages/core-components/src/layout/Content/index.ts
index d05ae0e787..a94ceabdfa 100644
--- a/packages/core-components/src/layout/Content/index.ts
+++ b/packages/core-components/src/layout/Content/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/ContentHeader/ContentHeader.test.tsx b/packages/core-components/src/layout/ContentHeader/ContentHeader.test.tsx
index b28ad614bf..498b859db1 100644
--- a/packages/core-components/src/layout/ContentHeader/ContentHeader.test.tsx
+++ b/packages/core-components/src/layout/ContentHeader/ContentHeader.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/ContentHeader/ContentHeader.tsx b/packages/core-components/src/layout/ContentHeader/ContentHeader.tsx
index 3ccf8f894c..1e2ad0b5d4 100644
--- a/packages/core-components/src/layout/ContentHeader/ContentHeader.tsx
+++ b/packages/core-components/src/layout/ContentHeader/ContentHeader.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/ContentHeader/index.ts b/packages/core-components/src/layout/ContentHeader/index.ts
index 18d03228a3..537a2b6ed9 100644
--- a/packages/core-components/src/layout/ContentHeader/index.ts
+++ b/packages/core-components/src/layout/ContentHeader/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/ErrorBoundary/ErrorBoundary.test.tsx b/packages/core-components/src/layout/ErrorBoundary/ErrorBoundary.test.tsx
index 4a3126c73c..1dbeeca8c6 100644
--- a/packages/core-components/src/layout/ErrorBoundary/ErrorBoundary.test.tsx
+++ b/packages/core-components/src/layout/ErrorBoundary/ErrorBoundary.test.tsx
@@ -1,6 +1,6 @@
/* eslint-disable no-console */
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/ErrorBoundary/ErrorBoundary.tsx b/packages/core-components/src/layout/ErrorBoundary/ErrorBoundary.tsx
index 88784dc8b0..4134808311 100644
--- a/packages/core-components/src/layout/ErrorBoundary/ErrorBoundary.tsx
+++ b/packages/core-components/src/layout/ErrorBoundary/ErrorBoundary.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/ErrorBoundary/index.ts b/packages/core-components/src/layout/ErrorBoundary/index.ts
index 607634e89a..47c1b2bace 100644
--- a/packages/core-components/src/layout/ErrorBoundary/index.ts
+++ b/packages/core-components/src/layout/ErrorBoundary/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/ErrorPage/ErrorPage.test.tsx b/packages/core-components/src/layout/ErrorPage/ErrorPage.test.tsx
index 23b42c0a11..a314128bce 100644
--- a/packages/core-components/src/layout/ErrorPage/ErrorPage.test.tsx
+++ b/packages/core-components/src/layout/ErrorPage/ErrorPage.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/ErrorPage/ErrorPage.tsx b/packages/core-components/src/layout/ErrorPage/ErrorPage.tsx
index 466c2f46b6..cca88147c4 100644
--- a/packages/core-components/src/layout/ErrorPage/ErrorPage.tsx
+++ b/packages/core-components/src/layout/ErrorPage/ErrorPage.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/ErrorPage/MicDrop.tsx b/packages/core-components/src/layout/ErrorPage/MicDrop.tsx
index aa8aaaf5e7..666eea4f09 100644
--- a/packages/core-components/src/layout/ErrorPage/MicDrop.tsx
+++ b/packages/core-components/src/layout/ErrorPage/MicDrop.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/ErrorPage/index.ts b/packages/core-components/src/layout/ErrorPage/index.ts
index 506ed1f815..a9a5fc9b2a 100644
--- a/packages/core-components/src/layout/ErrorPage/index.ts
+++ b/packages/core-components/src/layout/ErrorPage/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/Header/Header.stories.tsx b/packages/core-components/src/layout/Header/Header.stories.tsx
index db4ddac8ec..9fee6313e9 100644
--- a/packages/core-components/src/layout/Header/Header.stories.tsx
+++ b/packages/core-components/src/layout/Header/Header.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/Header/Header.test.tsx b/packages/core-components/src/layout/Header/Header.test.tsx
index a833f26939..69d46cd102 100644
--- a/packages/core-components/src/layout/Header/Header.test.tsx
+++ b/packages/core-components/src/layout/Header/Header.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/Header/Header.tsx b/packages/core-components/src/layout/Header/Header.tsx
index 1eadaddaf5..96d024f524 100644
--- a/packages/core-components/src/layout/Header/Header.tsx
+++ b/packages/core-components/src/layout/Header/Header.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/Header/index.ts b/packages/core-components/src/layout/Header/index.ts
index e0860413c9..2c322fe9c1 100644
--- a/packages/core-components/src/layout/Header/index.ts
+++ b/packages/core-components/src/layout/Header/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/HeaderActionMenu/HeaderActionMenu.test.tsx b/packages/core-components/src/layout/HeaderActionMenu/HeaderActionMenu.test.tsx
index 76ede5398d..b1bd398d15 100644
--- a/packages/core-components/src/layout/HeaderActionMenu/HeaderActionMenu.test.tsx
+++ b/packages/core-components/src/layout/HeaderActionMenu/HeaderActionMenu.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/HeaderActionMenu/HeaderActionMenu.tsx b/packages/core-components/src/layout/HeaderActionMenu/HeaderActionMenu.tsx
index 6f0b337b54..06a9b2b701 100644
--- a/packages/core-components/src/layout/HeaderActionMenu/HeaderActionMenu.tsx
+++ b/packages/core-components/src/layout/HeaderActionMenu/HeaderActionMenu.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/HeaderActionMenu/VerticalMenuIcon.tsx b/packages/core-components/src/layout/HeaderActionMenu/VerticalMenuIcon.tsx
index c9fde8cea2..a6a1d3a3d7 100644
--- a/packages/core-components/src/layout/HeaderActionMenu/VerticalMenuIcon.tsx
+++ b/packages/core-components/src/layout/HeaderActionMenu/VerticalMenuIcon.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/HeaderActionMenu/index.ts b/packages/core-components/src/layout/HeaderActionMenu/index.ts
index bb7fa80d59..22182a6a0e 100644
--- a/packages/core-components/src/layout/HeaderActionMenu/index.ts
+++ b/packages/core-components/src/layout/HeaderActionMenu/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/HeaderLabel/HeaderLabel.test.tsx b/packages/core-components/src/layout/HeaderLabel/HeaderLabel.test.tsx
index acadb22525..3dff1f51be 100644
--- a/packages/core-components/src/layout/HeaderLabel/HeaderLabel.test.tsx
+++ b/packages/core-components/src/layout/HeaderLabel/HeaderLabel.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/HeaderLabel/HeaderLabel.tsx b/packages/core-components/src/layout/HeaderLabel/HeaderLabel.tsx
index 914be06cf2..1534656f24 100644
--- a/packages/core-components/src/layout/HeaderLabel/HeaderLabel.tsx
+++ b/packages/core-components/src/layout/HeaderLabel/HeaderLabel.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/HeaderLabel/index.ts b/packages/core-components/src/layout/HeaderLabel/index.ts
index 683ec59784..cc803e7fde 100644
--- a/packages/core-components/src/layout/HeaderLabel/index.ts
+++ b/packages/core-components/src/layout/HeaderLabel/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/HeaderTabs/HeaderTabs.test.tsx b/packages/core-components/src/layout/HeaderTabs/HeaderTabs.test.tsx
index 763dc3ceee..e6762de90e 100644
--- a/packages/core-components/src/layout/HeaderTabs/HeaderTabs.test.tsx
+++ b/packages/core-components/src/layout/HeaderTabs/HeaderTabs.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/HeaderTabs/HeaderTabs.tsx b/packages/core-components/src/layout/HeaderTabs/HeaderTabs.tsx
index 1fd4a18ba3..46fe9f1569 100644
--- a/packages/core-components/src/layout/HeaderTabs/HeaderTabs.tsx
+++ b/packages/core-components/src/layout/HeaderTabs/HeaderTabs.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/HeaderTabs/index.tsx b/packages/core-components/src/layout/HeaderTabs/index.tsx
index 1097698265..e706f19bf6 100644
--- a/packages/core-components/src/layout/HeaderTabs/index.tsx
+++ b/packages/core-components/src/layout/HeaderTabs/index.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/HomepageTimer/HomepageTimer.test.tsx b/packages/core-components/src/layout/HomepageTimer/HomepageTimer.test.tsx
index e3ca55667c..eda877884e 100644
--- a/packages/core-components/src/layout/HomepageTimer/HomepageTimer.test.tsx
+++ b/packages/core-components/src/layout/HomepageTimer/HomepageTimer.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/HomepageTimer/HomepageTimer.tsx b/packages/core-components/src/layout/HomepageTimer/HomepageTimer.tsx
index d93d178486..04073cca48 100644
--- a/packages/core-components/src/layout/HomepageTimer/HomepageTimer.tsx
+++ b/packages/core-components/src/layout/HomepageTimer/HomepageTimer.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/HomepageTimer/index.ts b/packages/core-components/src/layout/HomepageTimer/index.ts
index facee1e982..bc004fc757 100644
--- a/packages/core-components/src/layout/HomepageTimer/index.ts
+++ b/packages/core-components/src/layout/HomepageTimer/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/InfoCard/InfoCard.stories.tsx b/packages/core-components/src/layout/InfoCard/InfoCard.stories.tsx
index 047f0f9321..cf012a129a 100644
--- a/packages/core-components/src/layout/InfoCard/InfoCard.stories.tsx
+++ b/packages/core-components/src/layout/InfoCard/InfoCard.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/InfoCard/InfoCard.test.tsx b/packages/core-components/src/layout/InfoCard/InfoCard.test.tsx
index f82d51fe06..479efe4fd4 100644
--- a/packages/core-components/src/layout/InfoCard/InfoCard.test.tsx
+++ b/packages/core-components/src/layout/InfoCard/InfoCard.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/InfoCard/InfoCard.tsx b/packages/core-components/src/layout/InfoCard/InfoCard.tsx
index 5bb3e19362..9a64bfa6f3 100644
--- a/packages/core-components/src/layout/InfoCard/InfoCard.tsx
+++ b/packages/core-components/src/layout/InfoCard/InfoCard.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/InfoCard/index.ts b/packages/core-components/src/layout/InfoCard/index.ts
index 35829662d0..cab443d9b2 100644
--- a/packages/core-components/src/layout/InfoCard/index.ts
+++ b/packages/core-components/src/layout/InfoCard/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/ItemCard/ItemCard.stories.tsx b/packages/core-components/src/layout/ItemCard/ItemCard.stories.tsx
index 56d2328454..7cd67ff00d 100644
--- a/packages/core-components/src/layout/ItemCard/ItemCard.stories.tsx
+++ b/packages/core-components/src/layout/ItemCard/ItemCard.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/ItemCard/ItemCard.test.tsx b/packages/core-components/src/layout/ItemCard/ItemCard.test.tsx
index 30cf95fd85..4375fb8181 100644
--- a/packages/core-components/src/layout/ItemCard/ItemCard.test.tsx
+++ b/packages/core-components/src/layout/ItemCard/ItemCard.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/ItemCard/ItemCard.tsx b/packages/core-components/src/layout/ItemCard/ItemCard.tsx
index 8c26e6a9f1..b4273ee837 100644
--- a/packages/core-components/src/layout/ItemCard/ItemCard.tsx
+++ b/packages/core-components/src/layout/ItemCard/ItemCard.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/ItemCard/ItemCardGrid.test.tsx b/packages/core-components/src/layout/ItemCard/ItemCardGrid.test.tsx
index 51ef8c544f..02c3bb3639 100644
--- a/packages/core-components/src/layout/ItemCard/ItemCardGrid.test.tsx
+++ b/packages/core-components/src/layout/ItemCard/ItemCardGrid.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/ItemCard/ItemCardGrid.tsx b/packages/core-components/src/layout/ItemCard/ItemCardGrid.tsx
index 551c3c67d5..815bfffa2c 100644
--- a/packages/core-components/src/layout/ItemCard/ItemCardGrid.tsx
+++ b/packages/core-components/src/layout/ItemCard/ItemCardGrid.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/ItemCard/ItemCardHeader.test.tsx b/packages/core-components/src/layout/ItemCard/ItemCardHeader.test.tsx
index ec9af6436e..41b150a900 100644
--- a/packages/core-components/src/layout/ItemCard/ItemCardHeader.test.tsx
+++ b/packages/core-components/src/layout/ItemCard/ItemCardHeader.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/ItemCard/ItemCardHeader.tsx b/packages/core-components/src/layout/ItemCard/ItemCardHeader.tsx
index ebf419cba0..6f8b17701d 100644
--- a/packages/core-components/src/layout/ItemCard/ItemCardHeader.tsx
+++ b/packages/core-components/src/layout/ItemCard/ItemCardHeader.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/ItemCard/index.ts b/packages/core-components/src/layout/ItemCard/index.ts
index da2c1dd546..7c4f77f43a 100644
--- a/packages/core-components/src/layout/ItemCard/index.ts
+++ b/packages/core-components/src/layout/ItemCard/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/Page/Page.stories.tsx b/packages/core-components/src/layout/Page/Page.stories.tsx
index 001c0ba853..0ea4303f2f 100644
--- a/packages/core-components/src/layout/Page/Page.stories.tsx
+++ b/packages/core-components/src/layout/Page/Page.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/Page/Page.tsx b/packages/core-components/src/layout/Page/Page.tsx
index 3f04948356..8acb54c268 100644
--- a/packages/core-components/src/layout/Page/Page.tsx
+++ b/packages/core-components/src/layout/Page/Page.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/Page/index.ts b/packages/core-components/src/layout/Page/index.ts
index 987aee5cdb..d2523e8467 100644
--- a/packages/core-components/src/layout/Page/index.ts
+++ b/packages/core-components/src/layout/Page/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/Sidebar/Bar.tsx b/packages/core-components/src/layout/Sidebar/Bar.tsx
index 260593de95..f6edac81b7 100644
--- a/packages/core-components/src/layout/Sidebar/Bar.tsx
+++ b/packages/core-components/src/layout/Sidebar/Bar.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/Sidebar/Intro.tsx b/packages/core-components/src/layout/Sidebar/Intro.tsx
index b95719c05f..1d46239865 100644
--- a/packages/core-components/src/layout/Sidebar/Intro.tsx
+++ b/packages/core-components/src/layout/Sidebar/Intro.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/Sidebar/Items.test.tsx b/packages/core-components/src/layout/Sidebar/Items.test.tsx
index fb0ee174f8..89d2a2c294 100644
--- a/packages/core-components/src/layout/Sidebar/Items.test.tsx
+++ b/packages/core-components/src/layout/Sidebar/Items.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/Sidebar/Items.tsx b/packages/core-components/src/layout/Sidebar/Items.tsx
index f839db56de..9bccffc6c4 100644
--- a/packages/core-components/src/layout/Sidebar/Items.tsx
+++ b/packages/core-components/src/layout/Sidebar/Items.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/Sidebar/Page.tsx b/packages/core-components/src/layout/Sidebar/Page.tsx
index 25717cb053..0ace7468ef 100644
--- a/packages/core-components/src/layout/Sidebar/Page.tsx
+++ b/packages/core-components/src/layout/Sidebar/Page.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/Sidebar/Sidebar.stories.tsx b/packages/core-components/src/layout/Sidebar/Sidebar.stories.tsx
index d4f1a7a96e..40921a8159 100644
--- a/packages/core-components/src/layout/Sidebar/Sidebar.stories.tsx
+++ b/packages/core-components/src/layout/Sidebar/Sidebar.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/Sidebar/config.ts b/packages/core-components/src/layout/Sidebar/config.ts
index 8ea6cc94f9..3d574d03bb 100644
--- a/packages/core-components/src/layout/Sidebar/config.ts
+++ b/packages/core-components/src/layout/Sidebar/config.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/Sidebar/index.ts b/packages/core-components/src/layout/Sidebar/index.ts
index 803306478d..fc0e29f9a6 100644
--- a/packages/core-components/src/layout/Sidebar/index.ts
+++ b/packages/core-components/src/layout/Sidebar/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/Sidebar/localStorage.test.ts b/packages/core-components/src/layout/Sidebar/localStorage.test.ts
index 0cfcac73c5..c115fa4e99 100644
--- a/packages/core-components/src/layout/Sidebar/localStorage.test.ts
+++ b/packages/core-components/src/layout/Sidebar/localStorage.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/Sidebar/localStorage.ts b/packages/core-components/src/layout/Sidebar/localStorage.ts
index 665c97423a..0e904ee319 100644
--- a/packages/core-components/src/layout/Sidebar/localStorage.ts
+++ b/packages/core-components/src/layout/Sidebar/localStorage.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/SignInPage/SignInPage.tsx b/packages/core-components/src/layout/SignInPage/SignInPage.tsx
index 3aec8997aa..1ccce80e59 100644
--- a/packages/core-components/src/layout/SignInPage/SignInPage.tsx
+++ b/packages/core-components/src/layout/SignInPage/SignInPage.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/SignInPage/auth0Provider.tsx b/packages/core-components/src/layout/SignInPage/auth0Provider.tsx
index c0c0ba8e09..f105cd4716 100644
--- a/packages/core-components/src/layout/SignInPage/auth0Provider.tsx
+++ b/packages/core-components/src/layout/SignInPage/auth0Provider.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/SignInPage/commonProvider.tsx b/packages/core-components/src/layout/SignInPage/commonProvider.tsx
index 389d8caa98..bd46e6fa58 100644
--- a/packages/core-components/src/layout/SignInPage/commonProvider.tsx
+++ b/packages/core-components/src/layout/SignInPage/commonProvider.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/SignInPage/customProvider.tsx b/packages/core-components/src/layout/SignInPage/customProvider.tsx
index 09ffcda10a..e8f7d03a1d 100644
--- a/packages/core-components/src/layout/SignInPage/customProvider.tsx
+++ b/packages/core-components/src/layout/SignInPage/customProvider.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/SignInPage/guestProvider.tsx b/packages/core-components/src/layout/SignInPage/guestProvider.tsx
index f4854311ac..8673c17ffa 100644
--- a/packages/core-components/src/layout/SignInPage/guestProvider.tsx
+++ b/packages/core-components/src/layout/SignInPage/guestProvider.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/SignInPage/index.ts b/packages/core-components/src/layout/SignInPage/index.ts
index b10ea7ae33..2e5502d7ea 100644
--- a/packages/core-components/src/layout/SignInPage/index.ts
+++ b/packages/core-components/src/layout/SignInPage/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/SignInPage/providers.tsx b/packages/core-components/src/layout/SignInPage/providers.tsx
index ab9daf373b..0f5d3daf2e 100644
--- a/packages/core-components/src/layout/SignInPage/providers.tsx
+++ b/packages/core-components/src/layout/SignInPage/providers.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/SignInPage/styles.tsx b/packages/core-components/src/layout/SignInPage/styles.tsx
index 0d8bd245c5..96559a4e78 100644
--- a/packages/core-components/src/layout/SignInPage/styles.tsx
+++ b/packages/core-components/src/layout/SignInPage/styles.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/SignInPage/types.ts b/packages/core-components/src/layout/SignInPage/types.ts
index 54385d05a3..1e4e4a2997 100644
--- a/packages/core-components/src/layout/SignInPage/types.ts
+++ b/packages/core-components/src/layout/SignInPage/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/TabbedCard/TabbedCard.stories.tsx b/packages/core-components/src/layout/TabbedCard/TabbedCard.stories.tsx
index 0a68b0b47b..3214d26653 100644
--- a/packages/core-components/src/layout/TabbedCard/TabbedCard.stories.tsx
+++ b/packages/core-components/src/layout/TabbedCard/TabbedCard.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/TabbedCard/TabbedCard.test.tsx b/packages/core-components/src/layout/TabbedCard/TabbedCard.test.tsx
index 097d81d570..5e0014c400 100644
--- a/packages/core-components/src/layout/TabbedCard/TabbedCard.test.tsx
+++ b/packages/core-components/src/layout/TabbedCard/TabbedCard.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/TabbedCard/TabbedCard.tsx b/packages/core-components/src/layout/TabbedCard/TabbedCard.tsx
index c9ae2eebc8..6204182cb1 100644
--- a/packages/core-components/src/layout/TabbedCard/TabbedCard.tsx
+++ b/packages/core-components/src/layout/TabbedCard/TabbedCard.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/TabbedCard/index.ts b/packages/core-components/src/layout/TabbedCard/index.ts
index 88d7782d55..f3e32be054 100644
--- a/packages/core-components/src/layout/TabbedCard/index.ts
+++ b/packages/core-components/src/layout/TabbedCard/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/layout/index.ts b/packages/core-components/src/layout/index.ts
index 2ab1ebaf5b..4abde642dc 100644
--- a/packages/core-components/src/layout/index.ts
+++ b/packages/core-components/src/layout/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-components/src/setupTests.ts b/packages/core-components/src/setupTests.ts
index 825bcd4115..963c0f188b 100644
--- a/packages/core-components/src/setupTests.ts
+++ b/packages/core-components/src/setupTests.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/api-report.md b/packages/core-plugin-api/api-report.md
index a6f196847a..90ea1f5e46 100644
--- a/packages/core-plugin-api/api-report.md
+++ b/packages/core-plugin-api/api-report.md
@@ -8,6 +8,7 @@ import { BackstageTheme } from '@backstage/theme';
import { ComponentType } from 'react';
import { Config } from '@backstage/config';
import { default as React_2 } from 'react';
+import { ReactElement } from 'react';
import { ReactNode } from 'react';
import { SvgIconProps } from '@material-ui/core';
@@ -227,6 +228,20 @@ export type DiscoveryApi = {
// @public (undocumented)
export const discoveryApiRef: ApiRef;
+// @public
+export interface ElementCollection {
+ findComponentData(query: {
+ key: string;
+ }): T[];
+ getElements(): Array>;
+ selectByComponentData(query: {
+ key: string;
+ withStrictError?: string;
+ }): ElementCollection;
+}
+
// @public
export type ErrorApi = {
post(error: Error_2, context?: ErrorContext): void;
@@ -514,6 +529,9 @@ export function useApiHolder(): ApiHolder;
// @public (undocumented)
export const useApp: () => AppContext;
+// @public
+export function useElementFilter(node: ReactNode, filterFn: (arg: ElementCollection) => T, dependencies?: any[]): T;
+
// @public (undocumented)
export type UserFlags = {};
diff --git a/packages/core-plugin-api/package.json b/packages/core-plugin-api/package.json
index 816727ed9e..48706a5877 100644
--- a/packages/core-plugin-api/package.json
+++ b/packages/core-plugin-api/package.json
@@ -42,6 +42,7 @@
},
"devDependencies": {
"@backstage/cli": "^0.7.0",
+ "@backstage/core-app-api": "^0.1.2",
"@backstage/test-utils": "^0.1.13",
"@backstage/test-utils-core": "^0.1.1",
"@testing-library/jest-dom": "^5.10.1",
diff --git a/packages/core-plugin-api/src/apis/definitions/AlertApi.ts b/packages/core-plugin-api/src/apis/definitions/AlertApi.ts
index 36bc1b5596..aac2283973 100644
--- a/packages/core-plugin-api/src/apis/definitions/AlertApi.ts
+++ b/packages/core-plugin-api/src/apis/definitions/AlertApi.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/apis/definitions/AppThemeApi.ts b/packages/core-plugin-api/src/apis/definitions/AppThemeApi.ts
index df58c3977e..3ff9ddce98 100644
--- a/packages/core-plugin-api/src/apis/definitions/AppThemeApi.ts
+++ b/packages/core-plugin-api/src/apis/definitions/AppThemeApi.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/apis/definitions/ConfigApi.ts b/packages/core-plugin-api/src/apis/definitions/ConfigApi.ts
index 6fdd180a6f..08b9f91f57 100644
--- a/packages/core-plugin-api/src/apis/definitions/ConfigApi.ts
+++ b/packages/core-plugin-api/src/apis/definitions/ConfigApi.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/apis/definitions/DiscoveryApi.ts b/packages/core-plugin-api/src/apis/definitions/DiscoveryApi.ts
index 6e11c06ce5..7082cda9dc 100644
--- a/packages/core-plugin-api/src/apis/definitions/DiscoveryApi.ts
+++ b/packages/core-plugin-api/src/apis/definitions/DiscoveryApi.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/apis/definitions/ErrorApi.ts b/packages/core-plugin-api/src/apis/definitions/ErrorApi.ts
index ffbfa67924..dc63e28e1a 100644
--- a/packages/core-plugin-api/src/apis/definitions/ErrorApi.ts
+++ b/packages/core-plugin-api/src/apis/definitions/ErrorApi.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/apis/definitions/FeatureFlagsApi.ts b/packages/core-plugin-api/src/apis/definitions/FeatureFlagsApi.ts
index 66a39aa1b1..07797bf3f1 100644
--- a/packages/core-plugin-api/src/apis/definitions/FeatureFlagsApi.ts
+++ b/packages/core-plugin-api/src/apis/definitions/FeatureFlagsApi.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/apis/definitions/IdentityApi.ts b/packages/core-plugin-api/src/apis/definitions/IdentityApi.ts
index a0cfde537a..9d7131fed6 100644
--- a/packages/core-plugin-api/src/apis/definitions/IdentityApi.ts
+++ b/packages/core-plugin-api/src/apis/definitions/IdentityApi.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/apis/definitions/OAuthRequestApi.ts b/packages/core-plugin-api/src/apis/definitions/OAuthRequestApi.ts
index 8b33ee394b..3fe7f26bc0 100644
--- a/packages/core-plugin-api/src/apis/definitions/OAuthRequestApi.ts
+++ b/packages/core-plugin-api/src/apis/definitions/OAuthRequestApi.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/apis/definitions/StorageApi.ts b/packages/core-plugin-api/src/apis/definitions/StorageApi.ts
index 404de3697b..9332c80f0f 100644
--- a/packages/core-plugin-api/src/apis/definitions/StorageApi.ts
+++ b/packages/core-plugin-api/src/apis/definitions/StorageApi.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/apis/definitions/auth.ts b/packages/core-plugin-api/src/apis/definitions/auth.ts
index 14e402a3c0..c786b43fc3 100644
--- a/packages/core-plugin-api/src/apis/definitions/auth.ts
+++ b/packages/core-plugin-api/src/apis/definitions/auth.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/apis/definitions/index.ts b/packages/core-plugin-api/src/apis/definitions/index.ts
index e29d1022c4..d4350ddbf6 100644
--- a/packages/core-plugin-api/src/apis/definitions/index.ts
+++ b/packages/core-plugin-api/src/apis/definitions/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/apis/index.ts b/packages/core-plugin-api/src/apis/index.ts
index 3cce4b982a..15058e2c49 100644
--- a/packages/core-plugin-api/src/apis/index.ts
+++ b/packages/core-plugin-api/src/apis/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/apis/system/ApiRef.test.ts b/packages/core-plugin-api/src/apis/system/ApiRef.test.ts
index b0535e954c..dab872236f 100644
--- a/packages/core-plugin-api/src/apis/system/ApiRef.test.ts
+++ b/packages/core-plugin-api/src/apis/system/ApiRef.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/apis/system/ApiRef.ts b/packages/core-plugin-api/src/apis/system/ApiRef.ts
index 397402cdc3..37678ed079 100644
--- a/packages/core-plugin-api/src/apis/system/ApiRef.ts
+++ b/packages/core-plugin-api/src/apis/system/ApiRef.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/apis/system/helpers.ts b/packages/core-plugin-api/src/apis/system/helpers.ts
index cabff73060..8e84dd6c09 100644
--- a/packages/core-plugin-api/src/apis/system/helpers.ts
+++ b/packages/core-plugin-api/src/apis/system/helpers.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/apis/system/index.ts b/packages/core-plugin-api/src/apis/system/index.ts
index 8b8dfff80b..ceada1ebd7 100644
--- a/packages/core-plugin-api/src/apis/system/index.ts
+++ b/packages/core-plugin-api/src/apis/system/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/apis/system/types.ts b/packages/core-plugin-api/src/apis/system/types.ts
index 17f3fe276b..e805b6f255 100644
--- a/packages/core-plugin-api/src/apis/system/types.ts
+++ b/packages/core-plugin-api/src/apis/system/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/apis/system/useApi.test.tsx b/packages/core-plugin-api/src/apis/system/useApi.test.tsx
index 563ae8bc29..b23e44b815 100644
--- a/packages/core-plugin-api/src/apis/system/useApi.test.tsx
+++ b/packages/core-plugin-api/src/apis/system/useApi.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/apis/system/useApi.tsx b/packages/core-plugin-api/src/apis/system/useApi.tsx
index a0a40085cd..eae6b98654 100644
--- a/packages/core-plugin-api/src/apis/system/useApi.tsx
+++ b/packages/core-plugin-api/src/apis/system/useApi.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/app/index.ts b/packages/core-plugin-api/src/app/index.ts
index 3079aef415..bd806910ae 100644
--- a/packages/core-plugin-api/src/app/index.ts
+++ b/packages/core-plugin-api/src/app/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/app/types.ts b/packages/core-plugin-api/src/app/types.ts
index 26e264983c..8b07d699ee 100644
--- a/packages/core-plugin-api/src/app/types.ts
+++ b/packages/core-plugin-api/src/app/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/app/useApp.test.tsx b/packages/core-plugin-api/src/app/useApp.test.tsx
index 037963670c..12b315ae87 100644
--- a/packages/core-plugin-api/src/app/useApp.test.tsx
+++ b/packages/core-plugin-api/src/app/useApp.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/app/useApp.tsx b/packages/core-plugin-api/src/app/useApp.tsx
index 8979155366..1d17fb2d0f 100644
--- a/packages/core-plugin-api/src/app/useApp.tsx
+++ b/packages/core-plugin-api/src/app/useApp.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/extensions/PluginErrorBoundary.tsx b/packages/core-plugin-api/src/extensions/PluginErrorBoundary.tsx
index e33d9dcb43..215ebc8470 100644
--- a/packages/core-plugin-api/src/extensions/PluginErrorBoundary.tsx
+++ b/packages/core-plugin-api/src/extensions/PluginErrorBoundary.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/extensions/componentData.test.tsx b/packages/core-plugin-api/src/extensions/componentData.test.tsx
index 6c4abda40f..49a1d59cc4 100644
--- a/packages/core-plugin-api/src/extensions/componentData.test.tsx
+++ b/packages/core-plugin-api/src/extensions/componentData.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/extensions/componentData.tsx b/packages/core-plugin-api/src/extensions/componentData.tsx
index f835ad38a8..85527950ab 100644
--- a/packages/core-plugin-api/src/extensions/componentData.tsx
+++ b/packages/core-plugin-api/src/extensions/componentData.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/extensions/extensions.test.tsx b/packages/core-plugin-api/src/extensions/extensions.test.tsx
index 798d3c8fc2..e8b9d9c534 100644
--- a/packages/core-plugin-api/src/extensions/extensions.test.tsx
+++ b/packages/core-plugin-api/src/extensions/extensions.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/extensions/extensions.tsx b/packages/core-plugin-api/src/extensions/extensions.tsx
index 349f44726f..5142dccc55 100644
--- a/packages/core-plugin-api/src/extensions/extensions.tsx
+++ b/packages/core-plugin-api/src/extensions/extensions.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/extensions/index.ts b/packages/core-plugin-api/src/extensions/index.ts
index 26a0c597b1..39db17311a 100644
--- a/packages/core-plugin-api/src/extensions/index.ts
+++ b/packages/core-plugin-api/src/extensions/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -20,3 +20,5 @@ export {
createRoutableExtension,
createComponentExtension,
} from './extensions';
+export { useElementFilter } from './useElementFilter';
+export type { ElementCollection } from './useElementFilter';
diff --git a/packages/core-plugin-api/src/extensions/useElementFilter.test.tsx b/packages/core-plugin-api/src/extensions/useElementFilter.test.tsx
new file mode 100644
index 0000000000..dc5e0046f1
--- /dev/null
+++ b/packages/core-plugin-api/src/extensions/useElementFilter.test.tsx
@@ -0,0 +1,377 @@
+/*
+ * Copyright 2021 The Backstage Authors
+ *
+ * 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.
+ */
+import React, { ReactNode } from 'react';
+import { useElementFilter } from './useElementFilter';
+import { renderHook } from '@testing-library/react-hooks';
+import { attachComponentData } from './componentData';
+import { featureFlagsApiRef } from '../apis';
+import {
+ ApiProvider,
+ ApiRegistry,
+ LocalStorageFeatureFlags,
+} from '@backstage/core-app-api';
+
+const WRAPPING_COMPONENT_KEY = 'core.blob.testing';
+const INNER_COMPONENT_KEY = 'core.blob2.testing';
+
+const WrappingComponent = (_props: { children: ReactNode }) => null;
+attachComponentData(WrappingComponent, WRAPPING_COMPONENT_KEY, {
+ message: 'hey! im wrapping component data',
+});
+const InnerComponent = () => null;
+attachComponentData(InnerComponent, INNER_COMPONENT_KEY, {
+ message: 'hey! im the inner component',
+});
+const MockComponent = (_props: { children: ReactNode }) => null;
+
+const FeatureFlagComponent = (_props: {
+ children: ReactNode;
+ with?: string;
+ without?: string;
+}) => null;
+attachComponentData(FeatureFlagComponent, 'core.featureFlagged', true);
+const mockFeatureFlagsApi = new LocalStorageFeatureFlags();
+const Wrapper = ({ children }: { children?: React.ReactNode }) => (
+
+ {children}
+
+);
+
+describe('useElementFilter', () => {
+ it('should select elements based on a component data key', () => {
+ const tree = (
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+
+ const { result } = renderHook(
+ props =>
+ useElementFilter(props.tree, elements =>
+ elements
+ .selectByComponentData({ key: WRAPPING_COMPONENT_KEY })
+ .getElements(),
+ ),
+ {
+ initialProps: { tree },
+ wrapper: Wrapper,
+ },
+ );
+
+ expect(result.current.length).toBe(2);
+ expect(result.current[0].key).toBe('.$.$first');
+ expect(result.current[1].key).toBe('.$.$second');
+ });
+
+ it('should find componentData', () => {
+ const tree = (
+
+
+
+
+
+
+
+
+
+
+ );
+
+ const { result } = renderHook(
+ props =>
+ useElementFilter(props.tree, elements =>
+ elements.findComponentData({ key: WRAPPING_COMPONENT_KEY }),
+ ),
+ {
+ initialProps: { tree },
+ wrapper: Wrapper,
+ },
+ );
+
+ expect(result.current.length).toBe(2);
+ expect(result.current[0]).toEqual({
+ message: 'hey! im wrapping component data',
+ });
+ expect(result.current[1]).toEqual({
+ message: 'hey! im wrapping component data',
+ });
+ });
+
+ it('can be combined to together to filter the selection', () => {
+ const tree = (
+
+
+
+
+
+
+
+
+
+
+
+ );
+
+ const { result } = renderHook(
+ props =>
+ useElementFilter(props.tree, elements =>
+ elements
+ .selectByComponentData({ key: WRAPPING_COMPONENT_KEY })
+ .findComponentData({ key: INNER_COMPONENT_KEY }),
+ ),
+ {
+ initialProps: { tree },
+ wrapper: Wrapper,
+ },
+ );
+
+ expect(result.current.length).toBe(2);
+ expect(result.current[0]).toEqual({
+ message: 'hey! im the inner component',
+ });
+ expect(result.current[1]).toEqual({
+ message: 'hey! im the inner component',
+ });
+ });
+
+ describe('FeatureFlags', () => {
+ describe('with', () => {
+ it('should not discover deeper than the feature gate if the feature flag is disabled', () => {
+ jest
+ .spyOn(mockFeatureFlagsApi, 'isActive')
+ .mockImplementation(() => false);
+ const tree = (
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+
+ const { result } = renderHook(
+ props =>
+ useElementFilter(props.tree, elements =>
+ elements
+ .selectByComponentData({ key: WRAPPING_COMPONENT_KEY })
+ .getElements(),
+ ),
+ {
+ initialProps: { tree },
+ wrapper: Wrapper,
+ },
+ );
+
+ expect(result.current.length).toBe(1);
+ expect(result.current[0].key).toContain('second');
+ });
+
+ it('should discover components behind a feature flag if the flag is enabled', () => {
+ jest
+ .spyOn(mockFeatureFlagsApi, 'isActive')
+ .mockImplementation(() => true);
+ const tree = (
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+
+ const { result } = renderHook(
+ props =>
+ useElementFilter(props.tree, elements =>
+ elements
+ .selectByComponentData({ key: WRAPPING_COMPONENT_KEY })
+ .getElements(),
+ ),
+ {
+ initialProps: { tree },
+ wrapper: Wrapper,
+ },
+ );
+
+ expect(result.current.length).toBe(2);
+ });
+ });
+
+ describe('without', () => {
+ it('should discover deeper than the feature gate if the feature flag is disabled', () => {
+ jest
+ .spyOn(mockFeatureFlagsApi, 'isActive')
+ .mockImplementation(() => false);
+ const tree = (
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+
+ const { result } = renderHook(
+ props =>
+ useElementFilter(props.tree, elements =>
+ elements
+ .selectByComponentData({ key: WRAPPING_COMPONENT_KEY })
+ .getElements(),
+ ),
+ {
+ initialProps: { tree },
+ wrapper: Wrapper,
+ },
+ );
+
+ expect(result.current.length).toBe(2);
+ });
+
+ it('should not discover components behind a feature flag if the flag is enabled', () => {
+ jest
+ .spyOn(mockFeatureFlagsApi, 'isActive')
+ .mockImplementation(() => true);
+ const tree = (
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+
+ const { result } = renderHook(
+ props =>
+ useElementFilter(props.tree, elements =>
+ elements
+ .selectByComponentData({ key: WRAPPING_COMPONENT_KEY })
+ .getElements(),
+ ),
+ {
+ initialProps: { tree },
+ wrapper: Wrapper,
+ },
+ );
+
+ expect(result.current.length).toBe(1);
+ });
+ });
+ });
+
+ it('should reject when strict mode is enabled with the correct string', () => {
+ const tree = (
+
+ Hello
+
+ );
+
+ const { result } = renderHook(
+ props =>
+ useElementFilter(props.tree, elements =>
+ elements
+ .selectByComponentData({
+ key: WRAPPING_COMPONENT_KEY,
+ withStrictError: 'Could not find component',
+ })
+ .findComponentData({ key: INNER_COMPONENT_KEY }),
+ ),
+ {
+ initialProps: { tree },
+ wrapper: Wrapper,
+ },
+ );
+
+ expect(result.error.message).toEqual('Could not find component');
+ });
+
+ it('should support fragments and text node iteration', () => {
+ jest.spyOn(mockFeatureFlagsApi, 'isActive').mockImplementation(() => true);
+ const tree = (
+ <>
+
+ <>
+
+
+
+
+
+ >
+
+ hello my name
+ <>
+
+
+
+ >
+
+ is text
+
+
+ >
+ );
+
+ const { result } = renderHook(
+ props =>
+ useElementFilter(props.tree, elements =>
+ elements
+ .selectByComponentData({ key: WRAPPING_COMPONENT_KEY })
+ .getElements(),
+ ),
+ {
+ initialProps: { tree },
+ wrapper: Wrapper,
+ },
+ );
+
+ expect(result.current.length).toBe(2);
+ });
+});
diff --git a/packages/core-plugin-api/src/extensions/useElementFilter.tsx b/packages/core-plugin-api/src/extensions/useElementFilter.tsx
new file mode 100644
index 0000000000..7efdd949b2
--- /dev/null
+++ b/packages/core-plugin-api/src/extensions/useElementFilter.tsx
@@ -0,0 +1,188 @@
+/*
+ * Copyright 2021 The Backstage Authors
+ *
+ * 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.
+ */
+import {
+ Children,
+ Fragment,
+ isValidElement,
+ ReactNode,
+ ReactElement,
+ useMemo,
+} from 'react';
+import { getComponentData } from './componentData';
+import { useApi, FeatureFlagsApi, featureFlagsApiRef } from '../apis';
+
+function selectChildren(
+ rootNode: ReactNode,
+ featureFlagsApi: FeatureFlagsApi,
+ selector?: (element: ReactElement) => boolean,
+ strictError?: string,
+): Array> {
+ return Children.toArray(rootNode).flatMap(node => {
+ if (!isValidElement(node)) {
+ return [];
+ }
+
+ if (node.type === Fragment) {
+ return selectChildren(
+ node.props.children,
+ featureFlagsApi,
+ selector,
+ strictError,
+ );
+ }
+
+ if (getComponentData(node, 'core.featureFlagged')) {
+ const props = node.props as { with: string } | { without: string };
+ const isEnabled =
+ 'with' in props
+ ? featureFlagsApi.isActive(props.with)
+ : !featureFlagsApi.isActive(props.without);
+ if (isEnabled) {
+ return selectChildren(
+ node.props.children,
+ featureFlagsApi,
+ selector,
+ strictError,
+ );
+ }
+ return [];
+ }
+
+ if (selector === undefined || selector(node)) {
+ return [node];
+ }
+
+ if (strictError) {
+ throw new Error(strictError);
+ }
+
+ return selectChildren(
+ node.props.children,
+ featureFlagsApi,
+ selector,
+ strictError,
+ );
+ });
+}
+
+/**
+ * A querying interface tailored to traversing a set of selected React elements
+ * and extracting data.
+ *
+ * Methods prefixed with `selectBy` are used to narrow the set of selected elements.
+ *
+ * Methods prefixed with `find` return concrete data using a deep traversal of the set.
+ *
+ * Methods prefixed with `get` return concrete data using a shallow traversal of the set.
+ */
+export interface ElementCollection {
+ /**
+ * Narrows the set of selected components by doing a deep traversal and
+ * only including those that have defined component data for the given `key`.
+ *
+ * Whether an element in the tree has component data set for the given key
+ * is determined by whether `getComponentData` returns undefined.
+ *
+ * The traversal does not continue deeper past elements that match the criteria,
+ * and it also includes the root children in the selection, meaning that if the,
+ * of all the currently selected elements contain data for the given key, this
+ * method is a no-op.
+ *
+ * If `withStrictError` is set, the resulting selection must be a full match, meaning
+ * there may be no elements that were excluded in the selection. If the selection
+ * is not a clean match, an error will be throw with `withStrictError` as the message.
+ */
+ selectByComponentData(query: {
+ key: string;
+ withStrictError?: string;
+ }): ElementCollection;
+
+ /**
+ * Finds all elements using the same criteria as `selectByComponentData`, but
+ * returns the actual component data of each of those elements instead.
+ */
+ findComponentData(query: { key: string }): T[];
+
+ /**
+ * Returns all of the elements currently selected by this collection.
+ */
+ getElements(): Array<
+ ReactElement
+ >;
+}
+
+class Collection implements ElementCollection {
+ constructor(
+ private readonly node: ReactNode,
+ private readonly featureFlagsApi: FeatureFlagsApi,
+ ) {}
+
+ selectByComponentData(query: { key: string; withStrictError?: string }) {
+ const selection = selectChildren(
+ this.node,
+ this.featureFlagsApi,
+ node => getComponentData(node, query.key) !== undefined,
+ query.withStrictError,
+ );
+ return new Collection(selection, this.featureFlagsApi);
+ }
+
+ findComponentData(query: { key: string }): T[] {
+ const selection = selectChildren(
+ this.node,
+ this.featureFlagsApi,
+ node => getComponentData(node, query.key) !== undefined,
+ );
+ return selection
+ .map(node => getComponentData(node, query.key))
+ .filter((data: T | undefined): data is T => data !== undefined);
+ }
+
+ getElements(): Array<
+ ReactElement
+ > {
+ return selectChildren(this.node, this.featureFlagsApi) as Array<
+ ReactElement
+ >;
+ }
+}
+
+/**
+ * useElementFilter is a utility that helps you narrow down and retrieve data
+ * from a React element tree, typically operating on the `children` property
+ * passed in to a component. A common use-case is to construct declarative APIs
+ * where a React component defines its behavior based on its children, such as
+ * the relationship between `Routes` and `Route` in `react-router`.
+ *
+ * The purpose of this hook is similar to `React.Children.map`, and it expands upon
+ * it to also handle traversal of fragments and Backstage specific things like the
+ * `FeatureFlagged` component.
+ *
+ * The return value of the hook is computed by the provided filter function, but
+ * with added memoization based on the input `node`. If further memoization
+ * dependencies are used in the filter function, they should be added to the
+ * third `dependencies` argument, just like `useMemo`, `useEffect`, etc.
+ */
+export function useElementFilter(
+ node: ReactNode,
+ filterFn: (arg: ElementCollection) => T,
+ dependencies: any[] = [],
+) {
+ const featureFlagsApi = useApi(featureFlagsApiRef);
+ const elements = new Collection(node, featureFlagsApi);
+ // eslint-disable-next-line react-hooks/exhaustive-deps
+ return useMemo(() => filterFn(elements), [node, ...dependencies]);
+}
diff --git a/packages/core-plugin-api/src/icons/index.ts b/packages/core-plugin-api/src/icons/index.ts
index 953c6ef1ed..9c9e45e54c 100644
--- a/packages/core-plugin-api/src/icons/index.ts
+++ b/packages/core-plugin-api/src/icons/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/icons/types.ts b/packages/core-plugin-api/src/icons/types.ts
index 53743edc59..ccc1c337e7 100644
--- a/packages/core-plugin-api/src/icons/types.ts
+++ b/packages/core-plugin-api/src/icons/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/index.test.ts b/packages/core-plugin-api/src/index.test.ts
index 9414a6b730..ebab471c54 100644
--- a/packages/core-plugin-api/src/index.test.ts
+++ b/packages/core-plugin-api/src/index.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -40,6 +40,7 @@ describe('index', () => {
useApi: expect.any(Function),
useApiHolder: expect.any(Function),
useApp: expect.any(Function),
+ useElementFilter: expect.any(Function),
useRouteRef: expect.any(Function),
useRouteRefParams: expect.any(Function),
withApis: expect.any(Function),
diff --git a/packages/core-plugin-api/src/index.ts b/packages/core-plugin-api/src/index.ts
index f91d97c31d..28b078357d 100644
--- a/packages/core-plugin-api/src/index.ts
+++ b/packages/core-plugin-api/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/lib/globalObject.test.ts b/packages/core-plugin-api/src/lib/globalObject.test.ts
index 2bf07b3142..13634f1f08 100644
--- a/packages/core-plugin-api/src/lib/globalObject.test.ts
+++ b/packages/core-plugin-api/src/lib/globalObject.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/lib/globalObject.ts b/packages/core-plugin-api/src/lib/globalObject.ts
index 5bd1809147..7a400148fb 100644
--- a/packages/core-plugin-api/src/lib/globalObject.ts
+++ b/packages/core-plugin-api/src/lib/globalObject.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/lib/versionedValues.ts b/packages/core-plugin-api/src/lib/versionedValues.ts
index bc80425edd..a7b7d8e3b7 100644
--- a/packages/core-plugin-api/src/lib/versionedValues.ts
+++ b/packages/core-plugin-api/src/lib/versionedValues.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/plugin/Plugin.tsx b/packages/core-plugin-api/src/plugin/Plugin.tsx
index 428d9d9d48..abf4bfa35c 100644
--- a/packages/core-plugin-api/src/plugin/Plugin.tsx
+++ b/packages/core-plugin-api/src/plugin/Plugin.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/plugin/index.ts b/packages/core-plugin-api/src/plugin/index.ts
index 860aad3d1d..321ae6998a 100644
--- a/packages/core-plugin-api/src/plugin/index.ts
+++ b/packages/core-plugin-api/src/plugin/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/plugin/types.ts b/packages/core-plugin-api/src/plugin/types.ts
index 55cac1cc6d..23ff4594a5 100644
--- a/packages/core-plugin-api/src/plugin/types.ts
+++ b/packages/core-plugin-api/src/plugin/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/routing/ExternalRouteRef.test.ts b/packages/core-plugin-api/src/routing/ExternalRouteRef.test.ts
index 68dbc531c4..f6e072f760 100644
--- a/packages/core-plugin-api/src/routing/ExternalRouteRef.test.ts
+++ b/packages/core-plugin-api/src/routing/ExternalRouteRef.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/routing/ExternalRouteRef.ts b/packages/core-plugin-api/src/routing/ExternalRouteRef.ts
index c2b1fd2a03..348c78220f 100644
--- a/packages/core-plugin-api/src/routing/ExternalRouteRef.ts
+++ b/packages/core-plugin-api/src/routing/ExternalRouteRef.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/routing/RouteRef.test.ts b/packages/core-plugin-api/src/routing/RouteRef.test.ts
index db42f71730..5314957a25 100644
--- a/packages/core-plugin-api/src/routing/RouteRef.test.ts
+++ b/packages/core-plugin-api/src/routing/RouteRef.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/routing/RouteRef.ts b/packages/core-plugin-api/src/routing/RouteRef.ts
index fa4c936bff..0239b57c25 100644
--- a/packages/core-plugin-api/src/routing/RouteRef.ts
+++ b/packages/core-plugin-api/src/routing/RouteRef.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/routing/SubRouteRef.test.ts b/packages/core-plugin-api/src/routing/SubRouteRef.test.ts
index 2c2eb2ac7e..cec00de025 100644
--- a/packages/core-plugin-api/src/routing/SubRouteRef.test.ts
+++ b/packages/core-plugin-api/src/routing/SubRouteRef.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/routing/SubRouteRef.ts b/packages/core-plugin-api/src/routing/SubRouteRef.ts
index ca5d060164..f7e5cf0bc5 100644
--- a/packages/core-plugin-api/src/routing/SubRouteRef.ts
+++ b/packages/core-plugin-api/src/routing/SubRouteRef.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/routing/index.ts b/packages/core-plugin-api/src/routing/index.ts
index 4e272910ba..79158d2cdc 100644
--- a/packages/core-plugin-api/src/routing/index.ts
+++ b/packages/core-plugin-api/src/routing/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/routing/types.ts b/packages/core-plugin-api/src/routing/types.ts
index 0e1c817a39..9ea1e3ff0d 100644
--- a/packages/core-plugin-api/src/routing/types.ts
+++ b/packages/core-plugin-api/src/routing/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/routing/useRouteRef.test.tsx b/packages/core-plugin-api/src/routing/useRouteRef.test.tsx
index 2fa9bb3137..ace2d1a58a 100644
--- a/packages/core-plugin-api/src/routing/useRouteRef.test.tsx
+++ b/packages/core-plugin-api/src/routing/useRouteRef.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/routing/useRouteRef.tsx b/packages/core-plugin-api/src/routing/useRouteRef.tsx
index 8cd4082e70..4447759b99 100644
--- a/packages/core-plugin-api/src/routing/useRouteRef.tsx
+++ b/packages/core-plugin-api/src/routing/useRouteRef.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/routing/useRouteRefParams.test.tsx b/packages/core-plugin-api/src/routing/useRouteRefParams.test.tsx
index 7c847f95c6..430dc746a5 100644
--- a/packages/core-plugin-api/src/routing/useRouteRefParams.test.tsx
+++ b/packages/core-plugin-api/src/routing/useRouteRefParams.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/routing/useRouteRefParams.ts b/packages/core-plugin-api/src/routing/useRouteRefParams.ts
index 7df44eedff..a61df97cf5 100644
--- a/packages/core-plugin-api/src/routing/useRouteRefParams.ts
+++ b/packages/core-plugin-api/src/routing/useRouteRefParams.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/setupTests.ts b/packages/core-plugin-api/src/setupTests.ts
index aea2220869..c1d649f2ad 100644
--- a/packages/core-plugin-api/src/setupTests.ts
+++ b/packages/core-plugin-api/src/setupTests.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core-plugin-api/src/types.ts b/packages/core-plugin-api/src/types.ts
index ab0aa56a1b..fff4cb1515 100644
--- a/packages/core-plugin-api/src/types.ts
+++ b/packages/core-plugin-api/src/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/CHANGELOG.md b/packages/core/CHANGELOG.md
index d06dbab3d5..359573ef01 100644
--- a/packages/core/CHANGELOG.md
+++ b/packages/core/CHANGELOG.md
@@ -1,5 +1,11 @@
# @backstage/core
+## 0.7.13
+
+### Patch Changes
+
+- d4644f592: Use the Backstage `Link` component in the `Button`
+
## 0.7.12
### Patch Changes
diff --git a/packages/core/config.d.ts b/packages/core/config.d.ts
index 0e1d531226..d88c818d11 100644
--- a/packages/core/config.d.ts
+++ b/packages/core/config.d.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/package.json b/packages/core/package.json
index 4ecb3839aa..9048de576c 100644
--- a/packages/core/package.json
+++ b/packages/core/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/core",
"description": "Core API used by Backstage plugins and apps",
- "version": "0.7.12",
+ "version": "0.7.13",
"private": false,
"publishConfig": {
"access": "public",
@@ -71,7 +71,7 @@
"zen-observable": "^0.8.15"
},
"devDependencies": {
- "@backstage/cli": "^0.7.0",
+ "@backstage/cli": "^0.7.1",
"@backstage/test-utils": "^0.1.13",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^11.2.5",
diff --git a/packages/core/src/api-wrappers/createApp.test.tsx b/packages/core/src/api-wrappers/createApp.test.tsx
index 7eaec32b86..5214bbbd2c 100644
--- a/packages/core/src/api-wrappers/createApp.test.tsx
+++ b/packages/core/src/api-wrappers/createApp.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/api-wrappers/createApp.tsx b/packages/core/src/api-wrappers/createApp.tsx
index e79cdf509f..2d04476985 100644
--- a/packages/core/src/api-wrappers/createApp.tsx
+++ b/packages/core/src/api-wrappers/createApp.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/api-wrappers/defaultApis.ts b/packages/core/src/api-wrappers/defaultApis.ts
index d044b50b7a..250165071f 100644
--- a/packages/core/src/api-wrappers/defaultApis.ts
+++ b/packages/core/src/api-wrappers/defaultApis.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/api-wrappers/index.ts b/packages/core/src/api-wrappers/index.ts
index 42c423d868..aec8340c9b 100644
--- a/packages/core/src/api-wrappers/index.ts
+++ b/packages/core/src/api-wrappers/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/AlertDisplay/AlertDisplay.test.tsx b/packages/core/src/components/AlertDisplay/AlertDisplay.test.tsx
index d9e264bb32..c7b0b6042b 100644
--- a/packages/core/src/components/AlertDisplay/AlertDisplay.test.tsx
+++ b/packages/core/src/components/AlertDisplay/AlertDisplay.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/AlertDisplay/AlertDisplay.tsx b/packages/core/src/components/AlertDisplay/AlertDisplay.tsx
index 76e21f909c..625ecf9f7e 100644
--- a/packages/core/src/components/AlertDisplay/AlertDisplay.tsx
+++ b/packages/core/src/components/AlertDisplay/AlertDisplay.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/AlertDisplay/index.ts b/packages/core/src/components/AlertDisplay/index.ts
index 72aa1c5ad8..34b2dfaabf 100644
--- a/packages/core/src/components/AlertDisplay/index.ts
+++ b/packages/core/src/components/AlertDisplay/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Avatar/Avatar.stories.tsx b/packages/core/src/components/Avatar/Avatar.stories.tsx
index 5ac628d72b..59f2fb6cfa 100644
--- a/packages/core/src/components/Avatar/Avatar.stories.tsx
+++ b/packages/core/src/components/Avatar/Avatar.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Avatar/Avatar.test.tsx b/packages/core/src/components/Avatar/Avatar.test.tsx
index da6ca8f42e..1c08d57679 100644
--- a/packages/core/src/components/Avatar/Avatar.test.tsx
+++ b/packages/core/src/components/Avatar/Avatar.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Avatar/Avatar.tsx b/packages/core/src/components/Avatar/Avatar.tsx
index 95aa4a8ced..df3c46fba7 100644
--- a/packages/core/src/components/Avatar/Avatar.tsx
+++ b/packages/core/src/components/Avatar/Avatar.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Avatar/index.ts b/packages/core/src/components/Avatar/index.ts
index 962414634e..a58b47eba9 100644
--- a/packages/core/src/components/Avatar/index.ts
+++ b/packages/core/src/components/Avatar/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Avatar/util.test.ts b/packages/core/src/components/Avatar/util.test.ts
index 94de957e8e..4d2b5417c0 100644
--- a/packages/core/src/components/Avatar/util.test.ts
+++ b/packages/core/src/components/Avatar/util.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Avatar/utils.ts b/packages/core/src/components/Avatar/utils.ts
index 5990a72955..98ce01664a 100644
--- a/packages/core/src/components/Avatar/utils.ts
+++ b/packages/core/src/components/Avatar/utils.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Button/Button.stories.tsx b/packages/core/src/components/Button/Button.stories.tsx
index af95e64d52..1bf133a5c9 100644
--- a/packages/core/src/components/Button/Button.stories.tsx
+++ b/packages/core/src/components/Button/Button.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Button/Button.test.tsx b/packages/core/src/components/Button/Button.test.tsx
index 8bae5f2767..e3a1074e6f 100644
--- a/packages/core/src/components/Button/Button.test.tsx
+++ b/packages/core/src/components/Button/Button.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Button/Button.tsx b/packages/core/src/components/Button/Button.tsx
index ca45b3da7f..6dd593d776 100644
--- a/packages/core/src/components/Button/Button.tsx
+++ b/packages/core/src/components/Button/Button.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,17 +14,19 @@
* limitations under the License.
*/
-import React, { ComponentProps } from 'react';
-import { Button as MaterialButton } from '@material-ui/core';
-import { Link as RouterLink } from 'react-router-dom';
+import {
+ Button as MaterialButton,
+ ButtonProps as MaterialButtonProps,
+} from '@material-ui/core';
+import React from 'react';
+import { Link, LinkProps } from '../Link';
-type Props = ComponentProps &
- ComponentProps;
+type Props = MaterialButtonProps & Omit;
/**
* Thin wrapper on top of material-ui's Button component
* Makes the Button to utilise react-router
*/
export const Button = React.forwardRef((props, ref) => (
-
+
));
diff --git a/packages/core/src/components/Button/index.ts b/packages/core/src/components/Button/index.ts
index 7b584ed799..e2aa3aff98 100644
--- a/packages/core/src/components/Button/index.ts
+++ b/packages/core/src/components/Button/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/CheckboxTree/CheckboxTree.stories.tsx b/packages/core/src/components/CheckboxTree/CheckboxTree.stories.tsx
index 3416e94260..48da8b92b2 100644
--- a/packages/core/src/components/CheckboxTree/CheckboxTree.stories.tsx
+++ b/packages/core/src/components/CheckboxTree/CheckboxTree.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/CheckboxTree/CheckboxTree.test.tsx b/packages/core/src/components/CheckboxTree/CheckboxTree.test.tsx
index 0750867ff3..6c84a311d2 100644
--- a/packages/core/src/components/CheckboxTree/CheckboxTree.test.tsx
+++ b/packages/core/src/components/CheckboxTree/CheckboxTree.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/CheckboxTree/CheckboxTree.tsx b/packages/core/src/components/CheckboxTree/CheckboxTree.tsx
index d6d3410913..7e7155143b 100644
--- a/packages/core/src/components/CheckboxTree/CheckboxTree.tsx
+++ b/packages/core/src/components/CheckboxTree/CheckboxTree.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/CheckboxTree/index.tsx b/packages/core/src/components/CheckboxTree/index.tsx
index d8e62460ab..e1ceb98ee4 100644
--- a/packages/core/src/components/CheckboxTree/index.tsx
+++ b/packages/core/src/components/CheckboxTree/index.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Chip/Chip.stories.tsx b/packages/core/src/components/Chip/Chip.stories.tsx
index 87d904ad0e..ff52a81c16 100644
--- a/packages/core/src/components/Chip/Chip.stories.tsx
+++ b/packages/core/src/components/Chip/Chip.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/CodeSnippet/CodeSnippet.stories.tsx b/packages/core/src/components/CodeSnippet/CodeSnippet.stories.tsx
index 6df7e5bb6d..a266c8c6cb 100644
--- a/packages/core/src/components/CodeSnippet/CodeSnippet.stories.tsx
+++ b/packages/core/src/components/CodeSnippet/CodeSnippet.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/CodeSnippet/CodeSnippet.test.tsx b/packages/core/src/components/CodeSnippet/CodeSnippet.test.tsx
index 7d5d4de087..298a8d5780 100644
--- a/packages/core/src/components/CodeSnippet/CodeSnippet.test.tsx
+++ b/packages/core/src/components/CodeSnippet/CodeSnippet.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/CodeSnippet/CodeSnippet.tsx b/packages/core/src/components/CodeSnippet/CodeSnippet.tsx
index 84b5aa403e..a3badaad07 100644
--- a/packages/core/src/components/CodeSnippet/CodeSnippet.tsx
+++ b/packages/core/src/components/CodeSnippet/CodeSnippet.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/CodeSnippet/index.tsx b/packages/core/src/components/CodeSnippet/index.tsx
index 11ca1ecde2..bafcf145e9 100644
--- a/packages/core/src/components/CodeSnippet/index.tsx
+++ b/packages/core/src/components/CodeSnippet/index.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/CopyTextButton/CopyTextButton.stories.tsx b/packages/core/src/components/CopyTextButton/CopyTextButton.stories.tsx
index 745812a219..c1834091b5 100644
--- a/packages/core/src/components/CopyTextButton/CopyTextButton.stories.tsx
+++ b/packages/core/src/components/CopyTextButton/CopyTextButton.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/CopyTextButton/CopyTextButton.test.tsx b/packages/core/src/components/CopyTextButton/CopyTextButton.test.tsx
index 07bce97d74..a63644daa1 100644
--- a/packages/core/src/components/CopyTextButton/CopyTextButton.test.tsx
+++ b/packages/core/src/components/CopyTextButton/CopyTextButton.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/CopyTextButton/CopyTextButton.tsx b/packages/core/src/components/CopyTextButton/CopyTextButton.tsx
index 7f20aed496..27c6301ec0 100644
--- a/packages/core/src/components/CopyTextButton/CopyTextButton.tsx
+++ b/packages/core/src/components/CopyTextButton/CopyTextButton.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/CopyTextButton/index.tsx b/packages/core/src/components/CopyTextButton/index.tsx
index adde10a927..a90975fa77 100644
--- a/packages/core/src/components/CopyTextButton/index.tsx
+++ b/packages/core/src/components/CopyTextButton/index.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/DependencyGraph/DefaultLabel.tsx b/packages/core/src/components/DependencyGraph/DefaultLabel.tsx
index 0679d1dae0..74f0a97a2b 100644
--- a/packages/core/src/components/DependencyGraph/DefaultLabel.tsx
+++ b/packages/core/src/components/DependencyGraph/DefaultLabel.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/DependencyGraph/DefaultNode.tsx b/packages/core/src/components/DependencyGraph/DefaultNode.tsx
index 9656c860ae..c93651e3e0 100644
--- a/packages/core/src/components/DependencyGraph/DefaultNode.tsx
+++ b/packages/core/src/components/DependencyGraph/DefaultNode.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/DependencyGraph/DependencyGraph.stories.tsx b/packages/core/src/components/DependencyGraph/DependencyGraph.stories.tsx
index e39ecfc5da..0b97059754 100644
--- a/packages/core/src/components/DependencyGraph/DependencyGraph.stories.tsx
+++ b/packages/core/src/components/DependencyGraph/DependencyGraph.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/DependencyGraph/DependencyGraph.test.tsx b/packages/core/src/components/DependencyGraph/DependencyGraph.test.tsx
index 526dc6d7dd..2020c2ba65 100644
--- a/packages/core/src/components/DependencyGraph/DependencyGraph.test.tsx
+++ b/packages/core/src/components/DependencyGraph/DependencyGraph.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/DependencyGraph/DependencyGraph.tsx b/packages/core/src/components/DependencyGraph/DependencyGraph.tsx
index ced0bdf276..5c0442f906 100644
--- a/packages/core/src/components/DependencyGraph/DependencyGraph.tsx
+++ b/packages/core/src/components/DependencyGraph/DependencyGraph.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/DependencyGraph/Edge.test.tsx b/packages/core/src/components/DependencyGraph/Edge.test.tsx
index b651c17bf0..323a445546 100644
--- a/packages/core/src/components/DependencyGraph/Edge.test.tsx
+++ b/packages/core/src/components/DependencyGraph/Edge.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/DependencyGraph/Edge.tsx b/packages/core/src/components/DependencyGraph/Edge.tsx
index 5e67aca63f..4e4c5ca5f7 100644
--- a/packages/core/src/components/DependencyGraph/Edge.tsx
+++ b/packages/core/src/components/DependencyGraph/Edge.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/DependencyGraph/Node.test.tsx b/packages/core/src/components/DependencyGraph/Node.test.tsx
index 9f9f7c693a..ebd6478db9 100644
--- a/packages/core/src/components/DependencyGraph/Node.test.tsx
+++ b/packages/core/src/components/DependencyGraph/Node.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/DependencyGraph/Node.tsx b/packages/core/src/components/DependencyGraph/Node.tsx
index 4d64e31335..d9e8cbfb78 100644
--- a/packages/core/src/components/DependencyGraph/Node.tsx
+++ b/packages/core/src/components/DependencyGraph/Node.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/DependencyGraph/constants.ts b/packages/core/src/components/DependencyGraph/constants.ts
index 412a677f87..155fd4e82a 100644
--- a/packages/core/src/components/DependencyGraph/constants.ts
+++ b/packages/core/src/components/DependencyGraph/constants.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/DependencyGraph/index.ts b/packages/core/src/components/DependencyGraph/index.ts
index 9a4f0071e3..5f5e7a5439 100644
--- a/packages/core/src/components/DependencyGraph/index.ts
+++ b/packages/core/src/components/DependencyGraph/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/DependencyGraph/types.ts b/packages/core/src/components/DependencyGraph/types.ts
index 19173db4b3..ed22007f9a 100644
--- a/packages/core/src/components/DependencyGraph/types.ts
+++ b/packages/core/src/components/DependencyGraph/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Dialog/Dialog.stories.tsx b/packages/core/src/components/Dialog/Dialog.stories.tsx
index c9388dcbec..b4c0a7da57 100644
--- a/packages/core/src/components/Dialog/Dialog.stories.tsx
+++ b/packages/core/src/components/Dialog/Dialog.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/DismissableBanner/DismissableBanner.stories.tsx b/packages/core/src/components/DismissableBanner/DismissableBanner.stories.tsx
index d77a713b34..9374d5e1e8 100644
--- a/packages/core/src/components/DismissableBanner/DismissableBanner.stories.tsx
+++ b/packages/core/src/components/DismissableBanner/DismissableBanner.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/DismissableBanner/DismissableBanner.test.tsx b/packages/core/src/components/DismissableBanner/DismissableBanner.test.tsx
index b1fd32bc0a..5316b53dae 100644
--- a/packages/core/src/components/DismissableBanner/DismissableBanner.test.tsx
+++ b/packages/core/src/components/DismissableBanner/DismissableBanner.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/DismissableBanner/DismissableBanner.tsx b/packages/core/src/components/DismissableBanner/DismissableBanner.tsx
index 568ab6306b..a05c171ff5 100644
--- a/packages/core/src/components/DismissableBanner/DismissableBanner.tsx
+++ b/packages/core/src/components/DismissableBanner/DismissableBanner.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/DismissableBanner/index.ts b/packages/core/src/components/DismissableBanner/index.ts
index c1d69cd95e..4390d44903 100644
--- a/packages/core/src/components/DismissableBanner/index.ts
+++ b/packages/core/src/components/DismissableBanner/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Drawer/Drawer.stories.tsx b/packages/core/src/components/Drawer/Drawer.stories.tsx
index b399cfed8e..2538af855e 100644
--- a/packages/core/src/components/Drawer/Drawer.stories.tsx
+++ b/packages/core/src/components/Drawer/Drawer.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/EmptyState/EmptyState.stories.tsx b/packages/core/src/components/EmptyState/EmptyState.stories.tsx
index dcfba73227..ed4dbe2101 100644
--- a/packages/core/src/components/EmptyState/EmptyState.stories.tsx
+++ b/packages/core/src/components/EmptyState/EmptyState.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/EmptyState/EmptyState.test.tsx b/packages/core/src/components/EmptyState/EmptyState.test.tsx
index 32e71f044d..2f4e4e883d 100644
--- a/packages/core/src/components/EmptyState/EmptyState.test.tsx
+++ b/packages/core/src/components/EmptyState/EmptyState.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/EmptyState/EmptyState.tsx b/packages/core/src/components/EmptyState/EmptyState.tsx
index fdd9738735..1d8d5a798f 100644
--- a/packages/core/src/components/EmptyState/EmptyState.tsx
+++ b/packages/core/src/components/EmptyState/EmptyState.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/EmptyState/EmptyStateImage.test.tsx b/packages/core/src/components/EmptyState/EmptyStateImage.test.tsx
index 258eee943d..904f5afc63 100644
--- a/packages/core/src/components/EmptyState/EmptyStateImage.test.tsx
+++ b/packages/core/src/components/EmptyState/EmptyStateImage.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/EmptyState/EmptyStateImage.tsx b/packages/core/src/components/EmptyState/EmptyStateImage.tsx
index 1973ff9a23..a76f0863f7 100644
--- a/packages/core/src/components/EmptyState/EmptyStateImage.tsx
+++ b/packages/core/src/components/EmptyState/EmptyStateImage.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/EmptyState/MissingAnnotationEmptyState.tsx b/packages/core/src/components/EmptyState/MissingAnnotationEmptyState.tsx
index 6c04b34a90..39cce709c0 100644
--- a/packages/core/src/components/EmptyState/MissingAnnotationEmptyState.tsx
+++ b/packages/core/src/components/EmptyState/MissingAnnotationEmptyState.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/EmptyState/index.ts b/packages/core/src/components/EmptyState/index.ts
index 2e2a88be94..95e12a014e 100644
--- a/packages/core/src/components/EmptyState/index.ts
+++ b/packages/core/src/components/EmptyState/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/FeatureDiscovery/FeatureCalloutCircular.test.tsx b/packages/core/src/components/FeatureDiscovery/FeatureCalloutCircular.test.tsx
index 83a31f198d..35ea30ffa6 100644
--- a/packages/core/src/components/FeatureDiscovery/FeatureCalloutCircular.test.tsx
+++ b/packages/core/src/components/FeatureDiscovery/FeatureCalloutCircular.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/FeatureDiscovery/FeatureCalloutCircular.tsx b/packages/core/src/components/FeatureDiscovery/FeatureCalloutCircular.tsx
index 64722c24b0..9af6c30c3b 100644
--- a/packages/core/src/components/FeatureDiscovery/FeatureCalloutCircular.tsx
+++ b/packages/core/src/components/FeatureDiscovery/FeatureCalloutCircular.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/FeatureDiscovery/index.ts b/packages/core/src/components/FeatureDiscovery/index.ts
index 57e35e3855..ed9ab28b17 100644
--- a/packages/core/src/components/FeatureDiscovery/index.ts
+++ b/packages/core/src/components/FeatureDiscovery/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/FeatureDiscovery/lib/usePortal.ts b/packages/core/src/components/FeatureDiscovery/lib/usePortal.ts
index d5fd2c23c9..c1377b6060 100644
--- a/packages/core/src/components/FeatureDiscovery/lib/usePortal.ts
+++ b/packages/core/src/components/FeatureDiscovery/lib/usePortal.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/FeatureDiscovery/lib/useShowCallout.ts b/packages/core/src/components/FeatureDiscovery/lib/useShowCallout.ts
index 0bbcf3b8ec..617f1324ed 100644
--- a/packages/core/src/components/FeatureDiscovery/lib/useShowCallout.ts
+++ b/packages/core/src/components/FeatureDiscovery/lib/useShowCallout.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/HeaderIconLinkRow/HeaderIconLinkRow.tsx b/packages/core/src/components/HeaderIconLinkRow/HeaderIconLinkRow.tsx
index a2f86d133b..afceda165e 100644
--- a/packages/core/src/components/HeaderIconLinkRow/HeaderIconLinkRow.tsx
+++ b/packages/core/src/components/HeaderIconLinkRow/HeaderIconLinkRow.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/HeaderIconLinkRow/IconLinkVertical.tsx b/packages/core/src/components/HeaderIconLinkRow/IconLinkVertical.tsx
index 425bed3490..df26bc07b8 100644
--- a/packages/core/src/components/HeaderIconLinkRow/IconLinkVertical.tsx
+++ b/packages/core/src/components/HeaderIconLinkRow/IconLinkVertical.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/HeaderIconLinkRow/index.ts b/packages/core/src/components/HeaderIconLinkRow/index.ts
index fb25f9b7ed..fb732644e4 100644
--- a/packages/core/src/components/HeaderIconLinkRow/index.ts
+++ b/packages/core/src/components/HeaderIconLinkRow/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/HorizontalScrollGrid/HorizontalScrollGrid.stories.tsx b/packages/core/src/components/HorizontalScrollGrid/HorizontalScrollGrid.stories.tsx
index 9718393427..55fff2430a 100644
--- a/packages/core/src/components/HorizontalScrollGrid/HorizontalScrollGrid.stories.tsx
+++ b/packages/core/src/components/HorizontalScrollGrid/HorizontalScrollGrid.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/HorizontalScrollGrid/HorizontalScrollGrid.test.tsx b/packages/core/src/components/HorizontalScrollGrid/HorizontalScrollGrid.test.tsx
index 0d07d8ec84..080e48919b 100644
--- a/packages/core/src/components/HorizontalScrollGrid/HorizontalScrollGrid.test.tsx
+++ b/packages/core/src/components/HorizontalScrollGrid/HorizontalScrollGrid.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/HorizontalScrollGrid/HorizontalScrollGrid.tsx b/packages/core/src/components/HorizontalScrollGrid/HorizontalScrollGrid.tsx
index 073fb960e1..f5c45d3eb0 100644
--- a/packages/core/src/components/HorizontalScrollGrid/HorizontalScrollGrid.tsx
+++ b/packages/core/src/components/HorizontalScrollGrid/HorizontalScrollGrid.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/HorizontalScrollGrid/index.tsx b/packages/core/src/components/HorizontalScrollGrid/index.tsx
index cb1253cae2..bbf545dab3 100644
--- a/packages/core/src/components/HorizontalScrollGrid/index.tsx
+++ b/packages/core/src/components/HorizontalScrollGrid/index.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Lifecycle/Lifecycle.stories.tsx b/packages/core/src/components/Lifecycle/Lifecycle.stories.tsx
index ccce7fba25..8640dd28e9 100644
--- a/packages/core/src/components/Lifecycle/Lifecycle.stories.tsx
+++ b/packages/core/src/components/Lifecycle/Lifecycle.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Lifecycle/Lifecycle.test.tsx b/packages/core/src/components/Lifecycle/Lifecycle.test.tsx
index b5567b2b5a..05b0f650dd 100644
--- a/packages/core/src/components/Lifecycle/Lifecycle.test.tsx
+++ b/packages/core/src/components/Lifecycle/Lifecycle.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Lifecycle/Lifecycle.tsx b/packages/core/src/components/Lifecycle/Lifecycle.tsx
index 585f7a5c18..c72ea46f1b 100644
--- a/packages/core/src/components/Lifecycle/Lifecycle.tsx
+++ b/packages/core/src/components/Lifecycle/Lifecycle.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Lifecycle/index.ts b/packages/core/src/components/Lifecycle/index.ts
index 8854c04396..d52e79e08b 100644
--- a/packages/core/src/components/Lifecycle/index.ts
+++ b/packages/core/src/components/Lifecycle/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Link/Link.stories.tsx b/packages/core/src/components/Link/Link.stories.tsx
index 852d51970f..bd4d1b489b 100644
--- a/packages/core/src/components/Link/Link.stories.tsx
+++ b/packages/core/src/components/Link/Link.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Link/Link.test.tsx b/packages/core/src/components/Link/Link.test.tsx
index 46504e9adc..97a71c5760 100644
--- a/packages/core/src/components/Link/Link.test.tsx
+++ b/packages/core/src/components/Link/Link.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Link/Link.tsx b/packages/core/src/components/Link/Link.tsx
index 31800ddaf1..dd169390a5 100644
--- a/packages/core/src/components/Link/Link.tsx
+++ b/packages/core/src/components/Link/Link.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Link/index.ts b/packages/core/src/components/Link/index.ts
index 9be779feb7..2160508451 100644
--- a/packages/core/src/components/Link/index.ts
+++ b/packages/core/src/components/Link/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/MarkdownContent/MarkdownContent.stories.tsx b/packages/core/src/components/MarkdownContent/MarkdownContent.stories.tsx
index eb15aa92d3..b16eea150c 100644
--- a/packages/core/src/components/MarkdownContent/MarkdownContent.stories.tsx
+++ b/packages/core/src/components/MarkdownContent/MarkdownContent.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/MarkdownContent/MarkdownContent.test.tsx b/packages/core/src/components/MarkdownContent/MarkdownContent.test.tsx
index dcbe421dcb..d39e92c75e 100644
--- a/packages/core/src/components/MarkdownContent/MarkdownContent.test.tsx
+++ b/packages/core/src/components/MarkdownContent/MarkdownContent.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/MarkdownContent/MarkdownContent.tsx b/packages/core/src/components/MarkdownContent/MarkdownContent.tsx
index 0000e54a5f..2167da6fd2 100644
--- a/packages/core/src/components/MarkdownContent/MarkdownContent.tsx
+++ b/packages/core/src/components/MarkdownContent/MarkdownContent.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/MarkdownContent/index.ts b/packages/core/src/components/MarkdownContent/index.ts
index 7267ff191c..9218d9fcde 100644
--- a/packages/core/src/components/MarkdownContent/index.ts
+++ b/packages/core/src/components/MarkdownContent/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/OAuthRequestDialog/LoginRequestListItem.tsx b/packages/core/src/components/OAuthRequestDialog/LoginRequestListItem.tsx
index cc1df3b529..4a2a619959 100644
--- a/packages/core/src/components/OAuthRequestDialog/LoginRequestListItem.tsx
+++ b/packages/core/src/components/OAuthRequestDialog/LoginRequestListItem.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/OAuthRequestDialog/OAuthRequestDialog.tsx b/packages/core/src/components/OAuthRequestDialog/OAuthRequestDialog.tsx
index 06b53332dc..12d713349c 100644
--- a/packages/core/src/components/OAuthRequestDialog/OAuthRequestDialog.tsx
+++ b/packages/core/src/components/OAuthRequestDialog/OAuthRequestDialog.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/OAuthRequestDialog/index.ts b/packages/core/src/components/OAuthRequestDialog/index.ts
index 45f87ece1d..d2a48eac06 100644
--- a/packages/core/src/components/OAuthRequestDialog/index.ts
+++ b/packages/core/src/components/OAuthRequestDialog/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/OverflowTooltip/OverflowTooltip.stories.tsx b/packages/core/src/components/OverflowTooltip/OverflowTooltip.stories.tsx
index e0cbe7c814..0882a63e9c 100644
--- a/packages/core/src/components/OverflowTooltip/OverflowTooltip.stories.tsx
+++ b/packages/core/src/components/OverflowTooltip/OverflowTooltip.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/OverflowTooltip/OverflowTooltip.test.tsx b/packages/core/src/components/OverflowTooltip/OverflowTooltip.test.tsx
index 52f44bb4d0..c61069f810 100644
--- a/packages/core/src/components/OverflowTooltip/OverflowTooltip.test.tsx
+++ b/packages/core/src/components/OverflowTooltip/OverflowTooltip.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/OverflowTooltip/OverflowTooltip.tsx b/packages/core/src/components/OverflowTooltip/OverflowTooltip.tsx
index b7bad6f377..1be7ebc7ed 100644
--- a/packages/core/src/components/OverflowTooltip/OverflowTooltip.tsx
+++ b/packages/core/src/components/OverflowTooltip/OverflowTooltip.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/OverflowTooltip/index.ts b/packages/core/src/components/OverflowTooltip/index.ts
index fe51e8267f..f7258b5364 100644
--- a/packages/core/src/components/OverflowTooltip/index.ts
+++ b/packages/core/src/components/OverflowTooltip/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Progress/Progress.stories.tsx b/packages/core/src/components/Progress/Progress.stories.tsx
index 807ad159d8..af24019a69 100644
--- a/packages/core/src/components/Progress/Progress.stories.tsx
+++ b/packages/core/src/components/Progress/Progress.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Progress/Progress.test.tsx b/packages/core/src/components/Progress/Progress.test.tsx
index 46a162e8b3..4f4e74ce08 100644
--- a/packages/core/src/components/Progress/Progress.test.tsx
+++ b/packages/core/src/components/Progress/Progress.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Progress/Progress.tsx b/packages/core/src/components/Progress/Progress.tsx
index aacdf8821b..68dcb91785 100644
--- a/packages/core/src/components/Progress/Progress.tsx
+++ b/packages/core/src/components/Progress/Progress.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Progress/index.ts b/packages/core/src/components/Progress/index.ts
index 6598103ab1..c7b3d202cf 100644
--- a/packages/core/src/components/Progress/index.ts
+++ b/packages/core/src/components/Progress/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/ProgressBars/Gauge.stories.tsx b/packages/core/src/components/ProgressBars/Gauge.stories.tsx
index ab9c263f05..3481c48cef 100644
--- a/packages/core/src/components/ProgressBars/Gauge.stories.tsx
+++ b/packages/core/src/components/ProgressBars/Gauge.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/ProgressBars/Gauge.test.tsx b/packages/core/src/components/ProgressBars/Gauge.test.tsx
index 00cf0fd009..066e1233a0 100644
--- a/packages/core/src/components/ProgressBars/Gauge.test.tsx
+++ b/packages/core/src/components/ProgressBars/Gauge.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/ProgressBars/Gauge.tsx b/packages/core/src/components/ProgressBars/Gauge.tsx
index ca6a3a66ab..46948d4af6 100644
--- a/packages/core/src/components/ProgressBars/Gauge.tsx
+++ b/packages/core/src/components/ProgressBars/Gauge.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/ProgressBars/GaugeCard.stories.tsx b/packages/core/src/components/ProgressBars/GaugeCard.stories.tsx
index 5d54e5eda6..da81100a99 100644
--- a/packages/core/src/components/ProgressBars/GaugeCard.stories.tsx
+++ b/packages/core/src/components/ProgressBars/GaugeCard.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/ProgressBars/GaugeCard.test.tsx b/packages/core/src/components/ProgressBars/GaugeCard.test.tsx
index db112fa2ab..ea29a288e6 100644
--- a/packages/core/src/components/ProgressBars/GaugeCard.test.tsx
+++ b/packages/core/src/components/ProgressBars/GaugeCard.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/ProgressBars/GaugeCard.tsx b/packages/core/src/components/ProgressBars/GaugeCard.tsx
index 8dcec129c5..39248b1786 100644
--- a/packages/core/src/components/ProgressBars/GaugeCard.tsx
+++ b/packages/core/src/components/ProgressBars/GaugeCard.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/ProgressBars/LinearGauge.stories.tsx b/packages/core/src/components/ProgressBars/LinearGauge.stories.tsx
index fa3c7c00f0..ee2ed2eae6 100644
--- a/packages/core/src/components/ProgressBars/LinearGauge.stories.tsx
+++ b/packages/core/src/components/ProgressBars/LinearGauge.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/ProgressBars/LinearGauge.test.tsx b/packages/core/src/components/ProgressBars/LinearGauge.test.tsx
index fc04b642fb..f7260a9a65 100644
--- a/packages/core/src/components/ProgressBars/LinearGauge.test.tsx
+++ b/packages/core/src/components/ProgressBars/LinearGauge.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/ProgressBars/LinearGauge.tsx b/packages/core/src/components/ProgressBars/LinearGauge.tsx
index 9bb7b34c09..d733cb2eae 100644
--- a/packages/core/src/components/ProgressBars/LinearGauge.tsx
+++ b/packages/core/src/components/ProgressBars/LinearGauge.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/ProgressBars/index.ts b/packages/core/src/components/ProgressBars/index.ts
index 4463aea29b..01cab20f27 100644
--- a/packages/core/src/components/ProgressBars/index.ts
+++ b/packages/core/src/components/ProgressBars/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/ResponseErrorPanel/ResponseErrorPanel.tsx b/packages/core/src/components/ResponseErrorPanel/ResponseErrorPanel.tsx
index 52f7ab03f9..dde3067514 100644
--- a/packages/core/src/components/ResponseErrorPanel/ResponseErrorPanel.tsx
+++ b/packages/core/src/components/ResponseErrorPanel/ResponseErrorPanel.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/ResponseErrorPanel/index.ts b/packages/core/src/components/ResponseErrorPanel/index.ts
index ac62553fd5..ec17a6c82c 100644
--- a/packages/core/src/components/ResponseErrorPanel/index.ts
+++ b/packages/core/src/components/ResponseErrorPanel/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Select/Select.stories.tsx b/packages/core/src/components/Select/Select.stories.tsx
index 07b9e38bd5..c48f36c2e5 100644
--- a/packages/core/src/components/Select/Select.stories.tsx
+++ b/packages/core/src/components/Select/Select.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Select/Select.test.tsx b/packages/core/src/components/Select/Select.test.tsx
index 89ae2b1883..41e787a5b4 100644
--- a/packages/core/src/components/Select/Select.test.tsx
+++ b/packages/core/src/components/Select/Select.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Select/Select.tsx b/packages/core/src/components/Select/Select.tsx
index 1e6dba76e0..b4512b3562 100644
--- a/packages/core/src/components/Select/Select.tsx
+++ b/packages/core/src/components/Select/Select.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Select/index.tsx b/packages/core/src/components/Select/index.tsx
index 977ebc88eb..0c35cc1378 100644
--- a/packages/core/src/components/Select/index.tsx
+++ b/packages/core/src/components/Select/index.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Select/static/ClosedDropdown.tsx b/packages/core/src/components/Select/static/ClosedDropdown.tsx
index 235a91963b..41155bb268 100644
--- a/packages/core/src/components/Select/static/ClosedDropdown.tsx
+++ b/packages/core/src/components/Select/static/ClosedDropdown.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Select/static/OpenedDropdown.tsx b/packages/core/src/components/Select/static/OpenedDropdown.tsx
index e4a8021017..2c91dc6989 100644
--- a/packages/core/src/components/Select/static/OpenedDropdown.tsx
+++ b/packages/core/src/components/Select/static/OpenedDropdown.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/SimpleStepper/SimpleStepper.stories.tsx b/packages/core/src/components/SimpleStepper/SimpleStepper.stories.tsx
index 11bb06c723..9d958f766d 100644
--- a/packages/core/src/components/SimpleStepper/SimpleStepper.stories.tsx
+++ b/packages/core/src/components/SimpleStepper/SimpleStepper.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/SimpleStepper/SimpleStepper.test.tsx b/packages/core/src/components/SimpleStepper/SimpleStepper.test.tsx
index 527160c4ff..5897054ed5 100644
--- a/packages/core/src/components/SimpleStepper/SimpleStepper.test.tsx
+++ b/packages/core/src/components/SimpleStepper/SimpleStepper.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/SimpleStepper/SimpleStepper.tsx b/packages/core/src/components/SimpleStepper/SimpleStepper.tsx
index ff65534843..46b2ce551a 100644
--- a/packages/core/src/components/SimpleStepper/SimpleStepper.tsx
+++ b/packages/core/src/components/SimpleStepper/SimpleStepper.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/SimpleStepper/SimpleStepperFooter.tsx b/packages/core/src/components/SimpleStepper/SimpleStepperFooter.tsx
index 750ee55c10..b126b5ba75 100644
--- a/packages/core/src/components/SimpleStepper/SimpleStepperFooter.tsx
+++ b/packages/core/src/components/SimpleStepper/SimpleStepperFooter.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/SimpleStepper/SimpleStepperStep.tsx b/packages/core/src/components/SimpleStepper/SimpleStepperStep.tsx
index bdf3e8c59d..51fcee1f71 100644
--- a/packages/core/src/components/SimpleStepper/SimpleStepperStep.tsx
+++ b/packages/core/src/components/SimpleStepper/SimpleStepperStep.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/SimpleStepper/index.ts b/packages/core/src/components/SimpleStepper/index.ts
index 392a66affa..ddb6d2537a 100644
--- a/packages/core/src/components/SimpleStepper/index.ts
+++ b/packages/core/src/components/SimpleStepper/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/SimpleStepper/types.ts b/packages/core/src/components/SimpleStepper/types.ts
index 0a488ff356..ef0fc46a84 100644
--- a/packages/core/src/components/SimpleStepper/types.ts
+++ b/packages/core/src/components/SimpleStepper/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Status/Status.stories.tsx b/packages/core/src/components/Status/Status.stories.tsx
index 205645e1ec..26a6fd2219 100644
--- a/packages/core/src/components/Status/Status.stories.tsx
+++ b/packages/core/src/components/Status/Status.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Status/Status.test.tsx b/packages/core/src/components/Status/Status.test.tsx
index 9a8daecd33..c1e1d42af2 100644
--- a/packages/core/src/components/Status/Status.test.tsx
+++ b/packages/core/src/components/Status/Status.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Status/Status.tsx b/packages/core/src/components/Status/Status.tsx
index f12f886b68..3d79c38581 100644
--- a/packages/core/src/components/Status/Status.tsx
+++ b/packages/core/src/components/Status/Status.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Status/index.ts b/packages/core/src/components/Status/index.ts
index 4c0fd6322b..2e34890482 100644
--- a/packages/core/src/components/Status/index.ts
+++ b/packages/core/src/components/Status/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/StructuredMetadataTable/MetadataTable.tsx b/packages/core/src/components/StructuredMetadataTable/MetadataTable.tsx
index b34e535a00..b7790e38da 100644
--- a/packages/core/src/components/StructuredMetadataTable/MetadataTable.tsx
+++ b/packages/core/src/components/StructuredMetadataTable/MetadataTable.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/StructuredMetadataTable/StructuredMetadataTable.stories.tsx b/packages/core/src/components/StructuredMetadataTable/StructuredMetadataTable.stories.tsx
index 7f07018f6f..458c431b27 100644
--- a/packages/core/src/components/StructuredMetadataTable/StructuredMetadataTable.stories.tsx
+++ b/packages/core/src/components/StructuredMetadataTable/StructuredMetadataTable.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/StructuredMetadataTable/StructuredMetadataTable.test.tsx b/packages/core/src/components/StructuredMetadataTable/StructuredMetadataTable.test.tsx
index 0844710876..7ebe15c931 100644
--- a/packages/core/src/components/StructuredMetadataTable/StructuredMetadataTable.test.tsx
+++ b/packages/core/src/components/StructuredMetadataTable/StructuredMetadataTable.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/StructuredMetadataTable/StructuredMetadataTable.tsx b/packages/core/src/components/StructuredMetadataTable/StructuredMetadataTable.tsx
index 916259042c..af56cb5b89 100644
--- a/packages/core/src/components/StructuredMetadataTable/StructuredMetadataTable.tsx
+++ b/packages/core/src/components/StructuredMetadataTable/StructuredMetadataTable.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/StructuredMetadataTable/index.tsx b/packages/core/src/components/StructuredMetadataTable/index.tsx
index 628f3395db..32ba94edd6 100644
--- a/packages/core/src/components/StructuredMetadataTable/index.tsx
+++ b/packages/core/src/components/StructuredMetadataTable/index.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/SupportButton/SupportButton.test.tsx b/packages/core/src/components/SupportButton/SupportButton.test.tsx
index 6d6b9fd477..c01b6f1c79 100644
--- a/packages/core/src/components/SupportButton/SupportButton.test.tsx
+++ b/packages/core/src/components/SupportButton/SupportButton.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/SupportButton/SupportButton.tsx b/packages/core/src/components/SupportButton/SupportButton.tsx
index d0c2412dad..12f0fddbaa 100644
--- a/packages/core/src/components/SupportButton/SupportButton.tsx
+++ b/packages/core/src/components/SupportButton/SupportButton.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/SupportButton/index.ts b/packages/core/src/components/SupportButton/index.ts
index e133900d0a..57e6103889 100644
--- a/packages/core/src/components/SupportButton/index.ts
+++ b/packages/core/src/components/SupportButton/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/TabbedLayout/RoutedTabs.test.tsx b/packages/core/src/components/TabbedLayout/RoutedTabs.test.tsx
index 549aa55eff..9b33304a95 100644
--- a/packages/core/src/components/TabbedLayout/RoutedTabs.test.tsx
+++ b/packages/core/src/components/TabbedLayout/RoutedTabs.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/TabbedLayout/RoutedTabs.tsx b/packages/core/src/components/TabbedLayout/RoutedTabs.tsx
index 8d32e63688..531262544c 100644
--- a/packages/core/src/components/TabbedLayout/RoutedTabs.tsx
+++ b/packages/core/src/components/TabbedLayout/RoutedTabs.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/TabbedLayout/TabbedLayout.stories.tsx b/packages/core/src/components/TabbedLayout/TabbedLayout.stories.tsx
index bf6175a9a2..9686409c43 100644
--- a/packages/core/src/components/TabbedLayout/TabbedLayout.stories.tsx
+++ b/packages/core/src/components/TabbedLayout/TabbedLayout.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/TabbedLayout/TabbedLayout.test.tsx b/packages/core/src/components/TabbedLayout/TabbedLayout.test.tsx
index 77230ab6cd..2bc60783d7 100644
--- a/packages/core/src/components/TabbedLayout/TabbedLayout.test.tsx
+++ b/packages/core/src/components/TabbedLayout/TabbedLayout.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/TabbedLayout/TabbedLayout.tsx b/packages/core/src/components/TabbedLayout/TabbedLayout.tsx
index 5a1b190d00..02732dc8cd 100644
--- a/packages/core/src/components/TabbedLayout/TabbedLayout.tsx
+++ b/packages/core/src/components/TabbedLayout/TabbedLayout.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/TabbedLayout/index.ts b/packages/core/src/components/TabbedLayout/index.ts
index fe72b199ec..af2fc1a20d 100644
--- a/packages/core/src/components/TabbedLayout/index.ts
+++ b/packages/core/src/components/TabbedLayout/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/TabbedLayout/types.ts b/packages/core/src/components/TabbedLayout/types.ts
index 24ee011933..b70ab3da0a 100644
--- a/packages/core/src/components/TabbedLayout/types.ts
+++ b/packages/core/src/components/TabbedLayout/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Table/Filters.tsx b/packages/core/src/components/Table/Filters.tsx
index 138fec4736..5e2611fba4 100644
--- a/packages/core/src/components/Table/Filters.tsx
+++ b/packages/core/src/components/Table/Filters.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Table/SubvalueCell.tsx b/packages/core/src/components/Table/SubvalueCell.tsx
index 944195a2db..1dab2e1f49 100644
--- a/packages/core/src/components/Table/SubvalueCell.tsx
+++ b/packages/core/src/components/Table/SubvalueCell.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Table/Table.stories.tsx b/packages/core/src/components/Table/Table.stories.tsx
index 3e2f73b7cb..6575bb11f9 100644
--- a/packages/core/src/components/Table/Table.stories.tsx
+++ b/packages/core/src/components/Table/Table.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Table/Table.test.tsx b/packages/core/src/components/Table/Table.test.tsx
index 3ba1c12ebd..fb231fde31 100644
--- a/packages/core/src/components/Table/Table.test.tsx
+++ b/packages/core/src/components/Table/Table.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Table/Table.tsx b/packages/core/src/components/Table/Table.tsx
index 1dd09e7ab8..d8db602e93 100644
--- a/packages/core/src/components/Table/Table.tsx
+++ b/packages/core/src/components/Table/Table.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Table/index.ts b/packages/core/src/components/Table/index.ts
index 83432ffc70..f46aab42df 100644
--- a/packages/core/src/components/Table/index.ts
+++ b/packages/core/src/components/Table/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Tabs/Tab.test.tsx b/packages/core/src/components/Tabs/Tab.test.tsx
index df8540ff14..d30420ebb6 100644
--- a/packages/core/src/components/Tabs/Tab.test.tsx
+++ b/packages/core/src/components/Tabs/Tab.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Tabs/Tab.tsx b/packages/core/src/components/Tabs/Tab.tsx
index 93243b2900..7b284940f1 100644
--- a/packages/core/src/components/Tabs/Tab.tsx
+++ b/packages/core/src/components/Tabs/Tab.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Tabs/TabBar.tsx b/packages/core/src/components/Tabs/TabBar.tsx
index c874200161..a5f2d6b0d6 100644
--- a/packages/core/src/components/Tabs/TabBar.tsx
+++ b/packages/core/src/components/Tabs/TabBar.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Tabs/TabIcon.tsx b/packages/core/src/components/Tabs/TabIcon.tsx
index ffb2e12cbd..dde01835a3 100644
--- a/packages/core/src/components/Tabs/TabIcon.tsx
+++ b/packages/core/src/components/Tabs/TabIcon.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Tabs/TabPanel.tsx b/packages/core/src/components/Tabs/TabPanel.tsx
index 360893b7c4..b6dd4f9f91 100644
--- a/packages/core/src/components/Tabs/TabPanel.tsx
+++ b/packages/core/src/components/Tabs/TabPanel.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Tabs/Tabs.stories.tsx b/packages/core/src/components/Tabs/Tabs.stories.tsx
index 00819c44f1..4d4cad8757 100644
--- a/packages/core/src/components/Tabs/Tabs.stories.tsx
+++ b/packages/core/src/components/Tabs/Tabs.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Tabs/Tabs.tsx b/packages/core/src/components/Tabs/Tabs.tsx
index f34afc1350..c6e5ad765e 100644
--- a/packages/core/src/components/Tabs/Tabs.tsx
+++ b/packages/core/src/components/Tabs/Tabs.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Tabs/index.ts b/packages/core/src/components/Tabs/index.ts
index 76275f1d6b..ae9e0b7486 100644
--- a/packages/core/src/components/Tabs/index.ts
+++ b/packages/core/src/components/Tabs/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/Tabs/utils.ts b/packages/core/src/components/Tabs/utils.ts
index 8d6a3be5f3..80705fdfc0 100644
--- a/packages/core/src/components/Tabs/utils.ts
+++ b/packages/core/src/components/Tabs/utils.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/TrendLine/TrendLine.stories.tsx b/packages/core/src/components/TrendLine/TrendLine.stories.tsx
index 6a5f8564f7..03d227fad3 100644
--- a/packages/core/src/components/TrendLine/TrendLine.stories.tsx
+++ b/packages/core/src/components/TrendLine/TrendLine.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/TrendLine/TrendLine.test.tsx b/packages/core/src/components/TrendLine/TrendLine.test.tsx
index f3d658265b..eb22c80769 100644
--- a/packages/core/src/components/TrendLine/TrendLine.test.tsx
+++ b/packages/core/src/components/TrendLine/TrendLine.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/TrendLine/TrendLine.tsx b/packages/core/src/components/TrendLine/TrendLine.tsx
index 84024634d3..0cbc2ca9d7 100644
--- a/packages/core/src/components/TrendLine/TrendLine.tsx
+++ b/packages/core/src/components/TrendLine/TrendLine.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/TrendLine/index.ts b/packages/core/src/components/TrendLine/index.ts
index ed98e53389..dd6345cd6d 100644
--- a/packages/core/src/components/TrendLine/index.ts
+++ b/packages/core/src/components/TrendLine/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/WarningPanel/WarningPanel.stories.tsx b/packages/core/src/components/WarningPanel/WarningPanel.stories.tsx
index ef99a0fce4..d88e190910 100644
--- a/packages/core/src/components/WarningPanel/WarningPanel.stories.tsx
+++ b/packages/core/src/components/WarningPanel/WarningPanel.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/WarningPanel/WarningPanel.test.tsx b/packages/core/src/components/WarningPanel/WarningPanel.test.tsx
index 38ba4bff9b..36b5372900 100644
--- a/packages/core/src/components/WarningPanel/WarningPanel.test.tsx
+++ b/packages/core/src/components/WarningPanel/WarningPanel.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/WarningPanel/WarningPanel.tsx b/packages/core/src/components/WarningPanel/WarningPanel.tsx
index 1faf3bb142..8096ccf665 100644
--- a/packages/core/src/components/WarningPanel/WarningPanel.tsx
+++ b/packages/core/src/components/WarningPanel/WarningPanel.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/WarningPanel/index.ts b/packages/core/src/components/WarningPanel/index.ts
index 5cc9b8bb65..07f7acca42 100644
--- a/packages/core/src/components/WarningPanel/index.ts
+++ b/packages/core/src/components/WarningPanel/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/components/index.ts b/packages/core/src/components/index.ts
index 14f7f3cac0..ab13f5b2b8 100644
--- a/packages/core/src/components/index.ts
+++ b/packages/core/src/components/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/hooks/index.ts b/packages/core/src/hooks/index.ts
index 6408790b8d..07e585bf27 100644
--- a/packages/core/src/hooks/index.ts
+++ b/packages/core/src/hooks/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/hooks/useQueryParamState.ts b/packages/core/src/hooks/useQueryParamState.ts
index 173993a466..57fcdc22c0 100644
--- a/packages/core/src/hooks/useQueryParamState.ts
+++ b/packages/core/src/hooks/useQueryParamState.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/hooks/useSupportConfig.ts b/packages/core/src/hooks/useSupportConfig.ts
index e77c64dd85..25c6035d6e 100644
--- a/packages/core/src/hooks/useSupportConfig.ts
+++ b/packages/core/src/hooks/useSupportConfig.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts
index 43168635cb..c30f578def 100644
--- a/packages/core/src/index.ts
+++ b/packages/core/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/BottomLink/BottomLink.test.tsx b/packages/core/src/layout/BottomLink/BottomLink.test.tsx
index 8bea00e35d..6eae7d2bef 100644
--- a/packages/core/src/layout/BottomLink/BottomLink.test.tsx
+++ b/packages/core/src/layout/BottomLink/BottomLink.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/BottomLink/BottomLink.tsx b/packages/core/src/layout/BottomLink/BottomLink.tsx
index f412dee674..f92f546809 100644
--- a/packages/core/src/layout/BottomLink/BottomLink.tsx
+++ b/packages/core/src/layout/BottomLink/BottomLink.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/BottomLink/index.ts b/packages/core/src/layout/BottomLink/index.ts
index 18befcc9bf..853c74c880 100644
--- a/packages/core/src/layout/BottomLink/index.ts
+++ b/packages/core/src/layout/BottomLink/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/Breadcrumbs/Breadcrumbs.stories.tsx b/packages/core/src/layout/Breadcrumbs/Breadcrumbs.stories.tsx
index 31ff2206f1..9716471d9f 100644
--- a/packages/core/src/layout/Breadcrumbs/Breadcrumbs.stories.tsx
+++ b/packages/core/src/layout/Breadcrumbs/Breadcrumbs.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/Breadcrumbs/Breadcrumbs.test.tsx b/packages/core/src/layout/Breadcrumbs/Breadcrumbs.test.tsx
index 2ce170d814..4c8d707501 100644
--- a/packages/core/src/layout/Breadcrumbs/Breadcrumbs.test.tsx
+++ b/packages/core/src/layout/Breadcrumbs/Breadcrumbs.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/Breadcrumbs/Breadcrumbs.tsx b/packages/core/src/layout/Breadcrumbs/Breadcrumbs.tsx
index a64b462377..418217f3b5 100644
--- a/packages/core/src/layout/Breadcrumbs/Breadcrumbs.tsx
+++ b/packages/core/src/layout/Breadcrumbs/Breadcrumbs.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/Breadcrumbs/index.ts b/packages/core/src/layout/Breadcrumbs/index.ts
index 6c5c2539df..31bae893a4 100644
--- a/packages/core/src/layout/Breadcrumbs/index.ts
+++ b/packages/core/src/layout/Breadcrumbs/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/Content/Content.tsx b/packages/core/src/layout/Content/Content.tsx
index bf305deaea..cb6a841cf3 100644
--- a/packages/core/src/layout/Content/Content.tsx
+++ b/packages/core/src/layout/Content/Content.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/Content/index.ts b/packages/core/src/layout/Content/index.ts
index d05ae0e787..a94ceabdfa 100644
--- a/packages/core/src/layout/Content/index.ts
+++ b/packages/core/src/layout/Content/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/ContentHeader/ContentHeader.test.tsx b/packages/core/src/layout/ContentHeader/ContentHeader.test.tsx
index b28ad614bf..498b859db1 100644
--- a/packages/core/src/layout/ContentHeader/ContentHeader.test.tsx
+++ b/packages/core/src/layout/ContentHeader/ContentHeader.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/ContentHeader/ContentHeader.tsx b/packages/core/src/layout/ContentHeader/ContentHeader.tsx
index 3ccf8f894c..1e2ad0b5d4 100644
--- a/packages/core/src/layout/ContentHeader/ContentHeader.tsx
+++ b/packages/core/src/layout/ContentHeader/ContentHeader.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/ContentHeader/index.ts b/packages/core/src/layout/ContentHeader/index.ts
index 18d03228a3..537a2b6ed9 100644
--- a/packages/core/src/layout/ContentHeader/index.ts
+++ b/packages/core/src/layout/ContentHeader/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/ErrorBoundary/ErrorBoundary.test.tsx b/packages/core/src/layout/ErrorBoundary/ErrorBoundary.test.tsx
index 4a3126c73c..1dbeeca8c6 100644
--- a/packages/core/src/layout/ErrorBoundary/ErrorBoundary.test.tsx
+++ b/packages/core/src/layout/ErrorBoundary/ErrorBoundary.test.tsx
@@ -1,6 +1,6 @@
/* eslint-disable no-console */
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/ErrorBoundary/ErrorBoundary.tsx b/packages/core/src/layout/ErrorBoundary/ErrorBoundary.tsx
index 88784dc8b0..4134808311 100644
--- a/packages/core/src/layout/ErrorBoundary/ErrorBoundary.tsx
+++ b/packages/core/src/layout/ErrorBoundary/ErrorBoundary.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/ErrorBoundary/index.ts b/packages/core/src/layout/ErrorBoundary/index.ts
index 607634e89a..47c1b2bace 100644
--- a/packages/core/src/layout/ErrorBoundary/index.ts
+++ b/packages/core/src/layout/ErrorBoundary/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/ErrorPage/ErrorPage.test.tsx b/packages/core/src/layout/ErrorPage/ErrorPage.test.tsx
index 23b42c0a11..a314128bce 100644
--- a/packages/core/src/layout/ErrorPage/ErrorPage.test.tsx
+++ b/packages/core/src/layout/ErrorPage/ErrorPage.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/ErrorPage/ErrorPage.tsx b/packages/core/src/layout/ErrorPage/ErrorPage.tsx
index 466c2f46b6..cca88147c4 100644
--- a/packages/core/src/layout/ErrorPage/ErrorPage.tsx
+++ b/packages/core/src/layout/ErrorPage/ErrorPage.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/ErrorPage/MicDrop.tsx b/packages/core/src/layout/ErrorPage/MicDrop.tsx
index aa8aaaf5e7..666eea4f09 100644
--- a/packages/core/src/layout/ErrorPage/MicDrop.tsx
+++ b/packages/core/src/layout/ErrorPage/MicDrop.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/ErrorPage/index.ts b/packages/core/src/layout/ErrorPage/index.ts
index 506ed1f815..a9a5fc9b2a 100644
--- a/packages/core/src/layout/ErrorPage/index.ts
+++ b/packages/core/src/layout/ErrorPage/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/Header/Header.stories.tsx b/packages/core/src/layout/Header/Header.stories.tsx
index db4ddac8ec..9fee6313e9 100644
--- a/packages/core/src/layout/Header/Header.stories.tsx
+++ b/packages/core/src/layout/Header/Header.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/Header/Header.test.tsx b/packages/core/src/layout/Header/Header.test.tsx
index 51468f6ab5..7fcb658673 100644
--- a/packages/core/src/layout/Header/Header.test.tsx
+++ b/packages/core/src/layout/Header/Header.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/Header/Header.tsx b/packages/core/src/layout/Header/Header.tsx
index 1ad7b91687..3e9066ed97 100644
--- a/packages/core/src/layout/Header/Header.tsx
+++ b/packages/core/src/layout/Header/Header.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/Header/index.ts b/packages/core/src/layout/Header/index.ts
index e0860413c9..2c322fe9c1 100644
--- a/packages/core/src/layout/Header/index.ts
+++ b/packages/core/src/layout/Header/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/HeaderActionMenu/HeaderActionMenu.test.tsx b/packages/core/src/layout/HeaderActionMenu/HeaderActionMenu.test.tsx
index 76ede5398d..b1bd398d15 100644
--- a/packages/core/src/layout/HeaderActionMenu/HeaderActionMenu.test.tsx
+++ b/packages/core/src/layout/HeaderActionMenu/HeaderActionMenu.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/HeaderActionMenu/HeaderActionMenu.tsx b/packages/core/src/layout/HeaderActionMenu/HeaderActionMenu.tsx
index 6f0b337b54..06a9b2b701 100644
--- a/packages/core/src/layout/HeaderActionMenu/HeaderActionMenu.tsx
+++ b/packages/core/src/layout/HeaderActionMenu/HeaderActionMenu.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/HeaderActionMenu/VerticalMenuIcon.tsx b/packages/core/src/layout/HeaderActionMenu/VerticalMenuIcon.tsx
index c9fde8cea2..a6a1d3a3d7 100644
--- a/packages/core/src/layout/HeaderActionMenu/VerticalMenuIcon.tsx
+++ b/packages/core/src/layout/HeaderActionMenu/VerticalMenuIcon.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/HeaderActionMenu/index.ts b/packages/core/src/layout/HeaderActionMenu/index.ts
index bb7fa80d59..22182a6a0e 100644
--- a/packages/core/src/layout/HeaderActionMenu/index.ts
+++ b/packages/core/src/layout/HeaderActionMenu/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/HeaderLabel/HeaderLabel.test.tsx b/packages/core/src/layout/HeaderLabel/HeaderLabel.test.tsx
index acadb22525..3dff1f51be 100644
--- a/packages/core/src/layout/HeaderLabel/HeaderLabel.test.tsx
+++ b/packages/core/src/layout/HeaderLabel/HeaderLabel.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/HeaderLabel/HeaderLabel.tsx b/packages/core/src/layout/HeaderLabel/HeaderLabel.tsx
index 914be06cf2..1534656f24 100644
--- a/packages/core/src/layout/HeaderLabel/HeaderLabel.tsx
+++ b/packages/core/src/layout/HeaderLabel/HeaderLabel.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/HeaderLabel/index.ts b/packages/core/src/layout/HeaderLabel/index.ts
index 683ec59784..cc803e7fde 100644
--- a/packages/core/src/layout/HeaderLabel/index.ts
+++ b/packages/core/src/layout/HeaderLabel/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/HeaderTabs/HeaderTabs.test.tsx b/packages/core/src/layout/HeaderTabs/HeaderTabs.test.tsx
index 9a5093f6e9..1419e8b9a6 100644
--- a/packages/core/src/layout/HeaderTabs/HeaderTabs.test.tsx
+++ b/packages/core/src/layout/HeaderTabs/HeaderTabs.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/HeaderTabs/HeaderTabs.tsx b/packages/core/src/layout/HeaderTabs/HeaderTabs.tsx
index 1fd4a18ba3..46fe9f1569 100644
--- a/packages/core/src/layout/HeaderTabs/HeaderTabs.tsx
+++ b/packages/core/src/layout/HeaderTabs/HeaderTabs.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/HeaderTabs/index.tsx b/packages/core/src/layout/HeaderTabs/index.tsx
index 1097698265..e706f19bf6 100644
--- a/packages/core/src/layout/HeaderTabs/index.tsx
+++ b/packages/core/src/layout/HeaderTabs/index.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/HomepageTimer/HomepageTimer.test.tsx b/packages/core/src/layout/HomepageTimer/HomepageTimer.test.tsx
index 40b0c266e0..bbd52a6508 100644
--- a/packages/core/src/layout/HomepageTimer/HomepageTimer.test.tsx
+++ b/packages/core/src/layout/HomepageTimer/HomepageTimer.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/HomepageTimer/HomepageTimer.tsx b/packages/core/src/layout/HomepageTimer/HomepageTimer.tsx
index ad54388cce..593835fbce 100644
--- a/packages/core/src/layout/HomepageTimer/HomepageTimer.tsx
+++ b/packages/core/src/layout/HomepageTimer/HomepageTimer.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/HomepageTimer/index.ts b/packages/core/src/layout/HomepageTimer/index.ts
index facee1e982..bc004fc757 100644
--- a/packages/core/src/layout/HomepageTimer/index.ts
+++ b/packages/core/src/layout/HomepageTimer/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/InfoCard/InfoCard.stories.tsx b/packages/core/src/layout/InfoCard/InfoCard.stories.tsx
index 047f0f9321..cf012a129a 100644
--- a/packages/core/src/layout/InfoCard/InfoCard.stories.tsx
+++ b/packages/core/src/layout/InfoCard/InfoCard.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/InfoCard/InfoCard.test.tsx b/packages/core/src/layout/InfoCard/InfoCard.test.tsx
index f82d51fe06..479efe4fd4 100644
--- a/packages/core/src/layout/InfoCard/InfoCard.test.tsx
+++ b/packages/core/src/layout/InfoCard/InfoCard.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/InfoCard/InfoCard.tsx b/packages/core/src/layout/InfoCard/InfoCard.tsx
index 5bb3e19362..9a64bfa6f3 100644
--- a/packages/core/src/layout/InfoCard/InfoCard.tsx
+++ b/packages/core/src/layout/InfoCard/InfoCard.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/InfoCard/index.ts b/packages/core/src/layout/InfoCard/index.ts
index 35829662d0..cab443d9b2 100644
--- a/packages/core/src/layout/InfoCard/index.ts
+++ b/packages/core/src/layout/InfoCard/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/ItemCard/ItemCard.stories.tsx b/packages/core/src/layout/ItemCard/ItemCard.stories.tsx
index 56d2328454..7cd67ff00d 100644
--- a/packages/core/src/layout/ItemCard/ItemCard.stories.tsx
+++ b/packages/core/src/layout/ItemCard/ItemCard.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/ItemCard/ItemCard.test.tsx b/packages/core/src/layout/ItemCard/ItemCard.test.tsx
index 30cf95fd85..4375fb8181 100644
--- a/packages/core/src/layout/ItemCard/ItemCard.test.tsx
+++ b/packages/core/src/layout/ItemCard/ItemCard.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/ItemCard/ItemCard.tsx b/packages/core/src/layout/ItemCard/ItemCard.tsx
index 8c26e6a9f1..b4273ee837 100644
--- a/packages/core/src/layout/ItemCard/ItemCard.tsx
+++ b/packages/core/src/layout/ItemCard/ItemCard.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/ItemCard/ItemCardGrid.test.tsx b/packages/core/src/layout/ItemCard/ItemCardGrid.test.tsx
index 51ef8c544f..02c3bb3639 100644
--- a/packages/core/src/layout/ItemCard/ItemCardGrid.test.tsx
+++ b/packages/core/src/layout/ItemCard/ItemCardGrid.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/ItemCard/ItemCardGrid.tsx b/packages/core/src/layout/ItemCard/ItemCardGrid.tsx
index 551c3c67d5..815bfffa2c 100644
--- a/packages/core/src/layout/ItemCard/ItemCardGrid.tsx
+++ b/packages/core/src/layout/ItemCard/ItemCardGrid.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/ItemCard/ItemCardHeader.test.tsx b/packages/core/src/layout/ItemCard/ItemCardHeader.test.tsx
index ec9af6436e..41b150a900 100644
--- a/packages/core/src/layout/ItemCard/ItemCardHeader.test.tsx
+++ b/packages/core/src/layout/ItemCard/ItemCardHeader.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/ItemCard/ItemCardHeader.tsx b/packages/core/src/layout/ItemCard/ItemCardHeader.tsx
index ebf419cba0..6f8b17701d 100644
--- a/packages/core/src/layout/ItemCard/ItemCardHeader.tsx
+++ b/packages/core/src/layout/ItemCard/ItemCardHeader.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/ItemCard/index.ts b/packages/core/src/layout/ItemCard/index.ts
index da2c1dd546..7c4f77f43a 100644
--- a/packages/core/src/layout/ItemCard/index.ts
+++ b/packages/core/src/layout/ItemCard/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/Page/Page.stories.tsx b/packages/core/src/layout/Page/Page.stories.tsx
index 79d9fa5d72..6aca5503ef 100644
--- a/packages/core/src/layout/Page/Page.stories.tsx
+++ b/packages/core/src/layout/Page/Page.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/Page/Page.tsx b/packages/core/src/layout/Page/Page.tsx
index 3f04948356..8acb54c268 100644
--- a/packages/core/src/layout/Page/Page.tsx
+++ b/packages/core/src/layout/Page/Page.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/Page/index.ts b/packages/core/src/layout/Page/index.ts
index 987aee5cdb..d2523e8467 100644
--- a/packages/core/src/layout/Page/index.ts
+++ b/packages/core/src/layout/Page/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/Sidebar/Bar.tsx b/packages/core/src/layout/Sidebar/Bar.tsx
index 260593de95..f6edac81b7 100644
--- a/packages/core/src/layout/Sidebar/Bar.tsx
+++ b/packages/core/src/layout/Sidebar/Bar.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/Sidebar/Intro.tsx b/packages/core/src/layout/Sidebar/Intro.tsx
index b95719c05f..1d46239865 100644
--- a/packages/core/src/layout/Sidebar/Intro.tsx
+++ b/packages/core/src/layout/Sidebar/Intro.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/Sidebar/Items.test.tsx b/packages/core/src/layout/Sidebar/Items.test.tsx
index fb0ee174f8..89d2a2c294 100644
--- a/packages/core/src/layout/Sidebar/Items.test.tsx
+++ b/packages/core/src/layout/Sidebar/Items.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/Sidebar/Items.tsx b/packages/core/src/layout/Sidebar/Items.tsx
index 7c9c0a901f..0440cccfa1 100644
--- a/packages/core/src/layout/Sidebar/Items.tsx
+++ b/packages/core/src/layout/Sidebar/Items.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/Sidebar/Page.tsx b/packages/core/src/layout/Sidebar/Page.tsx
index 25717cb053..0ace7468ef 100644
--- a/packages/core/src/layout/Sidebar/Page.tsx
+++ b/packages/core/src/layout/Sidebar/Page.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/Sidebar/Sidebar.stories.tsx b/packages/core/src/layout/Sidebar/Sidebar.stories.tsx
index 1af1320822..d2ef002c6e 100644
--- a/packages/core/src/layout/Sidebar/Sidebar.stories.tsx
+++ b/packages/core/src/layout/Sidebar/Sidebar.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/Sidebar/config.ts b/packages/core/src/layout/Sidebar/config.ts
index 8ea6cc94f9..3d574d03bb 100644
--- a/packages/core/src/layout/Sidebar/config.ts
+++ b/packages/core/src/layout/Sidebar/config.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/Sidebar/index.ts b/packages/core/src/layout/Sidebar/index.ts
index 803306478d..fc0e29f9a6 100644
--- a/packages/core/src/layout/Sidebar/index.ts
+++ b/packages/core/src/layout/Sidebar/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/Sidebar/localStorage.test.ts b/packages/core/src/layout/Sidebar/localStorage.test.ts
index 0cfcac73c5..c115fa4e99 100644
--- a/packages/core/src/layout/Sidebar/localStorage.test.ts
+++ b/packages/core/src/layout/Sidebar/localStorage.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/Sidebar/localStorage.ts b/packages/core/src/layout/Sidebar/localStorage.ts
index 665c97423a..0e904ee319 100644
--- a/packages/core/src/layout/Sidebar/localStorage.ts
+++ b/packages/core/src/layout/Sidebar/localStorage.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/SignInPage/SignInPage.tsx b/packages/core/src/layout/SignInPage/SignInPage.tsx
index cfe543f9ab..ecb4b15cf8 100644
--- a/packages/core/src/layout/SignInPage/SignInPage.tsx
+++ b/packages/core/src/layout/SignInPage/SignInPage.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/SignInPage/auth0Provider.tsx b/packages/core/src/layout/SignInPage/auth0Provider.tsx
index 423b28ea8d..97e8a31411 100644
--- a/packages/core/src/layout/SignInPage/auth0Provider.tsx
+++ b/packages/core/src/layout/SignInPage/auth0Provider.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/SignInPage/commonProvider.tsx b/packages/core/src/layout/SignInPage/commonProvider.tsx
index 591efe9ece..34ebb5b5d4 100644
--- a/packages/core/src/layout/SignInPage/commonProvider.tsx
+++ b/packages/core/src/layout/SignInPage/commonProvider.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/SignInPage/customProvider.tsx b/packages/core/src/layout/SignInPage/customProvider.tsx
index 09ffcda10a..e8f7d03a1d 100644
--- a/packages/core/src/layout/SignInPage/customProvider.tsx
+++ b/packages/core/src/layout/SignInPage/customProvider.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/SignInPage/guestProvider.tsx b/packages/core/src/layout/SignInPage/guestProvider.tsx
index f4854311ac..8673c17ffa 100644
--- a/packages/core/src/layout/SignInPage/guestProvider.tsx
+++ b/packages/core/src/layout/SignInPage/guestProvider.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/SignInPage/index.ts b/packages/core/src/layout/SignInPage/index.ts
index b10ea7ae33..2e5502d7ea 100644
--- a/packages/core/src/layout/SignInPage/index.ts
+++ b/packages/core/src/layout/SignInPage/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/SignInPage/providers.tsx b/packages/core/src/layout/SignInPage/providers.tsx
index 1ea32220b0..0cb849b50e 100644
--- a/packages/core/src/layout/SignInPage/providers.tsx
+++ b/packages/core/src/layout/SignInPage/providers.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/SignInPage/styles.tsx b/packages/core/src/layout/SignInPage/styles.tsx
index 0d8bd245c5..96559a4e78 100644
--- a/packages/core/src/layout/SignInPage/styles.tsx
+++ b/packages/core/src/layout/SignInPage/styles.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/SignInPage/types.ts b/packages/core/src/layout/SignInPage/types.ts
index 0c78549d0c..891d3d499b 100644
--- a/packages/core/src/layout/SignInPage/types.ts
+++ b/packages/core/src/layout/SignInPage/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/TabbedCard/TabbedCard.stories.tsx b/packages/core/src/layout/TabbedCard/TabbedCard.stories.tsx
index 0a68b0b47b..3214d26653 100644
--- a/packages/core/src/layout/TabbedCard/TabbedCard.stories.tsx
+++ b/packages/core/src/layout/TabbedCard/TabbedCard.stories.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/TabbedCard/TabbedCard.test.tsx b/packages/core/src/layout/TabbedCard/TabbedCard.test.tsx
index 097d81d570..5e0014c400 100644
--- a/packages/core/src/layout/TabbedCard/TabbedCard.test.tsx
+++ b/packages/core/src/layout/TabbedCard/TabbedCard.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/TabbedCard/TabbedCard.tsx b/packages/core/src/layout/TabbedCard/TabbedCard.tsx
index c9ae2eebc8..6204182cb1 100644
--- a/packages/core/src/layout/TabbedCard/TabbedCard.tsx
+++ b/packages/core/src/layout/TabbedCard/TabbedCard.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/TabbedCard/index.ts b/packages/core/src/layout/TabbedCard/index.ts
index 88d7782d55..f3e32be054 100644
--- a/packages/core/src/layout/TabbedCard/index.ts
+++ b/packages/core/src/layout/TabbedCard/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/layout/index.ts b/packages/core/src/layout/index.ts
index 2ab1ebaf5b..4abde642dc 100644
--- a/packages/core/src/layout/index.ts
+++ b/packages/core/src/layout/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/core/src/setupTests.ts b/packages/core/src/setupTests.ts
index 825bcd4115..963c0f188b 100644
--- a/packages/core/src/setupTests.ts
+++ b/packages/core/src/setupTests.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/create-app/CHANGELOG.md b/packages/create-app/CHANGELOG.md
index 13f2bcb5ab..4658e413c1 100644
--- a/packages/create-app/CHANGELOG.md
+++ b/packages/create-app/CHANGELOG.md
@@ -1,5 +1,137 @@
# @backstage/create-app
+## 0.3.27
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-backend@0.12.2
+
+## 0.3.26
+
+### Patch Changes
+
+- 5db7445b4: Adding .DS_Store pattern to .gitignore in Scaffolded Backstage App. To migrate an existing app that pattern should be added manually.
+
+ ```diff
+ +# macOS
+ +.DS_Store
+ ```
+
+- b45e29410: This release enables the new catalog processing engine which is a major milestone for the catalog!
+
+ This update makes processing more scalable across multiple instances, adds support for deletions and ui flagging of entities that are no longer referenced by a location.
+
+ **Changes Required** to `catalog.ts`
+
+ ```diff
+ -import { useHotCleanup } from '@backstage/backend-common';
+ import {
+ CatalogBuilder,
+ - createRouter,
+ - runPeriodically
+ + createRouter
+ } from '@backstage/plugin-catalog-backend';
+ import { Router } from 'express';
+ import { PluginEnvironment } from '../types';
+
+ export default async function createPlugin(env: PluginEnvironment): Promise {
+ - const builder = new CatalogBuilder(env);
+ + const builder = await CatalogBuilder.create(env);
+ const {
+ entitiesCatalog,
+ locationsCatalog,
+ - higherOrderOperation,
+ + locationService,
+ + processingEngine,
+ locationAnalyzer,
+ } = await builder.build();
+
+ - useHotCleanup(
+ - module,
+ - runPeriodically(() => higherOrderOperation.refreshAllLocations(), 100000),
+ - );
+ + await processingEngine.start();
+
+ return await createRouter({
+ entitiesCatalog,
+ locationsCatalog,
+ - higherOrderOperation,
+ + locationService,
+ locationAnalyzer,
+ logger: env.logger,
+ config: env.config,
+ ```
+
+ As this is a major internal change we have taken some precaution by still allowing the old catalog to be enabled by keeping your `catalog.ts` in it's current state.
+ If you encounter any issues and have to revert to the previous catalog engine make sure to raise an issue immediately as the old catalog engine is deprecated and will be removed in a future release.
+
+- 772dbdb51: Deprecates `SingleConnectionDatabaseManager` and provides an API compatible database
+ connection manager, `DatabaseManager`, which allows developers to configure database
+ connections on a per plugin basis.
+
+ The `backend.database` config path allows you to set `prefix` to use an
+ alternate prefix for automatically generated database names, the default is
+ `backstage_plugin_`. Use `backend.database.plugin.` to set plugin
+ specific database connection configuration, e.g.
+
+ ```yaml
+ backend:
+ database:
+ client: 'pg',
+ prefix: 'custom_prefix_'
+ connection:
+ host: 'localhost'
+ user: 'foo'
+ password: 'bar'
+ plugin:
+ catalog:
+ connection:
+ database: 'database_name_overriden'
+ scaffolder:
+ client: 'sqlite3'
+ connection: ':memory:'
+ ```
+
+ Migrate existing backstage installations by swapping out the database manager in the
+ `packages/backend/src/index.ts` file as shown below:
+
+ ```diff
+ import {
+ - SingleConnectionDatabaseManager,
+ + DatabaseManager,
+ } from '@backstage/backend-common';
+
+ // ...
+
+ function makeCreateEnv(config: Config) {
+ // ...
+ - const databaseManager = SingleConnectionDatabaseManager.fromConfig(config);
+ + const databaseManager = DatabaseManager.fromConfig(config);
+ // ...
+ }
+ ```
+
+- Updated dependencies
+ - @backstage/plugin-catalog@0.6.3
+ - @backstage/plugin-search-backend-node@0.2.1
+ - @backstage/plugin-catalog-backend@0.10.3
+ - @backstage/backend-common@0.8.3
+ - @backstage/cli@0.7.1
+ - @backstage/plugin-api-docs@0.5.0
+ - @backstage/plugin-scaffolder-backend@0.12.1
+ - @backstage/plugin-techdocs@0.9.6
+ - @backstage/plugin-techdocs-backend@0.8.3
+ - @backstage/plugin-catalog-import@0.5.10
+ - @backstage/plugin-app-backend@0.3.14
+ - @backstage/plugin-proxy-backend@0.2.10
+ - @backstage/plugin-rollbar-backend@0.1.12
+ - @backstage/plugin-search-backend@0.2.1
+ - @backstage/plugin-user-settings@0.2.11
+ - @backstage/catalog-model@0.8.3
+ - @backstage/plugin-auth-backend@0.3.13
+ - @backstage/core@0.7.13
+
## 0.3.25
### Patch Changes
diff --git a/packages/create-app/bin/backstage-create-app b/packages/create-app/bin/backstage-create-app
index 902f341bfb..60dfd4990a 100755
--- a/packages/create-app/bin/backstage-create-app
+++ b/packages/create-app/bin/backstage-create-app
@@ -1,6 +1,6 @@
#!/usr/bin/env node
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/create-app/package.json b/packages/create-app/package.json
index d5adcba510..0eb5d9e29c 100644
--- a/packages/create-app/package.json
+++ b/packages/create-app/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/create-app",
"description": "Create app package for Backstage",
- "version": "0.3.25",
+ "version": "0.3.27",
"private": false,
"publishConfig": {
"access": "public"
diff --git a/packages/create-app/src/createApp.ts b/packages/create-app/src/createApp.ts
index c3a8713890..1da3139f41 100644
--- a/packages/create-app/src/createApp.ts
+++ b/packages/create-app/src/createApp.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/create-app/src/index.ts b/packages/create-app/src/index.ts
index bb4ac8ae51..83357d21de 100644
--- a/packages/create-app/src/index.ts
+++ b/packages/create-app/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/create-app/src/lib/errors.ts b/packages/create-app/src/lib/errors.ts
index a1eab4c9e5..2f67b94ae1 100644
--- a/packages/create-app/src/lib/errors.ts
+++ b/packages/create-app/src/lib/errors.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/create-app/src/lib/tasks.ts b/packages/create-app/src/lib/tasks.ts
index b615692830..19f0ed66b8 100644
--- a/packages/create-app/src/lib/tasks.ts
+++ b/packages/create-app/src/lib/tasks.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/create-app/src/lib/versions.ts b/packages/create-app/src/lib/versions.ts
index a0f646747b..f3196d3675 100644
--- a/packages/create-app/src/lib/versions.ts
+++ b/packages/create-app/src/lib/versions.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/create-app/templates/default-app/.gitignore.hbs b/packages/create-app/templates/default-app/.gitignore.hbs
index 4adebc5adc..d16a8d3fba 100644
--- a/packages/create-app/templates/default-app/.gitignore.hbs
+++ b/packages/create-app/templates/default-app/.gitignore.hbs
@@ -1,3 +1,6 @@
+# macOS
+.DS_Store
+
# Logs
logs
*.log
diff --git a/packages/create-app/templates/default-app/packages/app/src/components/Root/LogoFull.tsx b/packages/create-app/templates/default-app/packages/app/src/components/Root/LogoFull.tsx
index 2fb767465b..c7b1c846c4 100644
--- a/packages/create-app/templates/default-app/packages/app/src/components/Root/LogoFull.tsx
+++ b/packages/create-app/templates/default-app/packages/app/src/components/Root/LogoFull.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/create-app/templates/default-app/packages/app/src/components/Root/LogoIcon.tsx b/packages/create-app/templates/default-app/packages/app/src/components/Root/LogoIcon.tsx
index 507e47ddb9..073cf6edad 100644
--- a/packages/create-app/templates/default-app/packages/app/src/components/Root/LogoIcon.tsx
+++ b/packages/create-app/templates/default-app/packages/app/src/components/Root/LogoIcon.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/create-app/templates/default-app/packages/app/src/components/Root/Root.tsx b/packages/create-app/templates/default-app/packages/app/src/components/Root/Root.tsx
index 9c07e0c5e2..adcaed9152 100644
--- a/packages/create-app/templates/default-app/packages/app/src/components/Root/Root.tsx
+++ b/packages/create-app/templates/default-app/packages/app/src/components/Root/Root.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/create-app/templates/default-app/packages/app/src/components/Root/index.ts b/packages/create-app/templates/default-app/packages/app/src/components/Root/index.ts
index ab65cb2451..dff706f08f 100644
--- a/packages/create-app/templates/default-app/packages/app/src/components/Root/index.ts
+++ b/packages/create-app/templates/default-app/packages/app/src/components/Root/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/create-app/templates/default-app/packages/app/src/components/catalog/EntityPage.tsx b/packages/create-app/templates/default-app/packages/app/src/components/catalog/EntityPage.tsx
index 4f67dda235..5581b7dff1 100644
--- a/packages/create-app/templates/default-app/packages/app/src/components/catalog/EntityPage.tsx
+++ b/packages/create-app/templates/default-app/packages/app/src/components/catalog/EntityPage.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/create-app/templates/default-app/packages/backend/src/index.ts b/packages/create-app/templates/default-app/packages/backend/src/index.ts
index 3d8849fa75..f2b14b23f9 100644
--- a/packages/create-app/templates/default-app/packages/backend/src/index.ts
+++ b/packages/create-app/templates/default-app/packages/backend/src/index.ts
@@ -14,7 +14,7 @@ import {
useHotMemoize,
notFoundHandler,
CacheManager,
- SingleConnectionDatabaseManager,
+ DatabaseManager,
SingleHostDiscovery,
UrlReaders,
} from '@backstage/backend-common';
@@ -35,8 +35,8 @@ function makeCreateEnv(config: Config) {
root.info(`Created UrlReader ${reader}`);
- const databaseManager = SingleConnectionDatabaseManager.fromConfig(config);
const cacheManager = CacheManager.fromConfig(config);
+ const databaseManager = DatabaseManager.fromConfig(config);
return (plugin: string): PluginEnvironment => {
const logger = root.child({ type: 'plugin', plugin });
diff --git a/packages/create-app/templates/default-app/packages/backend/src/plugins/catalog.ts b/packages/create-app/templates/default-app/packages/backend/src/plugins/catalog.ts
index 838228cdb4..a132f0a8ae 100644
--- a/packages/create-app/templates/default-app/packages/backend/src/plugins/catalog.ts
+++ b/packages/create-app/templates/default-app/packages/backend/src/plugins/catalog.ts
@@ -1,30 +1,26 @@
-import { useHotCleanup } from '@backstage/backend-common';
import {
CatalogBuilder,
- createRouter,
- runPeriodically
+ createRouter
} from '@backstage/plugin-catalog-backend';
import { Router } from 'express';
import { PluginEnvironment } from '../types';
export default async function createPlugin(env: PluginEnvironment): Promise {
- const builder = new CatalogBuilder(env);
+ const builder = await CatalogBuilder.create(env);
const {
entitiesCatalog,
locationsCatalog,
- higherOrderOperation,
+ locationService,
+ processingEngine,
locationAnalyzer,
} = await builder.build();
- useHotCleanup(
- module,
- runPeriodically(() => higherOrderOperation.refreshAllLocations(), 100000),
- );
+ await processingEngine.start();
return await createRouter({
entitiesCatalog,
locationsCatalog,
- higherOrderOperation,
+ locationService,
locationAnalyzer,
logger: env.logger,
config: env.config,
diff --git a/packages/dev-utils/src/components/EntityGridItem/EntityGridItem.tsx b/packages/dev-utils/src/components/EntityGridItem/EntityGridItem.tsx
index 825a207064..30288fe7bb 100644
--- a/packages/dev-utils/src/components/EntityGridItem/EntityGridItem.tsx
+++ b/packages/dev-utils/src/components/EntityGridItem/EntityGridItem.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/dev-utils/src/components/EntityGridItem/index.ts b/packages/dev-utils/src/components/EntityGridItem/index.ts
index e0f07b13ba..a68378dced 100644
--- a/packages/dev-utils/src/components/EntityGridItem/index.ts
+++ b/packages/dev-utils/src/components/EntityGridItem/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/dev-utils/src/components/index.ts b/packages/dev-utils/src/components/index.ts
index 34224f09fd..d71b424a34 100644
--- a/packages/dev-utils/src/components/index.ts
+++ b/packages/dev-utils/src/components/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/dev-utils/src/devApp/index.tsx b/packages/dev-utils/src/devApp/index.tsx
index b832b0d2f6..d72b4757c8 100644
--- a/packages/dev-utils/src/devApp/index.tsx
+++ b/packages/dev-utils/src/devApp/index.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/dev-utils/src/devApp/render.test.tsx b/packages/dev-utils/src/devApp/render.test.tsx
index 9cb680c53b..e098b69736 100644
--- a/packages/dev-utils/src/devApp/render.test.tsx
+++ b/packages/dev-utils/src/devApp/render.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/dev-utils/src/devApp/render.tsx b/packages/dev-utils/src/devApp/render.tsx
index 06975df20f..4f1713d797 100644
--- a/packages/dev-utils/src/devApp/render.tsx
+++ b/packages/dev-utils/src/devApp/render.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -39,7 +39,6 @@ import {
} from '@backstage/integration-react';
import { Box } from '@material-ui/core';
import BookmarkIcon from '@material-ui/icons/Bookmark';
-import SentimentDissatisfiedIcon from '@material-ui/icons/SentimentDissatisfied';
import React, { ComponentType, ReactNode } from 'react';
import ReactDOM from 'react-dom';
import { hot } from 'react-hot-loader';
@@ -75,6 +74,8 @@ class DevAppBuilder {
private readonly routes = new Array();
private readonly sidebarItems = new Array();
+ private defaultPage?: string;
+
/**
* Register one or more plugins to render in the dev app
*/
@@ -113,6 +114,11 @@ class DevAppBuilder {
*/
addPage(opts: RegisterPageOptions): DevAppBuilder {
const path = opts.path ?? `/page-${this.routes.length + 1}`;
+
+ if (!this.defaultPage || path === '/') {
+ this.defaultPage = path;
+ }
+
if (opts.title) {
this.sidebarItems.push(
{
return (
@@ -181,10 +184,12 @@ class DevAppBuilder {
{this.rootChildren}
- {sidebar}
+
+
+ {this.sidebarItems}
+
{this.routes}
- {deprecatedAppRoutes}
} />
@@ -207,84 +212,12 @@ class DevAppBuilder {
const DevApp = hot(hotModule)(this.build());
- const paths = this.findPluginPaths(this.plugins);
-
- if (window.location.pathname === '/') {
- if (!paths.includes('/') && paths.length > 0) {
- window.location.pathname = paths[0];
- }
+ if (window.location.pathname === '/' && this.defaultPage) {
+ window.location.pathname = this.defaultPage;
}
ReactDOM.render(, document.getElementById('root'));
}
-
- // Create a sidebar that exposes the touchpoints of a plugin
- private setupSidebar(plugins: BackstagePlugin[]): JSX.Element {
- const sidebarItems = new Array();
- for (const plugin of plugins) {
- for (const output of plugin.output()) {
- switch (output.type) {
- case 'legacy-route': {
- const { path } = output;
- sidebarItems.push(
- ,
- );
- break;
- }
- case 'route': {
- const { target } = output;
- sidebarItems.push(
- ,
- );
- break;
- }
- default:
- break;
- }
- }
- }
-
- return (
-
-
- {this.sidebarItems}
- {sidebarItems}
-
- );
- }
-
- private findPluginPaths(plugins: BackstagePlugin[]) {
- const paths = new Array();
-
- for (const plugin of plugins) {
- for (const output of plugin.output()) {
- switch (output.type) {
- case 'legacy-route': {
- paths.push(output.path);
- break;
- }
- case 'route': {
- paths.push(output.target.path);
- break;
- }
- default:
- break;
- }
- }
- }
-
- return paths;
- }
}
// TODO(rugvip): Figure out patterns for how to allow in-house apps to build upon
diff --git a/packages/dev-utils/src/index.ts b/packages/dev-utils/src/index.ts
index 97add5dd86..908d904362 100644
--- a/packages/dev-utils/src/index.ts
+++ b/packages/dev-utils/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/dev-utils/src/setupTests.ts b/packages/dev-utils/src/setupTests.ts
index 825bcd4115..963c0f188b 100644
--- a/packages/dev-utils/src/setupTests.ts
+++ b/packages/dev-utils/src/setupTests.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/docgen/bin/backstage-docgen b/packages/docgen/bin/backstage-docgen
index 467a0cae8f..71674eedd4 100755
--- a/packages/docgen/bin/backstage-docgen
+++ b/packages/docgen/bin/backstage-docgen
@@ -1,6 +1,6 @@
#!/usr/bin/env node
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/docgen/src/docgen/ApiDocGenerator.test.ts b/packages/docgen/src/docgen/ApiDocGenerator.test.ts
index 947ce7ca04..2d6598b925 100644
--- a/packages/docgen/src/docgen/ApiDocGenerator.test.ts
+++ b/packages/docgen/src/docgen/ApiDocGenerator.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/docgen/src/docgen/ApiDocGenerator.ts b/packages/docgen/src/docgen/ApiDocGenerator.ts
index 3edcfedb9c..3199b2ddf3 100644
--- a/packages/docgen/src/docgen/ApiDocGenerator.ts
+++ b/packages/docgen/src/docgen/ApiDocGenerator.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/docgen/src/docgen/ApiDocsPrinter.ts b/packages/docgen/src/docgen/ApiDocsPrinter.ts
index 6f6528ec12..1fd62c29cd 100644
--- a/packages/docgen/src/docgen/ApiDocsPrinter.ts
+++ b/packages/docgen/src/docgen/ApiDocsPrinter.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/docgen/src/docgen/GitHubMarkdownPrinter.ts b/packages/docgen/src/docgen/GitHubMarkdownPrinter.ts
index d7955e5566..b36895597e 100644
--- a/packages/docgen/src/docgen/GitHubMarkdownPrinter.ts
+++ b/packages/docgen/src/docgen/GitHubMarkdownPrinter.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/docgen/src/docgen/TechdocsMarkdownPrinter.ts b/packages/docgen/src/docgen/TechdocsMarkdownPrinter.ts
index bd83699660..c9e3010dda 100644
--- a/packages/docgen/src/docgen/TechdocsMarkdownPrinter.ts
+++ b/packages/docgen/src/docgen/TechdocsMarkdownPrinter.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/docgen/src/docgen/TypeLocator.test.ts b/packages/docgen/src/docgen/TypeLocator.test.ts
index 5a264fd41c..8988b25814 100644
--- a/packages/docgen/src/docgen/TypeLocator.test.ts
+++ b/packages/docgen/src/docgen/TypeLocator.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/docgen/src/docgen/TypeLocator.ts b/packages/docgen/src/docgen/TypeLocator.ts
index a5a0b1fc5b..984724e667 100644
--- a/packages/docgen/src/docgen/TypeLocator.ts
+++ b/packages/docgen/src/docgen/TypeLocator.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/docgen/src/docgen/TypescriptHighlighter.ts b/packages/docgen/src/docgen/TypescriptHighlighter.ts
index ffdd4f1906..a48e17ba66 100644
--- a/packages/docgen/src/docgen/TypescriptHighlighter.ts
+++ b/packages/docgen/src/docgen/TypescriptHighlighter.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/docgen/src/docgen/sortSelector.test.ts b/packages/docgen/src/docgen/sortSelector.test.ts
index a3da3e2950..277b06faa5 100644
--- a/packages/docgen/src/docgen/sortSelector.test.ts
+++ b/packages/docgen/src/docgen/sortSelector.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/docgen/src/docgen/sortSelector.ts b/packages/docgen/src/docgen/sortSelector.ts
index 7590ae39ec..e8cb577ba5 100644
--- a/packages/docgen/src/docgen/sortSelector.ts
+++ b/packages/docgen/src/docgen/sortSelector.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/docgen/src/docgen/testUtils.ts b/packages/docgen/src/docgen/testUtils.ts
index 552776016a..c449dd7461 100644
--- a/packages/docgen/src/docgen/testUtils.ts
+++ b/packages/docgen/src/docgen/testUtils.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/docgen/src/docgen/types.ts b/packages/docgen/src/docgen/types.ts
index 1d1d93a6ae..60f3d35007 100644
--- a/packages/docgen/src/docgen/types.ts
+++ b/packages/docgen/src/docgen/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/docgen/src/generate.ts b/packages/docgen/src/generate.ts
index 66ee1a07a6..bbc18e48ab 100644
--- a/packages/docgen/src/generate.ts
+++ b/packages/docgen/src/generate.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/docgen/src/index.ts b/packages/docgen/src/index.ts
index 4b69fdbe01..755bc9cb98 100644
--- a/packages/docgen/src/index.ts
+++ b/packages/docgen/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/e2e-test/bin/e2e-test b/packages/e2e-test/bin/e2e-test
index d6d449fe31..27ed3472d5 100755
--- a/packages/e2e-test/bin/e2e-test
+++ b/packages/e2e-test/bin/e2e-test
@@ -1,6 +1,6 @@
#!/usr/bin/env node
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/e2e-test/src/commands/index.ts b/packages/e2e-test/src/commands/index.ts
index 78ff3343f1..51066293bf 100644
--- a/packages/e2e-test/src/commands/index.ts
+++ b/packages/e2e-test/src/commands/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/e2e-test/src/commands/run.ts b/packages/e2e-test/src/commands/run.ts
index ebf4e6c835..ef4670e2ce 100644
--- a/packages/e2e-test/src/commands/run.ts
+++ b/packages/e2e-test/src/commands/run.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/e2e-test/src/index.ts b/packages/e2e-test/src/index.ts
index 2266439973..a66d6bb57d 100644
--- a/packages/e2e-test/src/index.ts
+++ b/packages/e2e-test/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/e2e-test/src/lib/helpers.test.ts b/packages/e2e-test/src/lib/helpers.test.ts
index 196241f9e0..710b7b7a0f 100644
--- a/packages/e2e-test/src/lib/helpers.test.ts
+++ b/packages/e2e-test/src/lib/helpers.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/e2e-test/src/lib/helpers.ts b/packages/e2e-test/src/lib/helpers.ts
index 190ff403d9..2485e46b31 100644
--- a/packages/e2e-test/src/lib/helpers.ts
+++ b/packages/e2e-test/src/lib/helpers.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/e2e-test/src/types.d.ts b/packages/e2e-test/src/types.d.ts
index 0ae86490ee..8fbefb7e86 100644
--- a/packages/e2e-test/src/types.d.ts
+++ b/packages/e2e-test/src/types.d.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/errors/src/errors/CustomErrorBase.ts b/packages/errors/src/errors/CustomErrorBase.ts
index cd28d4cda3..fc374287c7 100644
--- a/packages/errors/src/errors/CustomErrorBase.ts
+++ b/packages/errors/src/errors/CustomErrorBase.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/errors/src/errors/ResponseError.test.ts b/packages/errors/src/errors/ResponseError.test.ts
index a67fb8bbfa..52a308dbb8 100644
--- a/packages/errors/src/errors/ResponseError.test.ts
+++ b/packages/errors/src/errors/ResponseError.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/errors/src/errors/ResponseError.ts b/packages/errors/src/errors/ResponseError.ts
index 0fff8afa66..c8927a447c 100644
--- a/packages/errors/src/errors/ResponseError.ts
+++ b/packages/errors/src/errors/ResponseError.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/errors/src/errors/common.test.ts b/packages/errors/src/errors/common.test.ts
index 97e616c718..232c3e78ef 100644
--- a/packages/errors/src/errors/common.test.ts
+++ b/packages/errors/src/errors/common.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/errors/src/errors/common.ts b/packages/errors/src/errors/common.ts
index 60fa540355..51c82eeda5 100644
--- a/packages/errors/src/errors/common.ts
+++ b/packages/errors/src/errors/common.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/errors/src/errors/index.ts b/packages/errors/src/errors/index.ts
index f48aacf881..cc9d15b1ff 100644
--- a/packages/errors/src/errors/index.ts
+++ b/packages/errors/src/errors/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/errors/src/index.ts b/packages/errors/src/index.ts
index a8d2142d88..a17d7d171a 100644
--- a/packages/errors/src/index.ts
+++ b/packages/errors/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/errors/src/serialization/error.test.ts b/packages/errors/src/serialization/error.test.ts
index 336dfbf299..27691e03f2 100644
--- a/packages/errors/src/serialization/error.test.ts
+++ b/packages/errors/src/serialization/error.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/errors/src/serialization/error.ts b/packages/errors/src/serialization/error.ts
index 15a21cee5e..46a2c2f74c 100644
--- a/packages/errors/src/serialization/error.ts
+++ b/packages/errors/src/serialization/error.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/errors/src/serialization/index.ts b/packages/errors/src/serialization/index.ts
index 18b050d4ac..a4ade6df95 100644
--- a/packages/errors/src/serialization/index.ts
+++ b/packages/errors/src/serialization/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/errors/src/serialization/response.test.ts b/packages/errors/src/serialization/response.test.ts
index 5e0050cba3..54a3641657 100644
--- a/packages/errors/src/serialization/response.test.ts
+++ b/packages/errors/src/serialization/response.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/errors/src/serialization/response.ts b/packages/errors/src/serialization/response.ts
index becc84a397..0196b2d597 100644
--- a/packages/errors/src/serialization/response.ts
+++ b/packages/errors/src/serialization/response.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/errors/src/setupTests.ts b/packages/errors/src/setupTests.ts
index ba33cf996b..d3232290a7 100644
--- a/packages/errors/src/setupTests.ts
+++ b/packages/errors/src/setupTests.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration-react/dev/DevPage.tsx b/packages/integration-react/dev/DevPage.tsx
index f86cc35fc5..dd4063804a 100644
--- a/packages/integration-react/dev/DevPage.tsx
+++ b/packages/integration-react/dev/DevPage.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration-react/dev/index.tsx b/packages/integration-react/dev/index.tsx
index 34cfee3fd8..f7894fd9d1 100644
--- a/packages/integration-react/dev/index.tsx
+++ b/packages/integration-react/dev/index.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration-react/src/api/ScmIntegrationsApi.test.ts b/packages/integration-react/src/api/ScmIntegrationsApi.test.ts
index 3788574950..869ef83a86 100644
--- a/packages/integration-react/src/api/ScmIntegrationsApi.test.ts
+++ b/packages/integration-react/src/api/ScmIntegrationsApi.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration-react/src/api/ScmIntegrationsApi.ts b/packages/integration-react/src/api/ScmIntegrationsApi.ts
index 507ecd8913..4196aaf68f 100644
--- a/packages/integration-react/src/api/ScmIntegrationsApi.ts
+++ b/packages/integration-react/src/api/ScmIntegrationsApi.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration-react/src/api/index.ts b/packages/integration-react/src/api/index.ts
index 5483765b2e..7417bd0c7b 100644
--- a/packages/integration-react/src/api/index.ts
+++ b/packages/integration-react/src/api/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration-react/src/components/ScmIntegrationIcon/ScmIntegrationIcon.test.tsx b/packages/integration-react/src/components/ScmIntegrationIcon/ScmIntegrationIcon.test.tsx
index 13ffd61264..02eb30e72c 100644
--- a/packages/integration-react/src/components/ScmIntegrationIcon/ScmIntegrationIcon.test.tsx
+++ b/packages/integration-react/src/components/ScmIntegrationIcon/ScmIntegrationIcon.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration-react/src/components/ScmIntegrationIcon/ScmIntegrationIcon.tsx b/packages/integration-react/src/components/ScmIntegrationIcon/ScmIntegrationIcon.tsx
index 99745f977e..598b14188b 100644
--- a/packages/integration-react/src/components/ScmIntegrationIcon/ScmIntegrationIcon.tsx
+++ b/packages/integration-react/src/components/ScmIntegrationIcon/ScmIntegrationIcon.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration-react/src/components/ScmIntegrationIcon/index.ts b/packages/integration-react/src/components/ScmIntegrationIcon/index.ts
index 1fd477c6d9..86e60e5b99 100644
--- a/packages/integration-react/src/components/ScmIntegrationIcon/index.ts
+++ b/packages/integration-react/src/components/ScmIntegrationIcon/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration-react/src/components/index.ts b/packages/integration-react/src/components/index.ts
index 895df5c3b8..f30c2d467c 100644
--- a/packages/integration-react/src/components/index.ts
+++ b/packages/integration-react/src/components/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration-react/src/index.ts b/packages/integration-react/src/index.ts
index bb1addc8b8..eb3cc7b761 100644
--- a/packages/integration-react/src/index.ts
+++ b/packages/integration-react/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration-react/src/setupTests.ts b/packages/integration-react/src/setupTests.ts
index 3ffe1424cc..427556fe26 100644
--- a/packages/integration-react/src/setupTests.ts
+++ b/packages/integration-react/src/setupTests.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration/config.d.ts b/packages/integration/config.d.ts
index 73ce43e001..501373de53 100644
--- a/packages/integration/config.d.ts
+++ b/packages/integration/config.d.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration/src/ScmIntegrations.test.ts b/packages/integration/src/ScmIntegrations.test.ts
index 749af97422..a21337b45d 100644
--- a/packages/integration/src/ScmIntegrations.test.ts
+++ b/packages/integration/src/ScmIntegrations.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration/src/ScmIntegrations.ts b/packages/integration/src/ScmIntegrations.ts
index 0f44958ab6..d5548b0ce8 100644
--- a/packages/integration/src/ScmIntegrations.ts
+++ b/packages/integration/src/ScmIntegrations.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration/src/azure/AzureIntegration.test.ts b/packages/integration/src/azure/AzureIntegration.test.ts
index 1702602cf3..654ce47836 100644
--- a/packages/integration/src/azure/AzureIntegration.test.ts
+++ b/packages/integration/src/azure/AzureIntegration.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration/src/azure/AzureIntegration.ts b/packages/integration/src/azure/AzureIntegration.ts
index 50f4757620..c2a8dd8f5e 100644
--- a/packages/integration/src/azure/AzureIntegration.ts
+++ b/packages/integration/src/azure/AzureIntegration.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration/src/azure/config.test.ts b/packages/integration/src/azure/config.test.ts
index 4bfdb1290d..d43536cf47 100644
--- a/packages/integration/src/azure/config.test.ts
+++ b/packages/integration/src/azure/config.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration/src/azure/config.ts b/packages/integration/src/azure/config.ts
index 5550e2faf5..9755bbbe24 100644
--- a/packages/integration/src/azure/config.ts
+++ b/packages/integration/src/azure/config.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration/src/azure/core.test.ts b/packages/integration/src/azure/core.test.ts
index 438e776eef..ab5a4bc700 100644
--- a/packages/integration/src/azure/core.test.ts
+++ b/packages/integration/src/azure/core.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration/src/azure/core.ts b/packages/integration/src/azure/core.ts
index b2878af89e..5aacc09700 100644
--- a/packages/integration/src/azure/core.ts
+++ b/packages/integration/src/azure/core.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration/src/azure/index.ts b/packages/integration/src/azure/index.ts
index 2d95ef19b9..d079799c01 100644
--- a/packages/integration/src/azure/index.ts
+++ b/packages/integration/src/azure/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration/src/bitbucket/BitbucketIntegration.test.ts b/packages/integration/src/bitbucket/BitbucketIntegration.test.ts
index 350bb1d63c..81b9be4e25 100644
--- a/packages/integration/src/bitbucket/BitbucketIntegration.test.ts
+++ b/packages/integration/src/bitbucket/BitbucketIntegration.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration/src/bitbucket/BitbucketIntegration.ts b/packages/integration/src/bitbucket/BitbucketIntegration.ts
index 1e07507bf2..07c04cd41e 100644
--- a/packages/integration/src/bitbucket/BitbucketIntegration.ts
+++ b/packages/integration/src/bitbucket/BitbucketIntegration.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration/src/bitbucket/config.test.ts b/packages/integration/src/bitbucket/config.test.ts
index bad51befbc..f3d076e1b6 100644
--- a/packages/integration/src/bitbucket/config.test.ts
+++ b/packages/integration/src/bitbucket/config.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration/src/bitbucket/config.ts b/packages/integration/src/bitbucket/config.ts
index b7ad8684a9..b2ddfa3532 100644
--- a/packages/integration/src/bitbucket/config.ts
+++ b/packages/integration/src/bitbucket/config.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration/src/bitbucket/core.test.ts b/packages/integration/src/bitbucket/core.test.ts
index 87236277a2..62f81179ee 100644
--- a/packages/integration/src/bitbucket/core.test.ts
+++ b/packages/integration/src/bitbucket/core.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration/src/bitbucket/core.ts b/packages/integration/src/bitbucket/core.ts
index 825d656c7c..0a1b247f10 100644
--- a/packages/integration/src/bitbucket/core.ts
+++ b/packages/integration/src/bitbucket/core.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration/src/bitbucket/index.ts b/packages/integration/src/bitbucket/index.ts
index 124fe4a2a2..356e760fd8 100644
--- a/packages/integration/src/bitbucket/index.ts
+++ b/packages/integration/src/bitbucket/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration/src/github/GitHubIntegration.test.ts b/packages/integration/src/github/GitHubIntegration.test.ts
index 501ae6c3bf..416618e53b 100644
--- a/packages/integration/src/github/GitHubIntegration.test.ts
+++ b/packages/integration/src/github/GitHubIntegration.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration/src/github/GitHubIntegration.ts b/packages/integration/src/github/GitHubIntegration.ts
index d33057b88f..3b53fe51e8 100644
--- a/packages/integration/src/github/GitHubIntegration.ts
+++ b/packages/integration/src/github/GitHubIntegration.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration/src/github/GithubCredentialsProvider.test.ts b/packages/integration/src/github/GithubCredentialsProvider.test.ts
index 271d4b9920..18cad6fb78 100644
--- a/packages/integration/src/github/GithubCredentialsProvider.test.ts
+++ b/packages/integration/src/github/GithubCredentialsProvider.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration/src/github/GithubCredentialsProvider.ts b/packages/integration/src/github/GithubCredentialsProvider.ts
index 9bc09deab3..4bc6411870 100644
--- a/packages/integration/src/github/GithubCredentialsProvider.ts
+++ b/packages/integration/src/github/GithubCredentialsProvider.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration/src/github/config.test.ts b/packages/integration/src/github/config.test.ts
index e0e7500488..10d076f85d 100644
--- a/packages/integration/src/github/config.test.ts
+++ b/packages/integration/src/github/config.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration/src/github/config.ts b/packages/integration/src/github/config.ts
index 94ed00731e..d03b45e424 100644
--- a/packages/integration/src/github/config.ts
+++ b/packages/integration/src/github/config.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration/src/github/core.test.ts b/packages/integration/src/github/core.test.ts
index f32c3c5bb4..2dab4ab4d5 100644
--- a/packages/integration/src/github/core.test.ts
+++ b/packages/integration/src/github/core.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration/src/github/core.ts b/packages/integration/src/github/core.ts
index 5048dd35f7..4a069bcba4 100644
--- a/packages/integration/src/github/core.ts
+++ b/packages/integration/src/github/core.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration/src/github/index.ts b/packages/integration/src/github/index.ts
index ee92b7d934..d3caf19713 100644
--- a/packages/integration/src/github/index.ts
+++ b/packages/integration/src/github/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration/src/gitlab/GitLabIntegration.test.ts b/packages/integration/src/gitlab/GitLabIntegration.test.ts
index 5cc6d410e3..01e42e0984 100644
--- a/packages/integration/src/gitlab/GitLabIntegration.test.ts
+++ b/packages/integration/src/gitlab/GitLabIntegration.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration/src/gitlab/GitLabIntegration.ts b/packages/integration/src/gitlab/GitLabIntegration.ts
index 17fb82f010..70a7c11987 100644
--- a/packages/integration/src/gitlab/GitLabIntegration.ts
+++ b/packages/integration/src/gitlab/GitLabIntegration.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration/src/gitlab/config.test.ts b/packages/integration/src/gitlab/config.test.ts
index 99b4613321..4c235ff668 100644
--- a/packages/integration/src/gitlab/config.test.ts
+++ b/packages/integration/src/gitlab/config.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration/src/gitlab/config.ts b/packages/integration/src/gitlab/config.ts
index 47c3494109..3bc8f76d44 100644
--- a/packages/integration/src/gitlab/config.ts
+++ b/packages/integration/src/gitlab/config.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration/src/gitlab/core.test.ts b/packages/integration/src/gitlab/core.test.ts
index 8e48871423..574403d70b 100644
--- a/packages/integration/src/gitlab/core.test.ts
+++ b/packages/integration/src/gitlab/core.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration/src/gitlab/core.ts b/packages/integration/src/gitlab/core.ts
index 66b6733f56..9b7b928059 100644
--- a/packages/integration/src/gitlab/core.ts
+++ b/packages/integration/src/gitlab/core.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration/src/gitlab/index.ts b/packages/integration/src/gitlab/index.ts
index 8886e0e3ce..950205d61c 100644
--- a/packages/integration/src/gitlab/index.ts
+++ b/packages/integration/src/gitlab/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration/src/googleGcs/config.test.ts b/packages/integration/src/googleGcs/config.test.ts
index a924e953b9..892440c64a 100644
--- a/packages/integration/src/googleGcs/config.test.ts
+++ b/packages/integration/src/googleGcs/config.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration/src/googleGcs/config.ts b/packages/integration/src/googleGcs/config.ts
index 7924138b5a..0945a0e467 100644
--- a/packages/integration/src/googleGcs/config.ts
+++ b/packages/integration/src/googleGcs/config.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration/src/googleGcs/index.ts b/packages/integration/src/googleGcs/index.ts
index d9355fd299..3d7beae59d 100644
--- a/packages/integration/src/googleGcs/index.ts
+++ b/packages/integration/src/googleGcs/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration/src/helpers.test.ts b/packages/integration/src/helpers.test.ts
index 155b866850..90102ce6aa 100644
--- a/packages/integration/src/helpers.test.ts
+++ b/packages/integration/src/helpers.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration/src/helpers.ts b/packages/integration/src/helpers.ts
index bf523d4932..20c282c5a3 100644
--- a/packages/integration/src/helpers.ts
+++ b/packages/integration/src/helpers.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration/src/index.ts b/packages/integration/src/index.ts
index 8742114008..bf88cf9751 100644
--- a/packages/integration/src/index.ts
+++ b/packages/integration/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration/src/registry.ts b/packages/integration/src/registry.ts
index 8f38bb8d5b..da205ae1e7 100644
--- a/packages/integration/src/registry.ts
+++ b/packages/integration/src/registry.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration/src/setupTests.ts b/packages/integration/src/setupTests.ts
index ba33cf996b..d3232290a7 100644
--- a/packages/integration/src/setupTests.ts
+++ b/packages/integration/src/setupTests.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/integration/src/types.ts b/packages/integration/src/types.ts
index 30c298c57f..e66b20f8f8 100644
--- a/packages/integration/src/types.ts
+++ b/packages/integration/src/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/search-common/src/index.test.ts b/packages/search-common/src/index.test.ts
index 9e32ffa412..eff51ecb6d 100644
--- a/packages/search-common/src/index.test.ts
+++ b/packages/search-common/src/index.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/search-common/src/index.ts b/packages/search-common/src/index.ts
index e6432477f2..362949e589 100644
--- a/packages/search-common/src/index.ts
+++ b/packages/search-common/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/search-common/src/types.ts b/packages/search-common/src/types.ts
index 2e7ca97edc..8a5e16b6b5 100644
--- a/packages/search-common/src/types.ts
+++ b/packages/search-common/src/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/storybook/.storybook/webpack-plugin-fail-build-on-warning.js b/packages/storybook/.storybook/webpack-plugin-fail-build-on-warning.js
index 04b6d62e03..005507bf09 100644
--- a/packages/storybook/.storybook/webpack-plugin-fail-build-on-warning.js
+++ b/packages/storybook/.storybook/webpack-plugin-fail-build-on-warning.js
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/techdocs-common/__mocks__/@azure/identity.ts b/packages/techdocs-common/__mocks__/@azure/identity.ts
index cc89a4d514..6aeb738963 100644
--- a/packages/techdocs-common/__mocks__/@azure/identity.ts
+++ b/packages/techdocs-common/__mocks__/@azure/identity.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/techdocs-common/__mocks__/@azure/storage-blob.ts b/packages/techdocs-common/__mocks__/@azure/storage-blob.ts
index 2fad447788..73c5873832 100644
--- a/packages/techdocs-common/__mocks__/@azure/storage-blob.ts
+++ b/packages/techdocs-common/__mocks__/@azure/storage-blob.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/techdocs-common/__mocks__/@google-cloud/storage.ts b/packages/techdocs-common/__mocks__/@google-cloud/storage.ts
index 684c4023d7..18fe62af14 100644
--- a/packages/techdocs-common/__mocks__/@google-cloud/storage.ts
+++ b/packages/techdocs-common/__mocks__/@google-cloud/storage.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/techdocs-common/__mocks__/aws-sdk.ts b/packages/techdocs-common/__mocks__/aws-sdk.ts
index eb15a218ab..2826a8d8bb 100644
--- a/packages/techdocs-common/__mocks__/aws-sdk.ts
+++ b/packages/techdocs-common/__mocks__/aws-sdk.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/techdocs-common/__mocks__/pkgcloud.ts b/packages/techdocs-common/__mocks__/pkgcloud.ts
index dca86238e4..2b855bf174 100644
--- a/packages/techdocs-common/__mocks__/pkgcloud.ts
+++ b/packages/techdocs-common/__mocks__/pkgcloud.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/techdocs-common/src/default-branch.ts b/packages/techdocs-common/src/default-branch.ts
index c0ec63af10..f4bca6fd30 100644
--- a/packages/techdocs-common/src/default-branch.ts
+++ b/packages/techdocs-common/src/default-branch.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/techdocs-common/src/git-auth.ts b/packages/techdocs-common/src/git-auth.ts
index b58afae490..158c4ebebf 100644
--- a/packages/techdocs-common/src/git-auth.ts
+++ b/packages/techdocs-common/src/git-auth.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/techdocs-common/src/helpers.test.ts b/packages/techdocs-common/src/helpers.test.ts
index c31b1266fa..b94cbba572 100644
--- a/packages/techdocs-common/src/helpers.test.ts
+++ b/packages/techdocs-common/src/helpers.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/techdocs-common/src/helpers.ts b/packages/techdocs-common/src/helpers.ts
index 08a5945e69..cac8a7047f 100644
--- a/packages/techdocs-common/src/helpers.ts
+++ b/packages/techdocs-common/src/helpers.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/techdocs-common/src/index.ts b/packages/techdocs-common/src/index.ts
index a6e1831049..881f80cccb 100644
--- a/packages/techdocs-common/src/index.ts
+++ b/packages/techdocs-common/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/techdocs-common/src/stages/generate/generators.test.ts b/packages/techdocs-common/src/stages/generate/generators.test.ts
index 610a3e8ad5..a2ace2628c 100644
--- a/packages/techdocs-common/src/stages/generate/generators.test.ts
+++ b/packages/techdocs-common/src/stages/generate/generators.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/techdocs-common/src/stages/generate/generators.ts b/packages/techdocs-common/src/stages/generate/generators.ts
index 4a3af72931..af7958dcfb 100644
--- a/packages/techdocs-common/src/stages/generate/generators.ts
+++ b/packages/techdocs-common/src/stages/generate/generators.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/techdocs-common/src/stages/generate/helpers.test.ts b/packages/techdocs-common/src/stages/generate/helpers.test.ts
index 1ecb6252e5..6e2cc377df 100644
--- a/packages/techdocs-common/src/stages/generate/helpers.test.ts
+++ b/packages/techdocs-common/src/stages/generate/helpers.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/techdocs-common/src/stages/generate/helpers.ts b/packages/techdocs-common/src/stages/generate/helpers.ts
index 3a65591c46..cd739a3de0 100644
--- a/packages/techdocs-common/src/stages/generate/helpers.ts
+++ b/packages/techdocs-common/src/stages/generate/helpers.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/techdocs-common/src/stages/generate/index.ts b/packages/techdocs-common/src/stages/generate/index.ts
index 3a8b9ad828..382712ccbc 100644
--- a/packages/techdocs-common/src/stages/generate/index.ts
+++ b/packages/techdocs-common/src/stages/generate/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/techdocs-common/src/stages/generate/techdocs.ts b/packages/techdocs-common/src/stages/generate/techdocs.ts
index 1f2a9ae3ff..0d358167c4 100644
--- a/packages/techdocs-common/src/stages/generate/techdocs.ts
+++ b/packages/techdocs-common/src/stages/generate/techdocs.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/techdocs-common/src/stages/generate/types.ts b/packages/techdocs-common/src/stages/generate/types.ts
index 249b809592..5ea9721c54 100644
--- a/packages/techdocs-common/src/stages/generate/types.ts
+++ b/packages/techdocs-common/src/stages/generate/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/techdocs-common/src/stages/index.ts b/packages/techdocs-common/src/stages/index.ts
index 40988483a3..6c949040ee 100644
--- a/packages/techdocs-common/src/stages/index.ts
+++ b/packages/techdocs-common/src/stages/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/techdocs-common/src/stages/prepare/commonGit.test.ts b/packages/techdocs-common/src/stages/prepare/commonGit.test.ts
index dcc06313bd..d1c6c99c6d 100644
--- a/packages/techdocs-common/src/stages/prepare/commonGit.test.ts
+++ b/packages/techdocs-common/src/stages/prepare/commonGit.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/techdocs-common/src/stages/prepare/commonGit.ts b/packages/techdocs-common/src/stages/prepare/commonGit.ts
index fecb6cdf0d..ad70283e78 100644
--- a/packages/techdocs-common/src/stages/prepare/commonGit.ts
+++ b/packages/techdocs-common/src/stages/prepare/commonGit.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/techdocs-common/src/stages/prepare/dir.test.ts b/packages/techdocs-common/src/stages/prepare/dir.test.ts
index 67fa0dd21f..6992a35c65 100644
--- a/packages/techdocs-common/src/stages/prepare/dir.test.ts
+++ b/packages/techdocs-common/src/stages/prepare/dir.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/techdocs-common/src/stages/prepare/dir.ts b/packages/techdocs-common/src/stages/prepare/dir.ts
index 2f62d88a1c..9ec4b4d37a 100644
--- a/packages/techdocs-common/src/stages/prepare/dir.ts
+++ b/packages/techdocs-common/src/stages/prepare/dir.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/techdocs-common/src/stages/prepare/index.ts b/packages/techdocs-common/src/stages/prepare/index.ts
index dcb178bafa..e683ac8f71 100644
--- a/packages/techdocs-common/src/stages/prepare/index.ts
+++ b/packages/techdocs-common/src/stages/prepare/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/techdocs-common/src/stages/prepare/preparers.ts b/packages/techdocs-common/src/stages/prepare/preparers.ts
index 91cfcc72ff..5c78d96f15 100644
--- a/packages/techdocs-common/src/stages/prepare/preparers.ts
+++ b/packages/techdocs-common/src/stages/prepare/preparers.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/techdocs-common/src/stages/prepare/types.ts b/packages/techdocs-common/src/stages/prepare/types.ts
index 96510e8eec..8fe18984ca 100644
--- a/packages/techdocs-common/src/stages/prepare/types.ts
+++ b/packages/techdocs-common/src/stages/prepare/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/techdocs-common/src/stages/prepare/url.ts b/packages/techdocs-common/src/stages/prepare/url.ts
index 8e463698fb..6e2750ee4d 100644
--- a/packages/techdocs-common/src/stages/prepare/url.ts
+++ b/packages/techdocs-common/src/stages/prepare/url.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/techdocs-common/src/stages/publish/awsS3.test.ts b/packages/techdocs-common/src/stages/publish/awsS3.test.ts
index d4fb0d2dc2..81f06716b1 100644
--- a/packages/techdocs-common/src/stages/publish/awsS3.test.ts
+++ b/packages/techdocs-common/src/stages/publish/awsS3.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/techdocs-common/src/stages/publish/awsS3.ts b/packages/techdocs-common/src/stages/publish/awsS3.ts
index e1ffb107cc..15fe5a467f 100644
--- a/packages/techdocs-common/src/stages/publish/awsS3.ts
+++ b/packages/techdocs-common/src/stages/publish/awsS3.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/techdocs-common/src/stages/publish/azureBlobStorage.test.ts b/packages/techdocs-common/src/stages/publish/azureBlobStorage.test.ts
index 0bf720ae31..e55314a71b 100644
--- a/packages/techdocs-common/src/stages/publish/azureBlobStorage.test.ts
+++ b/packages/techdocs-common/src/stages/publish/azureBlobStorage.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/techdocs-common/src/stages/publish/azureBlobStorage.ts b/packages/techdocs-common/src/stages/publish/azureBlobStorage.ts
index 60640c374d..3ed75f532e 100644
--- a/packages/techdocs-common/src/stages/publish/azureBlobStorage.ts
+++ b/packages/techdocs-common/src/stages/publish/azureBlobStorage.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/techdocs-common/src/stages/publish/googleStorage.test.ts b/packages/techdocs-common/src/stages/publish/googleStorage.test.ts
index 4db1d83c7e..8a00fc9708 100644
--- a/packages/techdocs-common/src/stages/publish/googleStorage.test.ts
+++ b/packages/techdocs-common/src/stages/publish/googleStorage.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/techdocs-common/src/stages/publish/googleStorage.ts b/packages/techdocs-common/src/stages/publish/googleStorage.ts
index e5e3d6c25a..bca7b86856 100644
--- a/packages/techdocs-common/src/stages/publish/googleStorage.ts
+++ b/packages/techdocs-common/src/stages/publish/googleStorage.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/techdocs-common/src/stages/publish/helpers.test.ts b/packages/techdocs-common/src/stages/publish/helpers.test.ts
index 7eb591bdb2..cfb9c7930d 100644
--- a/packages/techdocs-common/src/stages/publish/helpers.test.ts
+++ b/packages/techdocs-common/src/stages/publish/helpers.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/techdocs-common/src/stages/publish/helpers.ts b/packages/techdocs-common/src/stages/publish/helpers.ts
index 22da949aec..eac5ba05c8 100644
--- a/packages/techdocs-common/src/stages/publish/helpers.ts
+++ b/packages/techdocs-common/src/stages/publish/helpers.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/techdocs-common/src/stages/publish/index.ts b/packages/techdocs-common/src/stages/publish/index.ts
index dbf4ff732a..b342f33287 100644
--- a/packages/techdocs-common/src/stages/publish/index.ts
+++ b/packages/techdocs-common/src/stages/publish/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/techdocs-common/src/stages/publish/local.test.ts b/packages/techdocs-common/src/stages/publish/local.test.ts
index 114401f1db..0ced296a88 100644
--- a/packages/techdocs-common/src/stages/publish/local.test.ts
+++ b/packages/techdocs-common/src/stages/publish/local.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/techdocs-common/src/stages/publish/local.ts b/packages/techdocs-common/src/stages/publish/local.ts
index bf49c5b926..3ad0ed65ad 100644
--- a/packages/techdocs-common/src/stages/publish/local.ts
+++ b/packages/techdocs-common/src/stages/publish/local.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/techdocs-common/src/stages/publish/openStackSwift.test.ts b/packages/techdocs-common/src/stages/publish/openStackSwift.test.ts
index dfac7fb0f7..9da1df0aa9 100644
--- a/packages/techdocs-common/src/stages/publish/openStackSwift.test.ts
+++ b/packages/techdocs-common/src/stages/publish/openStackSwift.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/techdocs-common/src/stages/publish/openStackSwift.ts b/packages/techdocs-common/src/stages/publish/openStackSwift.ts
index 2321aa33bd..18944b5605 100644
--- a/packages/techdocs-common/src/stages/publish/openStackSwift.ts
+++ b/packages/techdocs-common/src/stages/publish/openStackSwift.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/techdocs-common/src/stages/publish/publish.test.ts b/packages/techdocs-common/src/stages/publish/publish.test.ts
index 948b92aaa6..30004616ca 100644
--- a/packages/techdocs-common/src/stages/publish/publish.test.ts
+++ b/packages/techdocs-common/src/stages/publish/publish.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/techdocs-common/src/stages/publish/publish.ts b/packages/techdocs-common/src/stages/publish/publish.ts
index 909a4092ac..c7c6154114 100644
--- a/packages/techdocs-common/src/stages/publish/publish.ts
+++ b/packages/techdocs-common/src/stages/publish/publish.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/techdocs-common/src/stages/publish/types.ts b/packages/techdocs-common/src/stages/publish/types.ts
index c2849b8e35..a7f6ff7a45 100644
--- a/packages/techdocs-common/src/stages/publish/types.ts
+++ b/packages/techdocs-common/src/stages/publish/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/test-utils-core/src/index.ts b/packages/test-utils-core/src/index.ts
index 43faf28a4a..89bb7204cc 100644
--- a/packages/test-utils-core/src/index.ts
+++ b/packages/test-utils-core/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/test-utils-core/src/setupTests.ts b/packages/test-utils-core/src/setupTests.ts
index 825bcd4115..963c0f188b 100644
--- a/packages/test-utils-core/src/setupTests.ts
+++ b/packages/test-utils-core/src/setupTests.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/test-utils-core/src/testUtils/Keyboard.js b/packages/test-utils-core/src/testUtils/Keyboard.js
index 8f4a48b0b4..2f8e218762 100644
--- a/packages/test-utils-core/src/testUtils/Keyboard.js
+++ b/packages/test-utils-core/src/testUtils/Keyboard.js
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/test-utils-core/src/testUtils/Keyboard.test.js b/packages/test-utils-core/src/testUtils/Keyboard.test.js
index 48b8522c0c..41ee3a12d6 100644
--- a/packages/test-utils-core/src/testUtils/Keyboard.test.js
+++ b/packages/test-utils-core/src/testUtils/Keyboard.test.js
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/test-utils-core/src/testUtils/index.tsx b/packages/test-utils-core/src/testUtils/index.tsx
index 7558f32819..6f6aa43ea9 100644
--- a/packages/test-utils-core/src/testUtils/index.tsx
+++ b/packages/test-utils-core/src/testUtils/index.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/test-utils-core/src/testUtils/logCollector.test.ts b/packages/test-utils-core/src/testUtils/logCollector.test.ts
index 2c1cd16806..d877e4d10b 100644
--- a/packages/test-utils-core/src/testUtils/logCollector.test.ts
+++ b/packages/test-utils-core/src/testUtils/logCollector.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/test-utils-core/src/testUtils/logCollector.ts b/packages/test-utils-core/src/testUtils/logCollector.ts
index 6938499b8f..3180010529 100644
--- a/packages/test-utils-core/src/testUtils/logCollector.ts
+++ b/packages/test-utils-core/src/testUtils/logCollector.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/test-utils-core/src/testUtils/testingLibrary.ts b/packages/test-utils-core/src/testUtils/testingLibrary.ts
index dc24fdf985..48e5132825 100644
--- a/packages/test-utils-core/src/testUtils/testingLibrary.ts
+++ b/packages/test-utils-core/src/testUtils/testingLibrary.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/test-utils/src/index.ts b/packages/test-utils/src/index.ts
index 57b7fd6773..8c9561a295 100644
--- a/packages/test-utils/src/index.ts
+++ b/packages/test-utils/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/test-utils/src/setupTests.ts b/packages/test-utils/src/setupTests.ts
index 825bcd4115..963c0f188b 100644
--- a/packages/test-utils/src/setupTests.ts
+++ b/packages/test-utils/src/setupTests.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/test-utils/src/testUtils/apis/ErrorApi/MockErrorApi.test.ts b/packages/test-utils/src/testUtils/apis/ErrorApi/MockErrorApi.test.ts
index 6a798b32b0..1fbfb576bd 100644
--- a/packages/test-utils/src/testUtils/apis/ErrorApi/MockErrorApi.test.ts
+++ b/packages/test-utils/src/testUtils/apis/ErrorApi/MockErrorApi.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/test-utils/src/testUtils/apis/ErrorApi/MockErrorApi.ts b/packages/test-utils/src/testUtils/apis/ErrorApi/MockErrorApi.ts
index b90646201a..979cd74365 100644
--- a/packages/test-utils/src/testUtils/apis/ErrorApi/MockErrorApi.ts
+++ b/packages/test-utils/src/testUtils/apis/ErrorApi/MockErrorApi.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/test-utils/src/testUtils/apis/ErrorApi/index.ts b/packages/test-utils/src/testUtils/apis/ErrorApi/index.ts
index d2f2b820c2..8a6b5031e5 100644
--- a/packages/test-utils/src/testUtils/apis/ErrorApi/index.ts
+++ b/packages/test-utils/src/testUtils/apis/ErrorApi/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/test-utils/src/testUtils/apis/StorageApi/MockStorageApi.test.ts b/packages/test-utils/src/testUtils/apis/StorageApi/MockStorageApi.test.ts
index 7c92c71460..724ae8ffe7 100644
--- a/packages/test-utils/src/testUtils/apis/StorageApi/MockStorageApi.test.ts
+++ b/packages/test-utils/src/testUtils/apis/StorageApi/MockStorageApi.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/test-utils/src/testUtils/apis/StorageApi/MockStorageApi.ts b/packages/test-utils/src/testUtils/apis/StorageApi/MockStorageApi.ts
index 5cb4bdfff6..c1aa938d05 100644
--- a/packages/test-utils/src/testUtils/apis/StorageApi/MockStorageApi.ts
+++ b/packages/test-utils/src/testUtils/apis/StorageApi/MockStorageApi.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/test-utils/src/testUtils/apis/StorageApi/index.ts b/packages/test-utils/src/testUtils/apis/StorageApi/index.ts
index ec4557b4c7..a42fbb3b50 100644
--- a/packages/test-utils/src/testUtils/apis/StorageApi/index.ts
+++ b/packages/test-utils/src/testUtils/apis/StorageApi/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/test-utils/src/testUtils/apis/index.ts b/packages/test-utils/src/testUtils/apis/index.ts
index 88229061de..7bc1f74dcd 100644
--- a/packages/test-utils/src/testUtils/apis/index.ts
+++ b/packages/test-utils/src/testUtils/apis/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/test-utils/src/testUtils/appWrappers.test.tsx b/packages/test-utils/src/testUtils/appWrappers.test.tsx
index 1283128df2..3f17eb904b 100644
--- a/packages/test-utils/src/testUtils/appWrappers.test.tsx
+++ b/packages/test-utils/src/testUtils/appWrappers.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/test-utils/src/testUtils/appWrappers.tsx b/packages/test-utils/src/testUtils/appWrappers.tsx
index add7b4479c..ce869fd774 100644
--- a/packages/test-utils/src/testUtils/appWrappers.tsx
+++ b/packages/test-utils/src/testUtils/appWrappers.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/test-utils/src/testUtils/index.tsx b/packages/test-utils/src/testUtils/index.tsx
index 8206d10834..859315313d 100644
--- a/packages/test-utils/src/testUtils/index.tsx
+++ b/packages/test-utils/src/testUtils/index.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/test-utils/src/testUtils/mockApis.ts b/packages/test-utils/src/testUtils/mockApis.ts
index 0fe9a30926..7754376eeb 100644
--- a/packages/test-utils/src/testUtils/mockApis.ts
+++ b/packages/test-utils/src/testUtils/mockApis.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/test-utils/src/testUtils/mockBreakpoint.ts b/packages/test-utils/src/testUtils/mockBreakpoint.ts
index 72406c88a5..37f0e761b6 100644
--- a/packages/test-utils/src/testUtils/mockBreakpoint.ts
+++ b/packages/test-utils/src/testUtils/mockBreakpoint.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/test-utils/src/testUtils/msw/index.ts b/packages/test-utils/src/testUtils/msw/index.ts
index 0deaac0986..337c2999fc 100644
--- a/packages/test-utils/src/testUtils/msw/index.ts
+++ b/packages/test-utils/src/testUtils/msw/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/theme/src/baseTheme.ts b/packages/theme/src/baseTheme.ts
index 4f5627eec9..93132d8b7a 100644
--- a/packages/theme/src/baseTheme.ts
+++ b/packages/theme/src/baseTheme.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/theme/src/index.ts b/packages/theme/src/index.ts
index cafad3fc7c..a8b4ade934 100644
--- a/packages/theme/src/index.ts
+++ b/packages/theme/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/theme/src/pageTheme.ts b/packages/theme/src/pageTheme.ts
index 36f49bcdf9..5765e13c23 100644
--- a/packages/theme/src/pageTheme.ts
+++ b/packages/theme/src/pageTheme.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/theme/src/themes.ts b/packages/theme/src/themes.ts
index 94cf38656e..b31786aae9 100644
--- a/packages/theme/src/themes.ts
+++ b/packages/theme/src/themes.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/packages/theme/src/types.ts b/packages/theme/src/types.ts
index 5acc0f75e9..c2758c29e7 100644
--- a/packages/theme/src/types.ts
+++ b/packages/theme/src/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/api-docs/CHANGELOG.md b/plugins/api-docs/CHANGELOG.md
index 27cd97e2e4..d51b0b0595 100644
--- a/plugins/api-docs/CHANGELOG.md
+++ b/plugins/api-docs/CHANGELOG.md
@@ -1,5 +1,20 @@
# @backstage/plugin-api-docs
+## 0.5.0
+
+### Minor Changes
+
+- 2ebc430c4: Rework `ApiExplorerPage` to utilize `EntityListProvider` to provide a consistent UI with the `CatalogIndexPage` which now exposes support for starring entities, pagination, and customizing columns.
+
+### Patch Changes
+
+- 14ce64b4f: Add pagination to ApiExplorerTable
+- Updated dependencies
+ - @backstage/plugin-catalog-react@0.2.3
+ - @backstage/plugin-catalog@0.6.3
+ - @backstage/catalog-model@0.8.3
+ - @backstage/core@0.7.13
+
## 0.4.15
### Patch Changes
diff --git a/plugins/api-docs/api-report.md b/plugins/api-docs/api-report.md
new file mode 100644
index 0000000000..5a09cfceea
--- /dev/null
+++ b/plugins/api-docs/api-report.md
@@ -0,0 +1,115 @@
+## API Report File for "@backstage/plugin-api-docs"
+
+> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
+
+```ts
+
+import { ApiEntity } from '@backstage/catalog-model';
+import { ApiRef } from '@backstage/core';
+import { BackstagePlugin } from '@backstage/core';
+import { CatalogTableRow } from '@backstage/plugin-catalog';
+import { Entity } from '@backstage/catalog-model';
+import { ExternalRouteRef } from '@backstage/core';
+import { default as React_2 } from 'react';
+import { RouteRef } from '@backstage/core';
+import { TableColumn } from '@backstage/core';
+import { UserListFilterKind } from '@backstage/plugin-catalog-react';
+
+// @public (undocumented)
+export const ApiDefinitionCard: (_: Props) => JSX.Element;
+
+// @public (undocumented)
+export type ApiDefinitionWidget = {
+ type: string;
+ title: string;
+ component: (definition: string) => React_2.ReactElement;
+ rawLanguage?: string;
+};
+
+// @public (undocumented)
+export const apiDocsConfigRef: ApiRef;
+
+// @public (undocumented)
+const apiDocsPlugin: BackstagePlugin<{
+ root: RouteRef;
+}, {
+ createComponent: ExternalRouteRef;
+}>;
+
+export { apiDocsPlugin }
+
+export { apiDocsPlugin as plugin }
+
+// @public (undocumented)
+export const ApiExplorerPage: ({ initiallySelectedFilter, columns, }: ApiExplorerPageProps) => JSX.Element;
+
+// @public (undocumented)
+export const ApiTypeTitle: ({ apiEntity }: {
+ apiEntity: ApiEntity;
+}) => JSX.Element;
+
+// @public (undocumented)
+export const AsyncApiDefinitionWidget: ({ definition }: Props_5) => JSX.Element;
+
+// @public (undocumented)
+export const ConsumedApisCard: ({ variant }: Props_2) => JSX.Element;
+
+// @public (undocumented)
+export const ConsumingComponentsCard: ({ variant }: Props_6) => JSX.Element;
+
+// @public (undocumented)
+export function defaultDefinitionWidgets(): ApiDefinitionWidget[];
+
+// @public (undocumented)
+export const EntityApiDefinitionCard: (_: {
+ apiEntity?: ApiEntity | undefined;
+}) => JSX.Element;
+
+// @public (undocumented)
+export const EntityConsumedApisCard: ({ variant }: {
+ entity?: Entity| undefined;
+ variant?: "gridItem" | undefined;
+}) => JSX.Element;
+
+// @public (undocumented)
+export const EntityConsumingComponentsCard: ({ variant }: {
+ entity?: Entity| undefined;
+ variant?: "gridItem" | undefined;
+}) => JSX.Element;
+
+// @public (undocumented)
+export const EntityHasApisCard: ({ variant }: {
+ variant?: "gridItem" | undefined;
+}) => JSX.Element;
+
+// @public (undocumented)
+export const EntityProvidedApisCard: ({ variant }: {
+ entity?: Entity| undefined;
+ variant?: "gridItem" | undefined;
+}) => JSX.Element;
+
+// @public (undocumented)
+export const EntityProvidingComponentsCard: ({ variant }: {
+ entity?: Entity| undefined;
+ variant?: "gridItem" | undefined;
+}) => JSX.Element;
+
+// @public (undocumented)
+export const HasApisCard: ({ variant }: Props_3) => JSX.Element;
+
+// @public (undocumented)
+export const OpenApiDefinitionWidget: ({ definition }: Props_8) => JSX.Element;
+
+// @public (undocumented)
+export const PlainApiDefinitionWidget: ({ definition, language }: Props_9) => JSX.Element;
+
+// @public (undocumented)
+export const ProvidedApisCard: ({ variant }: Props_4) => JSX.Element;
+
+// @public (undocumented)
+export const ProvidingComponentsCard: ({ variant }: Props_7) => JSX.Element;
+
+
+// (No @packageDocumentation comment for this package)
+
+```
diff --git a/plugins/api-docs/dev/index.tsx b/plugins/api-docs/dev/index.tsx
index fbfab37f5b..4c6e678f0d 100644
--- a/plugins/api-docs/dev/index.tsx
+++ b/plugins/api-docs/dev/index.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -30,6 +30,13 @@ import graphqlApiEntity from './graphql-example-api.yaml';
import openapiApiEntity from './openapi-example-api.yaml';
import otherApiEntity from './other-example-api.yaml';
+const mockEntities = ([
+ openapiApiEntity,
+ asyncapiApiEntity,
+ graphqlApiEntity,
+ otherApiEntity,
+] as unknown) as Entity[];
+
createDevApp()
.registerApi({
api: catalogApiRef,
@@ -38,14 +45,12 @@ createDevApp()
(({
async getEntities() {
return {
- items: [
- openapiApiEntity,
- asyncapiApiEntity,
- graphqlApiEntity,
- otherApiEntity,
- ],
+ items: mockEntities.slice(),
};
},
+ async getEntityByName(name: string) {
+ return mockEntities.find(e => e.metadata.name === name);
+ },
} as unknown) as typeof catalogApiRef.T),
})
.registerApi({
diff --git a/plugins/api-docs/package.json b/plugins/api-docs/package.json
index fd3bc353e9..417764768e 100644
--- a/plugins/api-docs/package.json
+++ b/plugins/api-docs/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-api-docs",
- "version": "0.4.15",
+ "version": "0.5.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -30,9 +30,10 @@
},
"dependencies": {
"@asyncapi/react-component": "^0.23.0",
- "@backstage/catalog-model": "^0.8.2",
- "@backstage/core": "^0.7.11",
- "@backstage/plugin-catalog-react": "^0.2.2",
+ "@backstage/catalog-model": "^0.8.3",
+ "@backstage/core": "^0.7.13",
+ "@backstage/plugin-catalog": "^0.6.3",
+ "@backstage/plugin-catalog-react": "^0.2.3",
"@backstage/theme": "^0.2.8",
"@material-icons/font": "^1.0.2",
"@material-ui/core": "^4.11.0",
@@ -49,7 +50,7 @@
"swagger-ui-react": "^3.37.2"
},
"devDependencies": {
- "@backstage/cli": "^0.7.0",
+ "@backstage/cli": "^0.7.1",
"@backstage/dev-utils": "^0.1.17",
"@backstage/test-utils": "^0.1.13",
"@testing-library/jest-dom": "^5.10.1",
diff --git a/plugins/api-docs/src/components/ApiDefinitionCard/ApiDefinitionCard.test.tsx b/plugins/api-docs/src/components/ApiDefinitionCard/ApiDefinitionCard.test.tsx
index 0107472acf..649dc53dd4 100644
--- a/plugins/api-docs/src/components/ApiDefinitionCard/ApiDefinitionCard.test.tsx
+++ b/plugins/api-docs/src/components/ApiDefinitionCard/ApiDefinitionCard.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/api-docs/src/components/ApiDefinitionCard/ApiDefinitionCard.tsx b/plugins/api-docs/src/components/ApiDefinitionCard/ApiDefinitionCard.tsx
index ce6f0658bf..0502513458 100644
--- a/plugins/api-docs/src/components/ApiDefinitionCard/ApiDefinitionCard.tsx
+++ b/plugins/api-docs/src/components/ApiDefinitionCard/ApiDefinitionCard.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/api-docs/src/components/ApiDefinitionCard/ApiDefinitionWidget.tsx b/plugins/api-docs/src/components/ApiDefinitionCard/ApiDefinitionWidget.tsx
index 360404af40..baccf09de9 100644
--- a/plugins/api-docs/src/components/ApiDefinitionCard/ApiDefinitionWidget.tsx
+++ b/plugins/api-docs/src/components/ApiDefinitionCard/ApiDefinitionWidget.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/api-docs/src/components/ApiDefinitionCard/ApiTypeTitle.test.tsx b/plugins/api-docs/src/components/ApiDefinitionCard/ApiTypeTitle.test.tsx
index 4f1b2d2f3b..873195be06 100644
--- a/plugins/api-docs/src/components/ApiDefinitionCard/ApiTypeTitle.test.tsx
+++ b/plugins/api-docs/src/components/ApiDefinitionCard/ApiTypeTitle.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/api-docs/src/components/ApiDefinitionCard/ApiTypeTitle.tsx b/plugins/api-docs/src/components/ApiDefinitionCard/ApiTypeTitle.tsx
index be6212edf7..81658fe8e6 100644
--- a/plugins/api-docs/src/components/ApiDefinitionCard/ApiTypeTitle.tsx
+++ b/plugins/api-docs/src/components/ApiDefinitionCard/ApiTypeTitle.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/api-docs/src/components/ApiDefinitionCard/index.ts b/plugins/api-docs/src/components/ApiDefinitionCard/index.ts
index 9875385402..50e801e77a 100644
--- a/plugins/api-docs/src/components/ApiDefinitionCard/index.ts
+++ b/plugins/api-docs/src/components/ApiDefinitionCard/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/api-docs/src/components/ApiExplorerPage/ApiExplorerLayout.tsx b/plugins/api-docs/src/components/ApiExplorerPage/ApiExplorerLayout.tsx
index fb94df8528..1ac0f5838b 100644
--- a/plugins/api-docs/src/components/ApiExplorerPage/ApiExplorerLayout.tsx
+++ b/plugins/api-docs/src/components/ApiExplorerPage/ApiExplorerLayout.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/api-docs/src/components/ApiExplorerPage/ApiExplorerPage.test.tsx b/plugins/api-docs/src/components/ApiExplorerPage/ApiExplorerPage.test.tsx
index 223734504b..7846b24d40 100644
--- a/plugins/api-docs/src/components/ApiExplorerPage/ApiExplorerPage.test.tsx
+++ b/plugins/api-docs/src/components/ApiExplorerPage/ApiExplorerPage.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-import { Entity } from '@backstage/catalog-model';
+import { Entity, RELATION_MEMBER_OF } from '@backstage/catalog-model';
import {
ApiProvider,
ApiRegistry,
@@ -55,6 +55,19 @@ describe('ApiCatalogPage', () => {
}),
getLocationByEntity: () =>
Promise.resolve({ id: 'id', type: 'github', target: 'url' }),
+ getEntityByName: async entityName => {
+ return {
+ apiVersion: 'backstage.io/v1alpha1',
+ kind: 'User',
+ metadata: { name: entityName.name },
+ relations: [
+ {
+ type: RELATION_MEMBER_OF,
+ target: { namespace: 'default', kind: 'Group', name: 'tools' },
+ },
+ ],
+ };
+ },
};
const configApi: ConfigApi = new ConfigReader({
diff --git a/plugins/api-docs/src/components/ApiExplorerPage/ApiExplorerPage.tsx b/plugins/api-docs/src/components/ApiExplorerPage/ApiExplorerPage.tsx
index 1ed47811ef..d760ba51a3 100644
--- a/plugins/api-docs/src/components/ApiExplorerPage/ApiExplorerPage.tsx
+++ b/plugins/api-docs/src/components/ApiExplorerPage/ApiExplorerPage.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,36 +18,46 @@ import {
Content,
ContentHeader,
SupportButton,
- useApi,
+ TableColumn,
useRouteRef,
} from '@backstage/core';
-import { catalogApiRef } from '@backstage/plugin-catalog-react';
-import { Button } from '@material-ui/core';
+import {
+ EntityKindPicker,
+ EntityLifecyclePicker,
+ EntityListProvider,
+ EntityOwnerPicker,
+ EntityTagPicker,
+ EntityTypePicker,
+ UserListFilterKind,
+ UserListPicker,
+} from '@backstage/plugin-catalog-react';
+import { CatalogTable, CatalogTableRow } from '@backstage/plugin-catalog';
+import { Button, makeStyles } from '@material-ui/core';
import React from 'react';
import { Link as RouterLink } from 'react-router-dom';
-import { useAsync } from 'react-use';
import { createComponentRouteRef } from '../../routes';
-import { ApiExplorerTable } from '../ApiExplorerTable';
import { ApiExplorerLayout } from './ApiExplorerLayout';
-export const ApiExplorerPage = () => {
+const useStyles = makeStyles(theme => ({
+ contentWrapper: {
+ display: 'grid',
+ gridTemplateAreas: "'filters' 'table'",
+ gridTemplateColumns: '250px 1fr',
+ gridColumnGap: theme.spacing(2),
+ },
+}));
+
+export type ApiExplorerPageProps = {
+ initiallySelectedFilter?: UserListFilterKind;
+ columns?: TableColumn[];
+};
+
+export const ApiExplorerPage = ({
+ initiallySelectedFilter = 'all',
+ columns,
+}: ApiExplorerPageProps) => {
+ const styles = useStyles();
const createComponentLink = useRouteRef(createComponentRouteRef);
- const catalogApi = useApi(catalogApiRef);
- const { loading, error, value: catalogResponse } = useAsync(() => {
- return catalogApi.getEntities({
- filter: { kind: 'API' },
- fields: [
- 'apiVersion',
- 'kind',
- 'metadata',
- 'relations',
- 'spec.lifecycle',
- 'spec.owner',
- 'spec.type',
- 'spec.system',
- ],
- });
- }, [catalogApi]);
return (
@@ -65,11 +75,19 @@ export const ApiExplorerPage = () => {
)}
All your APIs
-
+
);
diff --git a/plugins/api-docs/src/components/ApiExplorerPage/index.ts b/plugins/api-docs/src/components/ApiExplorerPage/index.ts
index 67f672f9a9..3d170260ad 100644
--- a/plugins/api-docs/src/components/ApiExplorerPage/index.ts
+++ b/plugins/api-docs/src/components/ApiExplorerPage/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/api-docs/src/components/ApiExplorerTable/ApiExplorerTable.test.tsx b/plugins/api-docs/src/components/ApiExplorerTable/ApiExplorerTable.test.tsx
deleted file mode 100644
index bcb310be46..0000000000
--- a/plugins/api-docs/src/components/ApiExplorerTable/ApiExplorerTable.test.tsx
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright 2020 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.
- */
-
-import { Entity } from '@backstage/catalog-model';
-import { ApiProvider, ApiRegistry } from '@backstage/core';
-import { wrapInTestApp } from '@backstage/test-utils';
-import { render } from '@testing-library/react';
-import * as React from 'react';
-import { apiDocsConfigRef } from '../../config';
-import { ApiExplorerTable } from './ApiExplorerTable';
-
-const entities: Entity[] = [
- {
- apiVersion: 'backstage.io/v1alpha1',
- kind: 'API',
- metadata: { name: 'api1' },
- spec: { type: 'openapi' },
- },
- {
- apiVersion: 'backstage.io/v1alpha1',
- kind: 'API',
- metadata: { name: 'api2' },
- spec: { type: 'openapi' },
- },
- {
- apiVersion: 'backstage.io/v1alpha1',
- kind: 'API',
- metadata: { name: 'api3' },
- spec: { type: 'grpc' },
- },
-];
-
-const apiRegistry = ApiRegistry.with(apiDocsConfigRef, {
- getApiDefinitionWidget: () => undefined,
-});
-
-describe('ApiCatalogTable component', () => {
- it('should render error message when error is passed in props', async () => {
- const rendered = render(
- wrapInTestApp(
-
-
- ,
- ),
- );
- const errorMessage = await rendered.findByText(
- /Could not fetch catalog entities./,
- );
- expect(errorMessage).toBeInTheDocument();
- });
-
- it('should display entity names when loading has finished and no error occurred', async () => {
- const rendered = render(
- wrapInTestApp(
-
-
- ,
- ),
- );
- expect(rendered.getByText(/api1/)).toBeInTheDocument();
- expect(rendered.getByText(/api2/)).toBeInTheDocument();
- expect(rendered.getByText(/api3/)).toBeInTheDocument();
- });
-});
diff --git a/plugins/api-docs/src/components/ApiExplorerTable/ApiExplorerTable.tsx b/plugins/api-docs/src/components/ApiExplorerTable/ApiExplorerTable.tsx
deleted file mode 100644
index 5b9808e26d..0000000000
--- a/plugins/api-docs/src/components/ApiExplorerTable/ApiExplorerTable.tsx
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * Copyright 2020 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.
- */
-
-import {
- ApiEntityV1alpha1,
- Entity,
- EntityName,
- RELATION_OWNED_BY,
- RELATION_PART_OF,
-} from '@backstage/catalog-model';
-import {
- CodeSnippet,
- OverflowTooltip,
- Table,
- TableColumn,
- TableFilter,
- TableState,
- useQueryParamState,
- WarningPanel,
-} from '@backstage/core';
-import {
- EntityRefLink,
- EntityRefLinks,
- formatEntityRefTitle,
- getEntityRelations,
-} from '@backstage/plugin-catalog-react';
-import { Chip } from '@material-ui/core';
-import React from 'react';
-import { ApiTypeTitle } from '../ApiDefinitionCard';
-
-type EntityRow = {
- entity: ApiEntityV1alpha1;
- resolved: {
- name: string;
- partOfSystemRelationTitle?: string;
- partOfSystemRelations: EntityName[];
- ownedByRelationsTitle?: string;
- ownedByRelations: EntityName[];
- };
-};
-
-const columns: TableColumn[] = [
- {
- title: 'Name',
- field: 'resolved.name',
- highlight: true,
- render: ({ entity }) => (
-
- ),
- },
- {
- title: 'System',
- field: 'resolved.partOfSystemRelationTitle',
- render: ({ resolved }) => (
-
- ),
- },
- {
- title: 'Owner',
- field: 'resolved.ownedByRelationsTitle',
- render: ({ resolved }) => (
-
- ),
- },
- {
- title: 'Lifecycle',
- field: 'entity.spec.lifecycle',
- },
- {
- title: 'Type',
- field: 'entity.spec.type',
- render: ({ entity }) => ,
- },
- {
- title: 'Description',
- field: 'entity.metadata.description',
- render: ({ entity }) => (
-
- ),
- width: 'auto',
- },
- {
- title: 'Tags',
- field: 'entity.metadata.tags',
- cellStyle: {
- padding: '0px 16px 0px 20px',
- },
- render: ({ entity }) => (
- <>
- {entity.metadata.tags &&
- entity.metadata.tags.map(t => (
-
- ))}
- >
- ),
- },
-];
-
-const filters: TableFilter[] = [
- {
- column: 'Owner',
- type: 'select',
- },
- {
- column: 'Type',
- type: 'multiple-select',
- },
- {
- column: 'Lifecycle',
- type: 'multiple-select',
- },
- {
- column: 'Tags',
- type: 'checkbox-tree',
- },
-];
-
-type ExplorerTableProps = {
- entities: Entity[];
- loading: boolean;
- error?: any;
-};
-
-export const ApiExplorerTable = ({
- entities,
- loading,
- error,
-}: ExplorerTableProps) => {
- const [queryParamState, setQueryParamState] = useQueryParamState(
- 'apiTable',
- );
-
- if (error) {
- return (
-
-
-
- );
- }
-
- const rows = entities.map(entity => {
- const partOfSystemRelations = getEntityRelations(entity, RELATION_PART_OF, {
- kind: 'system',
- });
- const ownedByRelations = getEntityRelations(entity, RELATION_OWNED_BY);
-
- return {
- entity: entity as ApiEntityV1alpha1,
- resolved: {
- name: formatEntityRefTitle(entity, {
- defaultKind: 'API',
- }),
- ownedByRelationsTitle: ownedByRelations
- .map(r => formatEntityRefTitle(r, { defaultKind: 'group' }))
- .join(', '),
- ownedByRelations,
- partOfSystemRelationTitle: partOfSystemRelations
- .map(r =>
- formatEntityRefTitle(r, {
- defaultKind: 'system',
- }),
- )
- .join(', '),
- partOfSystemRelations,
- },
- };
- });
-
- return (
-
- isLoading={loading}
- columns={columns}
- options={{
- paging: false,
- actionsColumnIndex: -1,
- loadingType: 'linear',
- padding: 'dense',
- showEmptyDataSourceMessage: !loading,
- }}
- data={rows}
- filters={filters}
- initialState={queryParamState}
- onStateChange={setQueryParamState}
- />
- );
-};
diff --git a/plugins/api-docs/src/components/ApisCards/ConsumedApisCard.test.tsx b/plugins/api-docs/src/components/ApisCards/ConsumedApisCard.test.tsx
index fa956cd042..a13177d757 100644
--- a/plugins/api-docs/src/components/ApisCards/ConsumedApisCard.test.tsx
+++ b/plugins/api-docs/src/components/ApisCards/ConsumedApisCard.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/api-docs/src/components/ApisCards/ConsumedApisCard.tsx b/plugins/api-docs/src/components/ApisCards/ConsumedApisCard.tsx
index 7cc0257e85..29af152a8b 100644
--- a/plugins/api-docs/src/components/ApisCards/ConsumedApisCard.tsx
+++ b/plugins/api-docs/src/components/ApisCards/ConsumedApisCard.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/api-docs/src/components/ApisCards/HasApisCard.test.tsx b/plugins/api-docs/src/components/ApisCards/HasApisCard.test.tsx
index e721f6e918..cd711120d0 100644
--- a/plugins/api-docs/src/components/ApisCards/HasApisCard.test.tsx
+++ b/plugins/api-docs/src/components/ApisCards/HasApisCard.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/api-docs/src/components/ApisCards/HasApisCard.tsx b/plugins/api-docs/src/components/ApisCards/HasApisCard.tsx
index e6da61fcd9..ae89b270d7 100644
--- a/plugins/api-docs/src/components/ApisCards/HasApisCard.tsx
+++ b/plugins/api-docs/src/components/ApisCards/HasApisCard.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/api-docs/src/components/ApisCards/ProvidedApisCard.test.tsx b/plugins/api-docs/src/components/ApisCards/ProvidedApisCard.test.tsx
index 67d95605e4..af2cc40522 100644
--- a/plugins/api-docs/src/components/ApisCards/ProvidedApisCard.test.tsx
+++ b/plugins/api-docs/src/components/ApisCards/ProvidedApisCard.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/api-docs/src/components/ApisCards/ProvidedApisCard.tsx b/plugins/api-docs/src/components/ApisCards/ProvidedApisCard.tsx
index 6659d7d85e..759626b349 100644
--- a/plugins/api-docs/src/components/ApisCards/ProvidedApisCard.tsx
+++ b/plugins/api-docs/src/components/ApisCards/ProvidedApisCard.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/api-docs/src/components/ApisCards/index.ts b/plugins/api-docs/src/components/ApisCards/index.ts
index 9243bdedd2..4a74549755 100644
--- a/plugins/api-docs/src/components/ApisCards/index.ts
+++ b/plugins/api-docs/src/components/ApisCards/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/api-docs/src/components/ApisCards/presets.tsx b/plugins/api-docs/src/components/ApisCards/presets.tsx
index 151cccf846..a99031782c 100644
--- a/plugins/api-docs/src/components/ApisCards/presets.tsx
+++ b/plugins/api-docs/src/components/ApisCards/presets.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/api-docs/src/components/AsyncApiDefinitionWidget/AsyncApiDefinitionWidget.test.tsx b/plugins/api-docs/src/components/AsyncApiDefinitionWidget/AsyncApiDefinitionWidget.test.tsx
index 4baa21d3cf..0170ada180 100644
--- a/plugins/api-docs/src/components/AsyncApiDefinitionWidget/AsyncApiDefinitionWidget.test.tsx
+++ b/plugins/api-docs/src/components/AsyncApiDefinitionWidget/AsyncApiDefinitionWidget.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/api-docs/src/components/AsyncApiDefinitionWidget/AsyncApiDefinitionWidget.tsx b/plugins/api-docs/src/components/AsyncApiDefinitionWidget/AsyncApiDefinitionWidget.tsx
index 300c9d0c8a..0b8462ed6e 100644
--- a/plugins/api-docs/src/components/AsyncApiDefinitionWidget/AsyncApiDefinitionWidget.tsx
+++ b/plugins/api-docs/src/components/AsyncApiDefinitionWidget/AsyncApiDefinitionWidget.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/api-docs/src/components/AsyncApiDefinitionWidget/index.ts b/plugins/api-docs/src/components/AsyncApiDefinitionWidget/index.ts
index ecafd7d756..dcca901be2 100644
--- a/plugins/api-docs/src/components/AsyncApiDefinitionWidget/index.ts
+++ b/plugins/api-docs/src/components/AsyncApiDefinitionWidget/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/api-docs/src/components/ComponentsCards/ConsumingComponentsCard.test.tsx b/plugins/api-docs/src/components/ComponentsCards/ConsumingComponentsCard.test.tsx
index 104b360ff6..8afa1eb82d 100644
--- a/plugins/api-docs/src/components/ComponentsCards/ConsumingComponentsCard.test.tsx
+++ b/plugins/api-docs/src/components/ComponentsCards/ConsumingComponentsCard.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/api-docs/src/components/ComponentsCards/ConsumingComponentsCard.tsx b/plugins/api-docs/src/components/ComponentsCards/ConsumingComponentsCard.tsx
index 914d034237..6f91c1f9f2 100644
--- a/plugins/api-docs/src/components/ComponentsCards/ConsumingComponentsCard.tsx
+++ b/plugins/api-docs/src/components/ComponentsCards/ConsumingComponentsCard.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/api-docs/src/components/ComponentsCards/ProvidingComponentsCard.test.tsx b/plugins/api-docs/src/components/ComponentsCards/ProvidingComponentsCard.test.tsx
index c7c6bacc84..1cba7dd6cf 100644
--- a/plugins/api-docs/src/components/ComponentsCards/ProvidingComponentsCard.test.tsx
+++ b/plugins/api-docs/src/components/ComponentsCards/ProvidingComponentsCard.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/api-docs/src/components/ComponentsCards/ProvidingComponentsCard.tsx b/plugins/api-docs/src/components/ComponentsCards/ProvidingComponentsCard.tsx
index 7c87943a9b..da6ee5d65f 100644
--- a/plugins/api-docs/src/components/ComponentsCards/ProvidingComponentsCard.tsx
+++ b/plugins/api-docs/src/components/ComponentsCards/ProvidingComponentsCard.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/api-docs/src/components/ComponentsCards/index.ts b/plugins/api-docs/src/components/ComponentsCards/index.ts
index e1c0e87198..84dec071fb 100644
--- a/plugins/api-docs/src/components/ComponentsCards/index.ts
+++ b/plugins/api-docs/src/components/ComponentsCards/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/api-docs/src/components/GraphQlDefinitionWidget/GraphQlDefinitionWidget.test.tsx b/plugins/api-docs/src/components/GraphQlDefinitionWidget/GraphQlDefinitionWidget.test.tsx
index 58ac611430..63e5a73692 100644
--- a/plugins/api-docs/src/components/GraphQlDefinitionWidget/GraphQlDefinitionWidget.test.tsx
+++ b/plugins/api-docs/src/components/GraphQlDefinitionWidget/GraphQlDefinitionWidget.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/api-docs/src/components/GraphQlDefinitionWidget/GraphQlDefinitionWidget.tsx b/plugins/api-docs/src/components/GraphQlDefinitionWidget/GraphQlDefinitionWidget.tsx
index 56d6914f5b..49729162bf 100644
--- a/plugins/api-docs/src/components/GraphQlDefinitionWidget/GraphQlDefinitionWidget.tsx
+++ b/plugins/api-docs/src/components/GraphQlDefinitionWidget/GraphQlDefinitionWidget.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/api-docs/src/components/GraphQlDefinitionWidget/index.ts b/plugins/api-docs/src/components/GraphQlDefinitionWidget/index.ts
index b60545de15..9173f492b0 100644
--- a/plugins/api-docs/src/components/GraphQlDefinitionWidget/index.ts
+++ b/plugins/api-docs/src/components/GraphQlDefinitionWidget/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/api-docs/src/components/OpenApiDefinitionWidget/OpenApiDefinitionWidget.test.tsx b/plugins/api-docs/src/components/OpenApiDefinitionWidget/OpenApiDefinitionWidget.test.tsx
index 518b2a593e..080aa11a3a 100644
--- a/plugins/api-docs/src/components/OpenApiDefinitionWidget/OpenApiDefinitionWidget.test.tsx
+++ b/plugins/api-docs/src/components/OpenApiDefinitionWidget/OpenApiDefinitionWidget.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/api-docs/src/components/OpenApiDefinitionWidget/OpenApiDefinitionWidget.tsx b/plugins/api-docs/src/components/OpenApiDefinitionWidget/OpenApiDefinitionWidget.tsx
index b96f50166e..75b3ef62f2 100644
--- a/plugins/api-docs/src/components/OpenApiDefinitionWidget/OpenApiDefinitionWidget.tsx
+++ b/plugins/api-docs/src/components/OpenApiDefinitionWidget/OpenApiDefinitionWidget.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/api-docs/src/components/OpenApiDefinitionWidget/index.ts b/plugins/api-docs/src/components/OpenApiDefinitionWidget/index.ts
index b2a0f0b86d..94401c92a1 100644
--- a/plugins/api-docs/src/components/OpenApiDefinitionWidget/index.ts
+++ b/plugins/api-docs/src/components/OpenApiDefinitionWidget/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/api-docs/src/components/PlainApiDefinitionWidget/PlainApiDefinitionWidget.test.tsx b/plugins/api-docs/src/components/PlainApiDefinitionWidget/PlainApiDefinitionWidget.test.tsx
index cb3aab9526..a71cb65be0 100644
--- a/plugins/api-docs/src/components/PlainApiDefinitionWidget/PlainApiDefinitionWidget.test.tsx
+++ b/plugins/api-docs/src/components/PlainApiDefinitionWidget/PlainApiDefinitionWidget.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/api-docs/src/components/PlainApiDefinitionWidget/PlainApiDefinitionWidget.tsx b/plugins/api-docs/src/components/PlainApiDefinitionWidget/PlainApiDefinitionWidget.tsx
index 0b2ebb4ca4..4135e90c83 100644
--- a/plugins/api-docs/src/components/PlainApiDefinitionWidget/PlainApiDefinitionWidget.tsx
+++ b/plugins/api-docs/src/components/PlainApiDefinitionWidget/PlainApiDefinitionWidget.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/api-docs/src/components/PlainApiDefinitionWidget/index.ts b/plugins/api-docs/src/components/PlainApiDefinitionWidget/index.ts
index c9d18d1ae8..c233652981 100644
--- a/plugins/api-docs/src/components/PlainApiDefinitionWidget/index.ts
+++ b/plugins/api-docs/src/components/PlainApiDefinitionWidget/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/api-docs/src/components/index.ts b/plugins/api-docs/src/components/index.ts
index cfd985f47c..c0af59dc52 100644
--- a/plugins/api-docs/src/components/index.ts
+++ b/plugins/api-docs/src/components/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/api-docs/src/config.ts b/plugins/api-docs/src/config.ts
index c2a806d8b2..c796952e6f 100644
--- a/plugins/api-docs/src/config.ts
+++ b/plugins/api-docs/src/config.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/api-docs/src/index.ts b/plugins/api-docs/src/index.ts
index 720183e1cd..b36c9a04c6 100644
--- a/plugins/api-docs/src/index.ts
+++ b/plugins/api-docs/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/api-docs/src/plugin.test.ts b/plugins/api-docs/src/plugin.test.ts
index eaafd36b3d..12a83fb032 100644
--- a/plugins/api-docs/src/plugin.test.ts
+++ b/plugins/api-docs/src/plugin.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/api-docs/src/plugin.ts b/plugins/api-docs/src/plugin.ts
index 4956a48f18..6c37ca744e 100644
--- a/plugins/api-docs/src/plugin.ts
+++ b/plugins/api-docs/src/plugin.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -22,7 +22,6 @@ import {
createRoutableExtension,
} from '@backstage/core';
import { defaultDefinitionWidgets } from './components/ApiDefinitionCard';
-import { ApiExplorerPage as Page } from './components/ApiExplorerPage/ApiExplorerPage';
import { apiDocsConfigRef } from './config';
import { createComponentRouteRef, rootRoute } from './routes';
@@ -48,9 +47,6 @@ export const apiDocsPlugin = createPlugin({
externalRoutes: {
createComponent: createComponentRouteRef,
},
- register({ router }) {
- router.addRoute(rootRoute, Page);
- },
});
export const ApiExplorerPage = apiDocsPlugin.provide(
diff --git a/plugins/api-docs/src/routes.ts b/plugins/api-docs/src/routes.ts
index 9ca11c59ee..3fc03d54cf 100644
--- a/plugins/api-docs/src/routes.ts
+++ b/plugins/api-docs/src/routes.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/api-docs/src/setupTests.ts b/plugins/api-docs/src/setupTests.ts
index 825bcd4115..963c0f188b 100644
--- a/plugins/api-docs/src/setupTests.ts
+++ b/plugins/api-docs/src/setupTests.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/app-backend/CHANGELOG.md b/plugins/app-backend/CHANGELOG.md
index ede16b6a5e..144d641d2c 100644
--- a/plugins/app-backend/CHANGELOG.md
+++ b/plugins/app-backend/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-app-backend
+## 0.3.14
+
+### Patch Changes
+
+- 3108ff7bf: Make `yarn dev` respect the `PLUGIN_PORT` environment variable.
+- Updated dependencies
+ - @backstage/backend-common@0.8.3
+ - @backstage/config-loader@0.6.4
+
## 0.3.13
### Patch Changes
diff --git a/plugins/app-backend/api-report.md b/plugins/app-backend/api-report.md
new file mode 100644
index 0000000000..4f59102265
--- /dev/null
+++ b/plugins/app-backend/api-report.md
@@ -0,0 +1,28 @@
+## API Report File for "@backstage/plugin-app-backend"
+
+> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
+
+```ts
+
+import { Config } from '@backstage/config';
+import express from 'express';
+import { Logger } from 'winston';
+
+// @public (undocumented)
+export function createRouter(options: RouterOptions): Promise;
+
+// @public (undocumented)
+export interface RouterOptions {
+ appPackageName: string;
+ // (undocumented)
+ config: Config;
+ disableConfigInjection?: boolean;
+ // (undocumented)
+ logger: Logger;
+ staticFallbackHandler?: express.Handler;
+}
+
+
+// (No @packageDocumentation comment for this package)
+
+```
diff --git a/plugins/app-backend/package.json b/plugins/app-backend/package.json
index 4d101e7ca5..d9de7fbe27 100644
--- a/plugins/app-backend/package.json
+++ b/plugins/app-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-app-backend",
- "version": "0.3.13",
+ "version": "0.3.14",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -29,8 +29,8 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.8.2",
- "@backstage/config-loader": "^0.6.1",
+ "@backstage/backend-common": "^0.8.3",
+ "@backstage/config-loader": "^0.6.4",
"@backstage/config": "^0.1.5",
"@types/express": "^4.17.6",
"express": "^4.17.1",
@@ -40,7 +40,7 @@
"yn": "^4.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.7.0",
+ "@backstage/cli": "^0.7.1",
"@types/supertest": "^2.0.8",
"msw": "^0.20.5",
"supertest": "^6.1.3"
diff --git a/plugins/app-backend/src/index.ts b/plugins/app-backend/src/index.ts
index 7612c392a2..ca73cb27ba 100644
--- a/plugins/app-backend/src/index.ts
+++ b/plugins/app-backend/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/app-backend/src/lib/config.test.ts b/plugins/app-backend/src/lib/config.test.ts
index 4018766ac9..1d5739e711 100644
--- a/plugins/app-backend/src/lib/config.test.ts
+++ b/plugins/app-backend/src/lib/config.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/app-backend/src/lib/config.ts b/plugins/app-backend/src/lib/config.ts
index 4fe383414f..1ebd95a5c0 100644
--- a/plugins/app-backend/src/lib/config.ts
+++ b/plugins/app-backend/src/lib/config.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/app-backend/src/service/router.test.ts b/plugins/app-backend/src/service/router.test.ts
index cabe4c59b9..bbbf115834 100644
--- a/plugins/app-backend/src/service/router.test.ts
+++ b/plugins/app-backend/src/service/router.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/app-backend/src/service/router.ts b/plugins/app-backend/src/service/router.ts
index 8fe8355bc3..681b6335fe 100644
--- a/plugins/app-backend/src/service/router.ts
+++ b/plugins/app-backend/src/service/router.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/app-backend/src/service/standaloneServer.ts b/plugins/app-backend/src/service/standaloneServer.ts
index 005d80027b..d86b0f6807 100644
--- a/plugins/app-backend/src/service/standaloneServer.ts
+++ b/plugins/app-backend/src/service/standaloneServer.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -38,7 +38,9 @@ export async function startStandaloneServer(
appPackageName: 'example-app',
});
- const service = createServiceBuilder(module).addRouter('', router);
+ const service = createServiceBuilder(module)
+ .setPort(options.port)
+ .addRouter('', router);
return await service.start().catch(err => {
logger.error(err);
diff --git a/plugins/app-backend/src/setupTests.ts b/plugins/app-backend/src/setupTests.ts
index ba33cf996b..d3232290a7 100644
--- a/plugins/app-backend/src/setupTests.ts
+++ b/plugins/app-backend/src/setupTests.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/CHANGELOG.md b/plugins/auth-backend/CHANGELOG.md
index d3c916fa3e..af9b4ca419 100644
--- a/plugins/auth-backend/CHANGELOG.md
+++ b/plugins/auth-backend/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-auth-backend
+## 0.3.13
+
+### Patch Changes
+
+- 1aa31f0af: Add support for refreshing GitLab auth sessions.
+- Updated dependencies
+ - @backstage/backend-common@0.8.3
+ - @backstage/catalog-model@0.8.3
+
## 0.3.12
### Patch Changes
diff --git a/plugins/auth-backend/api-report.md b/plugins/auth-backend/api-report.md
new file mode 100644
index 0000000000..6ae878accf
--- /dev/null
+++ b/plugins/auth-backend/api-report.md
@@ -0,0 +1,229 @@
+## API Report File for "@backstage/plugin-auth-backend"
+
+> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
+
+```ts
+
+import { CatalogApi } from '@backstage/catalog-client';
+import { Config } from '@backstage/config';
+import { Entity } from '@backstage/catalog-model';
+import express from 'express';
+import { JSONWebKey } from 'jose';
+import { Logger } from 'winston';
+import { PluginDatabaseManager } from '@backstage/backend-common';
+import { PluginEndpointDiscovery } from '@backstage/backend-common';
+import { Profile } from 'passport';
+import { UserEntity } from '@backstage/catalog-model';
+
+// @public (undocumented)
+export type AuthProviderFactory = (options: AuthProviderFactoryOptions) => AuthProviderRouteHandlers;
+
+// @public (undocumented)
+export type AuthProviderFactoryOptions = {
+ providerId: string;
+ globalConfig: AuthProviderConfig;
+ config: Config;
+ logger: Logger;
+ tokenIssuer: TokenIssuer;
+ discovery: PluginEndpointDiscovery;
+ catalogApi: CatalogApi;
+ identityResolver?: ExperimentalIdentityResolver;
+};
+
+// @public
+export interface AuthProviderRouteHandlers {
+ frameHandler(req: express.Request, res: express.Response): Promise;
+ logout?(req: express.Request, res: express.Response): Promise;
+ refresh?(req: express.Request, res: express.Response): Promise;
+ start(req: express.Request, res: express.Response): Promise;
+}
+
+// @public (undocumented)
+export type AuthResponse = {
+ providerInfo: ProviderInfo;
+ profile: ProfileInfo;
+ backstageIdentity?: BackstageIdentity;
+};
+
+// @public (undocumented)
+export type BackstageIdentity = {
+ id: string;
+ idToken?: string;
+ token?: string;
+ entity?: Entity;
+};
+
+// @public (undocumented)
+export const createGoogleProvider: (options?: GoogleProviderOptions | undefined) => AuthProviderFactory;
+
+// @public (undocumented)
+export function createRouter({ logger, config, discovery, database, providerFactories, }: RouterOptions): Promise;
+
+// @public (undocumented)
+export const defaultAuthProviderFactories: {
+ [providerId: string]: AuthProviderFactory;
+};
+
+// @public (undocumented)
+export const encodeState: (state: OAuthState) => string;
+
+// @public (undocumented)
+export const ensuresXRequestedWith: (req: express.Request) => boolean;
+
+// @public (undocumented)
+export const googleEmailSignInResolver: SignInResolver;
+
+// @public (undocumented)
+export type GoogleProviderOptions = {
+ authHandler?: AuthHandler;
+ signIn?: {
+ resolver?: SignInResolver;
+ };
+};
+
+// @public
+export class IdentityClient {
+ constructor(options: {
+ discovery: PluginEndpointDiscovery;
+ issuer: string;
+ });
+ authenticate(token: string | undefined): Promise;
+ static getBearerToken(authorizationHeader: string | undefined): string | undefined;
+ listPublicKeys(): Promise<{
+ keys: JSONWebKey[];
+ }>;
+ }
+
+// @public (undocumented)
+export class OAuthAdapter implements AuthProviderRouteHandlers {
+ constructor(handlers: OAuthHandlers, options: Options);
+ // (undocumented)
+ frameHandler(req: express.Request, res: express.Response): Promise;
+ // (undocumented)
+ static fromConfig(config: AuthProviderConfig, handlers: OAuthHandlers, options: Pick): OAuthAdapter;
+ // (undocumented)
+ logout(req: express.Request, res: express.Response): Promise;
+ // (undocumented)
+ refresh(req: express.Request, res: express.Response): Promise;
+ // (undocumented)
+ start(req: express.Request, res: express.Response): Promise;
+}
+
+// @public (undocumented)
+export class OAuthEnvironmentHandler implements AuthProviderRouteHandlers {
+ constructor(handlers: Map);
+ // (undocumented)
+ frameHandler(req: express.Request, res: express.Response): Promise;
+ // (undocumented)
+ logout(req: express.Request, res: express.Response): Promise;
+ // (undocumented)
+ static mapConfig(config: Config, factoryFunc: (envConfig: Config) => AuthProviderRouteHandlers): OAuthEnvironmentHandler;
+ // (undocumented)
+ refresh(req: express.Request, res: express.Response): Promise;
+ // (undocumented)
+ start(req: express.Request, res: express.Response): Promise;
+}
+
+// @public
+export interface OAuthHandlers {
+ handler(req: express.Request): Promise<{
+ response: AuthResponse;
+ refreshToken?: string;
+ }>;
+ logout?(): Promise;
+ refresh?(req: OAuthRefreshRequest): Promise>;
+ start(req: OAuthStartRequest): Promise;
+}
+
+// @public (undocumented)
+export type OAuthProviderInfo = {
+ accessToken: string;
+ idToken?: string;
+ expiresInSeconds?: number;
+ scope: string;
+ refreshToken?: string;
+};
+
+// @public
+export type OAuthProviderOptions = {
+ clientId: string;
+ clientSecret: string;
+ callbackUrl: string;
+};
+
+// @public (undocumented)
+export type OAuthRefreshRequest = express.Request<{}> & {
+ scope: string;
+ refreshToken: string;
+};
+
+// @public (undocumented)
+export type OAuthResponse = AuthResponse;
+
+// @public (undocumented)
+export type OAuthResult = {
+ fullProfile: Profile;
+ params: {
+ id_token?: string;
+ scope: string;
+ expires_in: number;
+ };
+ accessToken: string;
+ refreshToken?: string;
+};
+
+// @public (undocumented)
+export type OAuthStartRequest = express.Request<{}> & {
+ scope: string;
+ state: OAuthState;
+};
+
+// @public (undocumented)
+export type OAuthState = {
+ nonce: string;
+ env: string;
+};
+
+// @public (undocumented)
+export const postMessageResponse: (res: express.Response, appOrigin: string, response: WebMessageResponse) => void;
+
+// @public
+export type ProfileInfo = {
+ email?: string;
+ displayName?: string;
+ picture?: string;
+};
+
+// @public (undocumented)
+export const readState: (stateString: string) => OAuthState;
+
+// @public (undocumented)
+export interface RouterOptions {
+ // (undocumented)
+ config: Config;
+ // (undocumented)
+ database: PluginDatabaseManager;
+ // (undocumented)
+ discovery: PluginEndpointDiscovery;
+ // (undocumented)
+ logger: Logger;
+ // (undocumented)
+ providerFactories?: ProviderFactories;
+}
+
+// @public (undocumented)
+export const verifyNonce: (req: express.Request, providerId: string) => void;
+
+// @public
+export type WebMessageResponse = {
+ type: 'authorization_response';
+ response: AuthResponse;
+} | {
+ type: 'authorization_response';
+ error: Error;
+};
+
+
+// (No @packageDocumentation comment for this package)
+
+```
diff --git a/plugins/auth-backend/config.d.ts b/plugins/auth-backend/config.d.ts
index 64de6cdd50..e9f24382d9 100644
--- a/plugins/auth-backend/config.d.ts
+++ b/plugins/auth-backend/config.d.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/migrations/20200619125845_init.js b/plugins/auth-backend/migrations/20200619125845_init.js
index 4005edd480..d5fc08ce48 100644
--- a/plugins/auth-backend/migrations/20200619125845_init.js
+++ b/plugins/auth-backend/migrations/20200619125845_init.js
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/migrations/20210326100300_timestamptz.js b/plugins/auth-backend/migrations/20210326100300_timestamptz.js
index d326a32211..e9bdddde8f 100644
--- a/plugins/auth-backend/migrations/20210326100300_timestamptz.js
+++ b/plugins/auth-backend/migrations/20210326100300_timestamptz.js
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/package.json b/plugins/auth-backend/package.json
index ab5e252fed..06d443c37d 100644
--- a/plugins/auth-backend/package.json
+++ b/plugins/auth-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-auth-backend",
- "version": "0.3.12",
+ "version": "0.3.13",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -29,9 +29,9 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.8.2",
+ "@backstage/backend-common": "^0.8.3",
"@backstage/catalog-client": "^0.3.13",
- "@backstage/catalog-model": "^0.8.2",
+ "@backstage/catalog-model": "^0.8.3",
"@backstage/config": "^0.1.5",
"@backstage/errors": "^0.1.1",
"@backstage/test-utils": "^0.1.12",
@@ -68,7 +68,7 @@
"yn": "^4.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.7.0",
+ "@backstage/cli": "^0.7.1",
"@types/body-parser": "^1.19.0",
"@types/cookie-parser": "^1.4.2",
"@types/express-session": "^1.17.2",
diff --git a/plugins/auth-backend/src/identity/DatabaseKeyStore.test.ts b/plugins/auth-backend/src/identity/DatabaseKeyStore.test.ts
index 8896a0d158..bb4c129e41 100644
--- a/plugins/auth-backend/src/identity/DatabaseKeyStore.test.ts
+++ b/plugins/auth-backend/src/identity/DatabaseKeyStore.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/identity/DatabaseKeyStore.ts b/plugins/auth-backend/src/identity/DatabaseKeyStore.ts
index 362022839f..6bae1f4412 100644
--- a/plugins/auth-backend/src/identity/DatabaseKeyStore.ts
+++ b/plugins/auth-backend/src/identity/DatabaseKeyStore.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/identity/IdentityClient.test.ts b/plugins/auth-backend/src/identity/IdentityClient.test.ts
index 5f317aa0c2..5eca6bf8cd 100644
--- a/plugins/auth-backend/src/identity/IdentityClient.test.ts
+++ b/plugins/auth-backend/src/identity/IdentityClient.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/identity/IdentityClient.ts b/plugins/auth-backend/src/identity/IdentityClient.ts
index 970c30dd40..2af30e4b6a 100644
--- a/plugins/auth-backend/src/identity/IdentityClient.ts
+++ b/plugins/auth-backend/src/identity/IdentityClient.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/identity/MemoryKeyStore.ts b/plugins/auth-backend/src/identity/MemoryKeyStore.ts
index 3dc1d777c9..25c2054c96 100644
--- a/plugins/auth-backend/src/identity/MemoryKeyStore.ts
+++ b/plugins/auth-backend/src/identity/MemoryKeyStore.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/identity/TokenFactory.test.ts b/plugins/auth-backend/src/identity/TokenFactory.test.ts
index 0c7febe616..f5f06f1209 100644
--- a/plugins/auth-backend/src/identity/TokenFactory.test.ts
+++ b/plugins/auth-backend/src/identity/TokenFactory.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/identity/TokenFactory.ts b/plugins/auth-backend/src/identity/TokenFactory.ts
index 1c6192d5c5..ae7c674a58 100644
--- a/plugins/auth-backend/src/identity/TokenFactory.ts
+++ b/plugins/auth-backend/src/identity/TokenFactory.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -67,13 +67,14 @@ export class TokenFactory implements TokenIssuer {
const iss = this.issuer;
const sub = params.claims.sub;
+ const ent = params.claims.ent;
const aud = 'backstage';
const iat = Math.floor(Date.now() / MS_IN_S);
const exp = iat + this.keyDurationSeconds;
- this.logger.info(`Issuing token for ${sub}`);
+ this.logger.info(`Issuing token for ${sub}, with entities ${ent ?? []}`);
- return JWS.sign({ iss, sub, aud, iat, exp }, key, {
+ return JWS.sign({ iss, sub, aud, iat, exp, ent }, key, {
alg: key.alg,
kid: key.kid,
});
diff --git a/plugins/auth-backend/src/identity/index.ts b/plugins/auth-backend/src/identity/index.ts
index a76dcea440..d88339e8e4 100644
--- a/plugins/auth-backend/src/identity/index.ts
+++ b/plugins/auth-backend/src/identity/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/identity/router.ts b/plugins/auth-backend/src/identity/router.ts
index 2ddde31b22..d994f44d37 100644
--- a/plugins/auth-backend/src/identity/router.ts
+++ b/plugins/auth-backend/src/identity/router.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/identity/types.ts b/plugins/auth-backend/src/identity/types.ts
index 6e984d41cc..faafd2b68e 100644
--- a/plugins/auth-backend/src/identity/types.ts
+++ b/plugins/auth-backend/src/identity/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -28,6 +28,8 @@ export type TokenParams = {
claims: {
/** The token subject, i.e. User ID */
sub: string;
+ /** A list of entity references that the user claims ownership through */
+ ent?: string[];
};
};
diff --git a/plugins/auth-backend/src/index.ts b/plugins/auth-backend/src/index.ts
index a352362089..d3ea83efd6 100644
--- a/plugins/auth-backend/src/index.ts
+++ b/plugins/auth-backend/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/lib/catalog/CatalogIdentityClient.test.ts b/plugins/auth-backend/src/lib/catalog/CatalogIdentityClient.test.ts
index 0ec65b7a0b..329db316ab 100644
--- a/plugins/auth-backend/src/lib/catalog/CatalogIdentityClient.test.ts
+++ b/plugins/auth-backend/src/lib/catalog/CatalogIdentityClient.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,6 +16,7 @@
import { CatalogApi } from '@backstage/catalog-client';
import { UserEntity } from '@backstage/catalog-model';
+import { TokenIssuer } from '../../identity';
import { CatalogIdentityClient } from './CatalogIdentityClient';
describe('CatalogIdentityClient', () => {
@@ -29,25 +30,36 @@ describe('CatalogIdentityClient', () => {
getLocationByEntity: jest.fn(),
removeEntityByUid: jest.fn(),
};
+ const tokenIssuer: jest.Mocked = {
+ issueToken: jest.fn(),
+ listPublicKeys: jest.fn(),
+ };
afterEach(() => jest.resetAllMocks());
it('passes through the correct search params', async () => {
catalogApi.getEntities.mockResolvedValueOnce({ items: [{} as UserEntity] });
+ tokenIssuer.issueToken.mockResolvedValue('my-token');
const client = new CatalogIdentityClient({
- catalogApi: catalogApi as CatalogApi,
+ catalogApi: catalogApi,
+ tokenIssuer: tokenIssuer,
});
- client.findUser({ annotations: { key: 'value' } });
+ await client.findUser({ annotations: { key: 'value' } });
- expect(catalogApi.getEntities).toBeCalledWith(
+ expect(catalogApi.getEntities).toHaveBeenCalledWith(
{
filter: {
kind: 'user',
'metadata.annotations.key': 'value',
},
},
- undefined,
+ { token: 'my-token' },
);
+ expect(tokenIssuer.issueToken).toHaveBeenCalledWith({
+ claims: {
+ sub: 'backstage.io/auth-backend',
+ },
+ });
});
});
diff --git a/plugins/auth-backend/src/lib/catalog/CatalogIdentityClient.ts b/plugins/auth-backend/src/lib/catalog/CatalogIdentityClient.ts
index abd3624df2..07a7190503 100644
--- a/plugins/auth-backend/src/lib/catalog/CatalogIdentityClient.ts
+++ b/plugins/auth-backend/src/lib/catalog/CatalogIdentityClient.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,6 +17,7 @@
import { ConflictError, NotFoundError } from '@backstage/errors';
import { CatalogApi } from '@backstage/catalog-client';
import { UserEntity } from '@backstage/catalog-model';
+import { TokenIssuer } from '../../identity';
type UserQuery = {
annotations: Record;
@@ -27,9 +28,11 @@ type UserQuery = {
*/
export class CatalogIdentityClient {
private readonly catalogApi: CatalogApi;
+ private readonly tokenIssuer: TokenIssuer;
- constructor(options: { catalogApi: CatalogApi }) {
+ constructor(options: { catalogApi: CatalogApi; tokenIssuer: TokenIssuer }) {
this.catalogApi = options.catalogApi;
+ this.tokenIssuer = options.tokenIssuer;
}
/**
@@ -37,10 +40,7 @@ export class CatalogIdentityClient {
*
* Throws a NotFoundError or ConflictError if 0 or multiple users are found.
*/
- async findUser(
- query: UserQuery,
- options?: { token?: string },
- ): Promise {
+ async findUser(query: UserQuery): Promise {
const filter: Record = {
kind: 'user',
};
@@ -48,7 +48,11 @@ export class CatalogIdentityClient {
filter[`metadata.annotations.${key}`] = value;
}
- const { items } = await this.catalogApi.getEntities({ filter }, options);
+ // TODO(Rugvip): cache the token
+ const token = await this.tokenIssuer.issueToken({
+ claims: { sub: 'backstage.io/auth-backend' },
+ });
+ const { items } = await this.catalogApi.getEntities({ filter }, { token });
if (items.length !== 1) {
if (items.length > 1) {
diff --git a/plugins/auth-backend/src/lib/catalog/helpers.ts b/plugins/auth-backend/src/lib/catalog/helpers.ts
new file mode 100644
index 0000000000..61dc428b3f
--- /dev/null
+++ b/plugins/auth-backend/src/lib/catalog/helpers.ts
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2021 The Backstage Authors
+ *
+ * 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.
+ */
+
+import {
+ RELATION_MEMBER_OF,
+ stringifyEntityRef,
+ UserEntity,
+} from '@backstage/catalog-model';
+import { TokenParams } from '../../identity';
+
+export function getEntityClaims(entity: UserEntity): TokenParams['claims'] {
+ const userRef = stringifyEntityRef(entity);
+
+ const membershipRefs =
+ entity.relations
+ ?.filter(
+ r =>
+ r.type === RELATION_MEMBER_OF &&
+ r.target.kind.toLocaleLowerCase('en-US') === 'group',
+ )
+ .map(r => stringifyEntityRef(r.target)) ?? [];
+
+ return {
+ sub: userRef,
+ ent: [userRef, ...membershipRefs],
+ };
+}
diff --git a/plugins/auth-backend/src/lib/catalog/index.ts b/plugins/auth-backend/src/lib/catalog/index.ts
index f15469668f..0d1aa4a6f7 100644
--- a/plugins/auth-backend/src/lib/catalog/index.ts
+++ b/plugins/auth-backend/src/lib/catalog/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -15,3 +15,4 @@
*/
export { CatalogIdentityClient } from './CatalogIdentityClient';
+export { getEntityClaims } from './helpers';
diff --git a/plugins/auth-backend/src/lib/flow/authFlowHelpers.test.ts b/plugins/auth-backend/src/lib/flow/authFlowHelpers.test.ts
index 10fb82eb36..5446fbd437 100644
--- a/plugins/auth-backend/src/lib/flow/authFlowHelpers.test.ts
+++ b/plugins/auth-backend/src/lib/flow/authFlowHelpers.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/lib/flow/authFlowHelpers.ts b/plugins/auth-backend/src/lib/flow/authFlowHelpers.ts
index e70aa0bfee..c3b2f5c6c9 100644
--- a/plugins/auth-backend/src/lib/flow/authFlowHelpers.ts
+++ b/plugins/auth-backend/src/lib/flow/authFlowHelpers.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/lib/flow/index.ts b/plugins/auth-backend/src/lib/flow/index.ts
index 7f0627994f..f7b4491edb 100644
--- a/plugins/auth-backend/src/lib/flow/index.ts
+++ b/plugins/auth-backend/src/lib/flow/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/lib/flow/types.ts b/plugins/auth-backend/src/lib/flow/types.ts
index 98bb551c2c..aaa8b55d1c 100644
--- a/plugins/auth-backend/src/lib/flow/types.ts
+++ b/plugins/auth-backend/src/lib/flow/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/lib/oauth/OAuthAdapter.test.ts b/plugins/auth-backend/src/lib/oauth/OAuthAdapter.test.ts
index 38e21f04e8..147cf5216f 100644
--- a/plugins/auth-backend/src/lib/oauth/OAuthAdapter.test.ts
+++ b/plugins/auth-backend/src/lib/oauth/OAuthAdapter.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/lib/oauth/OAuthAdapter.ts b/plugins/auth-backend/src/lib/oauth/OAuthAdapter.ts
index 5648ca5965..d9a49e17e8 100644
--- a/plugins/auth-backend/src/lib/oauth/OAuthAdapter.ts
+++ b/plugins/auth-backend/src/lib/oauth/OAuthAdapter.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/lib/oauth/OAuthEnvironmentHandler.ts b/plugins/auth-backend/src/lib/oauth/OAuthEnvironmentHandler.ts
index 9998a5b10c..a2f427e741 100644
--- a/plugins/auth-backend/src/lib/oauth/OAuthEnvironmentHandler.ts
+++ b/plugins/auth-backend/src/lib/oauth/OAuthEnvironmentHandler.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/lib/oauth/helpers.test.ts b/plugins/auth-backend/src/lib/oauth/helpers.test.ts
index fcf56705d2..3ef8d74c13 100644
--- a/plugins/auth-backend/src/lib/oauth/helpers.test.ts
+++ b/plugins/auth-backend/src/lib/oauth/helpers.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/lib/oauth/helpers.ts b/plugins/auth-backend/src/lib/oauth/helpers.ts
index bc6fcf1004..df84d421bd 100644
--- a/plugins/auth-backend/src/lib/oauth/helpers.ts
+++ b/plugins/auth-backend/src/lib/oauth/helpers.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/lib/oauth/index.ts b/plugins/auth-backend/src/lib/oauth/index.ts
index 6bbe017eb3..b7b37f5920 100644
--- a/plugins/auth-backend/src/lib/oauth/index.ts
+++ b/plugins/auth-backend/src/lib/oauth/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/lib/oauth/types.ts b/plugins/auth-backend/src/lib/oauth/types.ts
index dd477388bf..1c11f8291e 100644
--- a/plugins/auth-backend/src/lib/oauth/types.ts
+++ b/plugins/auth-backend/src/lib/oauth/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/lib/passport/PassportStrategyHelper.test.ts b/plugins/auth-backend/src/lib/passport/PassportStrategyHelper.test.ts
index c27eebbd9a..48878e9fa6 100644
--- a/plugins/auth-backend/src/lib/passport/PassportStrategyHelper.test.ts
+++ b/plugins/auth-backend/src/lib/passport/PassportStrategyHelper.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/lib/passport/PassportStrategyHelper.ts b/plugins/auth-backend/src/lib/passport/PassportStrategyHelper.ts
index a82e428a83..313b4a79bd 100644
--- a/plugins/auth-backend/src/lib/passport/PassportStrategyHelper.ts
+++ b/plugins/auth-backend/src/lib/passport/PassportStrategyHelper.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/lib/passport/index.ts b/plugins/auth-backend/src/lib/passport/index.ts
index c307e212fa..17ab71f51f 100644
--- a/plugins/auth-backend/src/lib/passport/index.ts
+++ b/plugins/auth-backend/src/lib/passport/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/providers/auth0/index.ts b/plugins/auth-backend/src/providers/auth0/index.ts
index 480552a91d..b201177d69 100644
--- a/plugins/auth-backend/src/providers/auth0/index.ts
+++ b/plugins/auth-backend/src/providers/auth0/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/providers/auth0/provider.ts b/plugins/auth-backend/src/providers/auth0/provider.ts
index 2a2f743d12..4cc3f33499 100644
--- a/plugins/auth-backend/src/providers/auth0/provider.ts
+++ b/plugins/auth-backend/src/providers/auth0/provider.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/providers/auth0/strategy.ts b/plugins/auth-backend/src/providers/auth0/strategy.ts
index 6ac06ec4e9..bac82db0ee 100644
--- a/plugins/auth-backend/src/providers/auth0/strategy.ts
+++ b/plugins/auth-backend/src/providers/auth0/strategy.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/providers/aws-alb/index.ts b/plugins/auth-backend/src/providers/aws-alb/index.ts
index cd6d41f580..5f63c514a4 100644
--- a/plugins/auth-backend/src/providers/aws-alb/index.ts
+++ b/plugins/auth-backend/src/providers/aws-alb/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/providers/aws-alb/provider.test.ts b/plugins/auth-backend/src/providers/aws-alb/provider.test.ts
index 3fa168665a..3785e11d39 100644
--- a/plugins/auth-backend/src/providers/aws-alb/provider.test.ts
+++ b/plugins/auth-backend/src/providers/aws-alb/provider.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/providers/aws-alb/provider.ts b/plugins/auth-backend/src/providers/aws-alb/provider.ts
index 5b0bb8a33f..bd16ae1960 100644
--- a/plugins/auth-backend/src/providers/aws-alb/provider.ts
+++ b/plugins/auth-backend/src/providers/aws-alb/provider.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/providers/factories.ts b/plugins/auth-backend/src/providers/factories.ts
index 670dc84eec..070cdb38f3 100644
--- a/plugins/auth-backend/src/providers/factories.ts
+++ b/plugins/auth-backend/src/providers/factories.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/providers/github/index.ts b/plugins/auth-backend/src/providers/github/index.ts
index f2ba73c2b9..3e6aff4c24 100644
--- a/plugins/auth-backend/src/providers/github/index.ts
+++ b/plugins/auth-backend/src/providers/github/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/providers/github/provider.test.ts b/plugins/auth-backend/src/providers/github/provider.test.ts
index 23d888789a..4e53ce4026 100644
--- a/plugins/auth-backend/src/providers/github/provider.test.ts
+++ b/plugins/auth-backend/src/providers/github/provider.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/providers/github/provider.ts b/plugins/auth-backend/src/providers/github/provider.ts
index 2b0db9c2d9..62f2534601 100644
--- a/plugins/auth-backend/src/providers/github/provider.ts
+++ b/plugins/auth-backend/src/providers/github/provider.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/providers/gitlab/index.ts b/plugins/auth-backend/src/providers/gitlab/index.ts
index 0a516021cd..52ede48756 100644
--- a/plugins/auth-backend/src/providers/gitlab/index.ts
+++ b/plugins/auth-backend/src/providers/gitlab/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/providers/gitlab/provider.test.ts b/plugins/auth-backend/src/providers/gitlab/provider.test.ts
index 82588250cf..2277515cc9 100644
--- a/plugins/auth-backend/src/providers/gitlab/provider.test.ts
+++ b/plugins/auth-backend/src/providers/gitlab/provider.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -27,24 +27,29 @@ describe('GitlabAuthProvider', () => {
it('should transform to type OAuthResponse', async () => {
const tests = [
{
- result: {
- accessToken: '19xasczxcm9n7gacn9jdgm19me',
- fullProfile: {
- id: 'uid-123',
- username: 'jimmymarkum',
- provider: 'gitlab',
- displayName: 'Jimmy Markum',
- emails: [
- {
- value: 'jimmymarkum@gmail.com',
- },
- ],
- avatarUrl:
- 'https://a1cf74336522e87f135f-2f21ace9a6cf0052456644b80fa06d4f.ssl.cf2.rackcdn.com/images/characters_opt/p-mystic-river-sean-penn.jpg',
+ input: {
+ result: {
+ accessToken: '19xasczxcm9n7gacn9jdgm19me',
+ fullProfile: {
+ id: 'uid-123',
+ username: 'jimmymarkum',
+ provider: 'gitlab',
+ displayName: 'Jimmy Markum',
+ emails: [
+ {
+ value: 'jimmymarkum@gmail.com',
+ },
+ ],
+ avatarUrl:
+ 'https://a1cf74336522e87f135f-2f21ace9a6cf0052456644b80fa06d4f.ssl.cf2.rackcdn.com/images/characters_opt/p-mystic-river-sean-penn.jpg',
+ },
+ params: {
+ scope: 'user_read write_repository',
+ expires_in: 100,
+ },
},
- params: {
- scope: 'user_read write_repository',
- expires_in: 100,
+ privateInfo: {
+ refreshToken: 'gacn9jdgm19me19xasczxcm9n7',
},
},
expect: {
@@ -65,23 +70,28 @@ describe('GitlabAuthProvider', () => {
},
},
{
- result: {
- accessToken:
- 'ajakljsdoiahoawxbrouawucmbawe.awkxjemaneasdxwe.sodijxqeqwexeqwxe',
- fullProfile: {
- id: 'ipd12039',
- username: 'daveboyle',
- provider: 'gitlab',
- displayName: 'Dave Boyle',
- emails: [
- {
- value: 'daveboyle@gitlab.org',
- },
- ],
+ input: {
+ result: {
+ accessToken:
+ 'ajakljsdoiahoawxbrouawucmbawe.awkxjemaneasdxwe.sodijxqeqwexeqwxe',
+ fullProfile: {
+ id: 'ipd12039',
+ username: 'daveboyle',
+ provider: 'gitlab',
+ displayName: 'Dave Boyle',
+ emails: [
+ {
+ value: 'daveboyle@gitlab.org',
+ },
+ ],
+ },
+ params: {
+ scope: 'read_repository',
+ expires_in: 200,
+ },
},
- params: {
- scope: 'read_repository',
- expires_in: 200,
+ privateInfo: {
+ refreshToken: 'gacn96f3y6y5jdgm19mec348nqrty719xasczf356yxcm9n7',
},
},
expect: {
@@ -109,7 +119,7 @@ describe('GitlabAuthProvider', () => {
baseUrl: 'mock',
});
for (const test of tests) {
- mockFrameHandler.mockResolvedValueOnce({ result: test.result });
+ mockFrameHandler.mockResolvedValueOnce(test.input);
const { response } = await provider.handler({} as any);
expect(response).toEqual(test.expect);
}
diff --git a/plugins/auth-backend/src/providers/gitlab/provider.ts b/plugins/auth-backend/src/providers/gitlab/provider.ts
index b8de398af5..606d2c76a6 100644
--- a/plugins/auth-backend/src/providers/gitlab/provider.ts
+++ b/plugins/auth-backend/src/providers/gitlab/provider.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,8 +17,10 @@
import express from 'express';
import { Strategy as GitlabStrategy } from 'passport-gitlab2';
import {
- executeFrameHandlerStrategy,
executeRedirectStrategy,
+ executeFrameHandlerStrategy,
+ executeRefreshTokenStrategy,
+ executeFetchUserProfileStrategy,
makeProfileInfo,
PassportDoneCallback,
} from '../../lib/passport';
@@ -30,14 +32,40 @@ import {
OAuthResponse,
OAuthEnvironmentHandler,
OAuthStartRequest,
+ OAuthRefreshRequest,
encodeState,
OAuthResult,
} from '../../lib/oauth';
+type FullProfile = OAuthResult['fullProfile'] & {
+ avatarUrl?: string;
+};
+
+type PrivateInfo = {
+ refreshToken: string;
+};
+
export type GitlabAuthProviderOptions = OAuthProviderOptions & {
baseUrl: string;
};
+function transformProfile(fullProfile: FullProfile) {
+ const profile = makeProfileInfo({
+ ...fullProfile,
+ photos: [
+ ...(fullProfile.photos ?? []),
+ ...(fullProfile.avatarUrl ? [{ value: fullProfile.avatarUrl }] : []),
+ ],
+ });
+
+ let id = fullProfile.id;
+ if (profile.email) {
+ id = profile.email.split('@')[0];
+ }
+
+ return { id, profile };
+}
+
export class GitlabAuthProvider implements OAuthHandlers {
private readonly _strategy: GitlabStrategy;
@@ -51,12 +79,18 @@ export class GitlabAuthProvider implements OAuthHandlers {
},
(
accessToken: any,
- _refreshToken: any,
+ refreshToken: any,
params: any,
fullProfile: any,
- done: PassportDoneCallback,
+ done: PassportDoneCallback,
) => {
- done(undefined, { fullProfile, params, accessToken });
+ done(
+ undefined,
+ { fullProfile, params, accessToken },
+ {
+ refreshToken,
+ },
+ );
},
);
}
@@ -68,33 +102,16 @@ export class GitlabAuthProvider implements OAuthHandlers {
});
}
- async handler(req: express.Request): Promise<{ response: OAuthResponse }> {
- const { result } = await executeFrameHandlerStrategy(
- req,
- this._strategy,
- );
+ async handler(
+ req: express.Request,
+ ): Promise<{ response: OAuthResponse; refreshToken: string }> {
+ const { result, privateInfo } = await executeFrameHandlerStrategy<
+ OAuthResult,
+ PrivateInfo
+ >(req, this._strategy);
const { accessToken, params } = result;
- const fullProfile = result.fullProfile as OAuthResult['fullProfile'] & {
- avatarUrl?: string;
- };
- const profile = makeProfileInfo(
- {
- ...fullProfile,
- photos: [
- ...(fullProfile.photos ?? []),
- ...(fullProfile.avatarUrl ? [{ value: fullProfile.avatarUrl }] : []),
- ],
- },
- params.id_token,
- );
-
- // gitlab provides an id numeric value (123)
- // as a fallback
- let id = fullProfile.id;
- if (profile.email) {
- id = profile.email.split('@')[0];
- }
+ const { id, profile } = transformProfile(result.fullProfile);
return {
response: {
@@ -109,6 +126,39 @@ export class GitlabAuthProvider implements OAuthHandlers {
id,
},
},
+ refreshToken: privateInfo.refreshToken,
+ };
+ }
+
+ async refresh(req: OAuthRefreshRequest): Promise {
+ const {
+ accessToken,
+ refreshToken: newRefreshToken,
+ params,
+ } = await executeRefreshTokenStrategy(
+ this._strategy,
+ req.refreshToken,
+ req.scope,
+ );
+
+ const fullProfile = await executeFetchUserProfileStrategy(
+ this._strategy,
+ accessToken,
+ );
+ const { id, profile } = transformProfile(fullProfile);
+
+ return {
+ profile,
+ providerInfo: {
+ accessToken,
+ refreshToken: newRefreshToken, // GitLab expires the old refresh token when used
+ idToken: params.id_token,
+ expiresInSeconds: params.expires_in,
+ scope: params.scope,
+ },
+ backstageIdentity: {
+ id,
+ },
};
}
}
@@ -134,7 +184,7 @@ export const createGitlabProvider = (
});
return OAuthAdapter.fromConfig(globalConfig, provider, {
- disableRefresh: true,
+ disableRefresh: false,
providerId,
tokenIssuer,
});
diff --git a/plugins/auth-backend/src/providers/gitlab/types.d.ts b/plugins/auth-backend/src/providers/gitlab/types.d.ts
index 8cd7373c52..96535294ee 100644
--- a/plugins/auth-backend/src/providers/gitlab/types.d.ts
+++ b/plugins/auth-backend/src/providers/gitlab/types.d.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/providers/google/index.ts b/plugins/auth-backend/src/providers/google/index.ts
index 2615a2d8e5..209484ad04 100644
--- a/plugins/auth-backend/src/providers/google/index.ts
+++ b/plugins/auth-backend/src/providers/google/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,5 +14,5 @@
* limitations under the License.
*/
-export { createGoogleProvider } from './provider';
+export { createGoogleProvider, googleEmailSignInResolver } from './provider';
export type { GoogleProviderOptions } from './provider';
diff --git a/plugins/auth-backend/src/providers/google/provider.test.ts b/plugins/auth-backend/src/providers/google/provider.test.ts
new file mode 100644
index 0000000000..68279dc2dd
--- /dev/null
+++ b/plugins/auth-backend/src/providers/google/provider.test.ts
@@ -0,0 +1,91 @@
+/*
+ * Copyright 2020 The Backstage Authors
+ *
+ * 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.
+ */
+
+import { GoogleAuthProvider } from './provider';
+import * as helpers from '../../lib/passport/PassportStrategyHelper';
+import { OAuthResult } from '../../lib/oauth';
+import { getVoidLogger } from '@backstage/backend-common';
+import { TokenIssuer } from '../../identity/types';
+import { CatalogIdentityClient } from '../../lib/catalog';
+
+const mockFrameHandler = (jest.spyOn(
+ helpers,
+ 'executeFrameHandlerStrategy',
+) as unknown) as jest.MockedFunction<
+ () => Promise<{ result: OAuthResult; privateInfo: any }>
+>;
+
+describe('createGoogleProvider', () => {
+ it('should auth', async () => {
+ const tokenIssuer = {
+ issueToken: jest.fn(),
+ listPublicKeys: jest.fn(),
+ };
+ const catalogIdentityClient = {
+ findUser: jest.fn(),
+ };
+
+ const provider = new GoogleAuthProvider({
+ logger: getVoidLogger(),
+ catalogIdentityClient: (catalogIdentityClient as unknown) as CatalogIdentityClient,
+ tokenIssuer: (tokenIssuer as unknown) as TokenIssuer,
+ authHandler: async ({ fullProfile }) => ({
+ profile: {
+ email: fullProfile.emails![0]!.value,
+ displayName: fullProfile.displayName,
+ picture: 'http://google.com/lols',
+ },
+ }),
+ clientId: 'mock',
+ clientSecret: 'mock',
+ callbackUrl: 'mock',
+ });
+
+ mockFrameHandler.mockResolvedValueOnce({
+ result: {
+ fullProfile: {
+ emails: [{ value: 'conrad@example.com' }],
+ displayName: 'Conrad',
+ id: 'conrad',
+ provider: 'google',
+ },
+ params: {
+ id_token: 'idToken',
+ scope: 'scope',
+ expires_in: 123,
+ },
+ accessToken: 'accessToken',
+ },
+ privateInfo: {
+ refreshToken: 'wacka',
+ },
+ });
+ const { response } = await provider.handler({} as any);
+ expect(response).toEqual({
+ providerInfo: {
+ accessToken: 'accessToken',
+ expiresInSeconds: 123,
+ idToken: 'idToken',
+ scope: 'scope',
+ },
+ profile: {
+ email: 'conrad@example.com',
+ displayName: 'Conrad',
+ picture: 'http://google.com/lols',
+ },
+ });
+ });
+});
diff --git a/plugins/auth-backend/src/providers/google/provider.ts b/plugins/auth-backend/src/providers/google/provider.ts
index a714674447..e934a94c48 100644
--- a/plugins/auth-backend/src/providers/google/provider.ts
+++ b/plugins/auth-backend/src/providers/google/provider.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,8 +17,8 @@
import express from 'express';
import passport from 'passport';
import { Strategy as GoogleStrategy } from 'passport-google-oauth20';
-import { Logger } from 'winston';
-import { CatalogIdentityClient } from '../../lib/catalog';
+import { TokenIssuer } from '../../identity/types';
+import { CatalogIdentityClient, getEntityClaims } from '../../lib/catalog';
import {
encodeState,
OAuthAdapter,
@@ -27,8 +27,8 @@ import {
OAuthProviderOptions,
OAuthRefreshRequest,
OAuthResponse,
- OAuthStartRequest,
OAuthResult,
+ OAuthStartRequest,
} from '../../lib/oauth';
import {
executeFetchUserProfileStrategy,
@@ -38,30 +38,40 @@ import {
makeProfileInfo,
PassportDoneCallback,
} from '../../lib/passport';
-import { AuthProviderFactory, RedirectInfo } from '../types';
-import { TokenIssuer } from '../../identity/types';
+import {
+ AuthProviderFactory,
+ AuthHandler,
+ RedirectInfo,
+ SignInResolver,
+} from '../types';
+import { Logger } from 'winston';
type PrivateInfo = {
refreshToken: string;
};
type Options = OAuthProviderOptions & {
- logger: Logger;
- identityClient: CatalogIdentityClient;
+ signInResolver?: SignInResolver;
+ authHandler: AuthHandler;
tokenIssuer: TokenIssuer;
+ catalogIdentityClient: CatalogIdentityClient;
+ logger: Logger;
};
export class GoogleAuthProvider implements OAuthHandlers {
private readonly _strategy: GoogleStrategy;
- private readonly logger: Logger;
- private readonly identityClient: CatalogIdentityClient;
+ private readonly signInResolver?: SignInResolver;
+ private readonly authHandler: AuthHandler;
private readonly tokenIssuer: TokenIssuer;
+ private readonly catalogIdentityClient: CatalogIdentityClient;
+ private readonly logger: Logger;
constructor(options: Options) {
- this.logger = options.logger;
- this.identityClient = options.identityClient;
+ this.signInResolver = options.signInResolver;
+ this.authHandler = options.authHandler;
this.tokenIssuer = options.tokenIssuer;
- // TODO: throw error if env variables not set?
+ this.catalogIdentityClient = options.catalogIdentityClient;
+ this.logger = options.logger;
this._strategy = new GoogleStrategy(
{
clientID: options.clientId,
@@ -111,18 +121,8 @@ export class GoogleAuthProvider implements OAuthHandlers {
PrivateInfo
>(req, this._strategy);
- const profile = makeProfileInfo(result.fullProfile, result.params.id_token);
-
return {
- response: await this.populateIdentity({
- providerInfo: {
- idToken: result.params.id_token,
- accessToken: result.accessToken,
- scope: result.params.scope,
- expiresInSeconds: result.params.expires_in,
- },
- profile,
- }),
+ response: await this.handleResult(result),
refreshToken: privateInfo.refreshToken,
};
}
@@ -133,89 +133,170 @@ export class GoogleAuthProvider implements OAuthHandlers {
req.refreshToken,
req.scope,
);
-
const fullProfile = await executeFetchUserProfileStrategy(
this._strategy,
accessToken,
);
- const profile = makeProfileInfo(fullProfile, params.id_token);
-
- return this.populateIdentity({
- providerInfo: {
- accessToken,
- idToken: params.id_token,
- expiresInSeconds: params.expires_in,
- scope: params.scope,
- },
- profile,
+ return this.handleResult({
+ fullProfile,
+ params,
+ accessToken,
+ refreshToken: req.refreshToken,
});
}
- private async populateIdentity(
- response: OAuthResponse,
- ): Promise {
- const { profile } = response;
+ private async handleResult(result: OAuthResult) {
+ const { profile } = await this.authHandler(result);
- if (!profile.email) {
- throw new Error('Google profile contained no email');
- }
+ const response: OAuthResponse = {
+ providerInfo: {
+ idToken: result.params.id_token,
+ accessToken: result.accessToken,
+ scope: result.params.scope,
+ expiresInSeconds: result.params.expires_in,
+ },
+ profile,
+ };
- try {
- const token = await this.tokenIssuer.issueToken({
- claims: { sub: 'backstage.io/auth-backend' },
- });
- const user = await this.identityClient.findUser(
+ if (this.signInResolver) {
+ response.backstageIdentity = await this.signInResolver(
{
- annotations: {
- 'google.com/email': profile.email,
- },
+ result,
+ profile,
},
- { token },
- );
-
- return {
- ...response,
- backstageIdentity: {
- id: user.metadata.name,
+ {
+ tokenIssuer: this.tokenIssuer,
+ catalogIdentityClient: this.catalogIdentityClient,
+ logger: this.logger,
},
- };
- } catch (error) {
- this.logger.warn(
- `Failed to look up user, ${error}, falling back to allowing login based on email pattern, this will probably break in the future`,
);
- return {
- ...response,
- backstageIdentity: { id: profile.email.split('@')[0] },
- };
}
+
+ return response;
}
}
-export type GoogleProviderOptions = {};
+export const googleEmailSignInResolver: SignInResolver = async (
+ info,
+ ctx,
+) => {
+ const { profile } = info;
+
+ if (!profile.email) {
+ throw new Error('Google profile contained no email');
+ }
+
+ const entity = await ctx.catalogIdentityClient.findUser({
+ annotations: {
+ 'google.com/email': profile.email,
+ },
+ });
+
+ const claims = getEntityClaims(entity);
+ const token = await ctx.tokenIssuer.issueToken({ claims });
+
+ return { id: entity.metadata.name, entity, token };
+};
+
+const googleDefaultSignInResolver: SignInResolver = async (
+ info,
+ ctx,
+) => {
+ const { profile } = info;
+
+ if (!profile.email) {
+ throw new Error('Google profile contained no email');
+ }
+
+ let userId: string;
+ try {
+ const entity = await ctx.catalogIdentityClient.findUser({
+ annotations: {
+ 'google.com/email': profile.email,
+ },
+ });
+ userId = entity.metadata.name;
+ } catch (error) {
+ ctx.logger.warn(
+ `Failed to look up user, ${error}, falling back to allowing login based on email pattern, this will probably break in the future`,
+ );
+ userId = profile.email.split('@')[0];
+ }
+
+ const token = await ctx.tokenIssuer.issueToken({
+ claims: { sub: userId, ent: [`user:default/${userId}`] },
+ });
+
+ return { id: userId, token };
+};
+
+export type GoogleProviderOptions = {
+ /**
+ * The profile transformation function used to verify and convert the auth response
+ * into the profile that will be presented to the user.
+ */
+ authHandler?: AuthHandler;
+
+ /**
+ * Configure sign-in for this provider, without it the provider can not be used to sign users in.
+ */
+ /**
+ * Maps an auth result to a Backstage identity for the user.
+ *
+ * Set to `'email'` to use the default email-based sign in resolver, which will search
+ * the catalog for a single user entity that has a matching `google.com/email` annotation.
+ */
+ signIn?: {
+ resolver?: SignInResolver;
+ };
+};
export const createGoogleProvider = (
- _options?: GoogleProviderOptions,
+ options?: GoogleProviderOptions,
): AuthProviderFactory => {
return ({
providerId,
globalConfig,
config,
- logger,
tokenIssuer,
catalogApi,
+ logger,
}) =>
OAuthEnvironmentHandler.mapConfig(config, envConfig => {
const clientId = envConfig.getString('clientId');
const clientSecret = envConfig.getString('clientSecret');
const callbackUrl = `${globalConfig.baseUrl}/${providerId}/handler/frame`;
+ const catalogIdentityClient = new CatalogIdentityClient({
+ catalogApi,
+ tokenIssuer,
+ });
+
+ const authHandler: AuthHandler = options?.authHandler
+ ? options.authHandler
+ : async ({ fullProfile, params }) => ({
+ profile: makeProfileInfo(fullProfile, params.id_token),
+ });
+
+ const signInResolverFn =
+ options?.signIn?.resolver ?? googleDefaultSignInResolver;
+
+ const signInResolver: SignInResolver = info =>
+ signInResolverFn(info, {
+ catalogIdentityClient,
+ tokenIssuer,
+ logger,
+ });
+
const provider = new GoogleAuthProvider({
clientId,
clientSecret,
callbackUrl,
- logger,
+ signInResolver,
+ authHandler,
tokenIssuer,
- identityClient: new CatalogIdentityClient({ catalogApi }),
+ catalogIdentityClient,
+ logger,
});
return OAuthAdapter.fromConfig(globalConfig, provider, {
diff --git a/plugins/auth-backend/src/providers/index.ts b/plugins/auth-backend/src/providers/index.ts
index 3f3d16f28f..940ceadffe 100644
--- a/plugins/auth-backend/src/providers/index.ts
+++ b/plugins/auth-backend/src/providers/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,6 +14,7 @@
* limitations under the License.
*/
+export * from './google';
export { factories as defaultAuthProviderFactories } from './factories';
// Export the minimal interface required for implementing a
diff --git a/plugins/auth-backend/src/providers/microsoft/index.ts b/plugins/auth-backend/src/providers/microsoft/index.ts
index f6c2ce40cd..374e451ae9 100644
--- a/plugins/auth-backend/src/providers/microsoft/index.ts
+++ b/plugins/auth-backend/src/providers/microsoft/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/providers/microsoft/provider.ts b/plugins/auth-backend/src/providers/microsoft/provider.ts
index e6157c1a83..86c7d3a3a4 100644
--- a/plugins/auth-backend/src/providers/microsoft/provider.ts
+++ b/plugins/auth-backend/src/providers/microsoft/provider.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/providers/oauth2/index.ts b/plugins/auth-backend/src/providers/oauth2/index.ts
index 97848f4319..d68208a148 100644
--- a/plugins/auth-backend/src/providers/oauth2/index.ts
+++ b/plugins/auth-backend/src/providers/oauth2/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/providers/oauth2/provider.ts b/plugins/auth-backend/src/providers/oauth2/provider.ts
index fb347b836c..f174543a63 100644
--- a/plugins/auth-backend/src/providers/oauth2/provider.ts
+++ b/plugins/auth-backend/src/providers/oauth2/provider.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/providers/oidc/index.ts b/plugins/auth-backend/src/providers/oidc/index.ts
index 63c530acfc..8c755cd501 100644
--- a/plugins/auth-backend/src/providers/oidc/index.ts
+++ b/plugins/auth-backend/src/providers/oidc/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/providers/oidc/provider.test.ts b/plugins/auth-backend/src/providers/oidc/provider.test.ts
index f44c32dc4c..8ad0adb34e 100644
--- a/plugins/auth-backend/src/providers/oidc/provider.test.ts
+++ b/plugins/auth-backend/src/providers/oidc/provider.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/providers/oidc/provider.ts b/plugins/auth-backend/src/providers/oidc/provider.ts
index c7df8c1e7e..7a13d04a93 100644
--- a/plugins/auth-backend/src/providers/oidc/provider.ts
+++ b/plugins/auth-backend/src/providers/oidc/provider.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/providers/okta/index.ts b/plugins/auth-backend/src/providers/okta/index.ts
index 47a2549587..37abef181a 100644
--- a/plugins/auth-backend/src/providers/okta/index.ts
+++ b/plugins/auth-backend/src/providers/okta/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/providers/okta/provider.ts b/plugins/auth-backend/src/providers/okta/provider.ts
index 6320230e67..9709b549d7 100644
--- a/plugins/auth-backend/src/providers/okta/provider.ts
+++ b/plugins/auth-backend/src/providers/okta/provider.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/providers/okta/types.d.ts b/plugins/auth-backend/src/providers/okta/types.d.ts
index 6b49d99817..ab83bf89ec 100644
--- a/plugins/auth-backend/src/providers/okta/types.d.ts
+++ b/plugins/auth-backend/src/providers/okta/types.d.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/providers/onelogin/index.ts b/plugins/auth-backend/src/providers/onelogin/index.ts
index 60fd2ffca4..63cf0be3cd 100644
--- a/plugins/auth-backend/src/providers/onelogin/index.ts
+++ b/plugins/auth-backend/src/providers/onelogin/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/providers/onelogin/provider.ts b/plugins/auth-backend/src/providers/onelogin/provider.ts
index 5cb0f84415..092d22189d 100644
--- a/plugins/auth-backend/src/providers/onelogin/provider.ts
+++ b/plugins/auth-backend/src/providers/onelogin/provider.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/providers/onelogin/types.d.ts b/plugins/auth-backend/src/providers/onelogin/types.d.ts
index d418f1bcd4..6df10388af 100644
--- a/plugins/auth-backend/src/providers/onelogin/types.d.ts
+++ b/plugins/auth-backend/src/providers/onelogin/types.d.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/providers/saml/index.ts b/plugins/auth-backend/src/providers/saml/index.ts
index 597b20ee8d..fa5d9d9a82 100644
--- a/plugins/auth-backend/src/providers/saml/index.ts
+++ b/plugins/auth-backend/src/providers/saml/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/providers/saml/provider.ts b/plugins/auth-backend/src/providers/saml/provider.ts
index 979380da9e..fa8519ea1a 100644
--- a/plugins/auth-backend/src/providers/saml/provider.ts
+++ b/plugins/auth-backend/src/providers/saml/provider.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/providers/types.ts b/plugins/auth-backend/src/providers/types.ts
index 700af3ebef..c838005c00 100644
--- a/plugins/auth-backend/src/providers/types.ts
+++ b/plugins/auth-backend/src/providers/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,10 +16,12 @@
import { PluginEndpointDiscovery } from '@backstage/backend-common';
import { CatalogApi } from '@backstage/catalog-client';
+import { Entity } from '@backstage/catalog-model';
import { Config } from '@backstage/config';
import express from 'express';
import { Logger } from 'winston';
import { TokenIssuer } from '../identity/types';
+import { CatalogIdentityClient } from '../lib/catalog';
export type AuthProviderConfig = {
/**
@@ -148,14 +150,30 @@ export type AuthResponse = {
export type BackstageIdentity = {
/**
- * The backstage user ID.
+ * An opaque ID that uniquely identifies the user within Backstage.
+ *
+ * This is typically the same as the user entity `metadata.name`.
*/
id: string;
/**
- * An ID token that can be used to authenticate the user within Backstage.
+ * This is deprecated, use `token` instead.
+ * @deprecated
*/
idToken?: string;
+
+ /**
+ * The token used to authenticate the user within Backstage.
+ */
+ token?: string;
+
+ /**
+ * The entity that the user is represented by within Backstage.
+ *
+ * This entity may or may not exist within the Catalog, and it can be used
+ * to read and store additional metadata about the user.
+ */
+ entity?: Entity;
};
/**
@@ -179,3 +197,38 @@ export type ProfileInfo = {
*/
picture?: string;
};
+
+export type SignInInfo = {
+ /**
+ * The simple profile passed down for use in the frontend.
+ */
+ profile: ProfileInfo;
+
+ /**
+ * The authentication result that was received from the authentication provider.
+ */
+ result: AuthResult;
+};
+
+export type SignInResolver = (
+ info: SignInInfo,
+ context: {
+ tokenIssuer: TokenIssuer;
+ catalogIdentityClient: CatalogIdentityClient;
+ logger: Logger;
+ },
+) => Promise;
+
+export type AuthHandlerResult = { profile: ProfileInfo };
+
+/**
+ * The AuthHandler function is called every time the user authenticates using the provider.
+ *
+ * The handler should return a profile that represents the session for the user in the frontend.
+ *
+ * Throwing an error in the function will cause the authentication to fail, making it
+ * possible to use this function as a way to limit access to a certain group of users.
+ */
+export type AuthHandler = (
+ input: AuthResult,
+) => Promise;
diff --git a/plugins/auth-backend/src/run.ts b/plugins/auth-backend/src/run.ts
index 679f8ded2e..7732bbd41a 100644
--- a/plugins/auth-backend/src/run.ts
+++ b/plugins/auth-backend/src/run.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/service/router.ts b/plugins/auth-backend/src/service/router.ts
index afc58ecbf3..fa551f6ec2 100644
--- a/plugins/auth-backend/src/service/router.ts
+++ b/plugins/auth-backend/src/service/router.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/service/standaloneServer.ts b/plugins/auth-backend/src/service/standaloneServer.ts
index 15a3347d5f..15ffe1d053 100644
--- a/plugins/auth-backend/src/service/standaloneServer.ts
+++ b/plugins/auth-backend/src/service/standaloneServer.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/auth-backend/src/setupTests.ts b/plugins/auth-backend/src/setupTests.ts
index ba33cf996b..d3232290a7 100644
--- a/plugins/auth-backend/src/setupTests.ts
+++ b/plugins/auth-backend/src/setupTests.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/badges-backend/CHANGELOG.md b/plugins/badges-backend/CHANGELOG.md
index 9ceba76406..6ba2512b86 100644
--- a/plugins/badges-backend/CHANGELOG.md
+++ b/plugins/badges-backend/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-badges-backend
+## 0.1.7
+
+### Patch Changes
+
+- 3108ff7bf: Make `yarn dev` respect the `PLUGIN_PORT` environment variable.
+- Updated dependencies
+ - @backstage/backend-common@0.8.3
+ - @backstage/catalog-model@0.8.3
+
## 0.1.6
### Patch Changes
diff --git a/plugins/badges-backend/api-report.md b/plugins/badges-backend/api-report.md
new file mode 100644
index 0000000000..1523d685b4
--- /dev/null
+++ b/plugins/badges-backend/api-report.md
@@ -0,0 +1,113 @@
+## API Report File for "@backstage/plugin-badges-backend"
+
+> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
+
+```ts
+
+import { CatalogApi } from '@backstage/catalog-client';
+import { Config } from '@backstage/config';
+import { Entity } from '@backstage/catalog-model';
+import express from 'express';
+import { PluginEndpointDiscovery } from '@backstage/backend-common';
+
+// @public (undocumented)
+export interface Badge {
+ color?: string;
+ description?: string;
+ kind?: 'entity';
+ label: string;
+ labelColor?: string;
+ link?: string;
+ message: string;
+ style?: BadgeStyle;
+}
+
+// @public (undocumented)
+export const BADGE_STYLES: readonly ["plastic", "flat", "flat-square", "for-the-badge", "social"];
+
+// @public (undocumented)
+export type BadgeBuilder = {
+ getBadges(): Promise;
+ createBadgeJson(options: BadgeOptions): Promise;
+ createBadgeSvg(options: BadgeOptions): Promise;
+};
+
+// @public (undocumented)
+export interface BadgeContext {
+ // (undocumented)
+ badgeUrl: string;
+ // (undocumented)
+ config: Config;
+ // (undocumented)
+ entity?: Entity;
+}
+
+// @public (undocumented)
+export interface BadgeFactories {
+ // (undocumented)
+ [id: string]: BadgeFactory;
+}
+
+// @public (undocumented)
+export interface BadgeFactory {
+ // (undocumented)
+ createBadge(context: BadgeContext): Badge;
+}
+
+// @public (undocumented)
+export type BadgeInfo = {
+ id: string;
+};
+
+// @public (undocumented)
+export type BadgeOptions = {
+ badgeInfo: BadgeInfo;
+ context: BadgeContext;
+};
+
+// @public (undocumented)
+export type BadgeSpec = {
+ id: string;
+ badge: Badge;
+ url: string;
+ markdown: string;
+};
+
+// @public (undocumented)
+export type BadgeStyle = typeof BADGE_STYLES[number];
+
+// @public (undocumented)
+export const createDefaultBadgeFactories: () => BadgeFactories;
+
+// @public (undocumented)
+export function createRouter(options: RouterOptions): Promise;
+
+// @public (undocumented)
+export class DefaultBadgeBuilder implements BadgeBuilder {
+ constructor(factories: BadgeFactories);
+ // (undocumented)
+ createBadgeJson(options: BadgeOptions): Promise;
+ // (undocumented)
+ createBadgeSvg(options: BadgeOptions): Promise;
+ // (undocumented)
+ getBadges(): Promise;
+ }
+
+// @public (undocumented)
+export interface RouterOptions {
+ // (undocumented)
+ badgeBuilder?: BadgeBuilder;
+ // (undocumented)
+ badgeFactories?: BadgeFactories;
+ // (undocumented)
+ catalog?: CatalogApi;
+ // (undocumented)
+ config: Config;
+ // (undocumented)
+ discovery: PluginEndpointDiscovery;
+}
+
+
+// (No @packageDocumentation comment for this package)
+
+```
diff --git a/plugins/badges-backend/package.json b/plugins/badges-backend/package.json
index 28adf1399b..99bdb25a04 100644
--- a/plugins/badges-backend/package.json
+++ b/plugins/badges-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-badges-backend",
- "version": "0.1.6",
+ "version": "0.1.7",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -30,9 +30,9 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.8.2",
+ "@backstage/backend-common": "^0.8.3",
"@backstage/catalog-client": "^0.3.13",
- "@backstage/catalog-model": "^0.8.2",
+ "@backstage/catalog-model": "^0.8.3",
"@backstage/config": "^0.1.5",
"@backstage/errors": "^0.1.1",
"@types/express": "^4.17.6",
@@ -45,7 +45,7 @@
"yn": "^4.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.7.0",
+ "@backstage/cli": "^0.7.1",
"@types/supertest": "^2.0.8",
"supertest": "^6.1.3"
},
diff --git a/plugins/badges-backend/src/badges.test.ts b/plugins/badges-backend/src/badges.test.ts
index 1d5e57141d..27dd812712 100644
--- a/plugins/badges-backend/src/badges.test.ts
+++ b/plugins/badges-backend/src/badges.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/badges-backend/src/badges.ts b/plugins/badges-backend/src/badges.ts
index ccd5f55855..9e4087e334 100644
--- a/plugins/badges-backend/src/badges.ts
+++ b/plugins/badges-backend/src/badges.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/badges-backend/src/index.ts b/plugins/badges-backend/src/index.ts
index 240bce56af..d297627a34 100644
--- a/plugins/badges-backend/src/index.ts
+++ b/plugins/badges-backend/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/badges-backend/src/lib/BadgeBuilder/DefaultBadgeBuilder.test.ts b/plugins/badges-backend/src/lib/BadgeBuilder/DefaultBadgeBuilder.test.ts
index 9eceb49e50..e26d4a406b 100644
--- a/plugins/badges-backend/src/lib/BadgeBuilder/DefaultBadgeBuilder.test.ts
+++ b/plugins/badges-backend/src/lib/BadgeBuilder/DefaultBadgeBuilder.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/badges-backend/src/lib/BadgeBuilder/DefaultBadgeBuilder.ts b/plugins/badges-backend/src/lib/BadgeBuilder/DefaultBadgeBuilder.ts
index 42823ebd09..7f9d2580f9 100644
--- a/plugins/badges-backend/src/lib/BadgeBuilder/DefaultBadgeBuilder.ts
+++ b/plugins/badges-backend/src/lib/BadgeBuilder/DefaultBadgeBuilder.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/badges-backend/src/lib/BadgeBuilder/index.ts b/plugins/badges-backend/src/lib/BadgeBuilder/index.ts
index 4947db96e2..f9537f37d0 100644
--- a/plugins/badges-backend/src/lib/BadgeBuilder/index.ts
+++ b/plugins/badges-backend/src/lib/BadgeBuilder/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/badges-backend/src/lib/BadgeBuilder/types.ts b/plugins/badges-backend/src/lib/BadgeBuilder/types.ts
index fcd1cd4c5b..e2be17a7db 100644
--- a/plugins/badges-backend/src/lib/BadgeBuilder/types.ts
+++ b/plugins/badges-backend/src/lib/BadgeBuilder/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/badges-backend/src/lib/index.ts b/plugins/badges-backend/src/lib/index.ts
index 47cccec8f8..654d29b607 100644
--- a/plugins/badges-backend/src/lib/index.ts
+++ b/plugins/badges-backend/src/lib/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/badges-backend/src/run.ts b/plugins/badges-backend/src/run.ts
index a59d90d09a..addfdfd6d7 100644
--- a/plugins/badges-backend/src/run.ts
+++ b/plugins/badges-backend/src/run.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/badges-backend/src/service/router.test.ts b/plugins/badges-backend/src/service/router.test.ts
index 1a178bfef2..5d32e64f19 100644
--- a/plugins/badges-backend/src/service/router.test.ts
+++ b/plugins/badges-backend/src/service/router.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/badges-backend/src/service/router.ts b/plugins/badges-backend/src/service/router.ts
index 9be8cddb5d..196ddf36da 100644
--- a/plugins/badges-backend/src/service/router.ts
+++ b/plugins/badges-backend/src/service/router.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/badges-backend/src/service/standaloneServer.ts b/plugins/badges-backend/src/service/standaloneServer.ts
index c210efa249..0800585634 100644
--- a/plugins/badges-backend/src/service/standaloneServer.ts
+++ b/plugins/badges-backend/src/service/standaloneServer.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -40,9 +40,12 @@ export async function startStandaloneServer(
const router = await createRouter({ config, discovery });
- const service = createServiceBuilder(module)
- .enableCors({ origin: 'http://localhost:3000' })
+ let service = createServiceBuilder(module)
+ .setPort(options.port)
.addRouter('/badges', router);
+ if (options.enableCors) {
+ service = service.enableCors({ origin: 'http://localhost:3000' });
+ }
return await service.start().catch(err => {
logger.error(err);
diff --git a/plugins/badges-backend/src/setupTests.ts b/plugins/badges-backend/src/setupTests.ts
index 4e230aca20..a330613afb 100644
--- a/plugins/badges-backend/src/setupTests.ts
+++ b/plugins/badges-backend/src/setupTests.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/badges-backend/src/types.ts b/plugins/badges-backend/src/types.ts
index 69fc275f3f..4342a5af40 100644
--- a/plugins/badges-backend/src/types.ts
+++ b/plugins/badges-backend/src/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/badges/api-report.md b/plugins/badges/api-report.md
new file mode 100644
index 0000000000..dfe7cbdae8
--- /dev/null
+++ b/plugins/badges/api-report.md
@@ -0,0 +1,21 @@
+## API Report File for "@backstage/plugin-badges"
+
+> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
+
+```ts
+
+import { BackstagePlugin } from '@backstage/core';
+
+// @public (undocumented)
+export const badgesPlugin: BackstagePlugin<{}, {}>;
+
+// @public (undocumented)
+export const EntityBadgesDialog: ({ open, onClose }: {
+ open: boolean;
+ onClose?: (() => any) | undefined;
+}) => JSX.Element;
+
+
+// (No @packageDocumentation comment for this package)
+
+```
diff --git a/plugins/badges/dev/index.tsx b/plugins/badges/dev/index.tsx
index 1616edacb4..62726cfe9f 100644
--- a/plugins/badges/dev/index.tsx
+++ b/plugins/badges/dev/index.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/badges/package.json b/plugins/badges/package.json
index 99f78f3bd5..4de0681b34 100644
--- a/plugins/badges/package.json
+++ b/plugins/badges/package.json
@@ -34,7 +34,7 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.7.0",
+ "@backstage/cli": "^0.7.1",
"@backstage/dev-utils": "^0.1.17",
"@backstage/test-utils": "^0.1.13",
"@testing-library/jest-dom": "^5.10.1",
diff --git a/plugins/badges/src/api/BadgesClient.ts b/plugins/badges/src/api/BadgesClient.ts
index c015a59703..7dda4921c3 100644
--- a/plugins/badges/src/api/BadgesClient.ts
+++ b/plugins/badges/src/api/BadgesClient.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/badges/src/api/index.ts b/plugins/badges/src/api/index.ts
index 1c6a381916..abdfc77560 100644
--- a/plugins/badges/src/api/index.ts
+++ b/plugins/badges/src/api/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/badges/src/api/types.ts b/plugins/badges/src/api/types.ts
index 9765af2c93..7998fde928 100644
--- a/plugins/badges/src/api/types.ts
+++ b/plugins/badges/src/api/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/badges/src/components/EntityBadgesDialog.test.tsx b/plugins/badges/src/components/EntityBadgesDialog.test.tsx
index 62f2b55bc5..737f30197d 100644
--- a/plugins/badges/src/components/EntityBadgesDialog.test.tsx
+++ b/plugins/badges/src/components/EntityBadgesDialog.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/badges/src/components/EntityBadgesDialog.tsx b/plugins/badges/src/components/EntityBadgesDialog.tsx
index c0cbd6b15c..0e4a2e12f7 100644
--- a/plugins/badges/src/components/EntityBadgesDialog.tsx
+++ b/plugins/badges/src/components/EntityBadgesDialog.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/badges/src/index.ts b/plugins/badges/src/index.ts
index 4de5957426..52b4cede65 100644
--- a/plugins/badges/src/index.ts
+++ b/plugins/badges/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/badges/src/plugin.test.ts b/plugins/badges/src/plugin.test.ts
index eb5a1fc0ba..64d57d6bf6 100644
--- a/plugins/badges/src/plugin.test.ts
+++ b/plugins/badges/src/plugin.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/badges/src/plugin.ts b/plugins/badges/src/plugin.ts
index a247c93a4b..cc87054545 100644
--- a/plugins/badges/src/plugin.ts
+++ b/plugins/badges/src/plugin.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/badges/src/setupTests.ts b/plugins/badges/src/setupTests.ts
index 0cec5b395d..fc6dbd98f8 100644
--- a/plugins/badges/src/setupTests.ts
+++ b/plugins/badges/src/setupTests.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/bitrise/api-report.md b/plugins/bitrise/api-report.md
new file mode 100644
index 0000000000..c07178111d
--- /dev/null
+++ b/plugins/bitrise/api-report.md
@@ -0,0 +1,22 @@
+## API Report File for "@backstage/plugin-bitrise"
+
+> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
+
+```ts
+
+import { BackstagePlugin } from '@backstage/core';
+import { Entity } from '@backstage/catalog-model';
+
+// @public (undocumented)
+export const bitrisePlugin: BackstagePlugin<{}, {}>;
+
+// @public (undocumented)
+export const EntityBitriseContent: () => JSX.Element;
+
+// @public (undocumented)
+export const isBitriseAvailable: (entity: Entity) => boolean;
+
+
+// (No @packageDocumentation comment for this package)
+
+```
diff --git a/plugins/bitrise/dev/index.tsx b/plugins/bitrise/dev/index.tsx
index 8d328b3e7f..c8c7c7b6e5 100644
--- a/plugins/bitrise/dev/index.tsx
+++ b/plugins/bitrise/dev/index.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/bitrise/package.json b/plugins/bitrise/package.json
index ab43d75061..454630f723 100644
--- a/plugins/bitrise/package.json
+++ b/plugins/bitrise/package.json
@@ -37,7 +37,7 @@
"recharts": "^1.8.5"
},
"devDependencies": {
- "@backstage/cli": "^0.7.0",
+ "@backstage/cli": "^0.7.1",
"@backstage/dev-utils": "^0.1.17",
"@backstage/test-utils": "^0.1.13",
"@testing-library/jest-dom": "^5.10.1",
diff --git a/plugins/bitrise/src/api/bitriseApi.client.test.ts b/plugins/bitrise/src/api/bitriseApi.client.test.ts
index bc62491c34..e201dbce84 100644
--- a/plugins/bitrise/src/api/bitriseApi.client.test.ts
+++ b/plugins/bitrise/src/api/bitriseApi.client.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/bitrise/src/api/bitriseApi.client.ts b/plugins/bitrise/src/api/bitriseApi.client.ts
index e7af5259ab..487049ca79 100644
--- a/plugins/bitrise/src/api/bitriseApi.client.ts
+++ b/plugins/bitrise/src/api/bitriseApi.client.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/bitrise/src/api/bitriseApi.model.ts b/plugins/bitrise/src/api/bitriseApi.model.ts
index f9aabe6690..e0a2fe75dd 100644
--- a/plugins/bitrise/src/api/bitriseApi.model.ts
+++ b/plugins/bitrise/src/api/bitriseApi.model.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/bitrise/src/api/bitriseApi.ts b/plugins/bitrise/src/api/bitriseApi.ts
index 676085049f..23f9a1e785 100644
--- a/plugins/bitrise/src/api/bitriseApi.ts
+++ b/plugins/bitrise/src/api/bitriseApi.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/bitrise/src/components/BitriseArtifactsComponent/BitriseArtifactsComponent.test.tsx b/plugins/bitrise/src/components/BitriseArtifactsComponent/BitriseArtifactsComponent.test.tsx
index 7a56d438e6..ccb94a2582 100644
--- a/plugins/bitrise/src/components/BitriseArtifactsComponent/BitriseArtifactsComponent.test.tsx
+++ b/plugins/bitrise/src/components/BitriseArtifactsComponent/BitriseArtifactsComponent.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/bitrise/src/components/BitriseArtifactsComponent/BitriseArtifactsComponent.tsx b/plugins/bitrise/src/components/BitriseArtifactsComponent/BitriseArtifactsComponent.tsx
index 6ff1d50db5..4619645723 100644
--- a/plugins/bitrise/src/components/BitriseArtifactsComponent/BitriseArtifactsComponent.tsx
+++ b/plugins/bitrise/src/components/BitriseArtifactsComponent/BitriseArtifactsComponent.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/bitrise/src/components/BitriseArtifactsComponent/index.ts b/plugins/bitrise/src/components/BitriseArtifactsComponent/index.ts
index 24e48b9e65..abeee4eb9b 100644
--- a/plugins/bitrise/src/components/BitriseArtifactsComponent/index.ts
+++ b/plugins/bitrise/src/components/BitriseArtifactsComponent/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/bitrise/src/components/BitriseBuildDetailsDialog/BitriseBuildDetailsDialog.test.tsx b/plugins/bitrise/src/components/BitriseBuildDetailsDialog/BitriseBuildDetailsDialog.test.tsx
index 9f719ec84c..19e97628df 100644
--- a/plugins/bitrise/src/components/BitriseBuildDetailsDialog/BitriseBuildDetailsDialog.test.tsx
+++ b/plugins/bitrise/src/components/BitriseBuildDetailsDialog/BitriseBuildDetailsDialog.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/bitrise/src/components/BitriseBuildDetailsDialog/BitriseBuildDetailsDialog.tsx b/plugins/bitrise/src/components/BitriseBuildDetailsDialog/BitriseBuildDetailsDialog.tsx
index 8065567daf..b59aef7e68 100644
--- a/plugins/bitrise/src/components/BitriseBuildDetailsDialog/BitriseBuildDetailsDialog.tsx
+++ b/plugins/bitrise/src/components/BitriseBuildDetailsDialog/BitriseBuildDetailsDialog.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/bitrise/src/components/BitriseBuildDetailsDialog/index.ts b/plugins/bitrise/src/components/BitriseBuildDetailsDialog/index.ts
index 76dfc73408..8ef12635fb 100644
--- a/plugins/bitrise/src/components/BitriseBuildDetailsDialog/index.ts
+++ b/plugins/bitrise/src/components/BitriseBuildDetailsDialog/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/bitrise/src/components/BitriseBuildsComponent/BitriseBuildsComponent.test.tsx b/plugins/bitrise/src/components/BitriseBuildsComponent/BitriseBuildsComponent.test.tsx
index d6b9937e0c..08f0e833c5 100644
--- a/plugins/bitrise/src/components/BitriseBuildsComponent/BitriseBuildsComponent.test.tsx
+++ b/plugins/bitrise/src/components/BitriseBuildsComponent/BitriseBuildsComponent.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/bitrise/src/components/BitriseBuildsComponent/BitriseBuildsComponent.tsx b/plugins/bitrise/src/components/BitriseBuildsComponent/BitriseBuildsComponent.tsx
index eeabaf0b08..8b2fab9e2f 100644
--- a/plugins/bitrise/src/components/BitriseBuildsComponent/BitriseBuildsComponent.tsx
+++ b/plugins/bitrise/src/components/BitriseBuildsComponent/BitriseBuildsComponent.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/bitrise/src/components/BitriseBuildsComponent/index.ts b/plugins/bitrise/src/components/BitriseBuildsComponent/index.ts
index aaf235251d..15cfdda364 100644
--- a/plugins/bitrise/src/components/BitriseBuildsComponent/index.ts
+++ b/plugins/bitrise/src/components/BitriseBuildsComponent/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/bitrise/src/components/BitriseBuildsTableComponent/BitriseBuildsTableComponent.test.tsx b/plugins/bitrise/src/components/BitriseBuildsTableComponent/BitriseBuildsTableComponent.test.tsx
index b3b6dfdc81..3b2eab4ac5 100644
--- a/plugins/bitrise/src/components/BitriseBuildsTableComponent/BitriseBuildsTableComponent.test.tsx
+++ b/plugins/bitrise/src/components/BitriseBuildsTableComponent/BitriseBuildsTableComponent.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/bitrise/src/components/BitriseBuildsTableComponent/BitriseBuildsTableComponent.tsx b/plugins/bitrise/src/components/BitriseBuildsTableComponent/BitriseBuildsTableComponent.tsx
index 06a9ddd9f8..5ac37e44f3 100644
--- a/plugins/bitrise/src/components/BitriseBuildsTableComponent/BitriseBuildsTableComponent.tsx
+++ b/plugins/bitrise/src/components/BitriseBuildsTableComponent/BitriseBuildsTableComponent.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/bitrise/src/components/BitriseBuildsTableComponent/index.ts b/plugins/bitrise/src/components/BitriseBuildsTableComponent/index.ts
index 67e0c5796a..9fe6cde062 100644
--- a/plugins/bitrise/src/components/BitriseBuildsTableComponent/index.ts
+++ b/plugins/bitrise/src/components/BitriseBuildsTableComponent/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/bitrise/src/components/BitriseDownloadArtifactComponent/BitriseDownloadArtifactComponent.tsx b/plugins/bitrise/src/components/BitriseDownloadArtifactComponent/BitriseDownloadArtifactComponent.tsx
index 4a863b4483..4ecda73d04 100644
--- a/plugins/bitrise/src/components/BitriseDownloadArtifactComponent/BitriseDownloadArtifactComponent.tsx
+++ b/plugins/bitrise/src/components/BitriseDownloadArtifactComponent/BitriseDownloadArtifactComponent.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/bitrise/src/components/BitriseDownloadArtifactComponent/index.ts b/plugins/bitrise/src/components/BitriseDownloadArtifactComponent/index.ts
index d679e565c6..9c65087013 100644
--- a/plugins/bitrise/src/components/BitriseDownloadArtifactComponent/index.ts
+++ b/plugins/bitrise/src/components/BitriseDownloadArtifactComponent/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/bitrise/src/components/Select/Select.tsx b/plugins/bitrise/src/components/Select/Select.tsx
index 8c5ea4dbbd..2266b56ac4 100644
--- a/plugins/bitrise/src/components/Select/Select.tsx
+++ b/plugins/bitrise/src/components/Select/Select.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/bitrise/src/components/Select/index.ts b/plugins/bitrise/src/components/Select/index.ts
index 0b1b36cca1..e5cce66045 100644
--- a/plugins/bitrise/src/components/Select/index.ts
+++ b/plugins/bitrise/src/components/Select/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/bitrise/src/components/useBitriseArtifactDetails.ts b/plugins/bitrise/src/components/useBitriseArtifactDetails.ts
index 06c38cf8b1..8ffd45dd8e 100644
--- a/plugins/bitrise/src/components/useBitriseArtifactDetails.ts
+++ b/plugins/bitrise/src/components/useBitriseArtifactDetails.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/bitrise/src/components/useBitriseArtifacts.ts b/plugins/bitrise/src/components/useBitriseArtifacts.ts
index 0194f1752d..1b8c54328b 100644
--- a/plugins/bitrise/src/components/useBitriseArtifacts.ts
+++ b/plugins/bitrise/src/components/useBitriseArtifacts.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/bitrise/src/extensions.ts b/plugins/bitrise/src/extensions.ts
index 04e9ee2a09..98f73f44ba 100644
--- a/plugins/bitrise/src/extensions.ts
+++ b/plugins/bitrise/src/extensions.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/bitrise/src/hooks/useBitriseBuildWorkflows.ts b/plugins/bitrise/src/hooks/useBitriseBuildWorkflows.ts
index a1a7baf0a4..1e09f84679 100644
--- a/plugins/bitrise/src/hooks/useBitriseBuildWorkflows.ts
+++ b/plugins/bitrise/src/hooks/useBitriseBuildWorkflows.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/bitrise/src/hooks/useBitriseBuilds.ts b/plugins/bitrise/src/hooks/useBitriseBuilds.ts
index 96bd8628b3..7268ab84b9 100644
--- a/plugins/bitrise/src/hooks/useBitriseBuilds.ts
+++ b/plugins/bitrise/src/hooks/useBitriseBuilds.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/bitrise/src/index.ts b/plugins/bitrise/src/index.ts
index acec26825a..db98367e61 100644
--- a/plugins/bitrise/src/index.ts
+++ b/plugins/bitrise/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/bitrise/src/plugin.test.ts b/plugins/bitrise/src/plugin.test.ts
index f464a846d6..4e7dc9944c 100644
--- a/plugins/bitrise/src/plugin.test.ts
+++ b/plugins/bitrise/src/plugin.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/bitrise/src/plugin.ts b/plugins/bitrise/src/plugin.ts
index acd001d84b..96a36c8eb2 100644
--- a/plugins/bitrise/src/plugin.ts
+++ b/plugins/bitrise/src/plugin.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/bitrise/src/setupTests.ts b/plugins/bitrise/src/setupTests.ts
index 3ffe1424cc..427556fe26 100644
--- a/plugins/bitrise/src/setupTests.ts
+++ b/plugins/bitrise/src/setupTests.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend-module-msgraph/.eslintrc.js b/plugins/catalog-backend-module-msgraph/.eslintrc.js
new file mode 100644
index 0000000000..16a033dbc6
--- /dev/null
+++ b/plugins/catalog-backend-module-msgraph/.eslintrc.js
@@ -0,0 +1,3 @@
+module.exports = {
+ extends: [require.resolve('@backstage/cli/config/eslint.backend')],
+};
diff --git a/plugins/catalog-backend-module-msgraph/README.md b/plugins/catalog-backend-module-msgraph/README.md
new file mode 100644
index 0000000000..df141901aa
--- /dev/null
+++ b/plugins/catalog-backend-module-msgraph/README.md
@@ -0,0 +1,116 @@
+# Catalog Backend Module for Microsoft Graph
+
+This is an extension module to the `plugin-catalog-backend` plugin, providing a
+`MicrosoftGraphOrgReaderProcessor` that can be used to ingest organization data
+from the Microsoft Graph API. This processor is useful if you want to import
+users and groups from Azure Active Directory or Office 365.
+
+## Getting Started
+
+1. The processor is not installed by default, therefore you have to add a
+ dependency to `@backstage/plugin-catalog-backend-module-msgraph` to your
+ backend package.
+
+```bash
+# From your Backstage root directory
+cd packages/backend
+yarn add @backstage/plugin-catalog-backend-module-msgraph
+```
+
+2. The `MicrosoftGraphOrgReaderProcessor` is not registered by default, so you
+ have to register it in the catalog plugin:
+
+```typescript
+// packages/backend/src/plugins/catalog.ts
+builder.addProcessor(
+ MicrosoftGraphOrgReaderProcessor.fromConfig(config, {
+ logger,
+ }),
+);
+```
+
+3. Create or use an existing App registration in the [Microsoft Azure Portal](https://portal.azure.com/).
+ The App registration requires at least the API permissions `Group.Read.All`,
+ `GroupMember.Read.All`, `User.Read` and `User.Read.All` for Microsoft Graph
+ (if you still run into errors about insufficient privileges, add
+ `Team.ReadBasic.All` and `TeamMember.Read.All` too).
+
+4. Configure the processor:
+
+```yaml
+# app-config.yaml
+catalog:
+ processors:
+ microsoftGraphOrg:
+ providers:
+ - target: https://graph.microsoft.com/v1.0
+ authority: https://login.microsoftonline.com
+ # If you don't know you tenantId, you can use Microsoft Graph Explorer
+ # to query it
+ tenantId: ${MICROSOFT_GRAPH_TENANT_ID}
+ # Client Id and Secret can be created under Certificates & secrets in
+ # the App registration in the Microsoft Azure Portal.
+ clientId: ${MICROSOFT_GRAPH_CLIENT_ID}
+ clientSecret: ${MICROSOFT_GRAPH_CLIENT_SECRET_TOKEN}
+ # Optional filter for user, see Microsoft Graph API for the syntax
+ # See https://docs.microsoft.com/en-us/graph/api/resources/user?view=graph-rest-1.0#properties
+ # and for the syntax https://docs.microsoft.com/en-us/graph/query-parameters#filter-parameter
+ userFilter: accountEnabled eq true and userType eq 'member'
+ # Optional filter for group, see Microsoft Graph API for the syntax
+ # See https://docs.microsoft.com/en-us/graph/api/resources/group?view=graph-rest-1.0#properties
+ groupFilter: securityEnabled eq false and mailEnabled eq true and groupTypes/any(c:c+eq+'Unified')
+```
+
+5. Add a location that ingests from Microsoft Graph:
+
+```yaml
+# app-config.yaml
+catalog:
+ locations:
+ - type: microsoft-graph-org
+ target: https://graph.microsoft.com/v1.0
+ # If you catalog doesn't allow to import Group and User entities by
+ # default, allow them here
+ rules:
+ - allow: [Group, User]
+ …
+```
+
+## Customize the Processor
+
+In case you want to customize the ingested entities, the `MicrosoftGraphOrgReaderProcessor`
+allows to pass transformers for users, groups and the organization.
+
+1. Create a transformer:
+
+```ts
+export async function myGroupTransformer(
+ group: MicrosoftGraph.Group,
+ groupPhoto?: string,
+): Promise {
+ if (
+ ((group as unknown) as {
+ creationOptions: string[];
+ }).creationOptions.includes('ProvisionGroupHomepage')
+ ) {
+ return undefined;
+ }
+
+ // Transformations may change namespace, change entity naming pattern, fill
+ // profile with more or other details...
+
+ // Create the group entity on your own, or wrap the default transformer
+ return await defaultGroupTransformer(group, groupPhoto);
+}
+```
+
+2. Configure the processor with the transformer:
+
+```ts
+builder.addProcessor(
+ MicrosoftGraphOrgReaderProcessor.fromConfig(config, {
+ logger,
+ groupTransformer: myGroupTransformer,
+ }),
+);
+```
diff --git a/plugins/catalog-backend-module-msgraph/api-report.md b/plugins/catalog-backend-module-msgraph/api-report.md
new file mode 100644
index 0000000000..702601b469
--- /dev/null
+++ b/plugins/catalog-backend-module-msgraph/api-report.md
@@ -0,0 +1,121 @@
+## API Report File for "@backstage/plugin-catalog-backend-module-msgraph"
+
+> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
+
+```ts
+
+import { CatalogProcessor } from '@backstage/plugin-catalog-backend';
+import { CatalogProcessorEmit } from '@backstage/plugin-catalog-backend';
+import { Config } from '@backstage/config';
+import { GroupEntity } from '@backstage/catalog-model';
+import { LocationSpec } from '@backstage/catalog-model';
+import { Logger } from 'winston';
+import * as MicrosoftGraph from '@microsoft/microsoft-graph-types';
+import * as msal from '@azure/msal-node';
+import { UserEntity } from '@backstage/catalog-model';
+
+// @public (undocumented)
+export function defaultGroupTransformer(group: MicrosoftGraph.Group, groupPhoto?: string): Promise;
+
+// @public (undocumented)
+export function defaultOrganizationTransformer(organization: MicrosoftGraph.Organization): Promise;
+
+// @public (undocumented)
+export function defaultUserTransformer(user: MicrosoftGraph.User, userPhoto?: string): Promise;
+
+// @public (undocumented)
+export type GroupTransformer = (group: MicrosoftGraph.Group, groupPhoto?: string) => Promise;
+
+// @public
+export const MICROSOFT_GRAPH_GROUP_ID_ANNOTATION = "graph.microsoft.com/group-id";
+
+// @public
+export const MICROSOFT_GRAPH_TENANT_ID_ANNOTATION = "graph.microsoft.com/tenant-id";
+
+// @public
+export const MICROSOFT_GRAPH_USER_ID_ANNOTATION = "graph.microsoft.com/user-id";
+
+// @public (undocumented)
+export class MicrosoftGraphClient {
+ constructor(baseUrl: string, pca: msal.ConfidentialClientApplication);
+ // (undocumented)
+ static create(config: MicrosoftGraphProviderConfig): MicrosoftGraphClient;
+ // (undocumented)
+ getGroupMembers(groupId: string): AsyncIterable;
+ // (undocumented)
+ getGroupPhoto(groupId: string, sizeId?: string): Promise;
+ // (undocumented)
+ getGroupPhotoWithSizeLimit(groupId: string, maxSize: number): Promise;
+ // (undocumented)
+ getGroups(query?: ODataQuery): AsyncIterable;
+ // (undocumented)
+ getOrganization(tenantId: string): Promise;
+ // (undocumented)
+ getUserPhoto(userId: string, sizeId?: string): Promise;
+ // (undocumented)
+ getUserPhotoWithSizeLimit(userId: string, maxSize: number): Promise;
+ // (undocumented)
+ getUserProfile(userId: string): Promise;
+ // (undocumented)
+ getUsers(query?: ODataQuery): AsyncIterable;
+ // (undocumented)
+ requestApi(path: string, query?: ODataQuery): Promise;
+ // (undocumented)
+ requestCollection(path: string, query?: ODataQuery): AsyncIterable;
+ // (undocumented)
+ requestRaw(url: string): Promise;
+}
+
+// @public
+export class MicrosoftGraphOrgReaderProcessor implements CatalogProcessor {
+ constructor(options: {
+ providers: MicrosoftGraphProviderConfig[];
+ logger: Logger;
+ groupTransformer?: GroupTransformer;
+ });
+ // (undocumented)
+ static fromConfig(config: Config, options: {
+ logger: Logger;
+ groupTransformer?: GroupTransformer;
+ }): MicrosoftGraphOrgReaderProcessor;
+ // (undocumented)
+ readLocation(location: LocationSpec, _optional: boolean, emit: CatalogProcessorEmit): Promise;
+}
+
+// @public
+export type MicrosoftGraphProviderConfig = {
+ target: string;
+ authority?: string;
+ tenantId: string;
+ clientId: string;
+ clientSecret: string;
+ userFilter?: string;
+ groupFilter?: string;
+};
+
+// @public (undocumented)
+export function normalizeEntityName(name: string): string;
+
+// @public (undocumented)
+export type OrganizationTransformer = (organization: MicrosoftGraph.Organization) => Promise;
+
+// @public (undocumented)
+export function readMicrosoftGraphConfig(config: Config): MicrosoftGraphProviderConfig[];
+
+// @public (undocumented)
+export function readMicrosoftGraphOrg(client: MicrosoftGraphClient, tenantId: string, options?: {
+ userFilter?: string;
+ groupFilter?: string;
+ groupTransformer?: GroupTransformer;
+}): Promise<{
+ users: UserEntity[];
+ groups: GroupEntity[];
+}>;
+
+// @public (undocumented)
+export type UserTransformer = (user: MicrosoftGraph.User, userPhoto?: string) => Promise;
+
+
+// (No @packageDocumentation comment for this package)
+
+```
diff --git a/plugins/catalog-backend-module-msgraph/config.d.ts b/plugins/catalog-backend-module-msgraph/config.d.ts
new file mode 100644
index 0000000000..9f6a33ee32
--- /dev/null
+++ b/plugins/catalog-backend-module-msgraph/config.d.ts
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2020 The Backstage Authors
+ *
+ * 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.
+ */
+
+export interface Config {
+ /**
+ * Configuration options for the catalog plugin.
+ */
+ catalog?: {
+ /**
+ * List of processor-specific options and attributes
+ */
+ processors?: {
+ /**
+ * MicrosoftGraphOrgReaderProcessor configuration
+ */
+ microsoftGraphOrg?: {
+ /**
+ * The configuration parameters for each single Microsoft Graph provider.
+ */
+ providers: Array<{
+ /**
+ * The prefix of the target that this matches on, e.g.
+ * "https://graph.microsoft.com/v1.0", with no trailing slash.
+ */
+ target: string;
+ /**
+ * The auth authority used.
+ *
+ * Default value "https://login.microsoftonline.com"
+ */
+ authority?: string;
+ /**
+ * The tenant whose org data we are interested in.
+ */
+ tenantId: string;
+ /**
+ * The OAuth client ID to use for authenticating requests.
+ */
+ clientId: string;
+ /**
+ * The OAuth client secret to use for authenticating requests.
+ *
+ * @visibility secret
+ */
+ clientSecret: string;
+
+ // TODO: Consider not making these config options and pass them in the
+ // constructor instead. They are probably not environment specifc, so
+ // they could also be configured "in code".
+
+ /**
+ * The filter to apply to extract users.
+ *
+ * E.g. "accountEnabled eq true and userType eq 'member'"
+ */
+ userFilter?: string;
+ /**
+ * The filter to apply to extract groups.
+ *
+ * E.g. "securityEnabled eq false and mailEnabled eq true"
+ */
+ groupFilter?: string;
+ }>;
+ };
+ };
+ };
+}
diff --git a/plugins/catalog-backend-module-msgraph/package.json b/plugins/catalog-backend-module-msgraph/package.json
new file mode 100644
index 0000000000..83bb5dd802
--- /dev/null
+++ b/plugins/catalog-backend-module-msgraph/package.json
@@ -0,0 +1,53 @@
+{
+ "name": "@backstage/plugin-catalog-backend-module-msgraph",
+ "version": "0.1.0",
+ "main": "src/index.ts",
+ "types": "src/index.ts",
+ "license": "Apache-2.0",
+ "private": false,
+ "publishConfig": {
+ "access": "public",
+ "main": "dist/index.cjs.js",
+ "types": "dist/index.d.ts"
+ },
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/catalog-backend-module-msgraph"
+ },
+ "keywords": [
+ "backstage"
+ ],
+ "scripts": {
+ "build": "backstage-cli backend:build",
+ "lint": "backstage-cli lint",
+ "test": "backstage-cli test",
+ "prepack": "backstage-cli prepack",
+ "postpack": "backstage-cli postpack",
+ "clean": "backstage-cli clean"
+ },
+ "dependencies": {
+ "@azure/msal-node": "^1.1.0",
+ "@backstage/catalog-model": "^0.8.3",
+ "@backstage/config": "^0.1.5",
+ "@backstage/plugin-catalog-backend": "^0.10.2",
+ "@microsoft/microsoft-graph-types": "^1.25.0",
+ "cross-fetch": "^3.0.6",
+ "lodash": "^4.17.15",
+ "p-limit": "^3.0.2",
+ "winston": "^3.2.1",
+ "qs": "^6.9.4"
+ },
+ "devDependencies": {
+ "@backstage/cli": "^0.7.1",
+ "@backstage/test-utils": "^0.1.13",
+ "@types/lodash": "^4.14.151",
+ "msw": "^0.21.2"
+ },
+ "files": [
+ "dist",
+ "config.d.ts"
+ ],
+ "configSchema": "config.d.ts"
+}
diff --git a/plugins/catalog-backend-module-msgraph/src/index.ts b/plugins/catalog-backend-module-msgraph/src/index.ts
new file mode 100644
index 0000000000..e6654f3147
--- /dev/null
+++ b/plugins/catalog-backend-module-msgraph/src/index.ts
@@ -0,0 +1,18 @@
+/*
+ * Copyright 2020 The Backstage Authors
+ *
+ * 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.
+ */
+
+export * from './processors';
+export * from './microsoftGraph';
diff --git a/plugins/catalog-backend/src/ingestion/processors/microsoftGraph/client.test.ts b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/client.test.ts
similarity index 99%
rename from plugins/catalog-backend/src/ingestion/processors/microsoftGraph/client.test.ts
rename to plugins/catalog-backend-module-msgraph/src/microsoftGraph/client.test.ts
index 5ef82432bb..2b5e72033b 100644
--- a/plugins/catalog-backend/src/ingestion/processors/microsoftGraph/client.test.ts
+++ b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/client.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/microsoftGraph/client.ts b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/client.ts
similarity index 99%
rename from plugins/catalog-backend/src/ingestion/processors/microsoftGraph/client.ts
rename to plugins/catalog-backend-module-msgraph/src/microsoftGraph/client.ts
index 3dfc58e773..06932c5813 100644
--- a/plugins/catalog-backend/src/ingestion/processors/microsoftGraph/client.ts
+++ b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/client.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/microsoftGraph/config.test.ts b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/config.test.ts
similarity index 98%
rename from plugins/catalog-backend/src/ingestion/processors/microsoftGraph/config.test.ts
rename to plugins/catalog-backend-module-msgraph/src/microsoftGraph/config.test.ts
index 4671fd23ae..5164439448 100644
--- a/plugins/catalog-backend/src/ingestion/processors/microsoftGraph/config.test.ts
+++ b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/config.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/microsoftGraph/config.ts b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/config.ts
similarity index 98%
rename from plugins/catalog-backend/src/ingestion/processors/microsoftGraph/config.ts
rename to plugins/catalog-backend-module-msgraph/src/microsoftGraph/config.ts
index 72416a63ee..db8114eb39 100644
--- a/plugins/catalog-backend/src/ingestion/processors/microsoftGraph/config.ts
+++ b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/config.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/microsoftGraph/constants.ts b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/constants.ts
similarity index 96%
rename from plugins/catalog-backend/src/ingestion/processors/microsoftGraph/constants.ts
rename to plugins/catalog-backend-module-msgraph/src/microsoftGraph/constants.ts
index 6d34d0c159..e6abbebb0a 100644
--- a/plugins/catalog-backend/src/ingestion/processors/microsoftGraph/constants.ts
+++ b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/constants.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/migrationsv2/20201007201501_index_entity_search.js b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/helper.test.ts
similarity index 51%
rename from plugins/catalog-backend/migrationsv2/20201007201501_index_entity_search.js
rename to plugins/catalog-backend-module-msgraph/src/microsoftGraph/helper.test.ts
index 77bf0529eb..cb9c73d7b1 100644
--- a/plugins/catalog-backend/migrationsv2/20201007201501_index_entity_search.js
+++ b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/helper.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,24 +14,16 @@
* limitations under the License.
*/
-// @ts-check
+import { normalizeEntityName } from './helper';
-/**
- * @param {import('knex').Knex} knex
- */
-exports.up = async function up(knex) {
- await knex.schema.alterTable('entities_search', table => {
- table.index(['key'], 'entities_search_key');
- table.index(['value'], 'entities_search_value');
+describe('normalizeEntityName', () => {
+ it('should normalize name to valid entity name', () => {
+ expect(normalizeEntityName('User Name')).toBe('user_name');
});
-};
-/**
- * @param {import('knex').Knex} knex
- */
-exports.down = async function down(knex) {
- await knex.schema.alterTable('entities_search', table => {
- table.dropIndex('', 'entities_search_key');
- table.dropIndex('', 'entities_search_value');
+ it('should normalize e-mail to valid entity name', () => {
+ expect(normalizeEntityName('user.name@example.com')).toBe(
+ 'user.name_example.com',
+ );
});
-};
+});
diff --git a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/helper.ts b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/helper.ts
new file mode 100644
index 0000000000..c1d2606018
--- /dev/null
+++ b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/helper.ts
@@ -0,0 +1,22 @@
+/*
+ * Copyright 2020 The Backstage Authors
+ *
+ * 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.
+ */
+
+export function normalizeEntityName(name: string): string {
+ return name
+ .trim()
+ .toLocaleLowerCase()
+ .replace(/[^a-zA-Z0-9_\-\.]/g, '_');
+}
diff --git a/plugins/catalog-backend/src/ingestion/processors/microsoftGraph/index.ts b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/index.ts
similarity index 73%
rename from plugins/catalog-backend/src/ingestion/processors/microsoftGraph/index.ts
rename to plugins/catalog-backend-module-msgraph/src/microsoftGraph/index.ts
index 882125fd84..eeb436d317 100644
--- a/plugins/catalog-backend/src/ingestion/processors/microsoftGraph/index.ts
+++ b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,11 +14,22 @@
* limitations under the License.
*/
export { MicrosoftGraphClient } from './client';
-export type { MicrosoftGraphProviderConfig } from './config';
export { readMicrosoftGraphConfig } from './config';
-export { readMicrosoftGraphOrg } from './read';
+export type { MicrosoftGraphProviderConfig } from './config';
export {
MICROSOFT_GRAPH_GROUP_ID_ANNOTATION,
MICROSOFT_GRAPH_TENANT_ID_ANNOTATION,
MICROSOFT_GRAPH_USER_ID_ANNOTATION,
} from './constants';
+export { normalizeEntityName } from './helper';
+export {
+ defaultGroupTransformer,
+ defaultOrganizationTransformer,
+ defaultUserTransformer,
+ readMicrosoftGraphOrg,
+} from './read';
+export type {
+ GroupTransformer,
+ OrganizationTransformer,
+ UserTransformer,
+} from './types';
diff --git a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/org.test.ts b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/org.test.ts
new file mode 100644
index 0000000000..254f511c4f
--- /dev/null
+++ b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/org.test.ts
@@ -0,0 +1,94 @@
+/*
+ * Copyright 2020 The Backstage Authors
+ *
+ * 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.
+ */
+
+import { GroupEntity, UserEntity } from '@backstage/catalog-model';
+import { buildMemberOf, buildOrgHierarchy } from './org';
+
+function g(
+ name: string,
+ parent: string | undefined,
+ children: string[],
+): GroupEntity {
+ return {
+ apiVersion: 'backstage.io/v1alpha1',
+ kind: 'Group',
+ metadata: { name },
+ spec: { type: 'team', parent, children },
+ };
+}
+
+describe('buildOrgHierarchy', () => {
+ it('adds groups to their parent.children', () => {
+ const a = g('a', undefined, []);
+ const b = g('b', 'a', []);
+ const c = g('c', 'b', []);
+ const d = g('d', 'a', []);
+ buildOrgHierarchy([a, b, c, d]);
+ expect(a.spec.children).toEqual(expect.arrayContaining(['b', 'd']));
+ expect(b.spec.children).toEqual(expect.arrayContaining(['c']));
+ expect(c.spec.children).toEqual([]);
+ expect(d.spec.children).toEqual([]);
+ });
+
+ it('sets parent of groups children', () => {
+ const a = g('a', undefined, ['b', 'd']);
+ const b = g('b', undefined, ['c']);
+ const c = g('c', undefined, []);
+ const d = g('d', undefined, []);
+ buildOrgHierarchy([a, b, c, d]);
+ expect(a.spec.parent).toBeUndefined();
+ expect(b.spec.parent).toBe('a');
+ expect(c.spec.parent).toBe('b');
+ expect(d.spec.parent).toBe('a');
+ });
+});
+
+describe('buildMemberOf', () => {
+ it('fills indirect member of groups', () => {
+ const a = g('a', undefined, []);
+ const b = g('b', 'a', []);
+ const c = g('c', 'b', []);
+ const u: UserEntity = {
+ apiVersion: 'backstage.io/v1alpha1',
+ kind: 'User',
+ metadata: { name: 'n' },
+ spec: { profile: {}, memberOf: ['c'] },
+ };
+
+ const groups = [a, b, c];
+ buildOrgHierarchy(groups);
+ buildMemberOf(groups, [u]);
+ expect(u.spec.memberOf).toEqual(expect.arrayContaining(['a', 'b', 'c']));
+ });
+
+ it('takes group spec.members into account', () => {
+ const a = g('a', undefined, []);
+ const b = g('b', 'a', []);
+ const c = g('c', 'b', []);
+ c.spec.members = ['n'];
+ const u: UserEntity = {
+ apiVersion: 'backstage.io/v1alpha1',
+ kind: 'User',
+ metadata: { name: 'n' },
+ spec: { profile: {}, memberOf: [] },
+ };
+
+ const groups = [a, b, c];
+ buildOrgHierarchy(groups);
+ buildMemberOf(groups, [u]);
+ expect(u.spec.memberOf).toEqual(expect.arrayContaining(['a', 'b', 'c']));
+ });
+});
diff --git a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/org.ts b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/org.ts
new file mode 100644
index 0000000000..fe59451a9d
--- /dev/null
+++ b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/org.ts
@@ -0,0 +1,87 @@
+/*
+ * Copyright 2020 The Backstage Authors
+ *
+ * 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.
+ */
+
+import { GroupEntity, UserEntity } from '@backstage/catalog-model';
+
+// TODO: Copied from plugin-catalog-backend, but we could also export them from
+// there. Or move them to catalog-model.
+
+export function buildOrgHierarchy(groups: GroupEntity[]) {
+ const groupsByName = new Map(groups.map(g => [g.metadata.name, g]));
+
+ //
+ // Make sure that g.parent.children contain g
+ //
+
+ for (const group of groups) {
+ const selfName = group.metadata.name;
+ const parentName = group.spec.parent;
+ if (parentName) {
+ const parent = groupsByName.get(parentName);
+ if (parent && !parent.spec.children.includes(selfName)) {
+ parent.spec.children.push(selfName);
+ }
+ }
+ }
+
+ //
+ // Make sure that g.children.parent is g
+ //
+
+ for (const group of groups) {
+ const selfName = group.metadata.name;
+ for (const childName of group.spec.children) {
+ const child = groupsByName.get(childName);
+ if (child && !child.spec.parent) {
+ child.spec.parent = selfName;
+ }
+ }
+ }
+}
+
+// Ensure that users have their transitive group memberships. Requires that
+// the groups were previously processed with buildOrgHierarchy()
+export function buildMemberOf(groups: GroupEntity[], users: UserEntity[]) {
+ const groupsByName = new Map(groups.map(g => [g.metadata.name, g]));
+
+ users.forEach(user => {
+ const transitiveMemberOf = new Set();
+
+ const todo = [
+ ...user.spec.memberOf,
+ ...groups
+ .filter(g => g.spec.members?.includes(user.metadata.name))
+ .map(g => g.metadata.name),
+ ];
+
+ for (;;) {
+ const current = todo.pop();
+ if (!current) {
+ break;
+ }
+
+ if (!transitiveMemberOf.has(current)) {
+ transitiveMemberOf.add(current);
+ const group = groupsByName.get(current);
+ if (group?.spec.parent) {
+ todo.push(group.spec.parent);
+ }
+ }
+ }
+
+ user.spec.memberOf = [...transitiveMemberOf];
+ });
+}
diff --git a/plugins/catalog-backend/src/ingestion/processors/microsoftGraph/read.test.ts b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.test.ts
similarity index 85%
rename from plugins/catalog-backend/src/ingestion/processors/microsoftGraph/read.test.ts
rename to plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.test.ts
index 07d540c848..b1179c20df 100644
--- a/plugins/catalog-backend/src/ingestion/processors/microsoftGraph/read.test.ts
+++ b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,17 +16,15 @@
import { GroupEntity, UserEntity } from '@backstage/catalog-model';
import merge from 'lodash/merge';
-import { RecursivePartial } from '../../../util';
import { GroupMember, MicrosoftGraphClient } from './client';
import {
- normalizeEntityName,
readMicrosoftGraphGroups,
readMicrosoftGraphOrganization,
readMicrosoftGraphUsers,
resolveRelations,
} from './read';
-function user(data: RecursivePartial): UserEntity {
+function user(data: Partial): UserEntity {
return merge(
{},
{
@@ -39,7 +37,7 @@ function user(data: RecursivePartial): UserEntity {
);
}
-function group(data: RecursivePartial): GroupEntity {
+function group(data: Partial): GroupEntity {
return merge(
{},
{
@@ -69,18 +67,6 @@ describe('read microsoft graph', () => {
afterEach(() => jest.resetAllMocks());
- describe('normalizeEntityName', () => {
- it('should normalize name to valid entity name', () => {
- expect(normalizeEntityName('User Name')).toBe('user_name');
- });
-
- it('should normalize e-mail to valid entity name', () => {
- expect(normalizeEntityName('user.name@example.com')).toBe(
- 'user.name_example.com',
- );
- });
- });
-
describe('readMicrosoftGraphUsers', () => {
it('should read users', async () => {
async function* getExampleUsers() {
@@ -114,6 +100,7 @@ describe('read microsoft graph', () => {
email: 'user.name@example.com',
picture: 'data:image/jpeg;base64,...',
},
+ memberOf: [],
},
}),
]);
@@ -121,7 +108,6 @@ describe('read microsoft graph', () => {
expect(client.getUsers).toBeCalledTimes(1);
expect(client.getUsers).toBeCalledWith({
filter: 'accountEnabled eq true',
- select: ['id', 'displayName', 'mail'],
});
expect(client.getUserPhotoWithSizeLimit).toBeCalledTimes(1);
expect(client.getUserPhotoWithSizeLimit).toBeCalledWith('userid', 120);
@@ -154,6 +140,7 @@ describe('read microsoft graph', () => {
profile: {
displayName: 'Organization Name',
},
+ children: [],
},
}),
);
@@ -161,6 +148,24 @@ describe('read microsoft graph', () => {
expect(client.getOrganization).toBeCalledTimes(1);
expect(client.getOrganization).toBeCalledWith('tenantid');
});
+
+ it('should read organization with custom transformer', async () => {
+ client.getOrganization.mockResolvedValue({
+ id: 'tenantid',
+ displayName: 'Organization Name',
+ });
+
+ const { rootGroup } = await readMicrosoftGraphOrganization(
+ client,
+ 'tenantid',
+ { transformer: async _ => undefined },
+ );
+
+ expect(rootGroup).toEqual(undefined);
+
+ expect(client.getOrganization).toBeCalledTimes(1);
+ expect(client.getOrganization).toBeCalledWith('tenantid');
+ });
});
describe('readMicrosoftGraphGroups', () => {
@@ -217,6 +222,7 @@ describe('read microsoft graph', () => {
profile: {
displayName: 'Organization Name',
},
+ children: [],
},
});
expect(groups).toEqual([
@@ -234,10 +240,11 @@ describe('read microsoft graph', () => {
profile: {
displayName: 'Group Name',
email: 'group@example.com',
- // TODO: Loading groups doesn't work right now as Microsoft Graph
- // doesn't allows this yet
+ // TODO: Loading groups photos doesn't work right now as Microsoft
+ // Graph doesn't allows this yet
/* picture: 'data:image/jpeg;base64,...',*/
},
+ children: [],
},
}),
]);
@@ -249,11 +256,10 @@ describe('read microsoft graph', () => {
expect(client.getGroups).toBeCalledTimes(1);
expect(client.getGroups).toBeCalledWith({
filter: 'securityEnabled eq false',
- select: ['id', 'displayName', 'description', 'mail', 'mailNickname'],
});
expect(client.getGroupMembers).toBeCalledTimes(1);
expect(client.getGroupMembers).toBeCalledWith('groupid');
- // TODO: Loading groups doesn't work right now as Microsoft Graph
+ // TODO: Loading groups photos doesn't work right now as Microsoft Graph
// doesn't allows this yet
// expect(client.getGroupPhotoWithSizeLimit).toBeCalledTimes(1);
// expect(client.getGroupPhotoWithSizeLimit).toBeCalledWith('groupid', 120);
@@ -271,6 +277,7 @@ describe('read microsoft graph', () => {
},
spec: {
type: 'root',
+ children: [],
},
});
const groupA = group({
@@ -328,20 +335,26 @@ describe('read microsoft graph', () => {
expect(rootGroup.spec.parent).toBeUndefined();
expect(rootGroup.spec.children).toEqual(
- expect.arrayContaining(['a', 'b']),
+ expect.arrayContaining(['group:default/a', 'group:default/b']),
);
- expect(groupA.spec.parent).toEqual('root');
+ expect(groupA.spec.parent).toEqual('group:default/root');
expect(groupA.spec.children).toEqual(expect.arrayContaining([]));
- expect(groupB.spec.parent).toEqual('root');
- expect(groupB.spec.children).toEqual(expect.arrayContaining(['c']));
+ expect(groupB.spec.parent).toEqual('group:default/root');
+ expect(groupB.spec.children).toEqual(
+ expect.arrayContaining(['group:default/c']),
+ );
- expect(groupC.spec.parent).toEqual('b');
+ expect(groupC.spec.parent).toEqual('group:default/b');
expect(groupC.spec.children).toEqual(expect.arrayContaining([]));
- expect(user1.spec.memberOf).toEqual(expect.arrayContaining(['a']));
- expect(user2.spec.memberOf).toEqual(expect.arrayContaining(['b', 'c']));
+ expect(user1.spec.memberOf).toEqual(
+ expect.arrayContaining(['group:default/a']),
+ );
+ expect(user2.spec.memberOf).toEqual(
+ expect.arrayContaining(['group:default/c']),
+ );
});
});
});
diff --git a/plugins/catalog-backend/src/ingestion/processors/microsoftGraph/read.ts b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.ts
similarity index 55%
rename from plugins/catalog-backend/src/ingestion/processors/microsoftGraph/read.ts
rename to plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.ts
index 4409422645..70c403d0b7 100644
--- a/plugins/catalog-backend/src/ingestion/processors/microsoftGraph/read.ts
+++ b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,95 +13,117 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import { GroupEntity, UserEntity } from '@backstage/catalog-model';
+import {
+ GroupEntity,
+ stringifyEntityRef,
+ UserEntity,
+} from '@backstage/catalog-model';
+import * as MicrosoftGraph from '@microsoft/microsoft-graph-types';
import limiterFactory from 'p-limit';
-import { buildMemberOf, buildOrgHierarchy } from '../util/org';
import { MicrosoftGraphClient } from './client';
import {
MICROSOFT_GRAPH_GROUP_ID_ANNOTATION,
MICROSOFT_GRAPH_TENANT_ID_ANNOTATION,
MICROSOFT_GRAPH_USER_ID_ANNOTATION,
} from './constants';
+import { normalizeEntityName } from './helper';
+import { buildMemberOf, buildOrgHierarchy } from './org';
+import {
+ GroupTransformer,
+ OrganizationTransformer,
+ UserTransformer,
+} from './types';
-export function normalizeEntityName(name: string): string {
- return name
- .trim()
- .toLocaleLowerCase()
- .replace(/[^a-zA-Z0-9_\-\.]/g, '_');
+export async function defaultUserTransformer(
+ user: MicrosoftGraph.User,
+ userPhoto?: string,
+): Promise {
+ if (!user.id || !user.displayName || !user.mail) {
+ return undefined;
+ }
+
+ const name = normalizeEntityName(user.mail);
+ const entity: UserEntity = {
+ apiVersion: 'backstage.io/v1alpha1',
+ kind: 'User',
+ metadata: {
+ name,
+ annotations: {
+ [MICROSOFT_GRAPH_USER_ID_ANNOTATION]: user.id!,
+ },
+ },
+ spec: {
+ profile: {
+ displayName: user.displayName!,
+ email: user.mail!,
+
+ // TODO: Additional fields?
+ // jobTitle: user.jobTitle || undefined,
+ // officeLocation: user.officeLocation || undefined,
+ // mobilePhone: user.mobilePhone || undefined,
+ },
+ memberOf: [],
+ },
+ };
+
+ if (userPhoto) {
+ entity.spec.profile!.picture = userPhoto;
+ }
+
+ return entity;
}
export async function readMicrosoftGraphUsers(
client: MicrosoftGraphClient,
- options?: { userFilter?: string },
+ options?: { userFilter?: string; transformer?: UserTransformer },
): Promise<{
users: UserEntity[]; // With all relations empty
}> {
- const entities: UserEntity[] = [];
- const promises: Promise[] = [];
+ const users: UserEntity[] = [];
const limiter = limiterFactory(10);
+ const transformer = options?.transformer ?? defaultUserTransformer;
+ const promises: Promise[] = [];
+
for await (const user of client.getUsers({
filter: options?.userFilter,
- select: ['id', 'displayName', 'mail'],
})) {
- if (!user.id || !user.displayName || !user.mail) {
- continue;
- }
+ // Process all users in parallel, otherwise it can take quite some time
+ promises.push(
+ limiter(async () => {
+ const userPhoto = await client.getUserPhotoWithSizeLimit(
+ user.id!,
+ // We are limiting the photo size, as users with full resolution photos
+ // can make the Backstage API slow
+ 120,
+ );
- const name = normalizeEntityName(user.mail);
- const entity: UserEntity = {
- apiVersion: 'backstage.io/v1alpha1',
- kind: 'User',
- metadata: {
- name,
- annotations: {
- [MICROSOFT_GRAPH_USER_ID_ANNOTATION]: user.id!,
- },
- },
- spec: {
- profile: {
- displayName: user.displayName!,
- email: user.mail!,
+ const entity = await transformer(user, userPhoto);
- // TODO: Additional fields?
- // jobTitle: user.jobTitle || undefined,
- // officeLocation: user.officeLocation || undefined,
- // mobilePhone: user.mobilePhone || undefined,
- },
- memberOf: [],
- },
- };
+ if (!entity) {
+ return;
+ }
- // Download the photos in parallel, otherwise it can take quite some time
- const loadPhoto = limiter(async () => {
- entity.spec.profile!.picture = await client.getUserPhotoWithSizeLimit(
- user.id!,
- // We are limiting the photo size, as users with full resolution photos
- // can make the Backstage API slow
- 120,
- );
- });
-
- promises.push(loadPhoto);
- entities.push(entity);
+ users.push(entity);
+ }),
+ );
}
- // Wait for all photos to be downloaded
+ // Wait for all users and photos to be downloaded
await Promise.all(promises);
- return { users: entities };
+ return { users };
}
-export async function readMicrosoftGraphOrganization(
- client: MicrosoftGraphClient,
- tenantId: string,
-): Promise<{
- rootGroup: GroupEntity; // With all relations empty
-}> {
- // For now we expect a single root organization
- const organization = await client.getOrganization(tenantId);
+export async function defaultOrganizationTransformer(
+ organization: MicrosoftGraph.Organization,
+): Promise {
+ if (!organization.id || !organization.displayName) {
+ return undefined;
+ }
+
const name = normalizeEntityName(organization.displayName!);
- const rootGroup: GroupEntity = {
+ return {
apiVersion: 'backstage.io/v1alpha1',
kind: 'Group',
metadata: {
@@ -119,14 +141,68 @@ export async function readMicrosoftGraphOrganization(
children: [],
},
};
+}
+
+export async function readMicrosoftGraphOrganization(
+ client: MicrosoftGraphClient,
+ tenantId: string,
+ options?: { transformer?: OrganizationTransformer },
+): Promise<{
+ rootGroup?: GroupEntity; // With all relations empty
+}> {
+ // For now we expect a single root organization
+ const organization = await client.getOrganization(tenantId);
+ const transformer = options?.transformer ?? defaultOrganizationTransformer;
+ const rootGroup = await transformer(organization);
return { rootGroup };
}
+export async function defaultGroupTransformer(
+ group: MicrosoftGraph.Group,
+ groupPhoto?: string,
+): Promise {
+ if (!group.id || !group.displayName) {
+ return undefined;
+ }
+
+ const name = normalizeEntityName(group.mailNickname || group.displayName);
+ const entity: GroupEntity = {
+ apiVersion: 'backstage.io/v1alpha1',
+ kind: 'Group',
+ metadata: {
+ name: name,
+ annotations: {
+ [MICROSOFT_GRAPH_GROUP_ID_ANNOTATION]: group.id,
+ },
+ },
+ spec: {
+ type: 'team',
+ profile: {},
+ children: [],
+ },
+ };
+
+ if (group.description) {
+ entity.metadata.description = group.description;
+ }
+ if (group.displayName) {
+ entity.spec.profile!.displayName = group.displayName;
+ }
+ if (group.mail) {
+ entity.spec.profile!.email = group.mail;
+ }
+ if (groupPhoto) {
+ entity.spec.profile!.picture = groupPhoto;
+ }
+
+ return entity;
+}
+
export async function readMicrosoftGraphGroups(
client: MicrosoftGraphClient,
tenantId: string,
- options?: { groupFilter?: string },
+ options?: { groupFilter?: string; transformer?: GroupTransformer },
): Promise<{
groups: GroupEntity[]; // With all relations empty
rootGroup: GroupEntity | undefined; // With all relations empty
@@ -139,78 +215,52 @@ export async function readMicrosoftGraphGroups(
const limiter = limiterFactory(10);
const { rootGroup } = await readMicrosoftGraphOrganization(client, tenantId);
- groupMember.set(rootGroup.metadata.name, new Set());
- groups.push(rootGroup);
+ if (rootGroup) {
+ groupMember.set(rootGroup.metadata.name, new Set());
+ groups.push(rootGroup);
+ }
+ const transformer = options?.transformer ?? defaultGroupTransformer;
const promises: Promise[] = [];
for await (const group of client.getGroups({
filter: options?.groupFilter,
- select: ['id', 'displayName', 'description', 'mail', 'mailNickname'],
})) {
- if (!group.id || !group.displayName) {
- continue;
- }
+ // Process all groups in parallel, otherwise it can take quite some time
+ promises.push(
+ limiter(async () => {
+ // TODO: Loading groups photos doesn't work right now as Microsoft Graph
+ // doesn't allows this yet: https://microsoftgraph.uservoice.com/forums/920506-microsoft-graph-feature-requests/suggestions/37884922-allow-application-to-set-or-update-a-group-s-photo
+ /* const groupPhoto = await client.getGroupPhotoWithSizeLimit(
+ group.id!,
+ // We are limiting the photo size, as groups with full resolution photos
+ // can make the Backstage API slow
+ 120,
+ );*/
- const name = normalizeEntityName(group.mailNickname || group.displayName);
- const entity: GroupEntity = {
- apiVersion: 'backstage.io/v1alpha1',
- kind: 'Group',
- metadata: {
- name: name,
- annotations: {
- [MICROSOFT_GRAPH_GROUP_ID_ANNOTATION]: group.id,
- },
- },
- spec: {
- type: 'team',
- profile: {},
- children: [],
- },
- };
+ const entity = await transformer(group /* , groupPhoto*/);
- if (group.description) {
- entity.metadata.description = group.description;
- }
- if (group.displayName) {
- entity.spec.profile!.displayName = group.displayName;
- }
- if (group.mail) {
- entity.spec.profile!.email = group.mail;
- }
-
- // Download the members in parallel, otherwise it can take quite some time
- const loadGroupMembers = limiter(async () => {
- for await (const member of client.getGroupMembers(group.id!)) {
- if (!member.id) {
- continue;
+ if (!entity) {
+ return;
}
- if (member['@odata.type'] === '#microsoft.graph.user') {
- ensureItem(groupMemberOf, member.id, group.id!);
+ for await (const member of client.getGroupMembers(group.id!)) {
+ if (!member.id) {
+ continue;
+ }
+
+ if (member['@odata.type'] === '#microsoft.graph.user') {
+ ensureItem(groupMemberOf, member.id, group.id!);
+ }
+
+ if (member['@odata.type'] === '#microsoft.graph.group') {
+ ensureItem(groupMember, group.id!, member.id);
+ }
}
- if (member['@odata.type'] === '#microsoft.graph.group') {
- ensureItem(groupMember, group.id!, member.id);
- }
- }
- });
-
- // TODO: Loading groups doesn't work right now as Microsoft Graph doesn't
- // allows this yet: https://microsoftgraph.uservoice.com/forums/920506-microsoft-graph-feature-requests/suggestions/37884922-allow-application-to-set-or-update-a-group-s-photo
- /*/ / Download the photos in parallel, otherwise it can take quite some time
- const loadPhoto = limiter(async () => {
- entity.spec.profile!.picture = await client.getGroupPhotoWithSizeLimit(
- group.id!,
- // We are limiting the photo size, as groups with full resolution photos
- // can make the Backstage API slow
- 120,
- );
- });
-
- promises.push(loadPhoto);*/
- promises.push(loadGroupMembers);
- groups.push(entity);
+ groups.push(entity);
+ }),
+ );
}
// Wait for all group members and photos to be loaded
@@ -286,7 +336,7 @@ export function resolveRelations(
retrieveItems(groupMember, id).forEach(m => {
const childGroup = groupMap.get(m);
if (childGroup) {
- group.spec.children.push(childGroup.metadata.name);
+ group.spec.children.push(stringifyEntityRef(childGroup));
}
});
@@ -294,7 +344,7 @@ export function resolveRelations(
const parentGroup = groupMap.get(p);
if (parentGroup) {
// TODO: Only having a single parent group might not match every companies model, but fine for now.
- group.spec.parent = parentGroup.metadata.name;
+ group.spec.parent = stringifyEntityRef(parentGroup);
}
});
});
@@ -309,7 +359,7 @@ export function resolveRelations(
retrieveItems(groupMemberOf, id).forEach(p => {
const parentGroup = groupMap.get(p);
if (parentGroup) {
- user.spec.memberOf.push(parentGroup.metadata.name);
+ user.spec.memberOf.push(stringifyEntityRef(parentGroup));
}
});
});
@@ -321,7 +371,11 @@ export function resolveRelations(
export async function readMicrosoftGraphOrg(
client: MicrosoftGraphClient,
tenantId: string,
- options?: { userFilter?: string; groupFilter?: string },
+ options?: {
+ userFilter?: string;
+ groupFilter?: string;
+ groupTransformer?: GroupTransformer;
+ },
): Promise<{ users: UserEntity[]; groups: GroupEntity[] }> {
const { users } = await readMicrosoftGraphUsers(client, {
userFilter: options?.userFilter,
@@ -333,6 +387,7 @@ export async function readMicrosoftGraphOrg(
groupMemberOf,
} = await readMicrosoftGraphGroups(client, tenantId, {
groupFilter: options?.groupFilter,
+ transformer: options?.groupTransformer,
});
resolveRelations(rootGroup, groups, users, groupMember, groupMemberOf);
diff --git a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/types.ts b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/types.ts
new file mode 100644
index 0000000000..fab662cc3f
--- /dev/null
+++ b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/types.ts
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2020 The Backstage Authors
+ *
+ * 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.
+ */
+
+import { GroupEntity, UserEntity } from '@backstage/catalog-model';
+import * as MicrosoftGraph from '@microsoft/microsoft-graph-types';
+
+export type UserTransformer = (
+ user: MicrosoftGraph.User,
+ userPhoto?: string,
+) => Promise;
+
+export type OrganizationTransformer = (
+ organization: MicrosoftGraph.Organization,
+) => Promise;
+
+export type GroupTransformer = (
+ group: MicrosoftGraph.Group,
+ groupPhoto?: string,
+) => Promise;
diff --git a/plugins/catalog-backend/src/ingestion/processors/MicrosoftGraphOrgReaderProcessor.ts b/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgReaderProcessor.ts
similarity index 83%
rename from plugins/catalog-backend/src/ingestion/processors/MicrosoftGraphOrgReaderProcessor.ts
rename to plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgReaderProcessor.ts
index 3456f2cafa..d86584a9fd 100644
--- a/plugins/catalog-backend/src/ingestion/processors/MicrosoftGraphOrgReaderProcessor.ts
+++ b/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgReaderProcessor.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,24 +16,32 @@
import { LocationSpec } from '@backstage/catalog-model';
import { Config } from '@backstage/config';
+import {
+ CatalogProcessor,
+ CatalogProcessorEmit,
+ results,
+} from '@backstage/plugin-catalog-backend';
import { Logger } from 'winston';
import {
+ GroupTransformer,
MicrosoftGraphClient,
MicrosoftGraphProviderConfig,
readMicrosoftGraphConfig,
readMicrosoftGraphOrg,
-} from './microsoftGraph';
-import * as results from './results';
-import { CatalogProcessor, CatalogProcessorEmit } from './types';
+} from '../microsoftGraph';
/**
- * Extracts teams and users out of an LDAP server.
+ * Extracts teams and users out of a the Microsoft Graph API.
*/
export class MicrosoftGraphOrgReaderProcessor implements CatalogProcessor {
private readonly providers: MicrosoftGraphProviderConfig[];
private readonly logger: Logger;
+ private readonly groupTransformer?: GroupTransformer;
- static fromConfig(config: Config, options: { logger: Logger }) {
+ static fromConfig(
+ config: Config,
+ options: { logger: Logger; groupTransformer?: GroupTransformer },
+ ) {
const c = config.getOptionalConfig('catalog.processors.microsoftGraphOrg');
return new MicrosoftGraphOrgReaderProcessor({
...options,
@@ -44,9 +52,11 @@ export class MicrosoftGraphOrgReaderProcessor implements CatalogProcessor {
constructor(options: {
providers: MicrosoftGraphProviderConfig[];
logger: Logger;
+ groupTransformer?: GroupTransformer;
}) {
this.providers = options.providers;
this.logger = options.logger;
+ this.groupTransformer = options.groupTransformer;
}
async readLocation(
@@ -79,6 +89,7 @@ export class MicrosoftGraphOrgReaderProcessor implements CatalogProcessor {
{
userFilter: provider.userFilter,
groupFilter: provider.groupFilter,
+ groupTransformer: this.groupTransformer,
},
);
diff --git a/plugins/catalog-backend-module-msgraph/src/processors/index.ts b/plugins/catalog-backend-module-msgraph/src/processors/index.ts
new file mode 100644
index 0000000000..f5dc101563
--- /dev/null
+++ b/plugins/catalog-backend-module-msgraph/src/processors/index.ts
@@ -0,0 +1,17 @@
+/*
+ * Copyright 2020 The Backstage Authors
+ *
+ * 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.
+ */
+
+export { MicrosoftGraphOrgReaderProcessor } from './MicrosoftGraphOrgReaderProcessor';
diff --git a/plugins/api-docs/src/components/ApiExplorerTable/index.ts b/plugins/catalog-backend-module-msgraph/src/setupTests.ts
similarity index 87%
rename from plugins/api-docs/src/components/ApiExplorerTable/index.ts
rename to plugins/catalog-backend-module-msgraph/src/setupTests.ts
index a9c79861e8..d3232290a7 100644
--- a/plugins/api-docs/src/components/ApiExplorerTable/index.ts
+++ b/plugins/catalog-backend-module-msgraph/src/setupTests.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,4 +14,4 @@
* limitations under the License.
*/
-export { ApiExplorerTable } from './ApiExplorerTable';
+export {};
diff --git a/plugins/catalog-backend/CHANGELOG.md b/plugins/catalog-backend/CHANGELOG.md
index c8ff84831a..1dc73669cd 100644
--- a/plugins/catalog-backend/CHANGELOG.md
+++ b/plugins/catalog-backend/CHANGELOG.md
@@ -1,5 +1,70 @@
# @backstage/plugin-catalog-backend
+## 0.10.3
+
+### Patch Changes
+
+- b45e29410: This release enables the new catalog processing engine which is a major milestone for the catalog!
+
+ This update makes processing more scalable across multiple instances, adds support for deletions and ui flagging of entities that are no longer referenced by a location.
+
+ **Changes Required** to `catalog.ts`
+
+ ```diff
+ -import { useHotCleanup } from '@backstage/backend-common';
+ import {
+ CatalogBuilder,
+ - createRouter,
+ - runPeriodically
+ + createRouter
+ } from '@backstage/plugin-catalog-backend';
+ import { Router } from 'express';
+ import { PluginEnvironment } from '../types';
+
+ export default async function createPlugin(env: PluginEnvironment): Promise {
+ - const builder = new CatalogBuilder(env);
+ + const builder = await CatalogBuilder.create(env);
+ const {
+ entitiesCatalog,
+ locationsCatalog,
+ - higherOrderOperation,
+ + locationService,
+ + processingEngine,
+ locationAnalyzer,
+ } = await builder.build();
+
+ - useHotCleanup(
+ - module,
+ - runPeriodically(() => higherOrderOperation.refreshAllLocations(), 100000),
+ - );
+ + await processingEngine.start();
+
+ return await createRouter({
+ entitiesCatalog,
+ locationsCatalog,
+ - higherOrderOperation,
+ + locationService,
+ locationAnalyzer,
+ logger: env.logger,
+ config: env.config,
+ ```
+
+ As this is a major internal change we have taken some precaution by still allowing the old catalog to be enabled by keeping your `catalog.ts` in it's current state.
+ If you encounter any issues and have to revert to the previous catalog engine make sure to raise an issue immediately as the old catalog engine is deprecated and will be removed in a future release.
+
+- 72fbf4372: Switches the default catalog processing engine to use a batched streaming task execution strategy for higher parallelism.
+- 18ab535c8: Rely on `SELECT ... FOR UPDATE SKIP LOCKED` where available in order to speed up processing item acquisition and reduce work duplication.
+- db17fd734: Make refresh interval configurable for the `NextCatalogBuilder` using `.setRefreshIntervalSeconds()`.
+
+ Change `DefaultProcessingDatabase` constructor to accept an options object instead of individual arguments.
+
+- cb09e445e: Implement `NextCatalogBuilder.addEntityProvider`
+- 3108ff7bf: Make `yarn dev` respect the `PLUGIN_PORT` environment variable.
+- Updated dependencies
+ - @backstage/plugin-search-backend-node@0.2.1
+ - @backstage/backend-common@0.8.3
+ - @backstage/catalog-model@0.8.3
+
## 0.10.2
### Patch Changes
diff --git a/plugins/catalog-backend/README.md b/plugins/catalog-backend/README.md
index 2f06b9c062..ce97bb7a54 100644
--- a/plugins/catalog-backend/README.md
+++ b/plugins/catalog-backend/README.md
@@ -1,21 +1,80 @@
# Catalog Backend
-This is the backend part of the default catalog plugin.
+This is the backend for the default Backstage [software
+catalog](http://backstage.io/docs/features/software-catalog/software-catalog-overview).
+This provides an API for consumers such as the frontend [catalog
+plugin](https://github.com/backstage/backstage/tree/master/plugins/catalog).
-It comes with a builtin database backed implementation of the catalog, that can store
-and serve your catalog for you.
+It comes with a builtin database-backed implementation of the catalog that can
+store and serve your catalog for you.
-It can also act as a bridge to your existing catalog solutions, either ingesting their
-data to store in the database, or by effectively proxying calls to an external catalog
-service.
+It can also act as a bridge to your existing catalog solutions, either ingesting
+data to store in the database, or by effectively proxying calls to an
+external catalog service.
-## Getting Started
+## Installation
-This backend plugin can be started in a standalone mode from directly in this package
-with `yarn start`. However, it will have limited functionality and that process is
-most convenient when developing the catalog backend plugin itself.
+This `@backstage/plugin-catalog-backend` package comes installed by default in
+any Backstage application created with `npx @backstage/create-app`, so
+installation is not usually required.
-To evaluate the catalog and have a greater amount of functionality available, instead do
+To check if you already have the package, look under
+`packages/backend/package.json`, in the `dependencies` block, for
+`@backstage/plugin-catalog-backend`. The instructions below walk through
+restoring the plugin, if you previously removed it.
+
+### Install the package
+
+```bash
+# From your Backstage root directory
+cd packages/backend
+yarn add @backstage/plugin-catalog-backend
+```
+
+### Adding the plugin to your `packages/backend`
+
+You'll need to add the plugin to the router in your `backend` package. You can
+do this by creating a file called `packages/backend/src/plugins/catalog.ts` with
+contents matching [catalog.ts in the create-app
+template](https://github.com/backstage/backstage/blob/master/packages/create-app/templates/default-app/packages/backend/src/plugins/catalog.ts).
+
+With the `catalog.ts` router setup in place, add the router to
+`packages/backend/src/index.ts`:
+
+```diff
++import catalog from './plugins/catalog';
+
+async function main() {
+ ...
+ const createEnv = makeCreateEnv(config);
+
++ const catalogEnv = useHotMemoize(module, () => createEnv('catalog'));
+ const scaffolderEnv = useHotMemoize(module, () => createEnv('scaffolder'));
+
+ const apiRouter = Router();
++ apiRouter.use('/catalog', await catalog(catalogEnv));
+ ...
+ apiRouter.use(notFoundHandler());
+
+```
+
+### Adding catalog entities
+
+At this point the `catalog-backend` is installed in your backend package, but
+you will not have any catalog entities loaded. See [Catalog
+Configuration](https://backstage.io/docs/features/software-catalog/configuration)
+for how to add locations, or copy the catalog locations from the [create-app
+template](https://github.com/backstage/backstage/blob/master/packages/create-app/templates/default-app/app-config.yaml.hbs)
+to get up and running quickly.
+
+## Development
+
+This backend plugin can be started in a standalone mode from directly in this
+package with `yarn start`. However, it will have limited functionality and that
+process is most convenient when developing the catalog backend plugin itself.
+
+To evaluate the catalog and have a greater amount of functionality available,
+run the entire Backstage example application from the root folder:
```bash
# in one terminal window, run this from from the very root of the Backstage project
@@ -23,9 +82,10 @@ cd packages/backend
yarn start
```
-This will launch the full example backend, populated some example entities.
+This will launch both frontend and backend in the same window, populated with
+some example entities.
## Links
-- [Frontend part of the plugin](https://github.com/backstage/backstage/tree/master/plugins/catalog)
-- [The Backstage homepage](https://backstage.io)
+- [catalog](https://github.com/backstage/backstage/tree/master/plugins/catalog-backend)
+ is the frontend interface for this plugin.
diff --git a/plugins/catalog-backend/config.d.ts b/plugins/catalog-backend/config.d.ts
index 20fcd975cf..04f76e06c7 100644
--- a/plugins/catalog-backend/config.d.ts
+++ b/plugins/catalog-backend/config.d.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -362,54 +362,6 @@ export interface Config {
roleArn?: string;
};
};
-
- /**
- * MicrosoftGraphOrgReaderProcessor configuration
- */
- microsoftGraphOrg?: {
- /**
- * The configuration parameters for each single Microsoft Graph provider.
- */
- providers: Array<{
- /**
- * The prefix of the target that this matches on, e.g.
- * "https://graph.microsoft.com/v1.0", with no trailing slash.
- */
- target: string;
- /**
- * The auth authority used.
- *
- * Default value "https://login.microsoftonline.com"
- */
- authority?: string;
- /**
- * The tenant whose org data we are interested in.
- */
- tenantId: string;
- /**
- * The OAuth client ID to use for authenticating requests.
- */
- clientId: string;
- /**
- * The OAuth client secret to use for authenticating requests.
- *
- * @visibility secret
- */
- clientSecret: string;
- /**
- * The filter to apply to extract users.
- *
- * E.g. "accountEnabled eq true and userType eq 'member'"
- */
- userFilter?: string;
- /**
- * The filter to apply to extract groups.
- *
- * E.g. "securityEnabled eq false and mailEnabled eq true"
- */
- groupFilter?: string;
- }>;
- };
};
};
}
diff --git a/plugins/catalog-backend/migrations/20200511113813_init.js b/plugins/catalog-backend/migrations/20200511113813_init.js
index 7f3d75e35c..b89ec57fe3 100644
--- a/plugins/catalog-backend/migrations/20200511113813_init.js
+++ b/plugins/catalog-backend/migrations/20200511113813_init.js
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/migrations/20200520140700_location_update_log_table.js b/plugins/catalog-backend/migrations/20200520140700_location_update_log_table.js
index d8093fc9b4..215596518e 100644
--- a/plugins/catalog-backend/migrations/20200520140700_location_update_log_table.js
+++ b/plugins/catalog-backend/migrations/20200520140700_location_update_log_table.js
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/migrations/20200527114117_location_update_log_latest_view.js b/plugins/catalog-backend/migrations/20200527114117_location_update_log_latest_view.js
index a0f0f33a65..13c10d8954 100644
--- a/plugins/catalog-backend/migrations/20200527114117_location_update_log_latest_view.js
+++ b/plugins/catalog-backend/migrations/20200527114117_location_update_log_latest_view.js
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/migrations/20200702153613_entities.js b/plugins/catalog-backend/migrations/20200702153613_entities.js
index 0f1c204f9b..fef8a7c074 100644
--- a/plugins/catalog-backend/migrations/20200702153613_entities.js
+++ b/plugins/catalog-backend/migrations/20200702153613_entities.js
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/migrations/20200721115244_location_update_log_latest_deduplicate.js b/plugins/catalog-backend/migrations/20200721115244_location_update_log_latest_deduplicate.js
index 87b41a80fc..1ac5ccb65d 100644
--- a/plugins/catalog-backend/migrations/20200721115244_location_update_log_latest_deduplicate.js
+++ b/plugins/catalog-backend/migrations/20200721115244_location_update_log_latest_deduplicate.js
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/migrations/20200805163904_location_update_log_duplication_fix.js b/plugins/catalog-backend/migrations/20200805163904_location_update_log_duplication_fix.js
index de2b194cff..1058f68201 100644
--- a/plugins/catalog-backend/migrations/20200805163904_location_update_log_duplication_fix.js
+++ b/plugins/catalog-backend/migrations/20200805163904_location_update_log_duplication_fix.js
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/migrations/20200807120600_entitySearch.js b/plugins/catalog-backend/migrations/20200807120600_entitySearch.js
index 45226e53b4..bdb6037d65 100644
--- a/plugins/catalog-backend/migrations/20200807120600_entitySearch.js
+++ b/plugins/catalog-backend/migrations/20200807120600_entitySearch.js
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/migrations/20200809202832_add_bootstrap_location.js b/plugins/catalog-backend/migrations/20200809202832_add_bootstrap_location.js
index a90813fe85..5afb069d49 100644
--- a/plugins/catalog-backend/migrations/20200809202832_add_bootstrap_location.js
+++ b/plugins/catalog-backend/migrations/20200809202832_add_bootstrap_location.js
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/migrations/20200923104503_case_insensitivity.js b/plugins/catalog-backend/migrations/20200923104503_case_insensitivity.js
index ea5ba9e58d..01be4789d0 100644
--- a/plugins/catalog-backend/migrations/20200923104503_case_insensitivity.js
+++ b/plugins/catalog-backend/migrations/20200923104503_case_insensitivity.js
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/migrations/20201005122705_add_entity_full_name.js b/plugins/catalog-backend/migrations/20201005122705_add_entity_full_name.js
index aae1861658..2f9b2821eb 100644
--- a/plugins/catalog-backend/migrations/20201005122705_add_entity_full_name.js
+++ b/plugins/catalog-backend/migrations/20201005122705_add_entity_full_name.js
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/migrations/20201006130744_entity_data_column.js b/plugins/catalog-backend/migrations/20201006130744_entity_data_column.js
index a8964efbf6..214a8f4a73 100644
--- a/plugins/catalog-backend/migrations/20201006130744_entity_data_column.js
+++ b/plugins/catalog-backend/migrations/20201006130744_entity_data_column.js
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/migrations/20201006203131_entity_remove_redundant_columns.js b/plugins/catalog-backend/migrations/20201006203131_entity_remove_redundant_columns.js
index f40df5f73e..5055672e52 100644
--- a/plugins/catalog-backend/migrations/20201006203131_entity_remove_redundant_columns.js
+++ b/plugins/catalog-backend/migrations/20201006203131_entity_remove_redundant_columns.js
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/migrations/20201007201501_index_entity_search.js b/plugins/catalog-backend/migrations/20201007201501_index_entity_search.js
index 77bf0529eb..59fd34b700 100644
--- a/plugins/catalog-backend/migrations/20201007201501_index_entity_search.js
+++ b/plugins/catalog-backend/migrations/20201007201501_index_entity_search.js
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/migrations/20201019130742_add_relations_table.js b/plugins/catalog-backend/migrations/20201019130742_add_relations_table.js
index 85e729f814..4b399d6b66 100644
--- a/plugins/catalog-backend/migrations/20201019130742_add_relations_table.js
+++ b/plugins/catalog-backend/migrations/20201019130742_add_relations_table.js
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/migrations/20201123205611_relations_table_uniq.js b/plugins/catalog-backend/migrations/20201123205611_relations_table_uniq.js
index 9e8198b5eb..b3c3a042f5 100644
--- a/plugins/catalog-backend/migrations/20201123205611_relations_table_uniq.js
+++ b/plugins/catalog-backend/migrations/20201123205611_relations_table_uniq.js
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/migrations/20201210185851_fk_index.js b/plugins/catalog-backend/migrations/20201210185851_fk_index.js
index abb26cd5fc..11907b24f4 100644
--- a/plugins/catalog-backend/migrations/20201210185851_fk_index.js
+++ b/plugins/catalog-backend/migrations/20201210185851_fk_index.js
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/migrations/20201230103504_update_log_varchar.js b/plugins/catalog-backend/migrations/20201230103504_update_log_varchar.js
index d924b0414a..c4413d4563 100644
--- a/plugins/catalog-backend/migrations/20201230103504_update_log_varchar.js
+++ b/plugins/catalog-backend/migrations/20201230103504_update_log_varchar.js
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/migrations/20210209121210_locations_fk_index.js b/plugins/catalog-backend/migrations/20210209121210_locations_fk_index.js
index ccfb1faffb..80925f47ce 100644
--- a/plugins/catalog-backend/migrations/20210209121210_locations_fk_index.js
+++ b/plugins/catalog-backend/migrations/20210209121210_locations_fk_index.js
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/migrationsv2/20210302150147_refresh_state.js b/plugins/catalog-backend/migrations/20210302150147_refresh_state.js
similarity index 99%
rename from plugins/catalog-backend/migrationsv2/20210302150147_refresh_state.js
rename to plugins/catalog-backend/migrations/20210302150147_refresh_state.js
index 4e6cf4f282..db66b46305 100644
--- a/plugins/catalog-backend/migrationsv2/20210302150147_refresh_state.js
+++ b/plugins/catalog-backend/migrations/20210302150147_refresh_state.js
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/migrationsv2/20200511113813_init.js b/plugins/catalog-backend/migrationsv2/20200511113813_init.js
deleted file mode 100644
index 7f3d75e35c..0000000000
--- a/plugins/catalog-backend/migrationsv2/20200511113813_init.js
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * Copyright 2020 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.
- */
-
-// @ts-check
-
-/**
- * @param {import('knex').Knex} knex
- */
-exports.up = async function up(knex) {
- return (
- knex.schema
- //
- // locations
- //
- .createTable('locations', table => {
- table.comment(
- 'Registered locations that shall be contiuously scanned for catalog item updates',
- );
- table
- .uuid('id')
- .primary()
- .notNullable()
- .comment('Auto-generated ID of the location');
- table.string('type').notNullable().comment('The type of location');
- table
- .string('target')
- .notNullable()
- .comment('The actual target of the location');
- })
- //
- // entities
- //
- .createTable('entities', table => {
- table.comment('All entities currently stored in the catalog');
- table.uuid('id').primary().comment('Auto-generated ID of the entity');
- table
- .uuid('location_id')
- .references('id')
- .inTable('locations')
- .nullable()
- .comment('The location that originated the entity');
- table
- .string('etag')
- .notNullable()
- .comment(
- 'An opaque string that changes for each update operation to any part of the entity, including metadata.',
- );
- table
- .string('generation')
- .notNullable()
- .unsigned()
- .comment(
- 'A positive nonzero number that indicates the current generation of data for this entity; the value is incremented each time the spec changes.',
- );
- table
- .string('api_version')
- .notNullable()
- .comment('The apiVersion field of the entity');
- table
- .string('kind')
- .notNullable()
- .comment('The kind field of the entity');
- table
- .string('name')
- .nullable()
- .comment('The metadata.name field of the entity');
- table
- .string('namespace')
- .nullable()
- .comment('The metadata.namespace field of the entity');
- table
- .string('metadata')
- .notNullable()
- .comment('The entire metadata JSON blob of the entity');
- table
- .string('spec')
- .nullable()
- .comment('The entire spec JSON blob of the entity');
- })
- .alterTable('entities', table => {
- // https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#objectmeta-v1-meta
- table.unique(['kind', 'name', 'namespace'], 'entities_unique_name');
- })
- //
- // entities_search
- //
- .createTable('entities_search', table => {
- table.comment(
- 'Flattened key-values from the entities, used for quick filtering',
- );
- table
- .uuid('entity_id')
- .references('id')
- .inTable('entities')
- .onDelete('CASCADE')
- .comment('The entity that matches this key/value');
- table
- .string('key')
- .notNullable()
- .comment('A key that occurs in the entity');
- table
- .string('value')
- .nullable()
- .comment('The corresponding value to match on');
- })
- );
-};
-
-/**
- * @param {import('knex').Knex} knex
- */
-exports.down = async function down(knex) {
- return knex.schema
- .dropTable('entities_search')
- .alterTable('entities', table => {
- table.dropUnique([], 'entities_unique_name');
- })
- .dropTable('entities')
- .dropTable('locations');
-};
diff --git a/plugins/catalog-backend/migrationsv2/20200520140700_location_update_log_table.js b/plugins/catalog-backend/migrationsv2/20200520140700_location_update_log_table.js
deleted file mode 100644
index d8093fc9b4..0000000000
--- a/plugins/catalog-backend/migrationsv2/20200520140700_location_update_log_table.js
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright 2020 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.
- */
-
-// @ts-check
-
-/**
- * @param {import('knex').Knex} knex
- */
-exports.up = async function up(knex) {
- return knex.schema.createTable('location_update_log', table => {
- table.uuid('id').primary();
- table.enum('status', ['success', 'fail']).notNullable();
- table.dateTime('created_at').defaultTo(knex.fn.now()).notNullable();
- table.string('message');
- table
- .uuid('location_id')
- .references('id')
- .inTable('locations')
- .onUpdate('CASCADE')
- .onDelete('CASCADE');
- table.string('entity_name').nullable();
- });
-};
-
-/**
- * @param {import('knex').Knex} knex
- */
-exports.down = async function down(knex) {
- return knex.schema.dropTableIfExists('location_update_log');
-};
diff --git a/plugins/catalog-backend/migrationsv2/20200527114117_location_update_log_latest_view.js b/plugins/catalog-backend/migrationsv2/20200527114117_location_update_log_latest_view.js
deleted file mode 100644
index a0f0f33a65..0000000000
--- a/plugins/catalog-backend/migrationsv2/20200527114117_location_update_log_latest_view.js
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright 2020 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.
- */
-
-// @ts-check
-
-/**
- * @param {import('knex').Knex} knex
- */
-exports.up = async function up(knex) {
- // Get list sorted by created_at timestamp in descending order
- // Grouped by location_id
- return knex.schema.raw(`
- CREATE VIEW location_update_log_latest AS
- SELECT t1.* FROM location_update_log t1
- JOIN
- (
- SELECT location_id, MAX(created_at) AS MAXDATE
- FROM location_update_log
- GROUP BY location_id
- ) t2
- ON t1.location_id = t2.location_id
- AND t1.created_at = t2.MAXDATE
- ORDER BY created_at DESC;
- `);
-};
-
-/**
- * @param {import('knex').Knex} knex
- */
-exports.down = async function down(knex) {
- return knex.schema.raw(`DROP VIEW location_update_log_latest;`);
-};
diff --git a/plugins/catalog-backend/migrationsv2/20200702153613_entities.js b/plugins/catalog-backend/migrationsv2/20200702153613_entities.js
deleted file mode 100644
index 0f1c204f9b..0000000000
--- a/plugins/catalog-backend/migrationsv2/20200702153613_entities.js
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- * Copyright 2020 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.
- */
-
-// @ts-check
-
-/**
- * @param {import('knex').Knex} knex
- */
-exports.up = async function up(knex) {
- // SQLite does not support FK and PK
- if (knex.client.config.client !== 'sqlite3') {
- await knex.schema.alterTable('entities_search', table => {
- table.dropForeign(['entity_id']);
- });
- await knex.schema.alterTable('entities', table => {
- table.dropPrimary('entities_pkey');
- });
- }
- await knex.schema.alterTable('entities', table => {
- table.dropUnique([], 'entities_unique_name');
- });
- // Setup temporary tables
- await knex.schema.renameTable('entities_search', 'tmp_entities_search');
- await knex.schema.renameTable('entities', 'tmp_entities');
-
- //
- // entities
- //
- await knex.schema
- .createTable('entities', table => {
- table.comment('All entities currently stored in the catalog');
- table.uuid('id').primary().comment('Auto-generated ID of the entity');
- table
- .uuid('location_id')
- .references('id')
- .inTable('locations')
- .nullable()
- .comment('The location that originated the entity');
- table
- .string('etag')
- .notNullable()
- .comment(
- 'An opaque string that changes for each update operation to any part of the entity, including metadata.',
- );
- table
- .string('generation')
- .notNullable()
- .unsigned()
- .comment(
- 'A positive nonzero number that indicates the current generation of data for this entity; the value is incremented each time the spec changes.',
- );
- table
- .string('api_version')
- .notNullable()
- .comment('The apiVersion field of the entity');
- table
- .string('kind')
- .notNullable()
- .comment('The kind field of the entity');
- table
- .string('name')
- .nullable()
- .comment('The metadata.name field of the entity');
- table
- .string('namespace')
- .nullable()
- .comment('The metadata.namespace field of the entity');
- table
- .text('metadata')
- .notNullable()
- .comment('The entire metadata JSON blob of the entity');
- table
- .text('spec')
- .nullable()
- .comment('The entire spec JSON blob of the entity');
- })
- .alterTable('entities', table => {
- // https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#objectmeta-v1-meta
- table.unique(['kind', 'name', 'namespace'], 'entities_unique_name');
- });
-
- await knex.schema.raw(`INSERT INTO entities SELECT * FROM tmp_entities`);
-
- //
- // entities_search
- //
- await knex.schema.createTable('entities_search', table => {
- table.comment(
- 'Flattened key-values from the entities, used for quick filtering',
- );
- table
- .uuid('entity_id')
- .references('id')
- .inTable('entities')
- .onDelete('CASCADE')
- .comment('The entity that matches this key/value');
- table
- .string('key')
- .notNullable()
- .comment('A key that occurs in the entity');
- table
- .string('value')
- .nullable()
- .comment('The corresponding value to match on');
- });
- await knex.schema.raw(
- `INSERT INTO entities_search SELECT * FROM tmp_entities_search`,
- );
-
- // Clean up
- await knex.schema.dropTable('tmp_entities');
- return knex.schema.dropTable('tmp_entities_search');
-};
-
-/**
- * @param {import('knex').Knex} knex
- */
-exports.down = async function down(knex) {
- // SQLite does not support FK and PK
- if (knex.client.config.client !== 'sqlite3') {
- await knex.schema.alterTable('entities_search', table => {
- table.dropForeign(['entity_id']);
- });
- await knex.schema.alterTable('entities', table => {
- table.dropPrimary('entities_pkey');
- });
- }
- await knex.schema.alterTable('entities', table => {
- table.dropUnique([], 'entities_unique_name');
- });
-
- // Setup temporary tables
- await knex.schema.renameTable('entities_search', 'tmp_entities_search');
- await knex.schema.renameTable('entities', 'tmp_entities');
-
- //
- // entities
- //
- await knex.schema
- .createTable('entities', table => {
- table.comment('All entities currently stored in the catalog');
- table.uuid('id').primary().comment('Auto-generated ID of the entity');
- table
- .uuid('location_id')
- .references('id')
- .inTable('locations')
- .nullable()
- .comment('The location that originated the entity');
- table
- .string('etag')
- .notNullable()
- .comment(
- 'An opaque string that changes for each update operation to any part of the entity, including metadata.',
- );
- table
- .string('generation')
- .notNullable()
- .unsigned()
- .comment(
- 'A positive nonzero number that indicates the current generation of data for this entity; the value is incremented each time the spec changes.',
- );
- table
- .string('api_version')
- .notNullable()
- .comment('The apiVersion field of the entity');
- table
- .string('kind')
- .notNullable()
- .comment('The kind field of the entity');
- table
- .string('name')
- .nullable()
- .comment('The metadata.name field of the entity');
- table
- .string('namespace')
- .nullable()
- .comment('The metadata.namespace field of the entity');
- table
- .string('metadata')
- .notNullable()
- .comment('The entire metadata JSON blob of the entity');
- table
- .string('spec')
- .nullable()
- .comment('The entire spec JSON blob of the entity');
- })
- .alterTable('entities', table => {
- // https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#objectmeta-v1-meta
- table.unique(['kind', 'name', 'namespace'], 'entities_unique_name');
- });
-
- await knex.schema.raw(`INSERT INTO entities SELECT * FROM tmp_entities`);
-
- //
- // entities_search
- //
- await knex.schema.createTable('entities_search', table => {
- table.comment(
- 'Flattened key-values from the entities, used for quick filtering',
- );
- table
- .uuid('entity_id')
- .references('id')
- .inTable('entities')
- .onDelete('CASCADE')
- .comment('The entity that matches this key/value');
- table
- .string('key')
- .notNullable()
- .comment('A key that occurs in the entity');
- table
- .string('value')
- .nullable()
- .comment('The corresponding value to match on');
- });
- await knex.schema.raw(
- `INSERT INTO entities_search SELECT * FROM tmp_entities_search`,
- );
-
- // Clean up
- await knex.schema.dropTable('tmp_entities');
- return knex.schema.dropTable('tmp_entities_search');
-};
diff --git a/plugins/catalog-backend/migrationsv2/20200721115244_location_update_log_latest_deduplicate.js b/plugins/catalog-backend/migrationsv2/20200721115244_location_update_log_latest_deduplicate.js
deleted file mode 100644
index 87b41a80fc..0000000000
--- a/plugins/catalog-backend/migrationsv2/20200721115244_location_update_log_latest_deduplicate.js
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright 2020 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.
- */
-
-// @ts-check
-
-/**
- * @param {import('knex').Knex} knex
- */
-exports.up = function up(knex) {
- return knex.schema.raw(`DROP VIEW location_update_log_latest;`).raw(`
- CREATE VIEW location_update_log_latest AS
- SELECT t1.* FROM location_update_log t1
- JOIN
- (
- SELECT location_id, MAX(created_at) AS MAXDATE
- FROM location_update_log
- GROUP BY location_id
- ) t2
- ON t1.location_id = t2.location_id
- AND t1.created_at = t2.MAXDATE
- GROUP BY t1.location_id, t1.id
- ORDER BY created_at DESC;
-`);
-};
-
-/**
- * @param {import('knex').Knex} knex
- */
-exports.down = function down(knex) {
- knex.schema.raw(`DROP VIEW location_update_log_latest;`);
-};
diff --git a/plugins/catalog-backend/migrationsv2/20200805163904_location_update_log_duplication_fix.js b/plugins/catalog-backend/migrationsv2/20200805163904_location_update_log_duplication_fix.js
deleted file mode 100644
index de2b194cff..0000000000
--- a/plugins/catalog-backend/migrationsv2/20200805163904_location_update_log_duplication_fix.js
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright 2020 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.
- */
-
-// @ts-check
-
-/**
- * @param {import('knex').Knex} knex
- */
-exports.up = function up(knex) {
- return knex.schema
- .raw('DROP VIEW location_update_log_latest;')
- .dropTable('location_update_log')
- .createTable('location_update_log', table => {
- table.bigIncrements('id').primary(); // instead of uuid, so we can MAX it
- table.enum('status', ['success', 'fail']).notNullable();
- table.dateTime('created_at').defaultTo(knex.fn.now()).notNullable();
- table.string('message');
- table
- .uuid('location_id')
- .references('id')
- .inTable('locations')
- .onUpdate('CASCADE')
- .onDelete('CASCADE');
- table.string('entity_name').nullable();
- }).raw(`
- CREATE VIEW location_update_log_latest AS
- SELECT t1.* FROM location_update_log t1
- JOIN
- (
- SELECT location_id, MAX(id) AS MAXID
- FROM location_update_log
- GROUP BY location_id
- ) t2
- ON t1.location_id = t2.location_id
- AND t1.id = t2.MAXID
- GROUP BY t1.location_id, t1.id
- ORDER BY created_at DESC;
- `);
-};
-
-/**
- * @param {import('knex').Knex} knex
- */
-exports.down = function down(knex) {
- return knex.schema
- .raw('DROP VIEW location_update_log_latest;')
- .dropTable('location_update_log')
- .createTable('location_update_log', table => {
- table.uuid('id').primary();
- table.enum('status', ['success', 'fail']).notNullable();
- table.dateTime('created_at').defaultTo(knex.fn.now()).notNullable();
- table.string('message');
- table
- .uuid('location_id')
- .references('id')
- .inTable('locations')
- .onUpdate('CASCADE')
- .onDelete('CASCADE');
- table.string('entity_name').nullable();
- }).raw(`
- CREATE VIEW location_update_log_latest AS
- SELECT t1.* FROM location_update_log t1
- JOIN
- (
- SELECT location_id, MAX(created_at) AS MAXDATE
- FROM location_update_log
- GROUP BY location_id
- ) t2
- ON t1.location_id = t2.location_id
- AND t1.created_at = t2.MAXDATE
- GROUP BY t1.location_id, t1.id
- ORDER BY created_at DESC;
- `);
-};
diff --git a/plugins/catalog-backend/migrationsv2/20200807120600_entitySearch.js b/plugins/catalog-backend/migrationsv2/20200807120600_entitySearch.js
deleted file mode 100644
index 45226e53b4..0000000000
--- a/plugins/catalog-backend/migrationsv2/20200807120600_entitySearch.js
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright 2020 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.
- */
-
-// @ts-check
-
-/**
- * @param {import('knex').Knex} knex
- */
-exports.up = async function up(knex) {
- // Sqlite does not support alter column.
- if (knex.client.config.client !== 'sqlite3') {
- await knex.schema.alterTable('entities_search', table => {
- table.text('value').nullable().alter();
- });
- }
-};
-
-/**
- * @param {import('knex').Knex} knex
- */
-exports.down = async function down(knex) {
- // Sqlite does not support alter column.
- if (knex.client.config.client !== 'sqlite3') {
- await knex.schema.alterTable('entities_search', table => {
- table.string('value').nullable().alter();
- });
- }
-};
diff --git a/plugins/catalog-backend/migrationsv2/20200809202832_add_bootstrap_location.js b/plugins/catalog-backend/migrationsv2/20200809202832_add_bootstrap_location.js
deleted file mode 100644
index a90813fe85..0000000000
--- a/plugins/catalog-backend/migrationsv2/20200809202832_add_bootstrap_location.js
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2020 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.
- */
-
-// @ts-check
-
-/**
- * @param {import('knex').Knex} knex
- */
-exports.up = async function up(knex) {
- // Adds a single 'bootstrap' location that can be used to trigger work in processors.
- // This is primarily here to fulfill foreign key constraints.
- await knex('locations').insert({
- id: require('uuid').v4(),
- type: 'bootstrap',
- target: 'bootstrap',
- });
-};
-
-/**
- * @param {import('knex').Knex} knex
- */
-exports.down = async function down(knex) {
- await knex('locations')
- .where({
- type: 'bootstrap',
- target: 'bootstrap',
- })
- .del();
-};
diff --git a/plugins/catalog-backend/migrationsv2/20201005122705_add_entity_full_name.js b/plugins/catalog-backend/migrationsv2/20201005122705_add_entity_full_name.js
deleted file mode 100644
index aae1861658..0000000000
--- a/plugins/catalog-backend/migrationsv2/20201005122705_add_entity_full_name.js
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright 2020 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.
- */
-
-// @ts-check
-
-/**
- * @param {import('knex').Knex} knex
- */
-exports.up = async function up(knex) {
- await knex.schema.alterTable('entities', table => {
- table.text('full_name').nullable();
- });
-
- await knex('entities').update({
- full_name: knex.raw(
- "LOWER(kind) || ':' || LOWER(COALESCE(namespace, 'default')) || '/' || LOWER(name)",
- ),
- });
-
- // SQLite does not support alter column
- if (knex.client.config.client !== 'sqlite3') {
- await knex.schema.alterTable('entities', table => {
- table.text('full_name').notNullable().alter();
- });
- }
-
- await knex.schema.alterTable('entities', table => {
- // https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#objectmeta-v1-meta
- table.unique(['full_name'], 'entities_unique_full_name');
- table.dropUnique([], 'entities_unique_name');
- });
-};
-
-/**
- * @param {import('knex').Knex} knex
- */
-exports.down = async function down(knex) {
- await knex.schema.alterTable('entities', table => {
- // https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#objectmeta-v1-meta
- table.dropUnique([], 'entities_unique_full_name');
- table.unique(['kind', 'namespace', 'name'], 'entities_unique_name');
- });
-
- await knex.schema.alterTable('entities_search', table => {
- table.dropColumn('full_name');
- });
-};
diff --git a/plugins/catalog-backend/migrationsv2/20201006130744_entity_data_column.js b/plugins/catalog-backend/migrationsv2/20201006130744_entity_data_column.js
deleted file mode 100644
index a8964efbf6..0000000000
--- a/plugins/catalog-backend/migrationsv2/20201006130744_entity_data_column.js
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright 2020 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.
- */
-
-// @ts-check
-
-/**
- * @param {import('knex').Knex} knex
- */
-exports.up = async function up(knex) {
- await knex.schema.alterTable('entities', table => {
- table
- .text('data')
- .nullable()
- .comment('The entire JSON data blob of the entity');
- });
-
- await knex('entities').update({
- // apiVersion and kind should not contain any JSON unsafe chars, and both
- // metadata and spec are already valid serialized JSON
- data: knex.raw(
- `'{"apiVersion":"' || api_version || '","kind":"' || kind || '","metadata":' || metadata || COALESCE(',"spec":' || spec, '') || '}'`,
- ),
- });
-
- await knex.schema.alterTable('entities', table => {
- table.dropColumn('metadata');
- table.dropColumn('spec');
- });
-
- // SQLite does not support ALTER COLUMN.
- if (knex.client.config.client !== 'sqlite3') {
- await knex.schema.alterTable('entities', table => {
- table.text('data').notNullable().alter();
- });
- }
-};
-
-/**
- * @param {import('knex').Knex} knex
- */
-exports.down = async function down(knex) {
- await knex.schema.alterTable('entities', table => {
- table
- .text('metadata')
- .notNullable()
- .comment('The entire metadata JSON blob of the entity');
- table
- .text('spec')
- .nullable()
- .comment('The entire spec JSON blob of the entity');
- table.dropColumn('data');
- });
-};
diff --git a/plugins/catalog-backend/migrationsv2/20201006203131_entity_remove_redundant_columns.js b/plugins/catalog-backend/migrationsv2/20201006203131_entity_remove_redundant_columns.js
deleted file mode 100644
index f40df5f73e..0000000000
--- a/plugins/catalog-backend/migrationsv2/20201006203131_entity_remove_redundant_columns.js
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright 2020 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.
- */
-
-// @ts-check
-
-/**
- * @param {import('knex').Knex} knex
- */
-exports.up = async function up(knex) {
- await knex.schema.alterTable('entities', table => {
- table.dropColumn('api_version');
- table.dropColumn('kind');
- table.dropColumn('name');
- table.dropColumn('namespace');
- });
-};
-
-/**
- * @param {import('knex').Knex} knex
- */
-exports.down = async function down(knex) {
- await knex.schema.alterTable('entities', table => {
- table
- .string('api_version')
- .notNullable()
- .comment('The apiVersion field of the entity');
- table.string('kind').notNullable().comment('The kind field of the entity');
- table
- .string('name')
- .nullable()
- .comment('The metadata.name field of the entity');
- table
- .string('namespace')
- .nullable()
- .comment('The metadata.namespace field of the entity');
- });
-};
diff --git a/plugins/catalog-backend/migrationsv2/20201019130742_add_relations_table.js b/plugins/catalog-backend/migrationsv2/20201019130742_add_relations_table.js
deleted file mode 100644
index 85e729f814..0000000000
--- a/plugins/catalog-backend/migrationsv2/20201019130742_add_relations_table.js
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright 2020 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.
- */
-
-// @ts-check
-
-/**
- * @param {import('knex').Knex} knex
- */
-exports.up = async function up(knex) {
- await knex.schema.createTable('entities_relations', table => {
- table.comment('All relations between entities in the catalog');
- table
- .uuid('originating_entity_id')
- .references('id')
- .inTable('entities')
- .onDelete('CASCADE')
- .notNullable()
- .comment('The entity that provided the relation');
- table
- .string('source_full_name')
- .notNullable()
- .comment('The full name of the source entity of the relation');
- table
- .string('type')
- .notNullable()
- .comment('The type of the relation between the entities');
- table
- .string('target_full_name')
- .notNullable()
- .comment('The full name of the target entity of the relation');
-
- table.primary(['source_full_name', 'type', 'target_full_name']);
- });
-};
-
-/**
- * @param {import('knex').Knex} knex
- */
-exports.down = async function down(knex) {
- await knex.schema.dropTable('entities_relations');
-};
diff --git a/plugins/catalog-backend/migrationsv2/20201123205611_relations_table_uniq.js b/plugins/catalog-backend/migrationsv2/20201123205611_relations_table_uniq.js
deleted file mode 100644
index 9e8198b5eb..0000000000
--- a/plugins/catalog-backend/migrationsv2/20201123205611_relations_table_uniq.js
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright 2020 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.
- */
-
-// @ts-check
-
-/**
- * @param {import('knex').Knex} knex
- */
-exports.up = async function up(knex) {
- if (knex.client.config.client === 'sqlite3') {
- // sqlite doesn't support dropPrimary so we recreate it properly instead
- await knex.schema.dropTable('entities_relations');
- await knex.schema.createTable('entities_relations', table => {
- table.comment('All relations between entities in the catalog');
- table
- .uuid('originating_entity_id')
- .references('id')
- .inTable('entities')
- .onDelete('CASCADE')
- .notNullable()
- .comment('The entity that provided the relation');
- table
- .string('source_full_name')
- .notNullable()
- .comment('The full name of the source entity of the relation');
- table
- .string('type')
- .notNullable()
- .comment('The type of the relation between the entities');
- table
- .string('target_full_name')
- .notNullable()
- .comment('The full name of the target entity of the relation');
- table.index('source_full_name', 'source_full_name_idx');
- });
- } else {
- await knex.schema.alterTable('entities_relations', table => {
- table.dropPrimary();
- table.index('source_full_name', 'source_full_name_idx');
- });
- }
-};
-
-/**
- * @param {import('knex').Knex} knex
- */
-exports.down = async function down(knex) {
- if (knex.client.config.client === 'sqlite3') {
- await knex.schema.dropTable('entities_relations');
- await knex.schema.createTable('entities_relations', table => {
- table.comment('All relations between entities in the catalog');
- table
- .uuid('originating_entity_id')
- .references('id')
- .inTable('entities')
- .onDelete('CASCADE')
- .notNullable()
- .comment('The entity that provided the relation');
- table
- .string('source_full_name')
- .notNullable()
- .comment('The full name of the source entity of the relation');
- table
- .string('type')
- .notNullable()
- .comment('The type of the relation between the entities');
- table
- .string('target_full_name')
- .notNullable()
- .comment('The full name of the target entity of the relation');
-
- table.primary(['source_full_name', 'type', 'target_full_name']);
- });
- } else {
- await knex.schema.alterTable('entities_relations', table => {
- table.dropIndex([], 'source_full_name_idx');
- table.primary(['source_full_name', 'type', 'target_full_name']);
- });
- }
-};
diff --git a/plugins/catalog-backend/migrationsv2/20201210185851_fk_index.js b/plugins/catalog-backend/migrationsv2/20201210185851_fk_index.js
deleted file mode 100644
index abb26cd5fc..0000000000
--- a/plugins/catalog-backend/migrationsv2/20201210185851_fk_index.js
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright 2020 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.
- */
-
-// @ts-check
-
-/**
- * @param {import('knex').Knex} knex
- */
-exports.up = async function up(knex) {
- if (knex.client.config.client !== 'sqlite3') {
- await knex.schema.alterTable('entities_relations', table => {
- table.index('originating_entity_id', 'originating_entity_id_idx');
- });
- await knex.schema.alterTable('entities_search', table => {
- table.index('entity_id', 'entity_id_idx');
- });
- }
-};
-
-/**
- * @param {import('knex').Knex} knex
- */
-exports.down = async function down(knex) {
- if (knex.client.config.client !== 'sqlite3') {
- await knex.schema.alterTable('entities_relations', table => {
- table.dropIndex([], 'originating_entity_id_idx');
- });
- await knex.schema.alterTable('entities_relations', table => {
- table.dropIndex([], 'entity_id_idx');
- });
- }
-};
diff --git a/plugins/catalog-backend/migrationsv2/20201230103504_update_log_varchar.js b/plugins/catalog-backend/migrationsv2/20201230103504_update_log_varchar.js
deleted file mode 100644
index d924b0414a..0000000000
--- a/plugins/catalog-backend/migrationsv2/20201230103504_update_log_varchar.js
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright 2020 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.
- */
-
-// @ts-check
-
-/**
- * @param {import('knex').Knex} knex
- */
-exports.up = async function up(knex) {
- if (knex.client.config.client !== 'sqlite3') {
- // We actually just want to widen columns, but can't do that while a
- // view is dependent on them - so we just reconstruct it exactly as it was
- await knex.schema
- .raw('DROP VIEW location_update_log_latest;')
- .alterTable('location_update_log', table => {
- table.text('message').alter();
- table.text('entity_name').nullable().alter();
- }).raw(`
- CREATE VIEW location_update_log_latest AS
- SELECT t1.* FROM location_update_log t1
- JOIN
- (
- SELECT location_id, MAX(id) AS MAXID
- FROM location_update_log
- GROUP BY location_id
- ) t2
- ON t1.location_id = t2.location_id
- AND t1.id = t2.MAXID
- GROUP BY t1.location_id, t1.id
- ORDER BY created_at DESC;
- `);
- }
-};
-
-/**
- * @param {import('knex').Knex} knex
- */
-exports.down = async function down(knex) {
- if (knex.client.config.client !== 'sqlite3') {
- await knex.schema
- .raw('DROP VIEW location_update_log_latest;')
- .alterTable('location_update_log', table => {
- table.string('message').alter();
- table.string('entity_name').nullable().alter();
- }).raw(`
- CREATE VIEW location_update_log_latest AS
- SELECT t1.* FROM location_update_log t1
- JOIN
- (
- SELECT location_id, MAX(id) AS MAXID
- FROM location_update_log
- GROUP BY location_id
- ) t2
- ON t1.location_id = t2.location_id
- AND t1.id = t2.MAXID
- GROUP BY t1.location_id, t1.id
- ORDER BY created_at DESC;
- `);
- }
-};
diff --git a/plugins/catalog-backend/migrationsv2/20210209121210_locations_fk_index.js b/plugins/catalog-backend/migrationsv2/20210209121210_locations_fk_index.js
deleted file mode 100644
index ccfb1faffb..0000000000
--- a/plugins/catalog-backend/migrationsv2/20210209121210_locations_fk_index.js
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright 2020 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.
- */
-
-// @ts-check
-
-/**
- * @param {import('knex').Knex} knex
- */
-exports.up = async function up(knex) {
- if (knex.client.config.client !== 'sqlite3') {
- await knex.schema.alterTable('entities', table => {
- table.index('location_id', 'entity_location_id_idx');
- });
- await knex.schema.alterTable('location_update_log', table => {
- table.index('location_id', 'update_log_location_id_idx');
- });
- }
-};
-
-/**
- * @param {import('knex').Knex} knex
- */
-exports.down = async function down(knex) {
- if (knex.client.config.client !== 'sqlite3') {
- await knex.schema.alterTable('entities', table => {
- table.dropIndex([], 'entity_location_id_idx');
- });
- await knex.schema.alterTable('location_update_log', table => {
- table.dropIndex([], 'update_log_location_id_idx');
- });
- }
-};
diff --git a/plugins/catalog-backend/package.json b/plugins/catalog-backend/package.json
index a1238d25b6..8e9f54504e 100644
--- a/plugins/catalog-backend/package.json
+++ b/plugins/catalog-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-catalog-backend",
- "version": "0.10.2",
+ "version": "0.10.3",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -29,16 +29,14 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@azure/msal-node": "^1.0.0-beta.3",
- "@backstage/backend-common": "^0.8.2",
+ "@backstage/backend-common": "^0.8.3",
"@backstage/catalog-client": "^0.3.13",
- "@backstage/catalog-model": "^0.8.2",
+ "@backstage/catalog-model": "^0.8.3",
"@backstage/config": "^0.1.5",
"@backstage/errors": "^0.1.1",
"@backstage/integration": "^0.5.6",
- "@backstage/plugin-search-backend-node": "^0.2.0",
+ "@backstage/plugin-search-backend-node": "^0.2.1",
"@backstage/search-common": "^0.1.2",
- "@microsoft/microsoft-graph-types": "^1.25.0",
"@octokit/graphql": "^4.5.8",
"@types/express": "^4.17.6",
"@types/ldapjs": "^1.0.9",
@@ -65,8 +63,8 @@
"yup": "^0.29.3"
},
"devDependencies": {
- "@backstage/backend-test-utils": "^0.1.2",
- "@backstage/cli": "^0.7.0",
+ "@backstage/backend-test-utils": "^0.1.3",
+ "@backstage/cli": "^0.7.1",
"@backstage/test-utils": "^0.1.13",
"@types/core-js": "^2.5.4",
"@types/git-url-parse": "^9.0.0",
diff --git a/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.test.ts b/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.test.ts
index a81655c5ea..7c711d92e2 100644
--- a/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.test.ts
+++ b/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.ts b/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.ts
index 9eff680762..69b8b500d0 100644
--- a/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.ts
+++ b/plugins/catalog-backend/src/catalog/DatabaseEntitiesCatalog.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/catalog/DatabaseLocationsCatalog.test.ts b/plugins/catalog-backend/src/catalog/DatabaseLocationsCatalog.test.ts
index 958e864a8e..8bd8e86b8e 100644
--- a/plugins/catalog-backend/src/catalog/DatabaseLocationsCatalog.test.ts
+++ b/plugins/catalog-backend/src/catalog/DatabaseLocationsCatalog.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/catalog/DatabaseLocationsCatalog.ts b/plugins/catalog-backend/src/catalog/DatabaseLocationsCatalog.ts
index 91245c0789..fff34d1d78 100644
--- a/plugins/catalog-backend/src/catalog/DatabaseLocationsCatalog.ts
+++ b/plugins/catalog-backend/src/catalog/DatabaseLocationsCatalog.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/catalog/index.ts b/plugins/catalog-backend/src/catalog/index.ts
index ce429327a0..bc33031d67 100644
--- a/plugins/catalog-backend/src/catalog/index.ts
+++ b/plugins/catalog-backend/src/catalog/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/catalog/types.ts b/plugins/catalog-backend/src/catalog/types.ts
index 51f66b3a13..2c08482a96 100644
--- a/plugins/catalog-backend/src/catalog/types.ts
+++ b/plugins/catalog-backend/src/catalog/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/database/CommonDatabase.test.ts b/plugins/catalog-backend/src/database/CommonDatabase.test.ts
index 27da003791..2dc3d91465 100644
--- a/plugins/catalog-backend/src/database/CommonDatabase.test.ts
+++ b/plugins/catalog-backend/src/database/CommonDatabase.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/database/CommonDatabase.ts b/plugins/catalog-backend/src/database/CommonDatabase.ts
index 5606e50ae7..b4f76d5cbc 100644
--- a/plugins/catalog-backend/src/database/CommonDatabase.ts
+++ b/plugins/catalog-backend/src/database/CommonDatabase.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/database/DatabaseManager.ts b/plugins/catalog-backend/src/database/DatabaseManager.ts
index 106876af57..2e43290fb5 100644
--- a/plugins/catalog-backend/src/database/DatabaseManager.ts
+++ b/plugins/catalog-backend/src/database/DatabaseManager.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/database/index.ts b/plugins/catalog-backend/src/database/index.ts
index edc8c56ac2..1a07f3825f 100644
--- a/plugins/catalog-backend/src/database/index.ts
+++ b/plugins/catalog-backend/src/database/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/database/search.test.ts b/plugins/catalog-backend/src/database/search.test.ts
index 656da8b6f5..c060553bf8 100644
--- a/plugins/catalog-backend/src/database/search.test.ts
+++ b/plugins/catalog-backend/src/database/search.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/database/search.ts b/plugins/catalog-backend/src/database/search.ts
index 67b6d14b4f..73bf02c1f9 100644
--- a/plugins/catalog-backend/src/database/search.ts
+++ b/plugins/catalog-backend/src/database/search.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/database/types.ts b/plugins/catalog-backend/src/database/types.ts
index 797402f652..3a3bbb7f1e 100644
--- a/plugins/catalog-backend/src/database/types.ts
+++ b/plugins/catalog-backend/src/database/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/index.ts b/plugins/catalog-backend/src/index.ts
index 058ca728a1..5f9d6e524c 100644
--- a/plugins/catalog-backend/src/index.ts
+++ b/plugins/catalog-backend/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/CatalogRules.test.ts b/plugins/catalog-backend/src/ingestion/CatalogRules.test.ts
index bb5c025c28..82a548a7f1 100644
--- a/plugins/catalog-backend/src/ingestion/CatalogRules.test.ts
+++ b/plugins/catalog-backend/src/ingestion/CatalogRules.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/CatalogRules.ts b/plugins/catalog-backend/src/ingestion/CatalogRules.ts
index b112e32ef5..97ee2a942b 100644
--- a/plugins/catalog-backend/src/ingestion/CatalogRules.ts
+++ b/plugins/catalog-backend/src/ingestion/CatalogRules.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/HigherOrderOperations.test.ts b/plugins/catalog-backend/src/ingestion/HigherOrderOperations.test.ts
index 9e99cc282c..e023e3ae9e 100644
--- a/plugins/catalog-backend/src/ingestion/HigherOrderOperations.test.ts
+++ b/plugins/catalog-backend/src/ingestion/HigherOrderOperations.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/HigherOrderOperations.ts b/plugins/catalog-backend/src/ingestion/HigherOrderOperations.ts
index 9d167603d0..b12fe7fb41 100644
--- a/plugins/catalog-backend/src/ingestion/HigherOrderOperations.ts
+++ b/plugins/catalog-backend/src/ingestion/HigherOrderOperations.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/LocationAnalyzer.ts b/plugins/catalog-backend/src/ingestion/LocationAnalyzer.ts
index cacdf38ffd..b84dff7de8 100644
--- a/plugins/catalog-backend/src/ingestion/LocationAnalyzer.ts
+++ b/plugins/catalog-backend/src/ingestion/LocationAnalyzer.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/LocationReaders.ts b/plugins/catalog-backend/src/ingestion/LocationReaders.ts
index a7b00c2a4f..624c7aaa61 100644
--- a/plugins/catalog-backend/src/ingestion/LocationReaders.ts
+++ b/plugins/catalog-backend/src/ingestion/LocationReaders.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/index.ts b/plugins/catalog-backend/src/ingestion/index.ts
index fad4ae34f7..eace66b220 100644
--- a/plugins/catalog-backend/src/ingestion/index.ts
+++ b/plugins/catalog-backend/src/ingestion/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/AnnotateLocationEntityProcessor.test.ts b/plugins/catalog-backend/src/ingestion/processors/AnnotateLocationEntityProcessor.test.ts
index 9c543cdcd4..41d44ab157 100644
--- a/plugins/catalog-backend/src/ingestion/processors/AnnotateLocationEntityProcessor.test.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/AnnotateLocationEntityProcessor.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/AnnotateLocationEntityProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/AnnotateLocationEntityProcessor.ts
index f892055a6a..5a0c8b8418 100644
--- a/plugins/catalog-backend/src/ingestion/processors/AnnotateLocationEntityProcessor.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/AnnotateLocationEntityProcessor.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/AnnotateScmSlugEntityProcessor.test.ts b/plugins/catalog-backend/src/ingestion/processors/AnnotateScmSlugEntityProcessor.test.ts
index 24a5687e0d..5bdf4a4b83 100644
--- a/plugins/catalog-backend/src/ingestion/processors/AnnotateScmSlugEntityProcessor.test.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/AnnotateScmSlugEntityProcessor.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/AnnotateScmSlugEntityProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/AnnotateScmSlugEntityProcessor.ts
index 312693cc07..483472da4b 100644
--- a/plugins/catalog-backend/src/ingestion/processors/AnnotateScmSlugEntityProcessor.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/AnnotateScmSlugEntityProcessor.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/AwsOrganizationCloudAccountProcessor.test.ts b/plugins/catalog-backend/src/ingestion/processors/AwsOrganizationCloudAccountProcessor.test.ts
index 292564dc4f..a3b1dfbfcb 100644
--- a/plugins/catalog-backend/src/ingestion/processors/AwsOrganizationCloudAccountProcessor.test.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/AwsOrganizationCloudAccountProcessor.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/AwsOrganizationCloudAccountProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/AwsOrganizationCloudAccountProcessor.ts
index 146de1d1f5..beb179a0d2 100644
--- a/plugins/catalog-backend/src/ingestion/processors/AwsOrganizationCloudAccountProcessor.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/AwsOrganizationCloudAccountProcessor.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/BitbucketDiscoveryProcessor.test.ts b/plugins/catalog-backend/src/ingestion/processors/BitbucketDiscoveryProcessor.test.ts
index 1f01b77f42..d33ea7ab26 100644
--- a/plugins/catalog-backend/src/ingestion/processors/BitbucketDiscoveryProcessor.test.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/BitbucketDiscoveryProcessor.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/BitbucketDiscoveryProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/BitbucketDiscoveryProcessor.ts
index 399adfbc14..877cd08a3e 100644
--- a/plugins/catalog-backend/src/ingestion/processors/BitbucketDiscoveryProcessor.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/BitbucketDiscoveryProcessor.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/BuiltinKindsEntityProcessor.test.ts b/plugins/catalog-backend/src/ingestion/processors/BuiltinKindsEntityProcessor.test.ts
index 3a8c061892..bdc6d463c2 100644
--- a/plugins/catalog-backend/src/ingestion/processors/BuiltinKindsEntityProcessor.test.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/BuiltinKindsEntityProcessor.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/BuiltinKindsEntityProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/BuiltinKindsEntityProcessor.ts
index f9acae6b4f..b8805ab9ba 100644
--- a/plugins/catalog-backend/src/ingestion/processors/BuiltinKindsEntityProcessor.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/BuiltinKindsEntityProcessor.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.test.ts b/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.test.ts
index d268606205..2f52a1ddd9 100644
--- a/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.test.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.ts
index e8ce75e7d9..a70aa6d1a9 100644
--- a/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/CodeOwnersProcessor.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/FileReaderProcessor.test.ts b/plugins/catalog-backend/src/ingestion/processors/FileReaderProcessor.test.ts
index d51f22f538..41c7e4f732 100644
--- a/plugins/catalog-backend/src/ingestion/processors/FileReaderProcessor.test.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/FileReaderProcessor.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/FileReaderProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/FileReaderProcessor.ts
index 8c4c522abb..5f6e739bdd 100644
--- a/plugins/catalog-backend/src/ingestion/processors/FileReaderProcessor.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/FileReaderProcessor.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/GithubDiscoveryProcessor.test.ts b/plugins/catalog-backend/src/ingestion/processors/GithubDiscoveryProcessor.test.ts
index 30778fe7fd..467e9c1ea2 100644
--- a/plugins/catalog-backend/src/ingestion/processors/GithubDiscoveryProcessor.test.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/GithubDiscoveryProcessor.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/GithubDiscoveryProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/GithubDiscoveryProcessor.ts
index e187c49196..2219e02406 100644
--- a/plugins/catalog-backend/src/ingestion/processors/GithubDiscoveryProcessor.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/GithubDiscoveryProcessor.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/GithubOrgReaderProcessor.test.ts b/plugins/catalog-backend/src/ingestion/processors/GithubOrgReaderProcessor.test.ts
index dc6a2e5ec2..8894482484 100644
--- a/plugins/catalog-backend/src/ingestion/processors/GithubOrgReaderProcessor.test.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/GithubOrgReaderProcessor.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/GithubOrgReaderProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/GithubOrgReaderProcessor.ts
index 6a2b4bd8b1..364042f74d 100644
--- a/plugins/catalog-backend/src/ingestion/processors/GithubOrgReaderProcessor.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/GithubOrgReaderProcessor.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/LdapOrgReaderProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/LdapOrgReaderProcessor.ts
index 474e813590..ab13e1f19f 100644
--- a/plugins/catalog-backend/src/ingestion/processors/LdapOrgReaderProcessor.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/LdapOrgReaderProcessor.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/LocationEntityProcessor.test.ts b/plugins/catalog-backend/src/ingestion/processors/LocationEntityProcessor.test.ts
index 476510d757..b018542fcc 100644
--- a/plugins/catalog-backend/src/ingestion/processors/LocationEntityProcessor.test.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/LocationEntityProcessor.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/LocationEntityProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/LocationEntityProcessor.ts
index f4c8c82957..964a769e55 100644
--- a/plugins/catalog-backend/src/ingestion/processors/LocationEntityProcessor.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/LocationEntityProcessor.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.test.ts b/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.test.ts
index 9884fa1927..0254e854e5 100644
--- a/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.test.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.ts
index b71e5c1cbb..8c06ef419e 100644
--- a/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/PlaceholderProcessor.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/StaticLocationProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/StaticLocationProcessor.ts
index f34b672183..425ad6e0fe 100644
--- a/plugins/catalog-backend/src/ingestion/processors/StaticLocationProcessor.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/StaticLocationProcessor.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/UrlReaderProcessor.test.ts b/plugins/catalog-backend/src/ingestion/processors/UrlReaderProcessor.test.ts
index db731b5b17..6521a2b6bf 100644
--- a/plugins/catalog-backend/src/ingestion/processors/UrlReaderProcessor.test.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/UrlReaderProcessor.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/UrlReaderProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/UrlReaderProcessor.ts
index b70ef2877d..aff126414f 100644
--- a/plugins/catalog-backend/src/ingestion/processors/UrlReaderProcessor.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/UrlReaderProcessor.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/awsOrganization/config.test.ts b/plugins/catalog-backend/src/ingestion/processors/awsOrganization/config.test.ts
index 09d95b479d..7e0dc58559 100644
--- a/plugins/catalog-backend/src/ingestion/processors/awsOrganization/config.test.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/awsOrganization/config.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/awsOrganization/config.ts b/plugins/catalog-backend/src/ingestion/processors/awsOrganization/config.ts
index 90206f504c..e6096b932b 100644
--- a/plugins/catalog-backend/src/ingestion/processors/awsOrganization/config.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/awsOrganization/config.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/bitbucket/BitbucketRepositoryParser.test.ts b/plugins/catalog-backend/src/ingestion/processors/bitbucket/BitbucketRepositoryParser.test.ts
index 3d42d9c4ba..bc6c5a540f 100644
--- a/plugins/catalog-backend/src/ingestion/processors/bitbucket/BitbucketRepositoryParser.test.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/bitbucket/BitbucketRepositoryParser.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/bitbucket/BitbucketRepositoryParser.ts b/plugins/catalog-backend/src/ingestion/processors/bitbucket/BitbucketRepositoryParser.ts
index 9ad038f9ec..6f33646c54 100644
--- a/plugins/catalog-backend/src/ingestion/processors/bitbucket/BitbucketRepositoryParser.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/bitbucket/BitbucketRepositoryParser.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/bitbucket/client.ts b/plugins/catalog-backend/src/ingestion/processors/bitbucket/client.ts
index c3c27aedfc..5a1419dc27 100644
--- a/plugins/catalog-backend/src/ingestion/processors/bitbucket/client.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/bitbucket/client.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/bitbucket/index.ts b/plugins/catalog-backend/src/ingestion/processors/bitbucket/index.ts
index 06effffcd2..7adab7746f 100644
--- a/plugins/catalog-backend/src/ingestion/processors/bitbucket/index.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/bitbucket/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/bitbucket/types.ts b/plugins/catalog-backend/src/ingestion/processors/bitbucket/types.ts
index 32dc28eb98..b273d26874 100644
--- a/plugins/catalog-backend/src/ingestion/processors/bitbucket/types.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/bitbucket/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/codeowners/index.ts b/plugins/catalog-backend/src/ingestion/processors/codeowners/index.ts
index ccbb437874..90116b115c 100644
--- a/plugins/catalog-backend/src/ingestion/processors/codeowners/index.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/codeowners/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/codeowners/read.test.ts b/plugins/catalog-backend/src/ingestion/processors/codeowners/read.test.ts
index 7427fde3d0..49189b20de 100644
--- a/plugins/catalog-backend/src/ingestion/processors/codeowners/read.test.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/codeowners/read.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/codeowners/read.ts b/plugins/catalog-backend/src/ingestion/processors/codeowners/read.ts
index 62899aeaf4..ae4255555a 100644
--- a/plugins/catalog-backend/src/ingestion/processors/codeowners/read.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/codeowners/read.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/codeowners/resolve.test.ts b/plugins/catalog-backend/src/ingestion/processors/codeowners/resolve.test.ts
index 8023e1af27..ccf4493dc6 100644
--- a/plugins/catalog-backend/src/ingestion/processors/codeowners/resolve.test.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/codeowners/resolve.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/codeowners/resolve.ts b/plugins/catalog-backend/src/ingestion/processors/codeowners/resolve.ts
index 1c059ea48e..886f3160b3 100644
--- a/plugins/catalog-backend/src/ingestion/processors/codeowners/resolve.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/codeowners/resolve.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/codeowners/scm.ts b/plugins/catalog-backend/src/ingestion/processors/codeowners/scm.ts
index 50559709b1..e20ac48989 100644
--- a/plugins/catalog-backend/src/ingestion/processors/codeowners/scm.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/codeowners/scm.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/github/config.test.ts b/plugins/catalog-backend/src/ingestion/processors/github/config.test.ts
index 14f3caa42c..2eb033a8fe 100644
--- a/plugins/catalog-backend/src/ingestion/processors/github/config.test.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/github/config.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/github/config.ts b/plugins/catalog-backend/src/ingestion/processors/github/config.ts
index 88f2f96218..bd71ab8189 100644
--- a/plugins/catalog-backend/src/ingestion/processors/github/config.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/github/config.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/github/github.test.ts b/plugins/catalog-backend/src/ingestion/processors/github/github.test.ts
index c5094230f8..5ef5ae5faf 100644
--- a/plugins/catalog-backend/src/ingestion/processors/github/github.test.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/github/github.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/github/github.ts b/plugins/catalog-backend/src/ingestion/processors/github/github.ts
index 2cc97d2ec5..ab17698e98 100644
--- a/plugins/catalog-backend/src/ingestion/processors/github/github.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/github/github.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/github/index.ts b/plugins/catalog-backend/src/ingestion/processors/github/index.ts
index 2063e8c1b2..2d75813b6d 100644
--- a/plugins/catalog-backend/src/ingestion/processors/github/index.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/github/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/index.ts b/plugins/catalog-backend/src/ingestion/processors/index.ts
index a92cc9ed3b..5abe117fd3 100644
--- a/plugins/catalog-backend/src/ingestion/processors/index.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -27,7 +27,6 @@ export { GithubDiscoveryProcessor } from './GithubDiscoveryProcessor';
export { GithubOrgReaderProcessor } from './GithubOrgReaderProcessor';
export { LdapOrgReaderProcessor } from './LdapOrgReaderProcessor';
export { LocationEntityProcessor } from './LocationEntityProcessor';
-export { MicrosoftGraphOrgReaderProcessor } from './MicrosoftGraphOrgReaderProcessor';
export { PlaceholderProcessor } from './PlaceholderProcessor';
export type { PlaceholderResolver } from './PlaceholderProcessor';
export { StaticLocationProcessor } from './StaticLocationProcessor';
diff --git a/plugins/catalog-backend/src/ingestion/processors/ldap/client.ts b/plugins/catalog-backend/src/ingestion/processors/ldap/client.ts
index 0557f21003..a99fc3846e 100644
--- a/plugins/catalog-backend/src/ingestion/processors/ldap/client.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/ldap/client.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/ldap/config.test.ts b/plugins/catalog-backend/src/ingestion/processors/ldap/config.test.ts
index 755c173d19..9fb536a87f 100644
--- a/plugins/catalog-backend/src/ingestion/processors/ldap/config.test.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/ldap/config.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/ldap/config.ts b/plugins/catalog-backend/src/ingestion/processors/ldap/config.ts
index 417657b244..70aa729e84 100644
--- a/plugins/catalog-backend/src/ingestion/processors/ldap/config.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/ldap/config.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/ldap/constants.ts b/plugins/catalog-backend/src/ingestion/processors/ldap/constants.ts
index 507da37b39..73df5d6de8 100644
--- a/plugins/catalog-backend/src/ingestion/processors/ldap/constants.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/ldap/constants.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/ldap/index.ts b/plugins/catalog-backend/src/ingestion/processors/ldap/index.ts
index 2f8dae7486..194a75ac60 100644
--- a/plugins/catalog-backend/src/ingestion/processors/ldap/index.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/ldap/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/ldap/read.test.ts b/plugins/catalog-backend/src/ingestion/processors/ldap/read.test.ts
index e9a0410727..e043a644ce 100644
--- a/plugins/catalog-backend/src/ingestion/processors/ldap/read.test.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/ldap/read.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/ldap/read.ts b/plugins/catalog-backend/src/ingestion/processors/ldap/read.ts
index 68542b5b30..fb740e5e0a 100644
--- a/plugins/catalog-backend/src/ingestion/processors/ldap/read.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/ldap/read.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/ldap/util.test.ts b/plugins/catalog-backend/src/ingestion/processors/ldap/util.test.ts
index 63c7253411..5978012875 100644
--- a/plugins/catalog-backend/src/ingestion/processors/ldap/util.test.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/ldap/util.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/ldap/util.ts b/plugins/catalog-backend/src/ingestion/processors/ldap/util.ts
index f5751b1e9f..74dd84cdc9 100644
--- a/plugins/catalog-backend/src/ingestion/processors/ldap/util.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/ldap/util.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/ldap/vendors.ts b/plugins/catalog-backend/src/ingestion/processors/ldap/vendors.ts
index a7ae9fc65f..3341497ca8 100644
--- a/plugins/catalog-backend/src/ingestion/processors/ldap/vendors.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/ldap/vendors.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/results.ts b/plugins/catalog-backend/src/ingestion/processors/results.ts
index da2089adc1..5b6f07bae4 100644
--- a/plugins/catalog-backend/src/ingestion/processors/results.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/results.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/types.ts b/plugins/catalog-backend/src/ingestion/processors/types.ts
index f7e11d5616..2e2418c8f1 100644
--- a/plugins/catalog-backend/src/ingestion/processors/types.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/util/org.test.ts b/plugins/catalog-backend/src/ingestion/processors/util/org.test.ts
index e264847478..254f511c4f 100644
--- a/plugins/catalog-backend/src/ingestion/processors/util/org.test.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/util/org.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/util/org.ts b/plugins/catalog-backend/src/ingestion/processors/util/org.ts
index 660c5cd7d3..bc90362233 100644
--- a/plugins/catalog-backend/src/ingestion/processors/util/org.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/util/org.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/util/parse.test.ts b/plugins/catalog-backend/src/ingestion/processors/util/parse.test.ts
index 1d8e139fb3..a42d160725 100644
--- a/plugins/catalog-backend/src/ingestion/processors/util/parse.test.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/util/parse.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/processors/util/parse.ts b/plugins/catalog-backend/src/ingestion/processors/util/parse.ts
index 0d70d1b35c..e93b2a0200 100644
--- a/plugins/catalog-backend/src/ingestion/processors/util/parse.ts
+++ b/plugins/catalog-backend/src/ingestion/processors/util/parse.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/ingestion/types.ts b/plugins/catalog-backend/src/ingestion/types.ts
index c8d642b6b5..297234b3b4 100644
--- a/plugins/catalog-backend/src/ingestion/types.ts
+++ b/plugins/catalog-backend/src/ingestion/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/next/ConfigLocationEntityProvider.test.ts b/plugins/catalog-backend/src/next/ConfigLocationEntityProvider.test.ts
index 226e5c06a8..37d549c7f2 100644
--- a/plugins/catalog-backend/src/next/ConfigLocationEntityProvider.test.ts
+++ b/plugins/catalog-backend/src/next/ConfigLocationEntityProvider.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/next/ConfigLocationEntityProvider.ts b/plugins/catalog-backend/src/next/ConfigLocationEntityProvider.ts
index bccbd0ba41..9218a9c0e1 100644
--- a/plugins/catalog-backend/src/next/ConfigLocationEntityProvider.ts
+++ b/plugins/catalog-backend/src/next/ConfigLocationEntityProvider.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/next/Context/BackgroundContext.ts b/plugins/catalog-backend/src/next/Context/BackgroundContext.ts
index 72b9a3b1ed..c41fa8e3c5 100644
--- a/plugins/catalog-backend/src/next/Context/BackgroundContext.ts
+++ b/plugins/catalog-backend/src/next/Context/BackgroundContext.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/next/Context/ContextWithValue.ts b/plugins/catalog-backend/src/next/Context/ContextWithValue.ts
index e8f94fd922..cc88c03679 100644
--- a/plugins/catalog-backend/src/next/Context/ContextWithValue.ts
+++ b/plugins/catalog-backend/src/next/Context/ContextWithValue.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/next/Context/TransactionValue.test.ts b/plugins/catalog-backend/src/next/Context/TransactionValue.test.ts
index 97e554d0f6..20165eff2f 100644
--- a/plugins/catalog-backend/src/next/Context/TransactionValue.test.ts
+++ b/plugins/catalog-backend/src/next/Context/TransactionValue.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/next/Context/TransactionValue.ts b/plugins/catalog-backend/src/next/Context/TransactionValue.ts
index 6959d13a18..af069c6d8e 100644
--- a/plugins/catalog-backend/src/next/Context/TransactionValue.ts
+++ b/plugins/catalog-backend/src/next/Context/TransactionValue.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/next/Context/index.ts b/plugins/catalog-backend/src/next/Context/index.ts
index 61dd4a2958..822edba478 100644
--- a/plugins/catalog-backend/src/next/Context/index.ts
+++ b/plugins/catalog-backend/src/next/Context/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/next/Context/types.ts b/plugins/catalog-backend/src/next/Context/types.ts
index 0973b83515..062bc884e9 100644
--- a/plugins/catalog-backend/src/next/Context/types.ts
+++ b/plugins/catalog-backend/src/next/Context/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/next/DefaultCatalogProcessingEngine.test.ts b/plugins/catalog-backend/src/next/DefaultCatalogProcessingEngine.test.ts
index 5ea9de2b5b..b87635db85 100644
--- a/plugins/catalog-backend/src/next/DefaultCatalogProcessingEngine.test.ts
+++ b/plugins/catalog-backend/src/next/DefaultCatalogProcessingEngine.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/next/DefaultCatalogProcessingEngine.ts b/plugins/catalog-backend/src/next/DefaultCatalogProcessingEngine.ts
index 5de012e936..a504de0bf3 100644
--- a/plugins/catalog-backend/src/next/DefaultCatalogProcessingEngine.ts
+++ b/plugins/catalog-backend/src/next/DefaultCatalogProcessingEngine.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -21,9 +21,10 @@ import {
} from '@backstage/catalog-model';
import { serializeError } from '@backstage/errors';
import { Logger } from 'winston';
-import { ProcessingDatabase } from './database/types';
+import { ProcessingDatabase, RefreshStateItem } from './database/types';
import { CatalogProcessingOrchestrator } from './processing/types';
import { Stitcher } from './stitching/Stitcher';
+import { startTaskPipeline } from './TaskPipeline';
import {
CatalogProcessingEngine,
EntityProvider,
@@ -80,7 +81,7 @@ class Connection implements EntityProviderConnection {
}
export class DefaultCatalogProcessingEngine implements CatalogProcessingEngine {
- private running = false;
+ private stopFunc?: () => void;
constructor(
private readonly logger: Logger,
@@ -99,106 +100,98 @@ export class DefaultCatalogProcessingEngine implements CatalogProcessingEngine {
}),
);
}
- this.running = true;
- this.run();
- }
- private async run() {
- while (this.running) {
- try {
- // TODO: We want to disconnect the queue popping and message processing
- // so that if the queue popping fails we exponentially back off in order to give the DB room to sort itself out.
- await this.process();
- } catch (e) {
- this.logger.warn('Processing failed with:', e);
- // TODO: this can be a little smarter as mentioned in the above comment.
- // But for now, if something fails, wait a brief time to pick up the next message.
- await this.wait();
- }
- }
- }
-
- private async process() {
- const { items } = await this.processingDatabase.transaction(async tx => {
- return this.processingDatabase.getProcessableEntities(tx, {
- processBatchSize: 1,
- });
- });
-
- if (!items.length) {
- // No items to process, wait and try again.
- await this.wait();
- return;
+ if (this.stopFunc) {
+ throw new Error('Processing engine is already started');
}
- // TODO: replace Promise.all with something more sophisticated for parallel processing.
- await Promise.all(
- items.map(async item => {
- const { id, state, unprocessedEntity, entityRef } = item;
- const result = await this.orchestrator.process({
- entity: unprocessedEntity,
- state,
- });
-
- for (const error of result.errors) {
- // TODO(freben): Try to extract the location out of the unprocessed
- // entity and add as meta to the log lines
- this.logger.warn(error.message, {
- entity: entityRef,
- });
+ this.stopFunc = startTaskPipeline({
+ lowWatermark: 5,
+ highWatermark: 10,
+ loadTasks: async count => {
+ try {
+ const { items } = await this.processingDatabase.transaction(
+ async tx => {
+ return this.processingDatabase.getProcessableEntities(tx, {
+ processBatchSize: count,
+ });
+ },
+ );
+ return items;
+ } catch (error) {
+ this.logger.warn('Failed to load processing items', error);
+ return [];
}
- const errorsString = JSON.stringify(
- result.errors.map(e => serializeError(e)),
- );
+ },
+ processTask: async item => {
+ try {
+ const { id, state, unprocessedEntity, entityRef } = item;
+ const result = await this.orchestrator.process({
+ entity: unprocessedEntity,
+ state,
+ });
- // If the result was marked as not OK, it signals that some part of the
- // processing pipeline threw an exception. This can happen both as part of
- // non-catastrophic things such as due to validation errors, as well as if
- // something fatal happens inside the processing for other reasons. In any
- // case, this means we can't trust that anything in the output is okay. So
- // just store the errors and trigger a stich so that they become visible to
- // the outside.
- if (!result.ok) {
+ for (const error of result.errors) {
+ // TODO(freben): Try to extract the location out of the unprocessed
+ // entity and add as meta to the log lines
+ this.logger.warn(error.message, {
+ entity: entityRef,
+ });
+ }
+ const errorsString = JSON.stringify(
+ result.errors.map(e => serializeError(e)),
+ );
+
+ // If the result was marked as not OK, it signals that some part of the
+ // processing pipeline threw an exception. This can happen both as part of
+ // non-catastrophic things such as due to validation errors, as well as if
+ // something fatal happens inside the processing for other reasons. In any
+ // case, this means we can't trust that anything in the output is okay. So
+ // just store the errors and trigger a stich so that they become visible to
+ // the outside.
+ if (!result.ok) {
+ await this.processingDatabase.transaction(async tx => {
+ await this.processingDatabase.updateProcessedEntityErrors(tx, {
+ id,
+ errors: errorsString,
+ });
+ });
+ await this.stitcher.stitch(
+ new Set([stringifyEntityRef(unprocessedEntity)]),
+ );
+ return;
+ }
+
+ result.completedEntity.metadata.uid = id;
await this.processingDatabase.transaction(async tx => {
- await this.processingDatabase.updateProcessedEntityErrors(tx, {
+ await this.processingDatabase.updateProcessedEntity(tx, {
id,
+ processedEntity: result.completedEntity,
+ state: result.state,
errors: errorsString,
+ relations: result.relations,
+ deferredEntities: result.deferredEntities,
});
});
- await this.stitcher.stitch(
- new Set([stringifyEntityRef(unprocessedEntity)]),
- );
- return;
+
+ const setOfThingsToStitch = new Set([
+ stringifyEntityRef(result.completedEntity),
+ ...result.relations.map(relation =>
+ stringifyEntityRef(relation.source),
+ ),
+ ]);
+ await this.stitcher.stitch(setOfThingsToStitch);
+ } catch (error) {
+ this.logger.warn('Processing failed with:', error);
}
-
- result.completedEntity.metadata.uid = id;
- await this.processingDatabase.transaction(async tx => {
- await this.processingDatabase.updateProcessedEntity(tx, {
- id,
- processedEntity: result.completedEntity,
- state: result.state,
- errors: errorsString,
- relations: result.relations,
- deferredEntities: result.deferredEntities,
- });
- });
-
- const setOfThingsToStitch = new Set([
- stringifyEntityRef(result.completedEntity),
- ...result.relations.map(relation =>
- stringifyEntityRef(relation.source),
- ),
- ]);
- await this.stitcher.stitch(setOfThingsToStitch);
- }),
- );
- }
-
- private async wait() {
- await new Promise(resolve => setTimeout(resolve, 1000));
+ },
+ });
}
async stop() {
- this.running = false;
+ if (this.stopFunc) {
+ this.stopFunc();
+ this.stopFunc = undefined;
+ }
}
}
diff --git a/plugins/catalog-backend/src/next/DefaultLocationService.test.ts b/plugins/catalog-backend/src/next/DefaultLocationService.test.ts
index 2958028c5d..ae2c4e9a20 100644
--- a/plugins/catalog-backend/src/next/DefaultLocationService.test.ts
+++ b/plugins/catalog-backend/src/next/DefaultLocationService.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/next/DefaultLocationService.ts b/plugins/catalog-backend/src/next/DefaultLocationService.ts
index 9cc60682de..ceb51a952e 100644
--- a/plugins/catalog-backend/src/next/DefaultLocationService.ts
+++ b/plugins/catalog-backend/src/next/DefaultLocationService.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/next/DefaultLocationStore.test.ts b/plugins/catalog-backend/src/next/DefaultLocationStore.test.ts
index a989c1f81f..762a585754 100644
--- a/plugins/catalog-backend/src/next/DefaultLocationStore.test.ts
+++ b/plugins/catalog-backend/src/next/DefaultLocationStore.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/next/DefaultLocationStore.ts b/plugins/catalog-backend/src/next/DefaultLocationStore.ts
index 7421b24782..09de77e49f 100644
--- a/plugins/catalog-backend/src/next/DefaultLocationStore.ts
+++ b/plugins/catalog-backend/src/next/DefaultLocationStore.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/next/NextCatalogBuilder.ts b/plugins/catalog-backend/src/next/NextCatalogBuilder.ts
index 7a74576ea7..041f07f4ed 100644
--- a/plugins/catalog-backend/src/next/NextCatalogBuilder.ts
+++ b/plugins/catalog-backend/src/next/NextCatalogBuilder.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -50,7 +50,6 @@ import {
GithubDiscoveryProcessor,
GithubOrgReaderProcessor,
LdapOrgReaderProcessor,
- MicrosoftGraphOrgReaderProcessor,
PlaceholderProcessor,
PlaceholderResolver,
UrlReaderProcessor,
@@ -63,7 +62,11 @@ import {
} from '../ingestion/processors/PlaceholderProcessor';
import { defaultEntityDataParser } from '../ingestion/processors/util/parse';
import { LocationAnalyzer } from '../ingestion/types';
-import { CatalogProcessingEngine, LocationService } from '../next/types';
+import {
+ CatalogProcessingEngine,
+ EntityProvider,
+ LocationService,
+} from '../next/types';
import { ConfigLocationEntityProvider } from './ConfigLocationEntityProvider';
import { DefaultProcessingDatabase } from './database/DefaultProcessingDatabase';
import { DefaultCatalogProcessingEngine } from './DefaultCatalogProcessingEngine';
@@ -105,9 +108,11 @@ export class NextCatalogBuilder {
private entityPoliciesReplace: boolean;
private placeholderResolvers: Record;
private fieldFormatValidators: Partial;
+ private entityProviders: EntityProvider[];
private processors: CatalogProcessor[];
private processorsReplace: boolean;
private parser: CatalogProcessorParser | undefined;
+ private refreshIntervalSeconds = 100;
constructor(env: CatalogEnvironment) {
this.env = env;
@@ -115,6 +120,7 @@ export class NextCatalogBuilder {
this.entityPoliciesReplace = false;
this.placeholderResolvers = {};
this.fieldFormatValidators = {};
+ this.entityProviders = [];
this.processors = [];
this.processorsReplace = false;
this.parser = undefined;
@@ -136,6 +142,16 @@ export class NextCatalogBuilder {
return this;
}
+ /**
+ * Refresh interval determines how often entities should be refreshed.
+ * The default refresh duration is 100, setting this too low will potentially
+ * deplete request quotas to upstream services.
+ */
+ setRefreshIntervalSeconds(seconds: number): NextCatalogBuilder {
+ this.refreshIntervalSeconds = seconds;
+ return this;
+ }
+
/**
* Sets what policies to use for validation of entities between the pre-
* processing and post-processing stages. All such policies must pass for the
@@ -187,6 +203,20 @@ export class NextCatalogBuilder {
return this;
}
+ /**
+ * Adds or replaces entity providers. These are responsible for bootstrapping
+ * the list of entities out of original data sources. For example, there is
+ * one entity source for the config locations, and one for the database
+ * stored locations. If you ingest entities out of a third party system, you
+ * may want to implement that in terms of an entity provider as well.
+ *
+ * @param providers One or more entity providers
+ */
+ addEntityProvider(...providers: EntityProvider[]): NextCatalogBuilder {
+ this.entityProviders.push(...providers);
+ return this;
+ }
+
/**
* Adds entity processors. These are responsible for reading, parsing, and
* processing entities before they are persisted in the catalog.
@@ -246,13 +276,17 @@ export class NextCatalogBuilder {
await dbClient.migrate.latest({
directory: resolvePackagePath(
'@backstage/plugin-catalog-backend',
- 'migrationsv2',
+ 'migrations',
),
});
const db = new CommonDatabase(dbClient, logger);
- const processingDatabase = new DefaultProcessingDatabase(dbClient, logger);
+ const processingDatabase = new DefaultProcessingDatabase({
+ database: dbClient,
+ logger,
+ refreshIntervalSeconds: this.refreshIntervalSeconds,
+ });
const integrations = ScmIntegrations.fromConfig(config);
const orchestrator = new DefaultCatalogProcessingOrchestrator({
processors,
@@ -262,13 +296,18 @@ export class NextCatalogBuilder {
policy,
});
const entitiesCatalog = new NextEntitiesCatalog(dbClient);
+ const stitcher = new Stitcher(dbClient, logger);
const locationStore = new DefaultLocationStore(dbClient);
- const stitcher = new Stitcher(dbClient, logger);
const configLocationProvider = new ConfigLocationEntityProvider(config);
+ const entityProviders = lodash.uniqBy(
+ [...this.entityProviders, locationStore, configLocationProvider],
+ provider => provider.getProviderName(),
+ );
+
const processingEngine = new DefaultCatalogProcessingEngine(
logger,
- [locationStore, configLocationProvider],
+ entityProviders,
processingDatabase,
orchestrator,
stitcher,
@@ -280,6 +319,7 @@ export class NextCatalogBuilder {
locationStore,
orchestrator,
);
+
return {
entitiesCatalog,
locationsCatalog,
@@ -332,7 +372,6 @@ export class NextCatalogBuilder {
GithubDiscoveryProcessor.fromConfig(config, { logger }),
GithubOrgReaderProcessor.fromConfig(config, { logger }),
LdapOrgReaderProcessor.fromConfig(config, { logger }),
- MicrosoftGraphOrgReaderProcessor.fromConfig(config, { logger }),
new UrlReaderProcessor({ reader, logger }),
CodeOwnersProcessor.fromConfig(config, { logger, reader }),
new AnnotateLocationEntityProcessor({ integrations }),
diff --git a/plugins/catalog-backend/src/next/NextEntitiesCatalog.ts b/plugins/catalog-backend/src/next/NextEntitiesCatalog.ts
index 537ea17eef..a7be2aef10 100644
--- a/plugins/catalog-backend/src/next/NextEntitiesCatalog.ts
+++ b/plugins/catalog-backend/src/next/NextEntitiesCatalog.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/next/NextRouter.ts b/plugins/catalog-backend/src/next/NextRouter.ts
index dc1eef74be..eb9e5247ed 100644
--- a/plugins/catalog-backend/src/next/NextRouter.ts
+++ b/plugins/catalog-backend/src/next/NextRouter.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/next/TaskPipeline.test.ts b/plugins/catalog-backend/src/next/TaskPipeline.test.ts
new file mode 100644
index 0000000000..453fdfe914
--- /dev/null
+++ b/plugins/catalog-backend/src/next/TaskPipeline.test.ts
@@ -0,0 +1,121 @@
+/*
+ * Copyright 2021 The Backstage Authors
+ *
+ * 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.
+ */
+
+import { startTaskPipeline } from './TaskPipeline';
+
+function createLimitedLoader(count: number, loadDelay?: number) {
+ const items = new Array(count).fill(0).map((_, index) => index);
+ const loadCounts = new Array();
+ const processedTasks = new Array();
+
+ let resolveDone: (_: {
+ loadCounts: number[];
+ processedTasks: number[];
+ }) => void;
+ const done = new Promise<{ loadCounts: number[]; processedTasks: number[] }>(
+ resolve => {
+ resolveDone = resolve;
+ },
+ );
+
+ const loadTasks = async (loadCount: number) => {
+ if (loadCounts.length < (loadDelay || 0)) {
+ loadCounts.push(0);
+ return [];
+ }
+ const loadedItems = items.splice(0, loadCount);
+ loadCounts.push(loadedItems.length);
+ return loadedItems;
+ };
+ const processTask = async (item: number) => {
+ processedTasks.push(item);
+ await new Promise(resolve => setTimeout(resolve)); // emulate a bit of work
+ if (processedTasks.length === count) {
+ resolveDone({ processedTasks, loadCounts });
+ }
+ };
+
+ return { loadTasks, processTask, done };
+}
+
+describe('startTaskPipeline', () => {
+ it('should process some tasks', async () => {
+ const { loadTasks, processTask, done } = createLimitedLoader(6);
+ const stop = startTaskPipeline({
+ loadTasks,
+ processTask,
+ lowWatermark: 1,
+ highWatermark: 3,
+ });
+
+ const { loadCounts, processedTasks } = await done;
+ stop();
+
+ expect(loadCounts).toEqual([3, 2, 1]);
+ expect(processedTasks).toEqual([0, 1, 2, 3, 4, 5]);
+ });
+
+ it('should pick up processing after it runs dry', async () => {
+ const { loadTasks, processTask, done } = createLimitedLoader(5, 2);
+ const stop = startTaskPipeline({
+ loadTasks,
+ processTask,
+ lowWatermark: 2,
+ highWatermark: 3,
+ pollingIntervalMs: 1,
+ });
+
+ const { loadCounts, processedTasks } = await done;
+ stop();
+
+ expect(loadCounts).toEqual([0, 0, 3, 1, 1]);
+ expect(processedTasks).toEqual([0, 1, 2, 3, 4]);
+ });
+
+ it('should process in parallel', async () => {
+ const { loadTasks, processTask, done } = createLimitedLoader(13);
+ const stop1 = startTaskPipeline({
+ loadTasks,
+ processTask,
+ lowWatermark: 2,
+ highWatermark: 4,
+ });
+ const stop2 = startTaskPipeline({
+ loadTasks,
+ processTask,
+ lowWatermark: 2,
+ highWatermark: 4,
+ });
+
+ const { loadCounts, processedTasks } = await done;
+ stop1();
+ stop2();
+
+ expect(loadCounts).toEqual([4, 4, 2, 2, 1]);
+ expect(processedTasks).toEqual([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]);
+ });
+
+ it('should require lowWatermark to be lower than highWatermark', async () => {
+ expect(() => {
+ startTaskPipeline({
+ loadTasks: async () => [],
+ processTask: async () => {},
+ lowWatermark: 3,
+ highWatermark: 3,
+ });
+ }).toThrow('must be lower');
+ });
+});
diff --git a/plugins/catalog-backend/src/next/TaskPipeline.ts b/plugins/catalog-backend/src/next/TaskPipeline.ts
new file mode 100644
index 0000000000..53283dc9c5
--- /dev/null
+++ b/plugins/catalog-backend/src/next/TaskPipeline.ts
@@ -0,0 +1,121 @@
+/*
+ * Copyright 2021 The Backstage Authors
+ *
+ * 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.
+ */
+
+const DEFAULT_POLLING_INTERVAL_MS = 1000;
+
+type Options = {
+ /**
+ * The callback used to load in new tasks. The number of items returned
+ * in the array must be at most `count` number of items, but may be lower.
+ *
+ * Any error thrown from this method fill be treated as an unhandled rejection.
+ */
+ loadTasks: (count: number) => Promise>;
+
+ /**
+ * The callback used to process a single item.
+ *
+ * Any error thrown from this method fill be treated as an unhandled rejection.
+ */
+ processTask: (item: T) => Promise;
+
+ /**
+ * The target minimum number of items to process in parallel. Once the number
+ * of in-flight tasks reaches this count, more tasks will be loaded in.
+ */
+ lowWatermark: number;
+
+ /**
+ * The maximum number of items to process in parallel.
+ */
+ highWatermark: number;
+
+ /**
+ * The interval at which tasks are polled for in the background when
+ * there aren't enough tasks to load to satisfy the low watermark.
+ *
+ * @default 1000
+ */
+ pollingIntervalMs?: number;
+};
+
+/**
+ * Creates a task processing pipeline which continuously loads in tasks to
+ * keep the number of parallel in-flight tasks between a low and high watermark.
+ *
+ * @param options The options for the pipeline.
+ * @returns A stop function which when called halts all processing.
+ */
+export function startTaskPipeline(options: Options) {
+ const {
+ loadTasks,
+ processTask,
+ lowWatermark,
+ highWatermark,
+ pollingIntervalMs = DEFAULT_POLLING_INTERVAL_MS,
+ } = options;
+
+ if (lowWatermark >= highWatermark) {
+ throw new Error('lowWatermark must be lower than highWatermark');
+ }
+
+ let loading = false;
+ let stopped = false;
+ let inFlightCount = 0;
+
+ async function maybeLoadMore() {
+ if (stopped || loading || inFlightCount > lowWatermark) {
+ return;
+ }
+
+ // Once we hit the low watermark we load in enough items to reach the high watermark
+ loading = true;
+ const loadCount = highWatermark - inFlightCount;
+ const loadedItems = await loadTasks(loadCount);
+ loading = false;
+
+ // We might not reach the high watermark here, in case there weren't enough items to load
+ inFlightCount += loadedItems.length;
+ loadedItems.forEach(item => {
+ processTask(item).finally(() => {
+ if (stopped) {
+ return;
+ }
+
+ // For each item we complete we check if it's time to load more
+ inFlightCount -= 1;
+ maybeLoadMore();
+ });
+ });
+
+ // We might have processed some tasks while we where loading, so check if we can load more
+ if (loadedItems.length > 1) {
+ maybeLoadMore();
+ }
+ }
+
+ // This interval makes sure that we load in new items if the loop runs
+ // dry because of the lack of available tasks. As long as there are
+ // enough items to process this will be a noop.
+ const intervalId = setInterval(() => {
+ maybeLoadMore();
+ }, pollingIntervalMs);
+
+ return () => {
+ stopped = true;
+ clearInterval(intervalId);
+ };
+}
diff --git a/plugins/catalog-backend/src/next/database/DatabaseManager.ts b/plugins/catalog-backend/src/next/database/DatabaseManager.ts
index 22ae4e782f..124e8227b7 100644
--- a/plugins/catalog-backend/src/next/database/DatabaseManager.ts
+++ b/plugins/catalog-backend/src/next/database/DatabaseManager.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -36,7 +36,7 @@ export class DatabaseManager {
): Promise {
const migrationsDir = resolvePackagePath(
'@backstage/plugin-catalog-backend',
- 'migrationsv2',
+ 'migrations',
);
await knex.migrate.latest({
diff --git a/plugins/catalog-backend/src/next/database/DefaultProcessingDatabase.test.ts b/plugins/catalog-backend/src/next/database/DefaultProcessingDatabase.test.ts
index 7d98a32377..a0db3b293f 100644
--- a/plugins/catalog-backend/src/next/database/DefaultProcessingDatabase.test.ts
+++ b/plugins/catalog-backend/src/next/database/DefaultProcessingDatabase.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -39,7 +39,11 @@ describe('Default Processing Database', () => {
await DatabaseManager.createDatabase(knex);
return {
knex,
- db: new DefaultProcessingDatabase(knex, logger),
+ db: new DefaultProcessingDatabase({
+ database: knex,
+ logger,
+ refreshIntervalSeconds: 100,
+ }),
};
}
diff --git a/plugins/catalog-backend/src/next/database/DefaultProcessingDatabase.ts b/plugins/catalog-backend/src/next/database/DefaultProcessingDatabase.ts
index 7eb2cd1a74..79daee13e6 100644
--- a/plugins/catalog-backend/src/next/database/DefaultProcessingDatabase.ts
+++ b/plugins/catalog-backend/src/next/database/DefaultProcessingDatabase.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -44,8 +44,11 @@ const BATCH_SIZE = 50;
export class DefaultProcessingDatabase implements ProcessingDatabase {
constructor(
- private readonly database: Knex,
- private readonly logger: Logger,
+ private readonly options: {
+ database: Knex;
+ logger: Logger;
+ refreshIntervalSeconds: number;
+ },
) {}
async updateProcessedEntity(
@@ -272,7 +275,7 @@ export class DefaultProcessingDatabase implements ProcessingDatabase {
.whereIn('target_entity_ref', toRemove)
.delete();
- this.logger.debug(
+ this.options.logger.debug(
`removed, ${removedCount} entities: ${JSON.stringify(toRemove)}`,
);
}
@@ -355,8 +358,16 @@ export class DefaultProcessingDatabase implements ProcessingDatabase {
): Promise {
const tx = txOpaque as Knex.Transaction;
- const items = await tx('refresh_state')
- .select()
+ let itemsQuery = tx('refresh_state').select();
+
+ // This avoids duplication of work because of race conditions and is
+ // also fast because locked rows are ignored rather than blocking.
+ // It's only available in MySQL and PostgreSQL
+ if (['mysql', 'mysql2', 'pg'].includes(tx.client.config.client)) {
+ itemsQuery = itemsQuery.forUpdate().skipLocked();
+ }
+
+ const items = await itemsQuery
.where('next_update_at', '<=', tx.fn.now())
.limit(request.processBatchSize)
.orderBy('next_update_at', 'asc');
@@ -369,8 +380,14 @@ export class DefaultProcessingDatabase implements ProcessingDatabase {
.update({
next_update_at:
tx.client.config.client === 'sqlite3'
- ? tx.raw(`datetime('now', ?)`, [`100 seconds`])
- : tx.raw(`now() + interval '100 seconds'`),
+ ? tx.raw(`datetime('now', ?)`, [
+ `${this.options.refreshIntervalSeconds} seconds`,
+ ])
+ : tx.raw(
+ `now() + interval '${Number(
+ this.options.refreshIntervalSeconds,
+ )} seconds'`,
+ ),
});
return {
@@ -398,7 +415,7 @@ export class DefaultProcessingDatabase implements ProcessingDatabase {
try {
let result: T | undefined = undefined;
- await this.database.transaction(
+ await this.options.database.transaction(
async tx => {
// We can't return here, as knex swallows the return type in case the transaction is rolled back:
// https://github.com/knex/knex/blob/e37aeaa31c8ef9c1b07d2e4d3ec6607e557d800d/lib/transaction.js#L136
@@ -412,7 +429,7 @@ export class DefaultProcessingDatabase implements ProcessingDatabase {
return result!;
} catch (e) {
- this.logger.debug(`Error during transaction, ${e}`);
+ this.options.logger.debug(`Error during transaction, ${e}`);
if (
/SQLITE_CONSTRAINT: UNIQUE/.test(e.message) ||
diff --git a/plugins/catalog-backend/src/next/database/tables.ts b/plugins/catalog-backend/src/next/database/tables.ts
index eddd6d12b0..93453ba914 100644
--- a/plugins/catalog-backend/src/next/database/tables.ts
+++ b/plugins/catalog-backend/src/next/database/tables.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/next/database/types.ts b/plugins/catalog-backend/src/next/database/types.ts
index f65c796a00..dd342126c4 100644
--- a/plugins/catalog-backend/src/next/database/types.ts
+++ b/plugins/catalog-backend/src/next/database/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/next/index.ts b/plugins/catalog-backend/src/next/index.ts
index 8a1e6e4a2c..8c1921ae8b 100644
--- a/plugins/catalog-backend/src/next/index.ts
+++ b/plugins/catalog-backend/src/next/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/next/processing/DefaultCatalogProcessingOrchestrator.ts b/plugins/catalog-backend/src/next/processing/DefaultCatalogProcessingOrchestrator.ts
index c3eeea3d8e..48a40a2f6e 100644
--- a/plugins/catalog-backend/src/next/processing/DefaultCatalogProcessingOrchestrator.ts
+++ b/plugins/catalog-backend/src/next/processing/DefaultCatalogProcessingOrchestrator.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/next/processing/ProcessorOutputCollector.ts b/plugins/catalog-backend/src/next/processing/ProcessorOutputCollector.ts
index 0c3d74aaa1..3f8594bd48 100644
--- a/plugins/catalog-backend/src/next/processing/ProcessorOutputCollector.ts
+++ b/plugins/catalog-backend/src/next/processing/ProcessorOutputCollector.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/next/processing/index.ts b/plugins/catalog-backend/src/next/processing/index.ts
index 7ac4c6a35e..e2f5a99507 100644
--- a/plugins/catalog-backend/src/next/processing/index.ts
+++ b/plugins/catalog-backend/src/next/processing/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/next/processing/types.ts b/plugins/catalog-backend/src/next/processing/types.ts
index a287ff7bd7..e76e789e54 100644
--- a/plugins/catalog-backend/src/next/processing/types.ts
+++ b/plugins/catalog-backend/src/next/processing/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/next/processing/util.ts b/plugins/catalog-backend/src/next/processing/util.ts
index b1fff2449e..8b06a76d16 100644
--- a/plugins/catalog-backend/src/next/processing/util.ts
+++ b/plugins/catalog-backend/src/next/processing/util.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/next/stitching/Stitcher.test.ts b/plugins/catalog-backend/src/next/stitching/Stitcher.test.ts
index 81c55c4c50..e749fe712d 100644
--- a/plugins/catalog-backend/src/next/stitching/Stitcher.test.ts
+++ b/plugins/catalog-backend/src/next/stitching/Stitcher.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/next/stitching/Stitcher.ts b/plugins/catalog-backend/src/next/stitching/Stitcher.ts
index c735696d7f..bdfa76e5fc 100644
--- a/plugins/catalog-backend/src/next/stitching/Stitcher.ts
+++ b/plugins/catalog-backend/src/next/stitching/Stitcher.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/next/stitching/buildEntitySearch.test.ts b/plugins/catalog-backend/src/next/stitching/buildEntitySearch.test.ts
index 3f04ed79d4..9043dab9ba 100644
--- a/plugins/catalog-backend/src/next/stitching/buildEntitySearch.test.ts
+++ b/plugins/catalog-backend/src/next/stitching/buildEntitySearch.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/next/stitching/buildEntitySearch.ts b/plugins/catalog-backend/src/next/stitching/buildEntitySearch.ts
index 48a4e779bd..ed84dfa018 100644
--- a/plugins/catalog-backend/src/next/stitching/buildEntitySearch.ts
+++ b/plugins/catalog-backend/src/next/stitching/buildEntitySearch.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/next/stitching/index.ts b/plugins/catalog-backend/src/next/stitching/index.ts
index 4e230aca20..a330613afb 100644
--- a/plugins/catalog-backend/src/next/stitching/index.ts
+++ b/plugins/catalog-backend/src/next/stitching/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/next/stitching/util.ts b/plugins/catalog-backend/src/next/stitching/util.ts
index a72f22d19d..9cb877be1a 100644
--- a/plugins/catalog-backend/src/next/stitching/util.ts
+++ b/plugins/catalog-backend/src/next/stitching/util.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/next/types.ts b/plugins/catalog-backend/src/next/types.ts
index f189f3e975..c689f288aa 100644
--- a/plugins/catalog-backend/src/next/types.ts
+++ b/plugins/catalog-backend/src/next/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/next/util.ts b/plugins/catalog-backend/src/next/util.ts
index ef3a953384..a834f81255 100644
--- a/plugins/catalog-backend/src/next/util.ts
+++ b/plugins/catalog-backend/src/next/util.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/run.ts b/plugins/catalog-backend/src/run.ts
index b96989e4b8..54d2716290 100644
--- a/plugins/catalog-backend/src/run.ts
+++ b/plugins/catalog-backend/src/run.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/search/DefaultCatalogCollator.test.ts b/plugins/catalog-backend/src/search/DefaultCatalogCollator.test.ts
index 0764912f0f..2b9745298c 100644
--- a/plugins/catalog-backend/src/search/DefaultCatalogCollator.test.ts
+++ b/plugins/catalog-backend/src/search/DefaultCatalogCollator.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/search/DefaultCatalogCollator.ts b/plugins/catalog-backend/src/search/DefaultCatalogCollator.ts
index 70b8010d87..7ab91560b1 100644
--- a/plugins/catalog-backend/src/search/DefaultCatalogCollator.ts
+++ b/plugins/catalog-backend/src/search/DefaultCatalogCollator.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/search/index.ts b/plugins/catalog-backend/src/search/index.ts
index aed16aad76..7e13999864 100644
--- a/plugins/catalog-backend/src/search/index.ts
+++ b/plugins/catalog-backend/src/search/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/service/CatalogBuilder.test.ts b/plugins/catalog-backend/src/service/CatalogBuilder.test.ts
index bddc255b02..579772dcce 100644
--- a/plugins/catalog-backend/src/service/CatalogBuilder.test.ts
+++ b/plugins/catalog-backend/src/service/CatalogBuilder.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/service/CatalogBuilder.ts b/plugins/catalog-backend/src/service/CatalogBuilder.ts
index f742e3c0db..7d3a5fcbf5 100644
--- a/plugins/catalog-backend/src/service/CatalogBuilder.ts
+++ b/plugins/catalog-backend/src/service/CatalogBuilder.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -51,7 +51,6 @@ import {
LdapOrgReaderProcessor,
LocationEntityProcessor,
LocationReaders,
- MicrosoftGraphOrgReaderProcessor,
PlaceholderProcessor,
PlaceholderResolver,
StaticLocationProcessor,
@@ -66,6 +65,7 @@ import {
} from '../ingestion/processors/PlaceholderProcessor';
import { defaultEntityDataParser } from '../ingestion/processors/util/parse';
import { LocationAnalyzer } from '../ingestion/types';
+import { NextCatalogBuilder } from '../next';
export type CatalogEnvironment = {
logger: Logger;
@@ -103,6 +103,10 @@ export class CatalogBuilder {
private processorsReplace: boolean;
private parser: CatalogProcessorParser | undefined;
+ static async create(env: CatalogEnvironment): Promise {
+ return new NextCatalogBuilder(env);
+ }
+
constructor(env: CatalogEnvironment) {
this.env = env;
this.entityPolicies = [];
@@ -112,6 +116,10 @@ export class CatalogBuilder {
this.processors = [];
this.processorsReplace = false;
this.parser = undefined;
+
+ env.logger.warn(
+ "Creating the catalog with 'new CatalogBuilder(env)' is deprecated! Use CatalogBuilder.create(env) instead",
+ );
}
/**
@@ -310,7 +318,6 @@ export class CatalogBuilder {
GithubDiscoveryProcessor.fromConfig(config, { logger }),
GithubOrgReaderProcessor.fromConfig(config, { logger }),
LdapOrgReaderProcessor.fromConfig(config, { logger }),
- MicrosoftGraphOrgReaderProcessor.fromConfig(config, { logger }),
new UrlReaderProcessor({ reader, logger }),
CodeOwnersProcessor.fromConfig(config, { logger, reader }),
new LocationEntityProcessor({ integrations }),
diff --git a/plugins/catalog-backend/src/service/index.ts b/plugins/catalog-backend/src/service/index.ts
index c6da8db486..baf3f499d7 100644
--- a/plugins/catalog-backend/src/service/index.ts
+++ b/plugins/catalog-backend/src/service/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/service/request/basicEntityFilter.ts b/plugins/catalog-backend/src/service/request/basicEntityFilter.ts
index 06f2c013b3..a3ad1c2f73 100644
--- a/plugins/catalog-backend/src/service/request/basicEntityFilter.ts
+++ b/plugins/catalog-backend/src/service/request/basicEntityFilter.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/service/request/common.ts b/plugins/catalog-backend/src/service/request/common.ts
index 81369d032b..3e028349f1 100644
--- a/plugins/catalog-backend/src/service/request/common.ts
+++ b/plugins/catalog-backend/src/service/request/common.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/service/request/index.ts b/plugins/catalog-backend/src/service/request/index.ts
index c2c51f9ab7..4ab579fbb6 100644
--- a/plugins/catalog-backend/src/service/request/index.ts
+++ b/plugins/catalog-backend/src/service/request/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/service/request/parseEntityFilterParams.test.ts b/plugins/catalog-backend/src/service/request/parseEntityFilterParams.test.ts
index c44edd7e9b..e2b953ddef 100644
--- a/plugins/catalog-backend/src/service/request/parseEntityFilterParams.test.ts
+++ b/plugins/catalog-backend/src/service/request/parseEntityFilterParams.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/service/request/parseEntityFilterParams.ts b/plugins/catalog-backend/src/service/request/parseEntityFilterParams.ts
index 726eab9382..154a25c541 100644
--- a/plugins/catalog-backend/src/service/request/parseEntityFilterParams.ts
+++ b/plugins/catalog-backend/src/service/request/parseEntityFilterParams.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/service/request/parseEntityPaginationParams.test.ts b/plugins/catalog-backend/src/service/request/parseEntityPaginationParams.test.ts
index d537c431c0..331d453973 100644
--- a/plugins/catalog-backend/src/service/request/parseEntityPaginationParams.test.ts
+++ b/plugins/catalog-backend/src/service/request/parseEntityPaginationParams.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/service/request/parseEntityPaginationParams.ts b/plugins/catalog-backend/src/service/request/parseEntityPaginationParams.ts
index 6ebd8c6d99..c22dcd5935 100644
--- a/plugins/catalog-backend/src/service/request/parseEntityPaginationParams.ts
+++ b/plugins/catalog-backend/src/service/request/parseEntityPaginationParams.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/service/request/parseEntityTransformParams.test.ts b/plugins/catalog-backend/src/service/request/parseEntityTransformParams.test.ts
index b8b43a5098..9f867e241f 100644
--- a/plugins/catalog-backend/src/service/request/parseEntityTransformParams.test.ts
+++ b/plugins/catalog-backend/src/service/request/parseEntityTransformParams.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/service/request/parseEntityTransformParams.ts b/plugins/catalog-backend/src/service/request/parseEntityTransformParams.ts
index 0a7c97e8dc..7474b12c11 100644
--- a/plugins/catalog-backend/src/service/request/parseEntityTransformParams.ts
+++ b/plugins/catalog-backend/src/service/request/parseEntityTransformParams.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/service/router.test.ts b/plugins/catalog-backend/src/service/router.test.ts
index 756e17f858..c4631c6c2c 100644
--- a/plugins/catalog-backend/src/service/router.test.ts
+++ b/plugins/catalog-backend/src/service/router.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/service/router.ts b/plugins/catalog-backend/src/service/router.ts
index ae58255a4e..71b8614a99 100644
--- a/plugins/catalog-backend/src/service/router.ts
+++ b/plugins/catalog-backend/src/service/router.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -28,6 +28,7 @@ import { Logger } from 'winston';
import yn from 'yn';
import { EntitiesCatalog, LocationsCatalog } from '../catalog';
import { HigherOrderOperation, LocationAnalyzer } from '../ingestion/types';
+import { LocationService } from '../next/types';
import {
basicEntityFilter,
parseEntityFilterParams,
@@ -45,6 +46,7 @@ export interface RouterOptions {
locationsCatalog?: LocationsCatalog;
higherOrderOperation?: HigherOrderOperation;
locationAnalyzer?: LocationAnalyzer;
+ locationService?: LocationService;
logger: Logger;
config: Config;
}
@@ -57,6 +59,7 @@ export async function createRouter(
locationsCatalog,
higherOrderOperation,
locationAnalyzer,
+ locationService,
config,
logger,
} = options;
@@ -145,6 +148,40 @@ export async function createRouter(
});
}
+ if (locationService) {
+ router
+ .post('/locations', async (req, res) => {
+ const input = await validateRequestBody(req, locationSpecSchema);
+ const dryRun = yn(req.query.dryRun, { default: false });
+
+ // when in dryRun addLocation is effectively a read operation so we don't
+ // need to disallow readonly
+ if (!dryRun) {
+ disallowReadonlyMode(readonlyEnabled);
+ }
+
+ const output = await locationService.createLocation(input, dryRun);
+ res.status(201).json(output);
+ })
+ .get('/locations', async (_req, res) => {
+ const locations = await locationService.listLocations();
+ res.status(200).json(locations.map(l => ({ data: l })));
+ })
+
+ .get('/locations/:id', async (req, res) => {
+ const { id } = req.params;
+ const output = await locationService.getLocation(id);
+ res.status(200).json(output);
+ })
+ .delete('/locations/:id', async (req, res) => {
+ disallowReadonlyMode(readonlyEnabled);
+
+ const { id } = req.params;
+ await locationService.deleteLocation(id);
+ res.status(204).end();
+ });
+ }
+
if (higherOrderOperation) {
router.post('/locations', async (req, res) => {
const input = await validateRequestBody(req, locationSpecSchema);
diff --git a/plugins/catalog-backend/src/service/standaloneServer.ts b/plugins/catalog-backend/src/service/standaloneServer.ts
index 44a5c0f84d..ab8d40d74c 100644
--- a/plugins/catalog-backend/src/service/standaloneServer.ts
+++ b/plugins/catalog-backend/src/service/standaloneServer.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -63,9 +63,12 @@ export async function startStandaloneServer(
logger,
config,
});
- const service = createServiceBuilder(module)
- .enableCors({ origin: 'http://localhost:3000' })
+ let service = createServiceBuilder(module)
+ .setPort(options.port)
.addRouter('/catalog', router);
+ if (options.enableCors) {
+ service = service.enableCors({ origin: 'http://localhost:3000' });
+ }
return await service.start().catch(err => {
logger.error(err);
process.exit(1);
diff --git a/plugins/catalog-backend/src/service/util.ts b/plugins/catalog-backend/src/service/util.ts
index 9cc5ba1b52..7902458900 100644
--- a/plugins/catalog-backend/src/service/util.ts
+++ b/plugins/catalog-backend/src/service/util.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/setupTests.ts b/plugins/catalog-backend/src/setupTests.ts
index ba33cf996b..d3232290a7 100644
--- a/plugins/catalog-backend/src/setupTests.ts
+++ b/plugins/catalog-backend/src/setupTests.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/util/RecursivePartial.test.ts b/plugins/catalog-backend/src/util/RecursivePartial.test.ts
index 7f16226188..ab8d50534e 100644
--- a/plugins/catalog-backend/src/util/RecursivePartial.test.ts
+++ b/plugins/catalog-backend/src/util/RecursivePartial.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/util/RecursivePartial.ts b/plugins/catalog-backend/src/util/RecursivePartial.ts
index 0fa468b4c4..502f4464c1 100644
--- a/plugins/catalog-backend/src/util/RecursivePartial.ts
+++ b/plugins/catalog-backend/src/util/RecursivePartial.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/util/index.ts b/plugins/catalog-backend/src/util/index.ts
index 8364819f99..2e592fb8df 100644
--- a/plugins/catalog-backend/src/util/index.ts
+++ b/plugins/catalog-backend/src/util/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/util/runPeriodically.ts b/plugins/catalog-backend/src/util/runPeriodically.ts
index c6d478fcbe..d5f5f87d7f 100644
--- a/plugins/catalog-backend/src/util/runPeriodically.ts
+++ b/plugins/catalog-backend/src/util/runPeriodically.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-backend/src/util/timing.ts b/plugins/catalog-backend/src/util/timing.ts
index 1abc446ab4..0b9498a24c 100644
--- a/plugins/catalog-backend/src/util/timing.ts
+++ b/plugins/catalog-backend/src/util/timing.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-graphql/api-report.md b/plugins/catalog-graphql/api-report.md
new file mode 100644
index 0000000000..cbe325f4c5
--- /dev/null
+++ b/plugins/catalog-graphql/api-report.md
@@ -0,0 +1,25 @@
+## API Report File for "@backstage/plugin-catalog-graphql"
+
+> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
+
+```ts
+
+import { Config } from '@backstage/config';
+import { GraphQLModule } from '@graphql-modules/core';
+import { Logger } from 'winston';
+
+// @public (undocumented)
+export function createModule(options: ModuleOptions): Promise;
+
+// @public (undocumented)
+export interface ModuleOptions {
+ // (undocumented)
+ config: Config;
+ // (undocumented)
+ logger: Logger;
+}
+
+
+// (No @packageDocumentation comment for this package)
+
+```
diff --git a/plugins/catalog-graphql/src/graphql/module.test.ts b/plugins/catalog-graphql/src/graphql/module.test.ts
index e6e9d59df7..3d1219df31 100644
--- a/plugins/catalog-graphql/src/graphql/module.test.ts
+++ b/plugins/catalog-graphql/src/graphql/module.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-graphql/src/graphql/module.ts b/plugins/catalog-graphql/src/graphql/module.ts
index be5fed11ef..e7948fb1ed 100644
--- a/plugins/catalog-graphql/src/graphql/module.ts
+++ b/plugins/catalog-graphql/src/graphql/module.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-graphql/src/graphql/types.ts b/plugins/catalog-graphql/src/graphql/types.ts
index 446a1f9f46..dbcf30152f 100644
--- a/plugins/catalog-graphql/src/graphql/types.ts
+++ b/plugins/catalog-graphql/src/graphql/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-graphql/src/index.ts b/plugins/catalog-graphql/src/index.ts
index 2e3f1c1fe2..0ca48a8830 100644
--- a/plugins/catalog-graphql/src/index.ts
+++ b/plugins/catalog-graphql/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-graphql/src/schema.js b/plugins/catalog-graphql/src/schema.js
index f1fbc2ff14..6894ad5a03 100644
--- a/plugins/catalog-graphql/src/schema.js
+++ b/plugins/catalog-graphql/src/schema.js
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-graphql/src/service/client.test.ts b/plugins/catalog-graphql/src/service/client.test.ts
index c9708af2d0..f10912dc24 100644
--- a/plugins/catalog-graphql/src/service/client.test.ts
+++ b/plugins/catalog-graphql/src/service/client.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-graphql/src/service/client.ts b/plugins/catalog-graphql/src/service/client.ts
index 59f9e90254..487762d5d7 100644
--- a/plugins/catalog-graphql/src/service/client.ts
+++ b/plugins/catalog-graphql/src/service/client.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-graphql/src/setupTests.ts b/plugins/catalog-graphql/src/setupTests.ts
index 1485402d0d..8f32650781 100644
--- a/plugins/catalog-graphql/src/setupTests.ts
+++ b/plugins/catalog-graphql/src/setupTests.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-import/CHANGELOG.md b/plugins/catalog-import/CHANGELOG.md
index 9b6e1c4487..6cd89dbf82 100644
--- a/plugins/catalog-import/CHANGELOG.md
+++ b/plugins/catalog-import/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-catalog-import
+## 0.5.10
+
+### Patch Changes
+
+- 873116e5d: Fix a react warning in ``.
+- Updated dependencies
+ - @backstage/plugin-catalog-react@0.2.3
+ - @backstage/catalog-model@0.8.3
+ - @backstage/core@0.7.13
+
## 0.5.9
### Patch Changes
diff --git a/plugins/catalog-import/api-report.md b/plugins/catalog-import/api-report.md
new file mode 100644
index 0000000000..34baed46b5
--- /dev/null
+++ b/plugins/catalog-import/api-report.md
@@ -0,0 +1,130 @@
+## API Report File for "@backstage/plugin-catalog-import"
+
+> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
+
+```ts
+
+import { ApiRef } from '@backstage/core';
+import { BackstagePlugin } from '@backstage/core';
+import { CatalogApi } from '@backstage/catalog-client';
+import { ConfigApi } from '@backstage/core';
+import { Control } from 'react-hook-form';
+import { DiscoveryApi } from '@backstage/core';
+import { Entity } from '@backstage/catalog-model';
+import { EntityName } from '@backstage/catalog-model';
+import { FieldErrors } from 'react-hook-form';
+import { IdentityApi } from '@backstage/core';
+import { InfoCardVariants } from '@backstage/core';
+import { OAuthApi } from '@backstage/core';
+import { default as React_2 } from 'react';
+import { RouteRef } from '@backstage/core';
+import { ScmIntegrationRegistry } from '@backstage/integration';
+import { SubmitHandler } from 'react-hook-form';
+import { TextFieldProps } from '@material-ui/core/TextField/TextField';
+import { UnpackNestedValue } from 'react-hook-form';
+import { UseControllerOptions } from 'react-hook-form';
+import { UseFormMethods } from 'react-hook-form';
+import { UseFormOptions } from 'react-hook-form';
+
+// @public (undocumented)
+export type AnalyzeResult = {
+ type: 'locations';
+ locations: Array<{
+ target: string;
+ entities: EntityName[];
+ }>;
+} | {
+ type: 'repository';
+ url: string;
+ integrationType: string;
+ generatedEntities: PartialEntity[];
+};
+
+// @public (undocumented)
+export const AutocompleteTextField: ({ name, options, required, control, errors, rules, loading, loadingText, helperText, errorHelperText, textFieldProps, }: Props_4) => JSX.Element;
+
+// @public (undocumented)
+export interface CatalogImportApi {
+ // (undocumented)
+ analyzeUrl(url: string): Promise;
+ // (undocumented)
+ submitPullRequest(options: {
+ repositoryUrl: string;
+ fileContent: string;
+ title: string;
+ body: string;
+ }): Promise<{
+ link: string;
+ location: string;
+ }>;
+}
+
+// @public (undocumented)
+export const catalogImportApiRef: ApiRef;
+
+// @public (undocumented)
+export class CatalogImportClient implements CatalogImportApi {
+ constructor(options: {
+ discoveryApi: DiscoveryApi;
+ githubAuthApi: OAuthApi;
+ identityApi: IdentityApi;
+ scmIntegrationsApi: ScmIntegrationRegistry;
+ catalogApi: CatalogApi;
+ });
+ // (undocumented)
+ analyzeUrl(url: string): Promise;
+ // (undocumented)
+ submitPullRequest({ repositoryUrl, fileContent, title, body, }: {
+ repositoryUrl: string;
+ fileContent: string;
+ title: string;
+ body: string;
+ }): Promise<{
+ link: string;
+ location: string;
+ }>;
+}
+
+// @public (undocumented)
+export const CatalogImportPage: (opts: StepperProviderOpts) => JSX.Element;
+
+// @public (undocumented)
+const catalogImportPlugin: BackstagePlugin<{
+ importPage: RouteRef;
+}, {}>;
+
+export { catalogImportPlugin }
+
+export { catalogImportPlugin as plugin }
+
+// @public
+export function defaultGenerateStepper(flow: ImportFlows, defaults: StepperProvider): StepperProvider;
+
+// @public (undocumented)
+export const EntityListComponent: ({ locations, collapsed, locationListItemIcon, onItemClick, firstListItem, withLinks, }: Props_2) => JSX.Element;
+
+// @public (undocumented)
+export const ImportStepper: ({ initialUrl, generateStepper, variant, opts, }: Props) => JSX.Element;
+
+// @public
+export const PreparePullRequestForm: >({ defaultValues, onSubmit, render, }: Props_5) => JSX.Element;
+
+// @public (undocumented)
+export const PreviewCatalogInfoComponent: ({ repositoryUrl, entities, classes, }: Props_6) => JSX.Element;
+
+// @public (undocumented)
+export const PreviewPullRequestComponent: ({ title, description, classes, }: Props_7) => JSX.Element;
+
+// @public (undocumented)
+export const Router: (opts: StepperProviderOpts) => JSX.Element;
+
+// @public
+export const StepInitAnalyzeUrl: ({ onAnalysis, analysisUrl, disablePullRequest, }: Props_3) => JSX.Element;
+
+// @public (undocumented)
+export const StepPrepareCreatePullRequest: ({ analyzeResult, onPrepare, onGoBack, renderFormFields, defaultTitle, defaultBody, }: Props_8) => JSX.Element;
+
+
+// (No @packageDocumentation comment for this package)
+
+```
diff --git a/plugins/catalog-import/dev/index.tsx b/plugins/catalog-import/dev/index.tsx
index e794628e6c..d2855ed40a 100644
--- a/plugins/catalog-import/dev/index.tsx
+++ b/plugins/catalog-import/dev/index.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-import/package.json b/plugins/catalog-import/package.json
index c017c3d08a..70c3f79b21 100644
--- a/plugins/catalog-import/package.json
+++ b/plugins/catalog-import/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-catalog-import",
- "version": "0.5.9",
+ "version": "0.5.10",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -30,12 +30,12 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/catalog-model": "^0.8.2",
+ "@backstage/catalog-model": "^0.8.3",
"@backstage/catalog-client": "^0.3.13",
- "@backstage/core": "^0.7.11",
+ "@backstage/core": "^0.7.13",
"@backstage/integration": "^0.5.6",
"@backstage/integration-react": "^0.1.3",
- "@backstage/plugin-catalog-react": "^0.2.2",
+ "@backstage/plugin-catalog-react": "^0.2.3",
"@backstage/theme": "^0.2.8",
"@material-ui/core": "^4.11.0",
"@material-ui/icons": "^4.9.1",
@@ -53,7 +53,7 @@
"yaml": "^1.10.0"
},
"devDependencies": {
- "@backstage/cli": "^0.7.0",
+ "@backstage/cli": "^0.7.1",
"@backstage/dev-utils": "^0.1.17",
"@backstage/test-utils": "^0.1.13",
"@testing-library/jest-dom": "^5.10.1",
diff --git a/plugins/catalog-import/src/api/CatalogImportApi.ts b/plugins/catalog-import/src/api/CatalogImportApi.ts
index 5237e0339f..4dc317680d 100644
--- a/plugins/catalog-import/src/api/CatalogImportApi.ts
+++ b/plugins/catalog-import/src/api/CatalogImportApi.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-import/src/api/CatalogImportClient.test.ts b/plugins/catalog-import/src/api/CatalogImportClient.test.ts
index de7055cf25..cd25d47cca 100644
--- a/plugins/catalog-import/src/api/CatalogImportClient.test.ts
+++ b/plugins/catalog-import/src/api/CatalogImportClient.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-import/src/api/CatalogImportClient.ts b/plugins/catalog-import/src/api/CatalogImportClient.ts
index 6dd48d2aa7..c7196bfc3f 100644
--- a/plugins/catalog-import/src/api/CatalogImportClient.ts
+++ b/plugins/catalog-import/src/api/CatalogImportClient.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-import/src/api/GitHub.ts b/plugins/catalog-import/src/api/GitHub.ts
index 1e80715982..b659832c10 100644
--- a/plugins/catalog-import/src/api/GitHub.ts
+++ b/plugins/catalog-import/src/api/GitHub.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-import/src/api/index.ts b/plugins/catalog-import/src/api/index.ts
index 078342d284..a720516daf 100644
--- a/plugins/catalog-import/src/api/index.ts
+++ b/plugins/catalog-import/src/api/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-import/src/components/Buttons/index.tsx b/plugins/catalog-import/src/components/Buttons/index.tsx
index 93dd96b399..a478bfd4cc 100644
--- a/plugins/catalog-import/src/components/Buttons/index.tsx
+++ b/plugins/catalog-import/src/components/Buttons/index.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-import/src/components/EntityListComponent/EntityListComponent.tsx b/plugins/catalog-import/src/components/EntityListComponent/EntityListComponent.tsx
index bdeb483df4..433f7eda5a 100644
--- a/plugins/catalog-import/src/components/EntityListComponent/EntityListComponent.tsx
+++ b/plugins/catalog-import/src/components/EntityListComponent/EntityListComponent.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -146,11 +146,15 @@ export const EntityListComponent = ({
{sortEntities(r.entities).map(entity => (
{getEntityIcon(entity)}
diff --git a/plugins/catalog-import/src/components/EntityListComponent/index.ts b/plugins/catalog-import/src/components/EntityListComponent/index.ts
index fc0efc5481..06b695240c 100644
--- a/plugins/catalog-import/src/components/EntityListComponent/index.ts
+++ b/plugins/catalog-import/src/components/EntityListComponent/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-import/src/components/ImportComponentPage.test.tsx b/plugins/catalog-import/src/components/ImportComponentPage.test.tsx
index 08903e9933..6356e7ccc7 100644
--- a/plugins/catalog-import/src/components/ImportComponentPage.test.tsx
+++ b/plugins/catalog-import/src/components/ImportComponentPage.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-import/src/components/ImportComponentPage.tsx b/plugins/catalog-import/src/components/ImportComponentPage.tsx
index 1d1a8056bd..6cec383f27 100644
--- a/plugins/catalog-import/src/components/ImportComponentPage.tsx
+++ b/plugins/catalog-import/src/components/ImportComponentPage.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-import/src/components/ImportStepper/ImportStepper.tsx b/plugins/catalog-import/src/components/ImportStepper/ImportStepper.tsx
index 49fce69b5a..1b8b55a183 100644
--- a/plugins/catalog-import/src/components/ImportStepper/ImportStepper.tsx
+++ b/plugins/catalog-import/src/components/ImportStepper/ImportStepper.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-import/src/components/ImportStepper/defaults.tsx b/plugins/catalog-import/src/components/ImportStepper/defaults.tsx
index 1c4891855f..739908b173 100644
--- a/plugins/catalog-import/src/components/ImportStepper/defaults.tsx
+++ b/plugins/catalog-import/src/components/ImportStepper/defaults.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-import/src/components/ImportStepper/index.ts b/plugins/catalog-import/src/components/ImportStepper/index.ts
index 8d205562a4..164c6f43f1 100644
--- a/plugins/catalog-import/src/components/ImportStepper/index.ts
+++ b/plugins/catalog-import/src/components/ImportStepper/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-import/src/components/Router.tsx b/plugins/catalog-import/src/components/Router.tsx
index fc74c32b30..c8f1ae65a3 100644
--- a/plugins/catalog-import/src/components/Router.tsx
+++ b/plugins/catalog-import/src/components/Router.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-import/src/components/StepFinishImportLocation/StepFinishImportLocation.tsx b/plugins/catalog-import/src/components/StepFinishImportLocation/StepFinishImportLocation.tsx
index 5d7d0b919c..cd33e15b11 100644
--- a/plugins/catalog-import/src/components/StepFinishImportLocation/StepFinishImportLocation.tsx
+++ b/plugins/catalog-import/src/components/StepFinishImportLocation/StepFinishImportLocation.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-import/src/components/StepFinishImportLocation/index.ts b/plugins/catalog-import/src/components/StepFinishImportLocation/index.ts
index 5f3d9f425c..898b95f4b9 100644
--- a/plugins/catalog-import/src/components/StepFinishImportLocation/index.ts
+++ b/plugins/catalog-import/src/components/StepFinishImportLocation/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-import/src/components/StepInitAnalyzeUrl/StepInitAnalyzeUrl.test.tsx b/plugins/catalog-import/src/components/StepInitAnalyzeUrl/StepInitAnalyzeUrl.test.tsx
index 03882d48ce..0e3305d594 100644
--- a/plugins/catalog-import/src/components/StepInitAnalyzeUrl/StepInitAnalyzeUrl.test.tsx
+++ b/plugins/catalog-import/src/components/StepInitAnalyzeUrl/StepInitAnalyzeUrl.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-import/src/components/StepInitAnalyzeUrl/StepInitAnalyzeUrl.tsx b/plugins/catalog-import/src/components/StepInitAnalyzeUrl/StepInitAnalyzeUrl.tsx
index 09f6230fdc..1ec9cd1f7e 100644
--- a/plugins/catalog-import/src/components/StepInitAnalyzeUrl/StepInitAnalyzeUrl.tsx
+++ b/plugins/catalog-import/src/components/StepInitAnalyzeUrl/StepInitAnalyzeUrl.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-import/src/components/StepInitAnalyzeUrl/index.ts b/plugins/catalog-import/src/components/StepInitAnalyzeUrl/index.ts
index 5d36c104c3..2cd1557d75 100644
--- a/plugins/catalog-import/src/components/StepInitAnalyzeUrl/index.ts
+++ b/plugins/catalog-import/src/components/StepInitAnalyzeUrl/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/AutocompleteTextField.tsx b/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/AutocompleteTextField.tsx
index a3743dc580..52e11ba215 100644
--- a/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/AutocompleteTextField.tsx
+++ b/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/AutocompleteTextField.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/PreparePullRequestForm.test.tsx b/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/PreparePullRequestForm.test.tsx
index 4693535d24..c628b7a2ed 100644
--- a/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/PreparePullRequestForm.test.tsx
+++ b/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/PreparePullRequestForm.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/PreparePullRequestForm.tsx b/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/PreparePullRequestForm.tsx
index ad848d7893..dea3b4bac9 100644
--- a/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/PreparePullRequestForm.tsx
+++ b/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/PreparePullRequestForm.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/PreviewCatalogInfoComponent.test.tsx b/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/PreviewCatalogInfoComponent.test.tsx
index 5bc22dbd42..f0844c265c 100644
--- a/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/PreviewCatalogInfoComponent.test.tsx
+++ b/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/PreviewCatalogInfoComponent.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/PreviewCatalogInfoComponent.tsx b/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/PreviewCatalogInfoComponent.tsx
index c10c011820..ec779b596a 100644
--- a/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/PreviewCatalogInfoComponent.tsx
+++ b/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/PreviewCatalogInfoComponent.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/PreviewPullRequestComponent.test.tsx b/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/PreviewPullRequestComponent.test.tsx
index 1556bd9b41..8d0d085b8a 100644
--- a/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/PreviewPullRequestComponent.test.tsx
+++ b/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/PreviewPullRequestComponent.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/PreviewPullRequestComponent.tsx b/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/PreviewPullRequestComponent.tsx
index 01af05d43a..4e7985e187 100644
--- a/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/PreviewPullRequestComponent.tsx
+++ b/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/PreviewPullRequestComponent.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/StepPrepareCreatePullRequest.test.tsx b/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/StepPrepareCreatePullRequest.test.tsx
index be923c9ee8..ff68808234 100644
--- a/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/StepPrepareCreatePullRequest.test.tsx
+++ b/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/StepPrepareCreatePullRequest.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/StepPrepareCreatePullRequest.tsx b/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/StepPrepareCreatePullRequest.tsx
index d1f8be7065..bed8f477f7 100644
--- a/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/StepPrepareCreatePullRequest.tsx
+++ b/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/StepPrepareCreatePullRequest.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/index.ts b/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/index.ts
index 119feee4a1..1e8eaea1b9 100644
--- a/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/index.ts
+++ b/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-import/src/components/StepPrepareSelectLocations/StepPrepareSelectLocations.test.tsx b/plugins/catalog-import/src/components/StepPrepareSelectLocations/StepPrepareSelectLocations.test.tsx
index 82da9b9572..273b41d82d 100644
--- a/plugins/catalog-import/src/components/StepPrepareSelectLocations/StepPrepareSelectLocations.test.tsx
+++ b/plugins/catalog-import/src/components/StepPrepareSelectLocations/StepPrepareSelectLocations.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-import/src/components/StepPrepareSelectLocations/StepPrepareSelectLocations.tsx b/plugins/catalog-import/src/components/StepPrepareSelectLocations/StepPrepareSelectLocations.tsx
index d44472fb5a..179b7e7c2e 100644
--- a/plugins/catalog-import/src/components/StepPrepareSelectLocations/StepPrepareSelectLocations.tsx
+++ b/plugins/catalog-import/src/components/StepPrepareSelectLocations/StepPrepareSelectLocations.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-import/src/components/StepPrepareSelectLocations/index.ts b/plugins/catalog-import/src/components/StepPrepareSelectLocations/index.ts
index db98a63be0..efd37789e1 100644
--- a/plugins/catalog-import/src/components/StepPrepareSelectLocations/index.ts
+++ b/plugins/catalog-import/src/components/StepPrepareSelectLocations/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-import/src/components/StepReviewLocation/StepReviewLocation.tsx b/plugins/catalog-import/src/components/StepReviewLocation/StepReviewLocation.tsx
index eb2268f212..947f3c566e 100644
--- a/plugins/catalog-import/src/components/StepReviewLocation/StepReviewLocation.tsx
+++ b/plugins/catalog-import/src/components/StepReviewLocation/StepReviewLocation.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-import/src/components/StepReviewLocation/index.ts b/plugins/catalog-import/src/components/StepReviewLocation/index.ts
index 2c93e98437..0b45195933 100644
--- a/plugins/catalog-import/src/components/StepReviewLocation/index.ts
+++ b/plugins/catalog-import/src/components/StepReviewLocation/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-import/src/components/index.ts b/plugins/catalog-import/src/components/index.ts
index 180752c873..9b53200317 100644
--- a/plugins/catalog-import/src/components/index.ts
+++ b/plugins/catalog-import/src/components/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-import/src/components/useImportState.test.tsx b/plugins/catalog-import/src/components/useImportState.test.tsx
index a4b4b3bc7f..260fb66119 100644
--- a/plugins/catalog-import/src/components/useImportState.test.tsx
+++ b/plugins/catalog-import/src/components/useImportState.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-import/src/components/useImportState.ts b/plugins/catalog-import/src/components/useImportState.ts
index bcfcff152e..c823499cdf 100644
--- a/plugins/catalog-import/src/components/useImportState.ts
+++ b/plugins/catalog-import/src/components/useImportState.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-import/src/index.ts b/plugins/catalog-import/src/index.ts
index 562e0499f3..9c5993c7fc 100644
--- a/plugins/catalog-import/src/index.ts
+++ b/plugins/catalog-import/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-import/src/plugin.test.ts b/plugins/catalog-import/src/plugin.test.ts
index 7ebe194b36..4b03c742ac 100644
--- a/plugins/catalog-import/src/plugin.test.ts
+++ b/plugins/catalog-import/src/plugin.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-import/src/plugin.ts b/plugins/catalog-import/src/plugin.ts
index b0beaf5a50..9a8b27a495 100644
--- a/plugins/catalog-import/src/plugin.ts
+++ b/plugins/catalog-import/src/plugin.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-import/src/setupTests.ts b/plugins/catalog-import/src/setupTests.ts
index aea2220869..c1d649f2ad 100644
--- a/plugins/catalog-import/src/setupTests.ts
+++ b/plugins/catalog-import/src/setupTests.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-import/src/types.ts b/plugins/catalog-import/src/types.ts
index f23649a2a9..dab9b37435 100644
--- a/plugins/catalog-import/src/types.ts
+++ b/plugins/catalog-import/src/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/CHANGELOG.md b/plugins/catalog-react/CHANGELOG.md
index 88d7a04a78..c532a11ac7 100644
--- a/plugins/catalog-react/CHANGELOG.md
+++ b/plugins/catalog-react/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-catalog-react
+## 0.2.3
+
+### Patch Changes
+
+- 172c97324: Add `EntityLifecyclePicker` and `EntityOwnerPicker` UI components to allow filtering by `spec.lifecycle` and `spec.owner` on catalog-related pages.
+- Updated dependencies
+ - @backstage/catalog-model@0.8.3
+ - @backstage/core@0.7.13
+
## 0.2.2
### Patch Changes
diff --git a/plugins/catalog-react/package.json b/plugins/catalog-react/package.json
index bb814d7d4f..c5a871620b 100644
--- a/plugins/catalog-react/package.json
+++ b/plugins/catalog-react/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-catalog-react",
- "version": "0.2.2",
+ "version": "0.2.3",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -29,8 +29,8 @@
},
"dependencies": {
"@backstage/catalog-client": "^0.3.13",
- "@backstage/catalog-model": "^0.8.2",
- "@backstage/core": "^0.7.12",
+ "@backstage/catalog-model": "^0.8.3",
+ "@backstage/core": "^0.7.13",
"@backstage/core-plugin-api": "^0.1.2",
"@backstage/integration": "^0.5.6",
"@material-ui/core": "^4.11.0",
@@ -44,8 +44,8 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.7.0",
- "@backstage/core": "^0.7.12",
+ "@backstage/cli": "^0.7.1",
+ "@backstage/core": "^0.7.13",
"@backstage/dev-utils": "^0.1.17",
"@backstage/test-utils": "^0.1.13",
"@testing-library/jest-dom": "^5.10.1",
diff --git a/plugins/catalog-react/src/api.ts b/plugins/catalog-react/src/api.ts
index 0fdfe32f0f..51146b95bf 100644
--- a/plugins/catalog-react/src/api.ts
+++ b/plugins/catalog-react/src/api.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/components/EntityKindPicker/EntityKindPicker.test.tsx b/plugins/catalog-react/src/components/EntityKindPicker/EntityKindPicker.test.tsx
index 2973074a5b..8faa86c3ca 100644
--- a/plugins/catalog-react/src/components/EntityKindPicker/EntityKindPicker.test.tsx
+++ b/plugins/catalog-react/src/components/EntityKindPicker/EntityKindPicker.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/components/EntityKindPicker/EntityKindPicker.tsx b/plugins/catalog-react/src/components/EntityKindPicker/EntityKindPicker.tsx
index 86980d098f..db695d58cc 100644
--- a/plugins/catalog-react/src/components/EntityKindPicker/EntityKindPicker.tsx
+++ b/plugins/catalog-react/src/components/EntityKindPicker/EntityKindPicker.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/components/EntityKindPicker/index.ts b/plugins/catalog-react/src/components/EntityKindPicker/index.ts
index ec9fde9cde..89dd46230b 100644
--- a/plugins/catalog-react/src/components/EntityKindPicker/index.ts
+++ b/plugins/catalog-react/src/components/EntityKindPicker/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/components/EntityLifecyclePicker/EntityLifecyclePicker.test.tsx b/plugins/catalog-react/src/components/EntityLifecyclePicker/EntityLifecyclePicker.test.tsx
new file mode 100644
index 0000000000..8e8bb5aeba
--- /dev/null
+++ b/plugins/catalog-react/src/components/EntityLifecyclePicker/EntityLifecyclePicker.test.tsx
@@ -0,0 +1,139 @@
+/*
+ * Copyright 2021 The Backstage Authors
+ *
+ * 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.
+ */
+
+import { Entity } from '@backstage/catalog-model';
+import { fireEvent, render } from '@testing-library/react';
+import React from 'react';
+import { MockEntityListContextProvider } from '../../testUtils/providers';
+import { EntityLifecycleFilter } from '../../types';
+import { EntityLifecyclePicker } from './EntityLifecyclePicker';
+
+const sampleEntities: Entity[] = [
+ {
+ apiVersion: '1',
+ kind: 'Component',
+ metadata: {
+ name: 'component-1',
+ },
+ spec: {
+ lifecycle: 'production',
+ },
+ },
+ {
+ apiVersion: '1',
+ kind: 'Component',
+ metadata: {
+ name: 'component-2',
+ },
+ spec: {
+ lifecycle: 'experimental',
+ },
+ },
+ {
+ apiVersion: '1',
+ kind: 'Component',
+ metadata: {
+ name: 'component-3',
+ },
+ spec: {
+ lifecycle: 'experimental',
+ },
+ },
+];
+
+describe('', () => {
+ it('renders all lifecycles', () => {
+ const rendered = render(
+
+
+ ,
+ );
+ expect(rendered.getByText('Lifecycle')).toBeInTheDocument();
+
+ fireEvent.click(rendered.getByTestId('lifecycle-picker-expand'));
+ sampleEntities
+ .map(e => e.spec?.lifecycle!)
+ .forEach(lifecycle => {
+ expect(rendered.getByText(lifecycle as string)).toBeInTheDocument();
+ });
+ });
+
+ it('renders unique lifecycles in alphabetical order', () => {
+ const rendered = render(
+
+
+ ,
+ );
+ expect(rendered.getByText('Lifecycle')).toBeInTheDocument();
+
+ fireEvent.click(rendered.getByTestId('lifecycle-picker-expand'));
+
+ expect(rendered.getAllByRole('option').map(o => o.textContent)).toEqual([
+ 'experimental',
+ 'production',
+ ]);
+ });
+
+ it('adds lifecycles to filters', () => {
+ const updateFilters = jest.fn();
+ const rendered = render(
+
+
+ ,
+ );
+ expect(updateFilters).not.toHaveBeenCalled();
+
+ fireEvent.click(rendered.getByTestId('lifecycle-picker-expand'));
+ fireEvent.click(rendered.getByText('production'));
+ expect(updateFilters).toHaveBeenLastCalledWith({
+ lifecycles: new EntityLifecycleFilter(['production']),
+ });
+ });
+
+ it('removes lifecycles from filters', () => {
+ const updateFilters = jest.fn();
+ const rendered = render(
+
+
+ ,
+ );
+ expect(updateFilters).not.toHaveBeenCalled();
+ fireEvent.click(rendered.getByTestId('lifecycle-picker-expand'));
+ expect(rendered.getByLabelText('production')).toBeChecked();
+
+ fireEvent.click(rendered.getByLabelText('production'));
+ expect(updateFilters).toHaveBeenLastCalledWith({
+ lifecycles: undefined,
+ });
+ });
+});
diff --git a/plugins/catalog-react/src/components/EntityLifecyclePicker/EntityLifecyclePicker.tsx b/plugins/catalog-react/src/components/EntityLifecyclePicker/EntityLifecyclePicker.tsx
new file mode 100644
index 0000000000..a5fe16ae40
--- /dev/null
+++ b/plugins/catalog-react/src/components/EntityLifecyclePicker/EntityLifecyclePicker.tsx
@@ -0,0 +1,86 @@
+/*
+ * Copyright 2021 The Backstage Authors
+ *
+ * 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.
+ */
+
+import { Entity } from '@backstage/catalog-model';
+import {
+ Box,
+ Checkbox,
+ FormControlLabel,
+ TextField,
+ Typography,
+} from '@material-ui/core';
+import CheckBoxIcon from '@material-ui/icons/CheckBox';
+import CheckBoxOutlineBlankIcon from '@material-ui/icons/CheckBoxOutlineBlank';
+import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
+import { Autocomplete } from '@material-ui/lab';
+import React, { useMemo } from 'react';
+import { useEntityListProvider } from '../../hooks/useEntityListProvider';
+import { EntityLifecycleFilter } from '../../types';
+
+const icon = ;
+const checkedIcon = ;
+
+export const EntityLifecyclePicker = () => {
+ const { updateFilters, backendEntities, filters } = useEntityListProvider();
+ const availableLifecycles = useMemo(
+ () =>
+ [
+ ...new Set(
+ backendEntities
+ .map((e: Entity) => e.spec?.lifecycle)
+ .filter(Boolean) as string[],
+ ),
+ ].sort(),
+ [backendEntities],
+ );
+
+ if (!availableLifecycles.length) return null;
+
+ const onChange = (lifecycles: string[]) => {
+ updateFilters({
+ lifecycles: lifecycles.length
+ ? new EntityLifecycleFilter(lifecycles)
+ : undefined,
+ });
+ };
+
+ return (
+
+ Lifecycle
+
+ multiple
+ options={availableLifecycles}
+ value={filters.lifecycles?.values ?? []}
+ onChange={(_: object, value: string[]) => onChange(value)}
+ renderOption={(option, { selected }) => (
+
+ }
+ label={option}
+ />
+ )}
+ size="small"
+ popupIcon={}
+ renderInput={params => }
+ />
+
+ );
+};
diff --git a/plugins/catalog-backend/migrationsv2/20200923104503_case_insensitivity.js b/plugins/catalog-react/src/components/EntityLifecyclePicker/index.ts
similarity index 59%
rename from plugins/catalog-backend/migrationsv2/20200923104503_case_insensitivity.js
rename to plugins/catalog-react/src/components/EntityLifecyclePicker/index.ts
index ea5ba9e58d..4b8cfb282d 100644
--- a/plugins/catalog-backend/migrationsv2/20200923104503_case_insensitivity.js
+++ b/plugins/catalog-react/src/components/EntityLifecyclePicker/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,19 +14,4 @@
* limitations under the License.
*/
-// @ts-check
-
-/**
- * @param {import('knex').Knex} knex
- */
-exports.up = async function up(knex) {
- await knex('entities')
- .where({ namespace: null })
- .update({ namespace: 'default' });
- await knex('entities_search').update({
- key: knex.raw('LOWER(key)'),
- value: knex.raw('LOWER(value)'),
- });
-};
-
-exports.down = async function down() {};
+export { EntityLifecyclePicker } from './EntityLifecyclePicker';
diff --git a/plugins/catalog-react/src/components/EntityOwnerPicker/EntityOwnerPicker.test.tsx b/plugins/catalog-react/src/components/EntityOwnerPicker/EntityOwnerPicker.test.tsx
new file mode 100644
index 0000000000..c39fcb887a
--- /dev/null
+++ b/plugins/catalog-react/src/components/EntityOwnerPicker/EntityOwnerPicker.test.tsx
@@ -0,0 +1,169 @@
+/*
+ * Copyright 2021 The Backstage Authors
+ *
+ * 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.
+ */
+
+import { Entity } from '@backstage/catalog-model';
+import { fireEvent, render } from '@testing-library/react';
+import React from 'react';
+import { MockEntityListContextProvider } from '../../testUtils/providers';
+import { EntityOwnerFilter } from '../../types';
+import { EntityOwnerPicker } from './EntityOwnerPicker';
+
+const sampleEntities: Entity[] = [
+ {
+ apiVersion: '1',
+ kind: 'Component',
+ metadata: {
+ name: 'component-1',
+ },
+ relations: [
+ {
+ type: 'ownedBy',
+ target: {
+ name: 'some-owner',
+ namespace: 'default',
+ kind: 'Group',
+ },
+ },
+ {
+ type: 'ownedBy',
+ target: {
+ name: 'some-owner-2',
+ namespace: 'default',
+ kind: 'Group',
+ },
+ },
+ ],
+ },
+ {
+ apiVersion: '1',
+ kind: 'Component',
+ metadata: {
+ name: 'component-2',
+ },
+ relations: [
+ {
+ type: 'ownedBy',
+ target: {
+ name: 'another-owner',
+ namespace: 'default',
+ kind: 'Group',
+ },
+ },
+ ],
+ },
+ {
+ apiVersion: '1',
+ kind: 'Component',
+ metadata: {
+ name: 'component-3',
+ },
+ relations: [
+ {
+ type: 'ownedBy',
+ target: {
+ name: 'some-owner',
+ namespace: 'default',
+ kind: 'Group',
+ },
+ },
+ ],
+ },
+];
+
+describe('', () => {
+ it('renders all owners', () => {
+ const rendered = render(
+
+
+ ,
+ );
+ expect(rendered.getByText('Owner')).toBeInTheDocument();
+
+ fireEvent.click(rendered.getByTestId('owner-picker-expand'));
+ sampleEntities
+ .flatMap(e => e.relations?.map(r => r.target.name))
+ .forEach(owner => {
+ expect(rendered.getByText(owner as string)).toBeInTheDocument();
+ });
+ });
+
+ it('renders unique owners in alphabetical order', () => {
+ const rendered = render(
+
+
+ ,
+ );
+ expect(rendered.getByText('Owner')).toBeInTheDocument();
+
+ fireEvent.click(rendered.getByTestId('owner-picker-expand'));
+
+ expect(rendered.getAllByRole('option').map(o => o.textContent)).toEqual([
+ 'another-owner',
+ 'some-owner',
+ 'some-owner-2',
+ ]);
+ });
+
+ it('adds owners to filters', () => {
+ const updateFilters = jest.fn();
+ const rendered = render(
+
+
+ ,
+ );
+ expect(updateFilters).not.toHaveBeenCalled();
+
+ fireEvent.click(rendered.getByTestId('owner-picker-expand'));
+ fireEvent.click(rendered.getByText('some-owner'));
+ expect(updateFilters).toHaveBeenLastCalledWith({
+ owners: new EntityOwnerFilter(['some-owner']),
+ });
+ });
+
+ it('removes owners from filters', () => {
+ const updateFilters = jest.fn();
+ const rendered = render(
+
+
+ ,
+ );
+ expect(updateFilters).not.toHaveBeenCalled();
+ fireEvent.click(rendered.getByTestId('owner-picker-expand'));
+ expect(rendered.getByLabelText('some-owner')).toBeChecked();
+
+ fireEvent.click(rendered.getByLabelText('some-owner'));
+ expect(updateFilters).toHaveBeenLastCalledWith({
+ owner: undefined,
+ });
+ });
+});
diff --git a/plugins/catalog-react/src/components/EntityOwnerPicker/EntityOwnerPicker.tsx b/plugins/catalog-react/src/components/EntityOwnerPicker/EntityOwnerPicker.tsx
new file mode 100644
index 0000000000..665529fddb
--- /dev/null
+++ b/plugins/catalog-react/src/components/EntityOwnerPicker/EntityOwnerPicker.tsx
@@ -0,0 +1,90 @@
+/*
+ * Copyright 2021 The Backstage Authors
+ *
+ * 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.
+ */
+
+import { Entity, RELATION_OWNED_BY } from '@backstage/catalog-model';
+import {
+ Box,
+ Checkbox,
+ FormControlLabel,
+ TextField,
+ Typography,
+} from '@material-ui/core';
+import CheckBoxIcon from '@material-ui/icons/CheckBox';
+import CheckBoxOutlineBlankIcon from '@material-ui/icons/CheckBoxOutlineBlank';
+import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
+import { Autocomplete } from '@material-ui/lab';
+import React, { useMemo } from 'react';
+import { useEntityListProvider } from '../../hooks/useEntityListProvider';
+import { EntityOwnerFilter } from '../../types';
+import { getEntityRelations } from '../../utils';
+import { formatEntityRefTitle } from '../EntityRefLink';
+
+const icon = ;
+const checkedIcon = ;
+
+export const EntityOwnerPicker = () => {
+ const { updateFilters, backendEntities, filters } = useEntityListProvider();
+ const availableOwners = useMemo(
+ () =>
+ [
+ ...new Set(
+ backendEntities
+ .flatMap((e: Entity) =>
+ getEntityRelations(e, RELATION_OWNED_BY).map(o =>
+ formatEntityRefTitle(o, { defaultKind: 'group' }),
+ ),
+ )
+ .filter(Boolean) as string[],
+ ),
+ ].sort(),
+ [backendEntities],
+ );
+
+ if (!availableOwners.length) return null;
+
+ const onChange = (owners: string[]) => {
+ updateFilters({
+ owners: owners.length ? new EntityOwnerFilter(owners) : undefined,
+ });
+ };
+
+ return (
+
+ Owner
+
+ multiple
+ options={availableOwners}
+ value={filters.owners?.values ?? []}
+ onChange={(_: object, value: string[]) => onChange(value)}
+ renderOption={(option, { selected }) => (
+
+ }
+ label={option}
+ />
+ )}
+ size="small"
+ popupIcon={}
+ renderInput={params => }
+ />
+
+ );
+};
diff --git a/plugins/catalog-react/src/components/EntityOwnerPicker/index.ts b/plugins/catalog-react/src/components/EntityOwnerPicker/index.ts
new file mode 100644
index 0000000000..f30928718b
--- /dev/null
+++ b/plugins/catalog-react/src/components/EntityOwnerPicker/index.ts
@@ -0,0 +1,17 @@
+/*
+ * Copyright 2021 The Backstage Authors
+ *
+ * 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.
+ */
+
+export { EntityOwnerPicker } from './EntityOwnerPicker';
diff --git a/plugins/catalog-react/src/components/EntityProvider/EntityProvider.tsx b/plugins/catalog-react/src/components/EntityProvider/EntityProvider.tsx
index 861fe3d9e7..72cc9e4698 100644
--- a/plugins/catalog-react/src/components/EntityProvider/EntityProvider.tsx
+++ b/plugins/catalog-react/src/components/EntityProvider/EntityProvider.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/components/EntityProvider/index.ts b/plugins/catalog-react/src/components/EntityProvider/index.ts
index 01eae4737f..ec7f4024e1 100644
--- a/plugins/catalog-react/src/components/EntityProvider/index.ts
+++ b/plugins/catalog-react/src/components/EntityProvider/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/components/EntityRefLink/EntityRefLink.test.tsx b/plugins/catalog-react/src/components/EntityRefLink/EntityRefLink.test.tsx
index b6fe8a77d8..45411a9d5e 100644
--- a/plugins/catalog-react/src/components/EntityRefLink/EntityRefLink.test.tsx
+++ b/plugins/catalog-react/src/components/EntityRefLink/EntityRefLink.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/components/EntityRefLink/EntityRefLink.tsx b/plugins/catalog-react/src/components/EntityRefLink/EntityRefLink.tsx
index c19c9c1703..c3d93722ff 100644
--- a/plugins/catalog-react/src/components/EntityRefLink/EntityRefLink.tsx
+++ b/plugins/catalog-react/src/components/EntityRefLink/EntityRefLink.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/components/EntityRefLink/EntityRefLinks.test.tsx b/plugins/catalog-react/src/components/EntityRefLink/EntityRefLinks.test.tsx
index 9bc26b0954..97817f3de9 100644
--- a/plugins/catalog-react/src/components/EntityRefLink/EntityRefLinks.test.tsx
+++ b/plugins/catalog-react/src/components/EntityRefLink/EntityRefLinks.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/components/EntityRefLink/EntityRefLinks.tsx b/plugins/catalog-react/src/components/EntityRefLink/EntityRefLinks.tsx
index 52ed87c80b..bb782b1629 100644
--- a/plugins/catalog-react/src/components/EntityRefLink/EntityRefLinks.tsx
+++ b/plugins/catalog-react/src/components/EntityRefLink/EntityRefLinks.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/components/EntityRefLink/format.test.ts b/plugins/catalog-react/src/components/EntityRefLink/format.test.ts
index 142c914453..b489f088fd 100644
--- a/plugins/catalog-react/src/components/EntityRefLink/format.test.ts
+++ b/plugins/catalog-react/src/components/EntityRefLink/format.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/components/EntityRefLink/format.ts b/plugins/catalog-react/src/components/EntityRefLink/format.ts
index 28ba1bd22d..ebb1313b88 100644
--- a/plugins/catalog-react/src/components/EntityRefLink/format.ts
+++ b/plugins/catalog-react/src/components/EntityRefLink/format.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/components/EntityRefLink/index.ts b/plugins/catalog-react/src/components/EntityRefLink/index.ts
index 9e6e440514..1c5297e2f2 100644
--- a/plugins/catalog-react/src/components/EntityRefLink/index.ts
+++ b/plugins/catalog-react/src/components/EntityRefLink/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/components/EntityTable/EntityTable.test.tsx b/plugins/catalog-react/src/components/EntityTable/EntityTable.test.tsx
index 33bbbd007d..99f998118f 100644
--- a/plugins/catalog-react/src/components/EntityTable/EntityTable.test.tsx
+++ b/plugins/catalog-react/src/components/EntityTable/EntityTable.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/components/EntityTable/EntityTable.tsx b/plugins/catalog-react/src/components/EntityTable/EntityTable.tsx
index afcaaea305..f4996a5cdf 100644
--- a/plugins/catalog-react/src/components/EntityTable/EntityTable.tsx
+++ b/plugins/catalog-react/src/components/EntityTable/EntityTable.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/components/EntityTable/columns.tsx b/plugins/catalog-react/src/components/EntityTable/columns.tsx
index 7f5417df4e..f6ff185c75 100644
--- a/plugins/catalog-react/src/components/EntityTable/columns.tsx
+++ b/plugins/catalog-react/src/components/EntityTable/columns.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/components/EntityTable/index.ts b/plugins/catalog-react/src/components/EntityTable/index.ts
index 8a01b9baae..36203e7929 100644
--- a/plugins/catalog-react/src/components/EntityTable/index.ts
+++ b/plugins/catalog-react/src/components/EntityTable/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/components/EntityTable/presets.test.tsx b/plugins/catalog-react/src/components/EntityTable/presets.test.tsx
index 0f87c4132f..6e18508b1f 100644
--- a/plugins/catalog-react/src/components/EntityTable/presets.test.tsx
+++ b/plugins/catalog-react/src/components/EntityTable/presets.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/components/EntityTable/presets.tsx b/plugins/catalog-react/src/components/EntityTable/presets.tsx
index 7ce6b75532..051cf0f6c1 100644
--- a/plugins/catalog-react/src/components/EntityTable/presets.tsx
+++ b/plugins/catalog-react/src/components/EntityTable/presets.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/components/EntityTagPicker/EntityTagPicker.test.tsx b/plugins/catalog-react/src/components/EntityTagPicker/EntityTagPicker.test.tsx
index 23a7ab55cf..9d65221b76 100644
--- a/plugins/catalog-react/src/components/EntityTagPicker/EntityTagPicker.test.tsx
+++ b/plugins/catalog-react/src/components/EntityTagPicker/EntityTagPicker.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/components/EntityTagPicker/EntityTagPicker.tsx b/plugins/catalog-react/src/components/EntityTagPicker/EntityTagPicker.tsx
index e610fb9d2f..bd92b68478 100644
--- a/plugins/catalog-react/src/components/EntityTagPicker/EntityTagPicker.tsx
+++ b/plugins/catalog-react/src/components/EntityTagPicker/EntityTagPicker.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,6 +16,7 @@
import { Entity } from '@backstage/catalog-model';
import {
+ Box,
Checkbox,
FormControlLabel,
TextField,
@@ -55,7 +56,7 @@ export const EntityTagPicker = () => {
};
return (
- <>
+
Tags
multiple
@@ -78,6 +79,6 @@ export const EntityTagPicker = () => {
popupIcon={}
renderInput={params => }
/>
- >
+
);
};
diff --git a/plugins/catalog-react/src/components/EntityTagPicker/index.ts b/plugins/catalog-react/src/components/EntityTagPicker/index.ts
index 5e797e1ef5..cb8d418a41 100644
--- a/plugins/catalog-react/src/components/EntityTagPicker/index.ts
+++ b/plugins/catalog-react/src/components/EntityTagPicker/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/components/EntityTypePicker/EntityTypePicker.test.tsx b/plugins/catalog-react/src/components/EntityTypePicker/EntityTypePicker.test.tsx
index f33feb3a57..2780cbe573 100644
--- a/plugins/catalog-react/src/components/EntityTypePicker/EntityTypePicker.test.tsx
+++ b/plugins/catalog-react/src/components/EntityTypePicker/EntityTypePicker.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/components/EntityTypePicker/EntityTypePicker.tsx b/plugins/catalog-react/src/components/EntityTypePicker/EntityTypePicker.tsx
index f5a21d4284..6000fb988f 100644
--- a/plugins/catalog-react/src/components/EntityTypePicker/EntityTypePicker.tsx
+++ b/plugins/catalog-react/src/components/EntityTypePicker/EntityTypePicker.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/components/EntityTypePicker/index.ts b/plugins/catalog-react/src/components/EntityTypePicker/index.ts
index a5e7377f4c..6e888516f3 100644
--- a/plugins/catalog-react/src/components/EntityTypePicker/index.ts
+++ b/plugins/catalog-react/src/components/EntityTypePicker/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/components/UserListPicker/UserListPicker.test.tsx b/plugins/catalog-react/src/components/UserListPicker/UserListPicker.test.tsx
index dc3338645c..07534d63bf 100644
--- a/plugins/catalog-react/src/components/UserListPicker/UserListPicker.test.tsx
+++ b/plugins/catalog-react/src/components/UserListPicker/UserListPicker.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/components/UserListPicker/UserListPicker.tsx b/plugins/catalog-react/src/components/UserListPicker/UserListPicker.tsx
index c799a317a5..08c44fb65d 100644
--- a/plugins/catalog-react/src/components/UserListPicker/UserListPicker.tsx
+++ b/plugins/catalog-react/src/components/UserListPicker/UserListPicker.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/components/UserListPicker/index.ts b/plugins/catalog-react/src/components/UserListPicker/index.ts
index ad45965c17..0bacaee8ca 100644
--- a/plugins/catalog-react/src/components/UserListPicker/index.ts
+++ b/plugins/catalog-react/src/components/UserListPicker/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/components/index.ts b/plugins/catalog-react/src/components/index.ts
index 4aad517b32..af7282a20e 100644
--- a/plugins/catalog-react/src/components/index.ts
+++ b/plugins/catalog-react/src/components/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,6 +14,8 @@
* limitations under the License.
*/
export * from './EntityKindPicker';
+export * from './EntityLifecyclePicker';
+export * from './EntityOwnerPicker';
export * from './EntityProvider';
export * from './EntityRefLink';
export * from './EntityTable';
diff --git a/plugins/catalog-react/src/hooks/index.ts b/plugins/catalog-react/src/hooks/index.ts
index 5fbdc1ced2..483f1ab787 100644
--- a/plugins/catalog-react/src/hooks/index.ts
+++ b/plugins/catalog-react/src/hooks/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/hooks/useEntity.ts b/plugins/catalog-react/src/hooks/useEntity.ts
index a230ef747a..465cffcf9b 100644
--- a/plugins/catalog-react/src/hooks/useEntity.ts
+++ b/plugins/catalog-react/src/hooks/useEntity.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/hooks/useEntityCompoundName.ts b/plugins/catalog-react/src/hooks/useEntityCompoundName.ts
index f76097a6dc..38926699f7 100644
--- a/plugins/catalog-react/src/hooks/useEntityCompoundName.ts
+++ b/plugins/catalog-react/src/hooks/useEntityCompoundName.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/hooks/useEntityListProvider.test.tsx b/plugins/catalog-react/src/hooks/useEntityListProvider.test.tsx
index e2dfbd91da..29c9825a82 100644
--- a/plugins/catalog-react/src/hooks/useEntityListProvider.test.tsx
+++ b/plugins/catalog-react/src/hooks/useEntityListProvider.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/hooks/useEntityListProvider.tsx b/plugins/catalog-react/src/hooks/useEntityListProvider.tsx
index a410c243a1..8188f158d0 100644
--- a/plugins/catalog-react/src/hooks/useEntityListProvider.tsx
+++ b/plugins/catalog-react/src/hooks/useEntityListProvider.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -29,6 +29,8 @@ import { catalogApiRef } from '../api';
import {
EntityFilter,
EntityKindFilter,
+ EntityLifecycleFilter,
+ EntityOwnerFilter,
EntityTagFilter,
EntityTypeFilter,
UserListFilter,
@@ -39,6 +41,8 @@ export type DefaultEntityFilters = {
kind?: EntityKindFilter;
type?: EntityTypeFilter;
user?: UserListFilter;
+ owners?: EntityOwnerFilter;
+ lifecycles?: EntityLifecycleFilter;
tags?: EntityTagFilter;
};
diff --git a/plugins/catalog-react/src/hooks/useEntityTypeFilter.tsx b/plugins/catalog-react/src/hooks/useEntityTypeFilter.tsx
index c5e03b90c6..9fc9f90731 100644
--- a/plugins/catalog-react/src/hooks/useEntityTypeFilter.tsx
+++ b/plugins/catalog-react/src/hooks/useEntityTypeFilter.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/hooks/useOwnUser.ts b/plugins/catalog-react/src/hooks/useOwnUser.ts
index d79cfbe92c..f41e4150f9 100644
--- a/plugins/catalog-react/src/hooks/useOwnUser.ts
+++ b/plugins/catalog-react/src/hooks/useOwnUser.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/hooks/useRelatedEntities.ts b/plugins/catalog-react/src/hooks/useRelatedEntities.ts
index 77514ba63e..83ed2baa58 100644
--- a/plugins/catalog-react/src/hooks/useRelatedEntities.ts
+++ b/plugins/catalog-react/src/hooks/useRelatedEntities.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/hooks/useStarredEntities.test.tsx b/plugins/catalog-react/src/hooks/useStarredEntities.test.tsx
index 1541fef9d1..ef5b2dbd6e 100644
--- a/plugins/catalog-react/src/hooks/useStarredEntities.test.tsx
+++ b/plugins/catalog-react/src/hooks/useStarredEntities.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/hooks/useStarredEntities.ts b/plugins/catalog-react/src/hooks/useStarredEntities.ts
index 527e7c4109..6f7b895fc8 100644
--- a/plugins/catalog-react/src/hooks/useStarredEntities.ts
+++ b/plugins/catalog-react/src/hooks/useStarredEntities.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/index.ts b/plugins/catalog-react/src/index.ts
index 8333925652..62426432a2 100644
--- a/plugins/catalog-react/src/index.ts
+++ b/plugins/catalog-react/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/routes.ts b/plugins/catalog-react/src/routes.ts
index 7470b8030e..56450122d2 100644
--- a/plugins/catalog-react/src/routes.ts
+++ b/plugins/catalog-react/src/routes.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/setupTests.ts b/plugins/catalog-react/src/setupTests.ts
index aea2220869..c1d649f2ad 100644
--- a/plugins/catalog-react/src/setupTests.ts
+++ b/plugins/catalog-react/src/setupTests.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/testUtils/index.ts b/plugins/catalog-react/src/testUtils/index.ts
index 090e9190e4..2bfec07c81 100644
--- a/plugins/catalog-react/src/testUtils/index.ts
+++ b/plugins/catalog-react/src/testUtils/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/testUtils/providers.tsx b/plugins/catalog-react/src/testUtils/providers.tsx
index 956df15c1f..8678ae659c 100644
--- a/plugins/catalog-react/src/testUtils/providers.tsx
+++ b/plugins/catalog-react/src/testUtils/providers.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/types.ts b/plugins/catalog-react/src/types.ts
index 98ea2fb9b0..7932e4b735 100644
--- a/plugins/catalog-react/src/types.ts
+++ b/plugins/catalog-react/src/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,8 +14,13 @@
* limitations under the License.
*/
-import { Entity, UserEntity } from '@backstage/catalog-model';
-import { isOwnerOf } from './utils';
+import {
+ Entity,
+ RELATION_OWNED_BY,
+ UserEntity,
+} from '@backstage/catalog-model';
+import { getEntityRelations, isOwnerOf } from './utils';
+import { formatEntityRefTitle } from './components/EntityRefLink';
export type EntityFilter = {
/**
@@ -61,6 +66,26 @@ export class EntityTagFilter implements EntityFilter {
}
}
+export class EntityOwnerFilter implements EntityFilter {
+ constructor(readonly values: string[]) {}
+
+ filterEntity(entity: Entity): boolean {
+ return this.values.some(v =>
+ getEntityRelations(entity, RELATION_OWNED_BY).some(
+ o => formatEntityRefTitle(o, { defaultKind: 'group' }) === v,
+ ),
+ );
+ }
+}
+
+export class EntityLifecycleFilter implements EntityFilter {
+ constructor(readonly values: string[]) {}
+
+ filterEntity(entity: Entity): boolean {
+ return this.values.some(v => entity.spec?.lifecycle === v);
+ }
+}
+
export type UserListFilterKind = 'owned' | 'starred' | 'all';
export class UserListFilter implements EntityFilter {
constructor(
diff --git a/plugins/catalog-react/src/utils/filters.ts b/plugins/catalog-react/src/utils/filters.ts
index 73f1763bb1..b3683beea0 100644
--- a/plugins/catalog-react/src/utils/filters.ts
+++ b/plugins/catalog-react/src/utils/filters.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/utils/getEntityMetadataUrl.ts b/plugins/catalog-react/src/utils/getEntityMetadataUrl.ts
index a28fdb26d7..996f928ecf 100644
--- a/plugins/catalog-react/src/utils/getEntityMetadataUrl.ts
+++ b/plugins/catalog-react/src/utils/getEntityMetadataUrl.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/utils/getEntityRelations.test.ts b/plugins/catalog-react/src/utils/getEntityRelations.test.ts
index 5b997d646b..22c695043f 100644
--- a/plugins/catalog-react/src/utils/getEntityRelations.test.ts
+++ b/plugins/catalog-react/src/utils/getEntityRelations.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/utils/getEntityRelations.ts b/plugins/catalog-react/src/utils/getEntityRelations.ts
index f9f526698f..3e6a957eff 100644
--- a/plugins/catalog-react/src/utils/getEntityRelations.ts
+++ b/plugins/catalog-react/src/utils/getEntityRelations.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/utils/getEntitySourceLocation.ts b/plugins/catalog-react/src/utils/getEntitySourceLocation.ts
index 36e9d5d187..59c3b5ab95 100644
--- a/plugins/catalog-react/src/utils/getEntitySourceLocation.ts
+++ b/plugins/catalog-react/src/utils/getEntitySourceLocation.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/utils/index.ts b/plugins/catalog-react/src/utils/index.ts
index c91ef3c3e2..2672664ef8 100644
--- a/plugins/catalog-react/src/utils/index.ts
+++ b/plugins/catalog-react/src/utils/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/utils/isOwnerOf.test.ts b/plugins/catalog-react/src/utils/isOwnerOf.test.ts
index dc1f2ab1a8..2cd6cfafa3 100644
--- a/plugins/catalog-react/src/utils/isOwnerOf.test.ts
+++ b/plugins/catalog-react/src/utils/isOwnerOf.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog-react/src/utils/isOwnerOf.ts b/plugins/catalog-react/src/utils/isOwnerOf.ts
index d135e4030a..e62a0db1ba 100644
--- a/plugins/catalog-react/src/utils/isOwnerOf.ts
+++ b/plugins/catalog-react/src/utils/isOwnerOf.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/CHANGELOG.md b/plugins/catalog/CHANGELOG.md
index 53df1b37f8..e0ccbd068c 100644
--- a/plugins/catalog/CHANGELOG.md
+++ b/plugins/catalog/CHANGELOG.md
@@ -1,5 +1,18 @@
# @backstage/plugin-catalog
+## 0.6.3
+
+### Patch Changes
+
+- 30c2fdad2: Exports `CatalogLayout` and `CreateComponentButton` for catalog customization.
+- e2d68f1ce: Truncate long entity names on the system diagram
+- d2d42a7fa: Fix for Diagram component using hard coded namespace.
+- 2ebc430c4: Export `CatalogTableRow` type
+- Updated dependencies
+ - @backstage/plugin-catalog-react@0.2.3
+ - @backstage/catalog-model@0.8.3
+ - @backstage/core@0.7.13
+
## 0.6.2
### Patch Changes
diff --git a/plugins/catalog/README.md b/plugins/catalog/README.md
index 611d2989e8..8527c8da7c 100644
--- a/plugins/catalog/README.md
+++ b/plugins/catalog/README.md
@@ -1,26 +1,107 @@
# Backstage Catalog Frontend
-This is the frontend part of the default catalog plugin.
+This is the React frontend for the default Backstage [software
+catalog](http://backstage.io/docs/features/software-catalog/software-catalog-overview).
+This package supplies interfaces related to listing catalog entities or showing
+more information about them on entity pages.
-It will implement the core API for handling your catalog of software, and
-supply the base views to show and manage them.
+## Installation
-## Getting Started
+This `@backstage/plugin-catalog` package comes installed by default in any
+Backstage application created with `npx @backstage/create-app`, so installation
+is not usually required.
-This frontend plugin can be started in a standalone mode from directly in this package
-with `yarn start`. However, it will have limited functionality and that process is
-most convenient when developing the catalog frontend plugin itself.
+To check if you already have the package, look under
+`packages/app/package.json`, in the `dependencies` block, for
+`@backstage/plugin-catalog`. The instructions below walk through restoring the
+plugin, if you previously removed it.
-To evaluate the catalog and have a greater amount of functionality available, from the main
-Backstage root folder, instead do:
+### Install the package
+
+```bash
+# From your Backstage root directory
+cd packages/app
+yarn add @backstage/plugin-catalog
+```
+
+### Add the plugin to your `packages/app`
+
+Add the two pages that the catalog plugin provides to your app. You can choose
+any name for these routes, but we recommend the following:
+
+```diff
+// packages/app/src/App.tsx
+import {
+ CatalogIndexPage,
+ CatalogEntityPage,
+} from '@backstage/plugin-catalog';
+import { entityPage } from './components/catalog/EntityPage';
+
+
++ } />
++ }>
++ {/*
++ This is the root of the custom entity pages for your app, refer to the example app
++ in the main repo or the output of @backstage/create-app for an example
++ */}
++ {entityPage}
++
+ ...
+
+```
+
+The catalog plugin also has one external route that needs to be bound for it to
+function: the `createComponent` route which should link to the page where the
+user can create components. In a typical setup the create component route will
+be linked to the scaffolder plugin's template index page:
+
+```diff
+// packages/app/src/App.tsx
++import { catalogPlugin } from '@backstage/plugin-catalog';
++import { scaffolderPlugin } from '@backstage/plugin-scaffolder';
+
+const app = createApp({
+ // ...
+ bindRoutes({ bind }) {
++ bind(catalogPlugin.externalRoutes, {
++ createComponent: scaffolderPlugin.routes.root,
++ });
+ },
+});
+```
+
+You may also want to add a link to the catalog index page to your application
+sidebar:
+
+```diff
+// packages/app/src/components/Root/Root.tsx
++import HomeIcon from '@material-ui/icons/Home';
+
+export const Root = ({ children }: PropsWithChildren<{}>) => (
+
+
++
+ ...
+
+```
+
+## Development
+
+This frontend plugin can be started in a standalone mode from directly in this
+package with `yarn start`. However, it will have limited functionality and that
+process is most convenient when developing the catalog frontend plugin itself.
+
+To evaluate the catalog and have a greater amount of functionality available,
+run the entire Backstage example application from the root folder:
```bash
yarn dev
```
-This will launch both frontend and backend in the same window, populated with some example entities.
+This will launch both frontend and backend in the same window, populated with
+some example entities.
## Links
-- [Backend part of the plugin](https://github.com/backstage/backstage/tree/master/plugins/catalog-backend)
-- [The Backstage homepage](https://backstage.io)
+- [catalog-backend](https://github.com/backstage/backstage/tree/master/plugins/catalog-backend)
+ provides the backend API for this frontend.
diff --git a/plugins/catalog/dev/index.tsx b/plugins/catalog/dev/index.tsx
index 34f23071b0..bf98d7417d 100644
--- a/plugins/catalog/dev/index.tsx
+++ b/plugins/catalog/dev/index.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/package.json b/plugins/catalog/package.json
index ce72d95103..0af476b95a 100644
--- a/plugins/catalog/package.json
+++ b/plugins/catalog/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-catalog",
- "version": "0.6.2",
+ "version": "0.6.3",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -31,12 +31,13 @@
},
"dependencies": {
"@backstage/catalog-client": "^0.3.13",
- "@backstage/catalog-model": "^0.8.2",
- "@backstage/core": "^0.7.12",
+ "@backstage/catalog-model": "^0.8.3",
+ "@backstage/core": "^0.7.13",
+ "@backstage/core-plugin-api": "^0.1.2",
"@backstage/errors": "^0.1.1",
"@backstage/integration": "^0.5.6",
"@backstage/integration-react": "^0.1.3",
- "@backstage/plugin-catalog-react": "^0.2.2",
+ "@backstage/plugin-catalog-react": "^0.2.3",
"@backstage/theme": "^0.2.8",
"@material-ui/core": "^4.11.0",
"@material-ui/icons": "^4.9.1",
@@ -53,7 +54,8 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.7.0",
+ "@backstage/cli": "^0.7.1",
+ "@backstage/core-app-api": "^0.1.2",
"@backstage/dev-utils": "^0.1.17",
"@backstage/test-utils": "^0.1.13",
"@testing-library/jest-dom": "^5.10.1",
diff --git a/plugins/catalog/src/CatalogClientWrapper.test.ts b/plugins/catalog/src/CatalogClientWrapper.test.ts
index 87dcd8f74b..af1d3199b6 100644
--- a/plugins/catalog/src/CatalogClientWrapper.test.ts
+++ b/plugins/catalog/src/CatalogClientWrapper.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/CatalogClientWrapper.ts b/plugins/catalog/src/CatalogClientWrapper.ts
index 4966d9c13f..074539acfd 100644
--- a/plugins/catalog/src/CatalogClientWrapper.ts
+++ b/plugins/catalog/src/CatalogClientWrapper.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/AboutCard/AboutCard.test.tsx b/plugins/catalog/src/components/AboutCard/AboutCard.test.tsx
index 435a8d14d5..c69d952381 100644
--- a/plugins/catalog/src/components/AboutCard/AboutCard.test.tsx
+++ b/plugins/catalog/src/components/AboutCard/AboutCard.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/AboutCard/AboutCard.tsx b/plugins/catalog/src/components/AboutCard/AboutCard.tsx
index 3e8aec3e73..0cf9746713 100644
--- a/plugins/catalog/src/components/AboutCard/AboutCard.tsx
+++ b/plugins/catalog/src/components/AboutCard/AboutCard.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/AboutCard/AboutContent.tsx b/plugins/catalog/src/components/AboutCard/AboutContent.tsx
index 695595285b..968ed3de2a 100644
--- a/plugins/catalog/src/components/AboutCard/AboutContent.tsx
+++ b/plugins/catalog/src/components/AboutCard/AboutContent.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/AboutCard/AboutField.tsx b/plugins/catalog/src/components/AboutCard/AboutField.tsx
index fdcb3ace1b..cb229f5487 100644
--- a/plugins/catalog/src/components/AboutCard/AboutField.tsx
+++ b/plugins/catalog/src/components/AboutCard/AboutField.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/AboutCard/index.ts b/plugins/catalog/src/components/AboutCard/index.ts
index 8b7e5a1a81..84f6a02380 100644
--- a/plugins/catalog/src/components/AboutCard/index.ts
+++ b/plugins/catalog/src/components/AboutCard/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/CatalogEntityPage/CatalogEntityPage.tsx b/plugins/catalog/src/components/CatalogEntityPage/CatalogEntityPage.tsx
index bf5fb1d9d6..37c2ec7139 100644
--- a/plugins/catalog/src/components/CatalogEntityPage/CatalogEntityPage.tsx
+++ b/plugins/catalog/src/components/CatalogEntityPage/CatalogEntityPage.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/CatalogEntityPage/index.ts b/plugins/catalog/src/components/CatalogEntityPage/index.ts
index 627ca80e48..bac02a1529 100644
--- a/plugins/catalog/src/components/CatalogEntityPage/index.ts
+++ b/plugins/catalog/src/components/CatalogEntityPage/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/CatalogPage/CatalogLayout.tsx b/plugins/catalog/src/components/CatalogPage/CatalogLayout.tsx
index a604166688..9acde1a5ca 100644
--- a/plugins/catalog/src/components/CatalogPage/CatalogLayout.tsx
+++ b/plugins/catalog/src/components/CatalogPage/CatalogLayout.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/CatalogPage/CatalogPage.test.tsx b/plugins/catalog/src/components/CatalogPage/CatalogPage.test.tsx
index e6a1f1f687..2edf61acbd 100644
--- a/plugins/catalog/src/components/CatalogPage/CatalogPage.test.tsx
+++ b/plugins/catalog/src/components/CatalogPage/CatalogPage.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/CatalogPage/CatalogPage.tsx b/plugins/catalog/src/components/CatalogPage/CatalogPage.tsx
index 80569f4de6..c62504a334 100644
--- a/plugins/catalog/src/components/CatalogPage/CatalogPage.tsx
+++ b/plugins/catalog/src/components/CatalogPage/CatalogPage.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -24,7 +24,9 @@ import {
} from '@backstage/core';
import {
EntityKindPicker,
+ EntityLifecyclePicker,
EntityListProvider,
+ EntityOwnerPicker,
EntityTagPicker,
EntityTypePicker,
UserListFilterKind,
@@ -72,6 +74,8 @@ export const CatalogPage = ({
+
+
diff --git a/plugins/catalog/src/components/CatalogPage/index.ts b/plugins/catalog/src/components/CatalogPage/index.ts
index 1e5d9d88c1..66c3c2f4b3 100644
--- a/plugins/catalog/src/components/CatalogPage/index.ts
+++ b/plugins/catalog/src/components/CatalogPage/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/CatalogResultListItem/CatalogResultListItem.tsx b/plugins/catalog/src/components/CatalogResultListItem/CatalogResultListItem.tsx
index 8533de22f7..3374c85a3a 100644
--- a/plugins/catalog/src/components/CatalogResultListItem/CatalogResultListItem.tsx
+++ b/plugins/catalog/src/components/CatalogResultListItem/CatalogResultListItem.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/CatalogResultListItem/index.ts b/plugins/catalog/src/components/CatalogResultListItem/index.ts
index 8f418c1dc7..e8a67d8f89 100644
--- a/plugins/catalog/src/components/CatalogResultListItem/index.ts
+++ b/plugins/catalog/src/components/CatalogResultListItem/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/CatalogTable/CatalogTable.test.tsx b/plugins/catalog/src/components/CatalogTable/CatalogTable.test.tsx
index 1b40aa498b..7867ad6f46 100644
--- a/plugins/catalog/src/components/CatalogTable/CatalogTable.test.tsx
+++ b/plugins/catalog/src/components/CatalogTable/CatalogTable.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/CatalogTable/CatalogTable.tsx b/plugins/catalog/src/components/CatalogTable/CatalogTable.tsx
index 6d9f0c21bd..044dae30c5 100644
--- a/plugins/catalog/src/components/CatalogTable/CatalogTable.tsx
+++ b/plugins/catalog/src/components/CatalogTable/CatalogTable.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/CatalogTable/columns.tsx b/plugins/catalog/src/components/CatalogTable/columns.tsx
index 4f65e4b0c7..b11d5fac19 100644
--- a/plugins/catalog/src/components/CatalogTable/columns.tsx
+++ b/plugins/catalog/src/components/CatalogTable/columns.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/CatalogTable/index.ts b/plugins/catalog/src/components/CatalogTable/index.ts
index 280d5b4bcb..e1660d6c5a 100644
--- a/plugins/catalog/src/components/CatalogTable/index.ts
+++ b/plugins/catalog/src/components/CatalogTable/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -15,3 +15,4 @@
*/
export { CatalogTable } from './CatalogTable';
+export type { EntityRow } from './types';
diff --git a/plugins/catalog/src/components/CatalogTable/types.ts b/plugins/catalog/src/components/CatalogTable/types.ts
index b1a0ce2739..85926becc3 100644
--- a/plugins/catalog/src/components/CatalogTable/types.ts
+++ b/plugins/catalog/src/components/CatalogTable/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/CreateComponentButton/CreateComponentButton.tsx b/plugins/catalog/src/components/CreateComponentButton/CreateComponentButton.tsx
index 896e9bada3..43063aac1a 100644
--- a/plugins/catalog/src/components/CreateComponentButton/CreateComponentButton.tsx
+++ b/plugins/catalog/src/components/CreateComponentButton/CreateComponentButton.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/CreateComponentButton/index.ts b/plugins/catalog/src/components/CreateComponentButton/index.ts
index d5dc578d2a..e525bef782 100644
--- a/plugins/catalog/src/components/CreateComponentButton/index.ts
+++ b/plugins/catalog/src/components/CreateComponentButton/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/DependencyOfComponentsCard/DependencyOfComponentsCard.test.tsx b/plugins/catalog/src/components/DependencyOfComponentsCard/DependencyOfComponentsCard.test.tsx
index 4d78ce5019..b395ed451c 100644
--- a/plugins/catalog/src/components/DependencyOfComponentsCard/DependencyOfComponentsCard.test.tsx
+++ b/plugins/catalog/src/components/DependencyOfComponentsCard/DependencyOfComponentsCard.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -66,7 +66,7 @@ describe('', () => {
,
);
- expect(getByText('Components')).toBeInTheDocument();
+ expect(getByText('Dependency of components')).toBeInTheDocument();
expect(
getByText(/No component depends on this component/i),
).toBeInTheDocument();
@@ -114,7 +114,7 @@ describe('', () => {
);
await waitFor(() => {
- expect(getByText('Components')).toBeInTheDocument();
+ expect(getByText('Dependency of components')).toBeInTheDocument();
expect(getByText(/target-name/i)).toBeInTheDocument();
});
});
diff --git a/plugins/catalog/src/components/DependencyOfComponentsCard/DependencyOfComponentsCard.tsx b/plugins/catalog/src/components/DependencyOfComponentsCard/DependencyOfComponentsCard.tsx
index fec850757e..34057d7bed 100644
--- a/plugins/catalog/src/components/DependencyOfComponentsCard/DependencyOfComponentsCard.tsx
+++ b/plugins/catalog/src/components/DependencyOfComponentsCard/DependencyOfComponentsCard.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -30,7 +30,7 @@ type Props = {
export const DependencyOfComponentsCard = ({
variant = 'gridItem',
- title = 'Components',
+ title = 'Dependency of components',
}: Props) => {
return (
', () => {
,
);
- expect(getByText('Components')).toBeInTheDocument();
+ expect(getByText('Depends on components')).toBeInTheDocument();
expect(
getByText(/No component is a dependency of this component/i),
).toBeInTheDocument();
@@ -114,7 +114,7 @@ describe('', () => {
);
await waitFor(() => {
- expect(getByText('Components')).toBeInTheDocument();
+ expect(getByText('Depends on components')).toBeInTheDocument();
expect(getByText(/target-name/i)).toBeInTheDocument();
});
});
diff --git a/plugins/catalog/src/components/DependsOnComponentsCard/DependsOnComponentsCard.tsx b/plugins/catalog/src/components/DependsOnComponentsCard/DependsOnComponentsCard.tsx
index 1a215ab0f9..7e176139ad 100644
--- a/plugins/catalog/src/components/DependsOnComponentsCard/DependsOnComponentsCard.tsx
+++ b/plugins/catalog/src/components/DependsOnComponentsCard/DependsOnComponentsCard.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -30,7 +30,7 @@ type Props = {
export const DependsOnComponentsCard = ({
variant = 'gridItem',
- title = 'Components',
+ title = 'Depends on components',
}: Props) => {
return (
;
};
+const dataKey = 'plugin.catalog.entityLayoutRoute';
+
const Route: (props: SubRoute) => null = () => null;
+attachComponentData(Route, dataKey, true);
// This causes all mount points that are discovered within this route to use the path of the route itself
attachComponentData(Route, 'core.gatherMountPoints', true);
-function createSubRoutesFromChildren(
- childrenProps: React.ReactNode,
- entity: Entity | undefined,
-): SubRoute[] {
- // Directly comparing child.type with Route will not work with in
- // combination with react-hot-loader in storybook
- // https://github.com/gaearon/react-hot-loader/issues/304
- const routeType = (
-
-
-
- ).type;
-
- return Children.toArray(childrenProps).flatMap(child => {
- if (!isValidElement(child)) {
- return [];
- }
-
- if (child.type === Fragment) {
- return createSubRoutesFromChildren(child.props.children, entity);
- }
-
- if (child.type !== routeType) {
- throw new Error('Child of EntityLayout must be an EntityLayout.Route');
- }
-
- const { path, title, children, if: condition, tabProps } = child.props;
- if (condition && entity && !condition(entity)) {
- return [];
- }
-
- return [{ path, title, children, tabProps }];
- });
-}
-
const EntityLayoutTitle = ({
entity,
title,
@@ -195,7 +157,29 @@ export const EntityLayout = ({
const { kind, namespace, name } = useEntityCompoundName();
const { entity, loading, error } = useContext(EntityContext);
- const routes = createSubRoutesFromChildren(children, entity);
+ const routes = useElementFilter(children, elements =>
+ elements
+ .selectByComponentData({
+ key: dataKey,
+ withStrictError: 'Child of EntityLayout must be an EntityLayout.Route',
+ })
+ .getElements() // all nodes, element data, maintain structure or not?
+ .flatMap(({ props }) => {
+ if (props.if && entity && !props.if(entity)) {
+ return [];
+ }
+
+ return [
+ {
+ path: props.path,
+ title: props.title,
+ children: props.children,
+ tabProps: props.tabProps,
+ },
+ ];
+ }),
+ );
+
const { headerTitle, headerType } = headerProps(
kind,
namespace,
diff --git a/plugins/catalog/src/components/EntityLayout/index.ts b/plugins/catalog/src/components/EntityLayout/index.ts
index 2e399765c3..3b0962ae36 100644
--- a/plugins/catalog/src/components/EntityLayout/index.ts
+++ b/plugins/catalog/src/components/EntityLayout/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/EntityLinksCard/EntityLinksCard.test.tsx b/plugins/catalog/src/components/EntityLinksCard/EntityLinksCard.test.tsx
index d54eac788c..5e99adf2a2 100644
--- a/plugins/catalog/src/components/EntityLinksCard/EntityLinksCard.test.tsx
+++ b/plugins/catalog/src/components/EntityLinksCard/EntityLinksCard.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/EntityLinksCard/EntityLinksCard.tsx b/plugins/catalog/src/components/EntityLinksCard/EntityLinksCard.tsx
index 59de0a4587..ae7e312785 100644
--- a/plugins/catalog/src/components/EntityLinksCard/EntityLinksCard.tsx
+++ b/plugins/catalog/src/components/EntityLinksCard/EntityLinksCard.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/EntityLinksCard/EntityLinksEmptyState.tsx b/plugins/catalog/src/components/EntityLinksCard/EntityLinksEmptyState.tsx
index 3ced50decc..36fb04694a 100644
--- a/plugins/catalog/src/components/EntityLinksCard/EntityLinksEmptyState.tsx
+++ b/plugins/catalog/src/components/EntityLinksCard/EntityLinksEmptyState.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/EntityLinksCard/IconLink.test.tsx b/plugins/catalog/src/components/EntityLinksCard/IconLink.test.tsx
index 8caf37e70d..9c1b021071 100644
--- a/plugins/catalog/src/components/EntityLinksCard/IconLink.test.tsx
+++ b/plugins/catalog/src/components/EntityLinksCard/IconLink.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/EntityLinksCard/IconLink.tsx b/plugins/catalog/src/components/EntityLinksCard/IconLink.tsx
index 32ea085889..da299ae1e0 100644
--- a/plugins/catalog/src/components/EntityLinksCard/IconLink.tsx
+++ b/plugins/catalog/src/components/EntityLinksCard/IconLink.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/EntityLinksCard/LinksGridList.tsx b/plugins/catalog/src/components/EntityLinksCard/LinksGridList.tsx
index 9ef77a4bbf..90731b4439 100644
--- a/plugins/catalog/src/components/EntityLinksCard/LinksGridList.tsx
+++ b/plugins/catalog/src/components/EntityLinksCard/LinksGridList.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/EntityLinksCard/index.ts b/plugins/catalog/src/components/EntityLinksCard/index.ts
index d893d3a233..04c30c0f68 100644
--- a/plugins/catalog/src/components/EntityLinksCard/index.ts
+++ b/plugins/catalog/src/components/EntityLinksCard/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/EntityLinksCard/types.ts b/plugins/catalog/src/components/EntityLinksCard/types.ts
index d7729fc216..e3cd1a94ac 100644
--- a/plugins/catalog/src/components/EntityLinksCard/types.ts
+++ b/plugins/catalog/src/components/EntityLinksCard/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/EntityLinksCard/useDynamicColumns.tsx b/plugins/catalog/src/components/EntityLinksCard/useDynamicColumns.tsx
index d2b4168e0b..cb6868632c 100644
--- a/plugins/catalog/src/components/EntityLinksCard/useDynamicColumns.tsx
+++ b/plugins/catalog/src/components/EntityLinksCard/useDynamicColumns.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/EntityLoaderProvider/EntityLoaderProvider.tsx b/plugins/catalog/src/components/EntityLoaderProvider/EntityLoaderProvider.tsx
index 97a4263e0d..7f9f728161 100644
--- a/plugins/catalog/src/components/EntityLoaderProvider/EntityLoaderProvider.tsx
+++ b/plugins/catalog/src/components/EntityLoaderProvider/EntityLoaderProvider.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/EntityLoaderProvider/index.ts b/plugins/catalog/src/components/EntityLoaderProvider/index.ts
index 925c927ec9..8422e6dc4b 100644
--- a/plugins/catalog/src/components/EntityLoaderProvider/index.ts
+++ b/plugins/catalog/src/components/EntityLoaderProvider/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/EntityNotFound/EntityNotFound.test.tsx b/plugins/catalog/src/components/EntityNotFound/EntityNotFound.test.tsx
index ddb27d584a..faaba13d78 100644
--- a/plugins/catalog/src/components/EntityNotFound/EntityNotFound.test.tsx
+++ b/plugins/catalog/src/components/EntityNotFound/EntityNotFound.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/EntityNotFound/EntityNotFound.tsx b/plugins/catalog/src/components/EntityNotFound/EntityNotFound.tsx
index 21ca09dae1..e396e5b4aa 100644
--- a/plugins/catalog/src/components/EntityNotFound/EntityNotFound.tsx
+++ b/plugins/catalog/src/components/EntityNotFound/EntityNotFound.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/EntityNotFound/Illo/Illo.tsx b/plugins/catalog/src/components/EntityNotFound/Illo/Illo.tsx
index 6c7bb9d788..e0e76cd5d4 100644
--- a/plugins/catalog/src/components/EntityNotFound/Illo/Illo.tsx
+++ b/plugins/catalog/src/components/EntityNotFound/Illo/Illo.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/EntityNotFound/Illo/index.ts b/plugins/catalog/src/components/EntityNotFound/Illo/index.ts
index 264a75a5b1..f141dc383a 100644
--- a/plugins/catalog/src/components/EntityNotFound/Illo/index.ts
+++ b/plugins/catalog/src/components/EntityNotFound/Illo/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/EntityNotFound/index.ts b/plugins/catalog/src/components/EntityNotFound/index.ts
index 613ea7b36d..700a1097ca 100644
--- a/plugins/catalog/src/components/EntityNotFound/index.ts
+++ b/plugins/catalog/src/components/EntityNotFound/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/EntityOrphanWarning/DeleteEntityDialog.test.tsx b/plugins/catalog/src/components/EntityOrphanWarning/DeleteEntityDialog.test.tsx
index d9f266cce7..f6ee67a009 100644
--- a/plugins/catalog/src/components/EntityOrphanWarning/DeleteEntityDialog.test.tsx
+++ b/plugins/catalog/src/components/EntityOrphanWarning/DeleteEntityDialog.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/EntityOrphanWarning/DeleteEntityDialog.tsx b/plugins/catalog/src/components/EntityOrphanWarning/DeleteEntityDialog.tsx
index 26b6b29650..f7bc3611e7 100644
--- a/plugins/catalog/src/components/EntityOrphanWarning/DeleteEntityDialog.tsx
+++ b/plugins/catalog/src/components/EntityOrphanWarning/DeleteEntityDialog.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/EntityOrphanWarning/EntityOrphanWarning.test.tsx b/plugins/catalog/src/components/EntityOrphanWarning/EntityOrphanWarning.test.tsx
index 0b3b8de504..12a990b5ff 100644
--- a/plugins/catalog/src/components/EntityOrphanWarning/EntityOrphanWarning.test.tsx
+++ b/plugins/catalog/src/components/EntityOrphanWarning/EntityOrphanWarning.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/EntityOrphanWarning/EntityOrphanWarning.tsx b/plugins/catalog/src/components/EntityOrphanWarning/EntityOrphanWarning.tsx
index 070c36c56c..f387d035e4 100644
--- a/plugins/catalog/src/components/EntityOrphanWarning/EntityOrphanWarning.tsx
+++ b/plugins/catalog/src/components/EntityOrphanWarning/EntityOrphanWarning.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/EntityOrphanWarning/index.ts b/plugins/catalog/src/components/EntityOrphanWarning/index.ts
index b64f8c1232..a387407a48 100644
--- a/plugins/catalog/src/components/EntityOrphanWarning/index.ts
+++ b/plugins/catalog/src/components/EntityOrphanWarning/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/EntityPageLayout/EntityPageLayout.tsx b/plugins/catalog/src/components/EntityPageLayout/EntityPageLayout.tsx
index efe62de6c2..272cf7baf9 100644
--- a/plugins/catalog/src/components/EntityPageLayout/EntityPageLayout.tsx
+++ b/plugins/catalog/src/components/EntityPageLayout/EntityPageLayout.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/EntityPageLayout/Tabbed/Tabbed.test.tsx b/plugins/catalog/src/components/EntityPageLayout/Tabbed/Tabbed.test.tsx
index d5ca9170a2..9681420e1c 100644
--- a/plugins/catalog/src/components/EntityPageLayout/Tabbed/Tabbed.test.tsx
+++ b/plugins/catalog/src/components/EntityPageLayout/Tabbed/Tabbed.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/EntityPageLayout/Tabbed/Tabbed.tsx b/plugins/catalog/src/components/EntityPageLayout/Tabbed/Tabbed.tsx
index 9a4e872d8f..e408d42a22 100644
--- a/plugins/catalog/src/components/EntityPageLayout/Tabbed/Tabbed.tsx
+++ b/plugins/catalog/src/components/EntityPageLayout/Tabbed/Tabbed.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/EntityPageLayout/Tabbed/index.ts b/plugins/catalog/src/components/EntityPageLayout/Tabbed/index.ts
index d58cd626ba..ff14fe3b2c 100644
--- a/plugins/catalog/src/components/EntityPageLayout/Tabbed/index.ts
+++ b/plugins/catalog/src/components/EntityPageLayout/Tabbed/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/EntityPageLayout/index.ts b/plugins/catalog/src/components/EntityPageLayout/index.ts
index acf6f948f1..549d3d8454 100644
--- a/plugins/catalog/src/components/EntityPageLayout/index.ts
+++ b/plugins/catalog/src/components/EntityPageLayout/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/EntitySwitch/EntitySwitch.test.tsx b/plugins/catalog/src/components/EntitySwitch/EntitySwitch.test.tsx
index 20b9aaba4f..1a87b83600 100644
--- a/plugins/catalog/src/components/EntitySwitch/EntitySwitch.test.tsx
+++ b/plugins/catalog/src/components/EntitySwitch/EntitySwitch.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -20,6 +20,19 @@ import { render } from '@testing-library/react';
import React from 'react';
import { isKind } from './conditions';
import { EntitySwitch } from './EntitySwitch';
+import { featureFlagsApiRef } from '@backstage/core-plugin-api';
+import {
+ LocalStorageFeatureFlags,
+ ApiProvider,
+ ApiRegistry,
+} from '@backstage/core-app-api';
+
+const mockFeatureFlagsApi = new LocalStorageFeatureFlags();
+const Wrapper = ({ children }: { children?: React.ReactNode }) => (
+
+ {children}
+
+);
describe('EntitySwitch', () => {
it('should switch child when entity switches', () => {
@@ -32,15 +45,17 @@ describe('EntitySwitch', () => {
);
const rendered = render(
-
- {content}
- ,
+
+
+ {content}
+
+ ,
);
expect(rendered.queryByText('A')).toBeInTheDocument();
@@ -48,15 +63,17 @@ describe('EntitySwitch', () => {
expect(rendered.queryByText('C')).not.toBeInTheDocument();
rendered.rerender(
-
- {content}
- ,
+
+
+ {content}
+
+ ,
);
expect(rendered.queryByText('A')).not.toBeInTheDocument();
@@ -64,15 +81,17 @@ describe('EntitySwitch', () => {
expect(rendered.queryByText('C')).not.toBeInTheDocument();
rendered.rerender(
-
- {content}
- ,
+
+
+ {content}
+
+ ,
);
expect(rendered.queryByText('A')).not.toBeInTheDocument();
@@ -88,24 +107,28 @@ describe('EntitySwitch', () => {
};
const rendered = render(
-
-
-
-
-
- ,
+
+
+
+
+
+
+
+ ,
);
expect(rendered.queryByText('A')).toBeInTheDocument();
expect(rendered.queryByText('B')).not.toBeInTheDocument();
rendered.rerender(
-
-
-
-
-
- ,
+
+
+
+
+
+
+
+ ,
);
expect(rendered.queryByText('A')).not.toBeInTheDocument();
diff --git a/plugins/catalog/src/components/EntitySwitch/EntitySwitch.tsx b/plugins/catalog/src/components/EntitySwitch/EntitySwitch.tsx
index a3ede42288..42898da018 100644
--- a/plugins/catalog/src/components/EntitySwitch/EntitySwitch.tsx
+++ b/plugins/catalog/src/components/EntitySwitch/EntitySwitch.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,49 +16,40 @@
import { Entity } from '@backstage/catalog-model';
import { useEntity } from '@backstage/plugin-catalog-react';
+import { PropsWithChildren, ReactNode } from 'react';
import {
- Children,
- Fragment,
- isValidElement,
- PropsWithChildren,
- ReactNode,
- useMemo,
-} from 'react';
+ attachComponentData,
+ useElementFilter,
+} from '@backstage/core-plugin-api';
+
+const ENTITY_SWITCH_KEY = 'core.backstage.entitySwitch';
const EntitySwitchCase = (_: {
if?: (entity: Entity) => boolean;
children: ReactNode;
}) => null;
+attachComponentData(EntitySwitchCase, ENTITY_SWITCH_KEY, true);
+
type SwitchCase = {
if?: (entity: Entity) => boolean;
children: JSX.Element;
};
-function createSwitchCasesFromChildren(childrenNode: ReactNode): SwitchCase[] {
- return Children.toArray(childrenNode).flatMap(child => {
- if (!isValidElement(child)) {
- return [];
- }
-
- if (child.type === Fragment) {
- return createSwitchCasesFromChildren(child.props.children);
- }
-
- if (child.type !== EntitySwitchCase) {
- throw new Error(`Child of EntitySwitch is not an EntitySwitch.Case`);
- }
-
- const { if: condition, children } = child.props;
- return [{ if: condition, children }];
- });
-}
-
export const EntitySwitch = ({ children }: PropsWithChildren<{}>) => {
const { entity } = useEntity();
- const switchCases = useMemo(() => createSwitchCasesFromChildren(children), [
- children,
- ]);
+ const switchCases = useElementFilter(children, collection =>
+ collection
+ .selectByComponentData({
+ key: ENTITY_SWITCH_KEY,
+ withStrictError: 'Child of EntitySwitch is not an EntitySwitch.Case',
+ })
+ .getElements()
+ .flatMap((element: React.ReactElement) => {
+ const { if: condition, children: elementsChildren } = element.props;
+ return [{ if: condition, children: elementsChildren }];
+ }),
+ );
const matchingCase = switchCases.find(switchCase =>
switchCase.if ? switchCase.if(entity) : true,
diff --git a/plugins/catalog/src/components/EntitySwitch/conditions.ts b/plugins/catalog/src/components/EntitySwitch/conditions.ts
index 8e4da19656..b03d1dac04 100644
--- a/plugins/catalog/src/components/EntitySwitch/conditions.ts
+++ b/plugins/catalog/src/components/EntitySwitch/conditions.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/EntitySwitch/index.ts b/plugins/catalog/src/components/EntitySwitch/index.ts
index 089f2a108c..bf4caf0e66 100644
--- a/plugins/catalog/src/components/EntitySwitch/index.ts
+++ b/plugins/catalog/src/components/EntitySwitch/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/FavouriteEntity/FavouriteEntity.tsx b/plugins/catalog/src/components/FavouriteEntity/FavouriteEntity.tsx
index 1c414414aa..108697541b 100644
--- a/plugins/catalog/src/components/FavouriteEntity/FavouriteEntity.tsx
+++ b/plugins/catalog/src/components/FavouriteEntity/FavouriteEntity.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/HasComponentsCard/HasComponentsCard.test.tsx b/plugins/catalog/src/components/HasComponentsCard/HasComponentsCard.test.tsx
index 8e0a61b05a..8ba2340444 100644
--- a/plugins/catalog/src/components/HasComponentsCard/HasComponentsCard.test.tsx
+++ b/plugins/catalog/src/components/HasComponentsCard/HasComponentsCard.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/HasComponentsCard/HasComponentsCard.tsx b/plugins/catalog/src/components/HasComponentsCard/HasComponentsCard.tsx
index e2fbb6ff70..a54147d6a8 100644
--- a/plugins/catalog/src/components/HasComponentsCard/HasComponentsCard.tsx
+++ b/plugins/catalog/src/components/HasComponentsCard/HasComponentsCard.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/HasComponentsCard/index.ts b/plugins/catalog/src/components/HasComponentsCard/index.ts
index 059392c3e8..73088bd575 100644
--- a/plugins/catalog/src/components/HasComponentsCard/index.ts
+++ b/plugins/catalog/src/components/HasComponentsCard/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/HasResourcesCard/HasResourcesCard.test.tsx b/plugins/catalog/src/components/HasResourcesCard/HasResourcesCard.test.tsx
index 38c8a3b5f5..80ae4f9aee 100644
--- a/plugins/catalog/src/components/HasResourcesCard/HasResourcesCard.test.tsx
+++ b/plugins/catalog/src/components/HasResourcesCard/HasResourcesCard.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/HasResourcesCard/HasResourcesCard.tsx b/plugins/catalog/src/components/HasResourcesCard/HasResourcesCard.tsx
index be923d30a1..bf96945602 100644
--- a/plugins/catalog/src/components/HasResourcesCard/HasResourcesCard.tsx
+++ b/plugins/catalog/src/components/HasResourcesCard/HasResourcesCard.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/HasResourcesCard/index.ts b/plugins/catalog/src/components/HasResourcesCard/index.ts
index 48b1d419aa..5357643a62 100644
--- a/plugins/catalog/src/components/HasResourcesCard/index.ts
+++ b/plugins/catalog/src/components/HasResourcesCard/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/HasSubcomponentsCard/HasSubcomponentsCard.test.tsx b/plugins/catalog/src/components/HasSubcomponentsCard/HasSubcomponentsCard.test.tsx
index 9ad69c9a0c..d9d8834869 100644
--- a/plugins/catalog/src/components/HasSubcomponentsCard/HasSubcomponentsCard.test.tsx
+++ b/plugins/catalog/src/components/HasSubcomponentsCard/HasSubcomponentsCard.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/HasSubcomponentsCard/HasSubcomponentsCard.tsx b/plugins/catalog/src/components/HasSubcomponentsCard/HasSubcomponentsCard.tsx
index bf4aeb18cc..67582453e2 100644
--- a/plugins/catalog/src/components/HasSubcomponentsCard/HasSubcomponentsCard.tsx
+++ b/plugins/catalog/src/components/HasSubcomponentsCard/HasSubcomponentsCard.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/HasSubcomponentsCard/index.ts b/plugins/catalog/src/components/HasSubcomponentsCard/index.ts
index cef0221d3b..bfc74efe71 100644
--- a/plugins/catalog/src/components/HasSubcomponentsCard/index.ts
+++ b/plugins/catalog/src/components/HasSubcomponentsCard/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/HasSystemsCard/HasSystemsCard.test.tsx b/plugins/catalog/src/components/HasSystemsCard/HasSystemsCard.test.tsx
index 9b7fb0adae..fba7c88ac1 100644
--- a/plugins/catalog/src/components/HasSystemsCard/HasSystemsCard.test.tsx
+++ b/plugins/catalog/src/components/HasSystemsCard/HasSystemsCard.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/HasSystemsCard/HasSystemsCard.tsx b/plugins/catalog/src/components/HasSystemsCard/HasSystemsCard.tsx
index b6c5bb7ca2..e5217efe48 100644
--- a/plugins/catalog/src/components/HasSystemsCard/HasSystemsCard.tsx
+++ b/plugins/catalog/src/components/HasSystemsCard/HasSystemsCard.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/HasSystemsCard/index.ts b/plugins/catalog/src/components/HasSystemsCard/index.ts
index a29d257e7e..e69c783bb4 100644
--- a/plugins/catalog/src/components/HasSystemsCard/index.ts
+++ b/plugins/catalog/src/components/HasSystemsCard/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/RelatedEntitiesCard/RelatedEntitiesCard.tsx b/plugins/catalog/src/components/RelatedEntitiesCard/RelatedEntitiesCard.tsx
index f80f138515..17d7de71c0 100644
--- a/plugins/catalog/src/components/RelatedEntitiesCard/RelatedEntitiesCard.tsx
+++ b/plugins/catalog/src/components/RelatedEntitiesCard/RelatedEntitiesCard.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/RelatedEntitiesCard/index.ts b/plugins/catalog/src/components/RelatedEntitiesCard/index.ts
index 3104004dd6..8df5052de4 100644
--- a/plugins/catalog/src/components/RelatedEntitiesCard/index.ts
+++ b/plugins/catalog/src/components/RelatedEntitiesCard/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/RelatedEntitiesCard/presets.ts b/plugins/catalog/src/components/RelatedEntitiesCard/presets.ts
index 9d3586a7e9..8829bc3b57 100644
--- a/plugins/catalog/src/components/RelatedEntitiesCard/presets.ts
+++ b/plugins/catalog/src/components/RelatedEntitiesCard/presets.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/Router.tsx b/plugins/catalog/src/components/Router.tsx
index f86f5959cb..a7b1f18e36 100644
--- a/plugins/catalog/src/components/Router.tsx
+++ b/plugins/catalog/src/components/Router.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/SystemDiagramCard/SystemDiagramCard.test.tsx b/plugins/catalog/src/components/SystemDiagramCard/SystemDiagramCard.test.tsx
index 337e9d12b6..491f8edba3 100644
--- a/plugins/catalog/src/components/SystemDiagramCard/SystemDiagramCard.test.tsx
+++ b/plugins/catalog/src/components/SystemDiagramCard/SystemDiagramCard.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -48,8 +48,8 @@ describe('', () => {
apiVersion: 'v1',
kind: 'System',
metadata: {
- name: 'my-system2',
- namespace: 'my-namespace2',
+ name: 'system2',
+ namespace: 'namespace2',
},
relations: [],
};
@@ -68,8 +68,8 @@ describe('', () => {
);
expect(queryByText(/System Diagram/)).toBeInTheDocument();
- expect(queryByText(/my-namespace2\/my-system2/)).toBeInTheDocument();
- expect(queryByText(/my-namespace\/my-entity/)).not.toBeInTheDocument();
+ expect(queryByText(/namespace2\/system2/)).toBeInTheDocument();
+ expect(queryByText(/namespace\/entity/)).not.toBeInTheDocument();
});
it('shows related systems', async () => {
@@ -81,13 +81,13 @@ describe('', () => {
apiVersion: 'backstage.io/v1alpha1',
kind: 'Component',
metadata: {
- name: 'my-entity',
- namespace: 'my-namespace',
+ name: 'entity',
+ namespace: 'namespace',
},
spec: {
owner: 'not-tools@example.com',
type: 'service',
- system: 'my-system',
+ system: 'system',
},
},
] as Entity[],
@@ -98,15 +98,15 @@ describe('', () => {
apiVersion: 'v1',
kind: 'System',
metadata: {
- name: 'my-system',
- namespace: 'my-namespace',
+ name: 'system',
+ namespace: 'namespace',
},
relations: [
{
target: {
kind: 'Domain',
- namespace: 'my-namespace',
- name: 'my-domain',
+ namespace: 'namespace',
+ name: 'domain',
},
type: RELATION_PART_OF,
},
@@ -127,7 +127,66 @@ describe('', () => {
);
expect(getByText('System Diagram')).toBeInTheDocument();
- expect(getByText('my-namespace/my-system')).toBeInTheDocument();
- expect(getByText('my-namespace/my-entity')).toBeInTheDocument();
+ expect(getByText('namespace/system')).toBeInTheDocument();
+ expect(getByText('namespace/entity')).toBeInTheDocument();
+ });
+
+ it('should truncate long domains, systems or entities', async () => {
+ const catalogApi: Partial = {
+ getEntities: () =>
+ Promise.resolve({
+ items: [
+ {
+ apiVersion: 'backstage.io/v1alpha1',
+ kind: 'Component',
+ metadata: {
+ name: 'alongentitythatshouldgettruncated',
+ namespace: 'namespace',
+ },
+ spec: {
+ owner: 'not-tools@example.com',
+ type: 'service',
+ system: 'system',
+ },
+ },
+ ] as Entity[],
+ }),
+ };
+
+ const entity: Entity = {
+ apiVersion: 'v1',
+ kind: 'System',
+ metadata: {
+ name: 'alongsystemthatshouldgettruncated',
+ namespace: 'namespace',
+ },
+ relations: [
+ {
+ target: {
+ kind: 'Domain',
+ namespace: 'namespace',
+ name: 'alongdomainthatshouldgettruncated',
+ },
+ type: RELATION_PART_OF,
+ },
+ ],
+ };
+
+ const { getByText } = await renderInTestApp(
+
+
+
+
+ ,
+ {
+ mountedRoutes: {
+ '/catalog/:namespace/:kind/:name': entityRouteRef,
+ },
+ },
+ );
+
+ expect(getByText('namespace/alongdomai...')).toBeInTheDocument();
+ expect(getByText('namespace/alongsyste...')).toBeInTheDocument();
+ expect(getByText('namespace/alongentit...')).toBeInTheDocument();
});
});
diff --git a/plugins/catalog/src/components/SystemDiagramCard/SystemDiagramCard.tsx b/plugins/catalog/src/components/SystemDiagramCard/SystemDiagramCard.tsx
index 5fd32a6298..540ebb1071 100644
--- a/plugins/catalog/src/components/SystemDiagramCard/SystemDiagramCard.tsx
+++ b/plugins/catalog/src/components/SystemDiagramCard/SystemDiagramCard.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -89,6 +89,11 @@ function RenderNode(props: DependencyGraphTypes.RenderNodeProps) {
const catalogEntityRoute = useRouteRef(entityRouteRef);
const kind = props.node.kind || 'Component';
const ref = parseEntityRef(props.node.id);
+ const MAX_NAME_LENGTH = 20;
+ const truncatedNodeName =
+ props.node.name.length < MAX_NAME_LENGTH
+ ? props.node.name
+ : `${props.node.name.slice(0, MAX_NAME_LENGTH)}...`;
let nodeClass = classes.componentNode;
switch (kind) {
@@ -128,7 +133,7 @@ function RenderNode(props: DependencyGraphTypes.RenderNodeProps) {
alignmentBaseline="baseline"
style={{ fontWeight: 'bold' }}
>
- {props.node.name}
+ {truncatedNodeName}
@@ -157,7 +162,9 @@ export function SystemDiagramCard() {
kind: ['Component', 'API', 'Resource', 'System', 'Domain'],
'spec.system': [
currentSystemName,
- `${ENTITY_DEFAULT_NAMESPACE}/${currentSystemName}`,
+ `${
+ entity.metadata.namespace || ENTITY_DEFAULT_NAMESPACE
+ }/${currentSystemName}`,
],
},
});
diff --git a/plugins/catalog/src/components/SystemDiagramCard/index.ts b/plugins/catalog/src/components/SystemDiagramCard/index.ts
index 6d86b31b68..4c1427c838 100644
--- a/plugins/catalog/src/components/SystemDiagramCard/index.ts
+++ b/plugins/catalog/src/components/SystemDiagramCard/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/UnregisterEntityDialog/UnregisterEntityDialog.test.tsx b/plugins/catalog/src/components/UnregisterEntityDialog/UnregisterEntityDialog.test.tsx
index d134cdd5f6..113372b2c7 100644
--- a/plugins/catalog/src/components/UnregisterEntityDialog/UnregisterEntityDialog.test.tsx
+++ b/plugins/catalog/src/components/UnregisterEntityDialog/UnregisterEntityDialog.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/UnregisterEntityDialog/UnregisterEntityDialog.tsx b/plugins/catalog/src/components/UnregisterEntityDialog/UnregisterEntityDialog.tsx
index 9e6489593e..8fce101bf2 100644
--- a/plugins/catalog/src/components/UnregisterEntityDialog/UnregisterEntityDialog.tsx
+++ b/plugins/catalog/src/components/UnregisterEntityDialog/UnregisterEntityDialog.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/UnregisterEntityDialog/useUnregisterEntityDialogState.test.tsx b/plugins/catalog/src/components/UnregisterEntityDialog/useUnregisterEntityDialogState.test.tsx
index e0e1ec1600..4b8384c2a0 100644
--- a/plugins/catalog/src/components/UnregisterEntityDialog/useUnregisterEntityDialogState.test.tsx
+++ b/plugins/catalog/src/components/UnregisterEntityDialog/useUnregisterEntityDialogState.test.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/components/UnregisterEntityDialog/useUnregisterEntityDialogState.ts b/plugins/catalog/src/components/UnregisterEntityDialog/useUnregisterEntityDialogState.ts
index 85cc219914..3ce3f0460d 100644
--- a/plugins/catalog/src/components/UnregisterEntityDialog/useUnregisterEntityDialogState.ts
+++ b/plugins/catalog/src/components/UnregisterEntityDialog/useUnregisterEntityDialogState.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/index.ts b/plugins/catalog/src/index.ts
index 1596de0e8d..0a852343d8 100644
--- a/plugins/catalog/src/index.ts
+++ b/plugins/catalog/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,6 +18,7 @@ export * from './components/AboutCard';
export { CatalogLayout } from './components/CatalogPage';
export { CatalogResultListItem } from './components/CatalogResultListItem';
export { CatalogTable } from './components/CatalogTable';
+export type { EntityRow as CatalogTableRow } from './components/CatalogTable';
export { CreateComponentButton } from './components/CreateComponentButton';
export { EntityLayout } from './components/EntityLayout';
export * from './components/EntityOrphanWarning';
diff --git a/plugins/catalog/src/plugin.test.ts b/plugins/catalog/src/plugin.test.ts
index d2cf0e4bf5..28ebdf6919 100644
--- a/plugins/catalog/src/plugin.test.ts
+++ b/plugins/catalog/src/plugin.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/plugin.ts b/plugins/catalog/src/plugin.ts
index 3a62e59729..e8cf014186 100644
--- a/plugins/catalog/src/plugin.ts
+++ b/plugins/catalog/src/plugin.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/routes.ts b/plugins/catalog/src/routes.ts
index 2c7fae5002..394fe6ba97 100644
--- a/plugins/catalog/src/routes.ts
+++ b/plugins/catalog/src/routes.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/catalog/src/setupTests.ts b/plugins/catalog/src/setupTests.ts
index aea2220869..c1d649f2ad 100644
--- a/plugins/catalog/src/setupTests.ts
+++ b/plugins/catalog/src/setupTests.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/circleci/CHANGELOG.md b/plugins/circleci/CHANGELOG.md
index 09abbc3bd1..dcbf6ad2b1 100644
--- a/plugins/circleci/CHANGELOG.md
+++ b/plugins/circleci/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-circleci
+## 0.2.16
+
+### Patch Changes
+
+- 2ec118cc2: Remove moment as part 1 of migration to `lexon`
+- Updated dependencies
+ - @backstage/plugin-catalog-react@0.2.3
+ - @backstage/catalog-model@0.8.3
+ - @backstage/core@0.7.13
+
## 0.2.15
### Patch Changes
diff --git a/plugins/circleci/api-report.md b/plugins/circleci/api-report.md
new file mode 100644
index 0000000000..6c774cc6b0
--- /dev/null
+++ b/plugins/circleci/api-report.md
@@ -0,0 +1,81 @@
+## API Report File for "@backstage/plugin-circleci"
+
+> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
+
+```ts
+
+import { ApiRef } from '@backstage/core';
+import { BackstagePlugin } from '@backstage/core';
+import { BuildStepAction } from 'circleci-api';
+import { BuildSummary } from 'circleci-api';
+import { BuildSummaryResponse } from 'circleci-api';
+import { BuildWithSteps } from 'circleci-api';
+import { CircleCIOptions } from 'circleci-api';
+import { DiscoveryApi } from '@backstage/core';
+import { Entity } from '@backstage/catalog-model';
+import { GitType } from 'circleci-api';
+import { Me } from 'circleci-api';
+import { RouteRef } from '@backstage/core';
+
+export { BuildStepAction }
+
+export { BuildSummary }
+
+export { BuildWithSteps }
+
+// @public (undocumented)
+export const CIRCLECI_ANNOTATION = "circleci.com/project-slug";
+
+// @public (undocumented)
+export class CircleCIApi {
+ constructor(options: Options);
+ // (undocumented)
+ getBuild(buildNumber: number, options: Partial): Promise;
+ // (undocumented)
+ getBuilds({ limit, offset }: {
+ limit: number;
+ offset: number;
+ }, options: Partial): Promise;
+ // (undocumented)
+ getUser(options: Partial): Promise;
+ // (undocumented)
+ retry(buildNumber: number, options: Partial): Promise;
+}
+
+// @public (undocumented)
+export const circleCIApiRef: ApiRef;
+
+// @public (undocumented)
+export const circleCIBuildRouteRef: RouteRef;
+
+// @public (undocumented)
+const circleCIPlugin: BackstagePlugin<{}, {}>;
+
+export { circleCIPlugin }
+
+export { circleCIPlugin as plugin }
+
+// @public (undocumented)
+export const circleCIRouteRef: RouteRef;
+
+// @public (undocumented)
+export const EntityCircleCIContent: (_props: {
+ entity?: Entity| undefined;
+}) => JSX.Element;
+
+export { GitType }
+
+// @public (undocumented)
+const isCircleCIAvailable: (entity: Entity) => boolean;
+
+export { isCircleCIAvailable }
+
+export { isCircleCIAvailable as isPluginApplicableToEntity }
+
+// @public (undocumented)
+export const Router: (_props: Props) => JSX.Element;
+
+
+// (No @packageDocumentation comment for this package)
+
+```
diff --git a/plugins/circleci/dev/index.tsx b/plugins/circleci/dev/index.tsx
index 19a32c0d04..6e18e06fd2 100644
--- a/plugins/circleci/dev/index.tsx
+++ b/plugins/circleci/dev/index.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/circleci/package.json b/plugins/circleci/package.json
index 3091996034..90e8b71174 100644
--- a/plugins/circleci/package.json
+++ b/plugins/circleci/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-circleci",
- "version": "0.2.15",
+ "version": "0.2.16",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -31,9 +31,9 @@
"postpack": "backstage-cli postpack"
},
"dependencies": {
- "@backstage/catalog-model": "^0.8.2",
- "@backstage/core": "^0.7.11",
- "@backstage/plugin-catalog-react": "^0.2.2",
+ "@backstage/catalog-model": "^0.8.3",
+ "@backstage/core": "^0.7.13",
+ "@backstage/plugin-catalog-react": "^0.2.3",
"@backstage/theme": "^0.2.8",
"@material-ui/core": "^4.11.0",
"@material-ui/icons": "^4.9.1",
@@ -41,7 +41,6 @@
"circleci-api": "^4.0.0",
"dayjs": "^1.9.4",
"lodash": "^4.17.15",
- "moment": "^2.25.3",
"react": "^16.13.1",
"react-dom": "^16.13.1",
"react-lazylog": "^4.5.2",
@@ -50,7 +49,7 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.7.0",
+ "@backstage/cli": "^0.7.1",
"@backstage/dev-utils": "^0.1.17",
"@backstage/test-utils": "^0.1.13",
"@testing-library/jest-dom": "^5.10.1",
diff --git a/plugins/circleci/src/api/CircleCIApi.ts b/plugins/circleci/src/api/CircleCIApi.ts
index c71be6b781..24e0bed6f0 100644
--- a/plugins/circleci/src/api/CircleCIApi.ts
+++ b/plugins/circleci/src/api/CircleCIApi.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/circleci/src/api/index.ts b/plugins/circleci/src/api/index.ts
index 1853008099..213ce2de8b 100644
--- a/plugins/circleci/src/api/index.ts
+++ b/plugins/circleci/src/api/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/circleci/src/components/BuildWithStepsPage/BuildWithStepsPage.tsx b/plugins/circleci/src/components/BuildWithStepsPage/BuildWithStepsPage.tsx
index ca163c194a..8cc3d43970 100644
--- a/plugins/circleci/src/components/BuildWithStepsPage/BuildWithStepsPage.tsx
+++ b/plugins/circleci/src/components/BuildWithStepsPage/BuildWithStepsPage.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/circleci/src/components/BuildWithStepsPage/index.ts b/plugins/circleci/src/components/BuildWithStepsPage/index.ts
index c5627bda1c..0967315fb6 100644
--- a/plugins/circleci/src/components/BuildWithStepsPage/index.ts
+++ b/plugins/circleci/src/components/BuildWithStepsPage/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/circleci/src/components/BuildWithStepsPage/lib/ActionOutput/ActionOutput.tsx b/plugins/circleci/src/components/BuildWithStepsPage/lib/ActionOutput/ActionOutput.tsx
index e446c002f6..bbfc1e468c 100644
--- a/plugins/circleci/src/components/BuildWithStepsPage/lib/ActionOutput/ActionOutput.tsx
+++ b/plugins/circleci/src/components/BuildWithStepsPage/lib/ActionOutput/ActionOutput.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -24,11 +24,10 @@ import {
import { makeStyles } from '@material-ui/core/styles';
import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
import { BuildStepAction } from 'circleci-api';
-import moment from 'moment';
import React, { Suspense, useEffect, useState } from 'react';
+import { durationHumanized } from '../../../../util';
const LazyLog = React.lazy(() => import('react-lazylog/build/LazyLog'));
-moment.relativeTimeThreshold('ss', 0);
const useStyles = makeStyles({
accordionDetails: {
padding: 0,
@@ -66,11 +65,8 @@ export const ActionOutput = ({
});
}, [url]);
- const timeElapsed = moment
- .duration(
- moment(action.end_time || moment()).diff(moment(action.start_time)),
- )
- .humanize();
+ const timeElapsed = durationHumanized(action.start_time, action.end_time);
+
return (
Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
+
+```ts
+
+import { ApiRef } from '@backstage/core';
+import { BackstagePlugin } from '@backstage/core';
+import { Entity } from '@backstage/catalog-model';
+import { OAuthApi } from '@backstage/core';
+import { RouteRef } from '@backstage/core';
+
+// @public (undocumented)
+export type ActionsGetWorkflowResponseData = {
+ id: string;
+ status: string;
+ source: Source;
+ createTime: string;
+ startTime: string;
+ steps: Step[];
+ timeout: string;
+ projectId: string;
+ logsBucket: string;
+ sourceProvenance: SourceProvenance;
+ buildTriggerId: string;
+ options: Options;
+ logUrl: string;
+ substitutions: Substitutions;
+ tags: string[];
+ queueTtl: string;
+ name: string;
+ finishTime: any;
+ results: Results;
+ timing: Timing2;
+};
+
+// @public (undocumented)
+export interface ActionsListWorkflowRunsForRepoResponseData {
+ // (undocumented)
+ builds: ActionsGetWorkflowResponseData[];
+}
+
+// @public (undocumented)
+export interface BUILD {
+ // (undocumented)
+ endTime: string;
+ // (undocumented)
+ startTime: string;
+}
+
+// @public (undocumented)
+export const CLOUDBUILD_ANNOTATION = "google.com/cloudbuild-project-slug";
+
+// @public (undocumented)
+export type CloudbuildApi = {
+ listWorkflowRuns: (request: {
+ projectId: string;
+ }) => Promise;
+ getWorkflow: ({ projectId, id, }: {
+ projectId: string;
+ id: string;
+ }) => Promise;
+ getWorkflowRun: ({ projectId, id, }: {
+ projectId: string;
+ id: string;
+ }) => Promise;
+ reRunWorkflow: ({ projectId, runId, }: {
+ projectId: string;
+ runId: string;
+ }) => Promise;
+};
+
+// @public (undocumented)
+export const cloudbuildApiRef: ApiRef;
+
+// @public (undocumented)
+export class CloudbuildClient implements CloudbuildApi {
+ constructor(googleAuthApi: OAuthApi);
+ // (undocumented)
+ getToken(): Promise;
+ // (undocumented)
+ getWorkflow({ projectId, id, }: {
+ projectId: string;
+ id: string;
+ }): Promise;
+ // (undocumented)
+ getWorkflowRun({ projectId, id, }: {
+ projectId: string;
+ id: string;
+ }): Promise;
+ // (undocumented)
+ listWorkflowRuns({ projectId, }: {
+ projectId: string;
+ }): Promise;
+ // (undocumented)
+ reRunWorkflow({ projectId, runId, }: {
+ projectId: string;
+ runId: string;
+ }): Promise;
+}
+
+// @public (undocumented)
+const cloudbuildPlugin: BackstagePlugin<{
+ entityContent: RouteRef;
+}, {}>;
+
+export { cloudbuildPlugin }
+
+export { cloudbuildPlugin as plugin }
+
+// @public (undocumented)
+export const EntityCloudbuildContent: (_props: {
+ entity?: Entity| undefined;
+}) => JSX.Element;
+
+// @public (undocumented)
+export const EntityLatestCloudbuildRunCard: ({ branch, }: {
+ entity?: Entity| undefined;
+ branch: string;
+}) => JSX.Element;
+
+// @public (undocumented)
+export const EntityLatestCloudbuildsForBranchCard: ({ branch, }: {
+ entity?: Entity| undefined;
+ branch: string;
+}) => JSX.Element;
+
+// @public (undocumented)
+export interface FETCHSOURCE {
+ // (undocumented)
+ endTime: string;
+ // (undocumented)
+ startTime: string;
+}
+
+// @public (undocumented)
+const isCloudbuildAvailable: (entity: Entity) => boolean;
+
+export { isCloudbuildAvailable }
+
+export { isCloudbuildAvailable as isPluginApplicableToEntity }
+
+// @public (undocumented)
+export const LatestWorkflowRunCard: ({ branch, }: {
+ entity?: Entity | undefined;
+ branch: string;
+}) => JSX.Element;
+
+// @public (undocumented)
+export const LatestWorkflowsForBranchCard: ({ branch, }: {
+ entity?: Entity | undefined;
+ branch: string;
+}) => JSX.Element;
+
+// @public (undocumented)
+export interface Options {
+ // (undocumented)
+ dynamicSubstitutions: boolean;
+ // (undocumented)
+ logging: string;
+ // (undocumented)
+ machineType: string;
+ // (undocumented)
+ substitutionOption: string;
+}
+
+// @public (undocumented)
+export interface PullTiming {
+ // (undocumented)
+ endTime: string;
+ // (undocumented)
+ startTime: string;
+}
+
+// @public (undocumented)
+export interface ResolvedStorageSource {
+ // (undocumented)
+ bucket: string;
+ // (undocumented)
+ generation: string;
+ // (undocumented)
+ object: string;
+}
+
+// @public (undocumented)
+export interface Results {
+ // (undocumented)
+ buildStepImages: string[];
+ // (undocumented)
+ buildStepOutputs: string[];
+}
+
+// @public (undocumented)
+export const Router: (_props: Props) => JSX.Element;
+
+// @public (undocumented)
+export interface Source {
+ // (undocumented)
+ storageSource: StorageSource;
+}
+
+// @public (undocumented)
+export interface SourceProvenance {
+ // (undocumented)
+ fileHashes: {};
+ // (undocumented)
+ resolvedStorageSource: {};
+}
+
+// @public (undocumented)
+export interface Step {
+ // (undocumented)
+ args: string[];
+ // (undocumented)
+ dir: string;
+ // (undocumented)
+ entrypoint: string;
+ // (undocumented)
+ id: string;
+ // (undocumented)
+ name: string;
+ // (undocumented)
+ pullTiming: PullTiming;
+ // (undocumented)
+ status: string;
+ // (undocumented)
+ timing: Timing;
+ // (undocumented)
+ volumes: Volume[];
+ // (undocumented)
+ waitFor: string[];
+}
+
+// @public (undocumented)
+export interface StorageSource {
+ // (undocumented)
+ bucket: string;
+ // (undocumented)
+ object: string;
+}
+
+// @public (undocumented)
+export interface Substitutions {
+ // (undocumented)
+ BRANCH_NAME: string;
+ // (undocumented)
+ COMMIT_SHA: string;
+ // (undocumented)
+ REPO_NAME: string;
+ // (undocumented)
+ REVISION_ID: string;
+ // (undocumented)
+ SHORT_SHA: string;
+}
+
+// @public (undocumented)
+export interface Timing {
+ // (undocumented)
+ endTime: string;
+ // (undocumented)
+ startTime: string;
+}
+
+// @public (undocumented)
+export interface Timing2 {
+ // (undocumented)
+ BUILD: BUILD;
+ // (undocumented)
+ FETCHSOURCE: FETCHSOURCE;
+}
+
+// @public (undocumented)
+export interface Volume {
+ // (undocumented)
+ name: string;
+ // (undocumented)
+ path: string;
+}
+
+
+// (No @packageDocumentation comment for this package)
+
+```
diff --git a/plugins/cloudbuild/dev/index.tsx b/plugins/cloudbuild/dev/index.tsx
index 26fb65d151..52eda6714c 100644
--- a/plugins/cloudbuild/dev/index.tsx
+++ b/plugins/cloudbuild/dev/index.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/cloudbuild/package.json b/plugins/cloudbuild/package.json
index 29cc77d7e9..ffd765fbcd 100644
--- a/plugins/cloudbuild/package.json
+++ b/plugins/cloudbuild/package.json
@@ -47,7 +47,7 @@
"react-use": "^17.2.4"
},
"devDependencies": {
- "@backstage/cli": "^0.7.0",
+ "@backstage/cli": "^0.7.1",
"@backstage/dev-utils": "^0.1.17",
"@backstage/test-utils": "^0.1.13",
"@testing-library/jest-dom": "^5.10.1",
diff --git a/plugins/cloudbuild/src/api/CloudbuildApi.ts b/plugins/cloudbuild/src/api/CloudbuildApi.ts
index 5aecf970ef..ddc80ee0fb 100644
--- a/plugins/cloudbuild/src/api/CloudbuildApi.ts
+++ b/plugins/cloudbuild/src/api/CloudbuildApi.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/cloudbuild/src/api/CloudbuildClient.ts b/plugins/cloudbuild/src/api/CloudbuildClient.ts
index 0c3223aa04..e1be58cce5 100644
--- a/plugins/cloudbuild/src/api/CloudbuildClient.ts
+++ b/plugins/cloudbuild/src/api/CloudbuildClient.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/cloudbuild/src/api/index.ts b/plugins/cloudbuild/src/api/index.ts
index 643eecb818..86b6a81c64 100644
--- a/plugins/cloudbuild/src/api/index.ts
+++ b/plugins/cloudbuild/src/api/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/cloudbuild/src/api/types.ts b/plugins/cloudbuild/src/api/types.ts
index 7c64fb52b8..c9f6481b9e 100644
--- a/plugins/cloudbuild/src/api/types.ts
+++ b/plugins/cloudbuild/src/api/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/cloudbuild/src/components/Cards/Cards.tsx b/plugins/cloudbuild/src/components/Cards/Cards.tsx
index e7b3d54de1..dd7dd6a697 100644
--- a/plugins/cloudbuild/src/components/Cards/Cards.tsx
+++ b/plugins/cloudbuild/src/components/Cards/Cards.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/cloudbuild/src/components/Cards/index.ts b/plugins/cloudbuild/src/components/Cards/index.ts
index 8c987ea1d5..669f723c2d 100644
--- a/plugins/cloudbuild/src/components/Cards/index.ts
+++ b/plugins/cloudbuild/src/components/Cards/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/cloudbuild/src/components/Router.tsx b/plugins/cloudbuild/src/components/Router.tsx
index bd2299f8e9..8a449d7d77 100644
--- a/plugins/cloudbuild/src/components/Router.tsx
+++ b/plugins/cloudbuild/src/components/Router.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/cloudbuild/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx b/plugins/cloudbuild/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx
index 7c2d171f8d..6a2b6c851d 100644
--- a/plugins/cloudbuild/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx
+++ b/plugins/cloudbuild/src/components/WorkflowRunDetails/WorkflowRunDetails.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/cloudbuild/src/components/WorkflowRunDetails/index.ts b/plugins/cloudbuild/src/components/WorkflowRunDetails/index.ts
index 2886a26740..341f99ddfe 100644
--- a/plugins/cloudbuild/src/components/WorkflowRunDetails/index.ts
+++ b/plugins/cloudbuild/src/components/WorkflowRunDetails/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/cloudbuild/src/components/WorkflowRunDetails/useWorkflowRunJobs.ts b/plugins/cloudbuild/src/components/WorkflowRunDetails/useWorkflowRunJobs.ts
index cc2ccafa04..9bd1ea2c82 100644
--- a/plugins/cloudbuild/src/components/WorkflowRunDetails/useWorkflowRunJobs.ts
+++ b/plugins/cloudbuild/src/components/WorkflowRunDetails/useWorkflowRunJobs.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/cloudbuild/src/components/WorkflowRunDetails/useWorkflowRunsDetails.ts b/plugins/cloudbuild/src/components/WorkflowRunDetails/useWorkflowRunsDetails.ts
index ae5e750d15..4c4beb2cd6 100644
--- a/plugins/cloudbuild/src/components/WorkflowRunDetails/useWorkflowRunsDetails.ts
+++ b/plugins/cloudbuild/src/components/WorkflowRunDetails/useWorkflowRunsDetails.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/cloudbuild/src/components/WorkflowRunStatus/WorkflowRunStatus.tsx b/plugins/cloudbuild/src/components/WorkflowRunStatus/WorkflowRunStatus.tsx
index 931bcd7b2d..a1ea661cf3 100644
--- a/plugins/cloudbuild/src/components/WorkflowRunStatus/WorkflowRunStatus.tsx
+++ b/plugins/cloudbuild/src/components/WorkflowRunStatus/WorkflowRunStatus.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/cloudbuild/src/components/WorkflowRunStatus/index.ts b/plugins/cloudbuild/src/components/WorkflowRunStatus/index.ts
index 8ebca32cbd..4dc995a77c 100644
--- a/plugins/cloudbuild/src/components/WorkflowRunStatus/index.ts
+++ b/plugins/cloudbuild/src/components/WorkflowRunStatus/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/cloudbuild/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx b/plugins/cloudbuild/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx
index 886d772dd5..8663643add 100644
--- a/plugins/cloudbuild/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx
+++ b/plugins/cloudbuild/src/components/WorkflowRunsTable/WorkflowRunsTable.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/cloudbuild/src/components/WorkflowRunsTable/index.ts b/plugins/cloudbuild/src/components/WorkflowRunsTable/index.ts
index e190aa55bc..a191642b98 100644
--- a/plugins/cloudbuild/src/components/WorkflowRunsTable/index.ts
+++ b/plugins/cloudbuild/src/components/WorkflowRunsTable/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/cloudbuild/src/components/useProjectName.ts b/plugins/cloudbuild/src/components/useProjectName.ts
index 0c227f690d..a0d19ba7dd 100644
--- a/plugins/cloudbuild/src/components/useProjectName.ts
+++ b/plugins/cloudbuild/src/components/useProjectName.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/cloudbuild/src/components/useWorkflowRuns.ts b/plugins/cloudbuild/src/components/useWorkflowRuns.ts
index ac7400cbf3..784592bee8 100644
--- a/plugins/cloudbuild/src/components/useWorkflowRuns.ts
+++ b/plugins/cloudbuild/src/components/useWorkflowRuns.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/cloudbuild/src/index.ts b/plugins/cloudbuild/src/index.ts
index b7cd6c29d5..a740bfa8f0 100644
--- a/plugins/cloudbuild/src/index.ts
+++ b/plugins/cloudbuild/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/cloudbuild/src/plugin.test.ts b/plugins/cloudbuild/src/plugin.test.ts
index ea042a901a..8178425283 100644
--- a/plugins/cloudbuild/src/plugin.test.ts
+++ b/plugins/cloudbuild/src/plugin.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/cloudbuild/src/plugin.ts b/plugins/cloudbuild/src/plugin.ts
index f0db5702e6..c28a6c829f 100644
--- a/plugins/cloudbuild/src/plugin.ts
+++ b/plugins/cloudbuild/src/plugin.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/cloudbuild/src/routes.ts b/plugins/cloudbuild/src/routes.ts
index 610d708b44..eaf996a733 100644
--- a/plugins/cloudbuild/src/routes.ts
+++ b/plugins/cloudbuild/src/routes.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/cloudbuild/src/setupTests.ts b/plugins/cloudbuild/src/setupTests.ts
index 0bfa67b49a..28a35d2b06 100644
--- a/plugins/cloudbuild/src/setupTests.ts
+++ b/plugins/cloudbuild/src/setupTests.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/code-coverage-backend/CHANGELOG.md b/plugins/code-coverage-backend/CHANGELOG.md
index 7d1027f84f..11e341abed 100644
--- a/plugins/code-coverage-backend/CHANGELOG.md
+++ b/plugins/code-coverage-backend/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-code-coverage-backend
+## 0.1.7
+
+### Patch Changes
+
+- 3108ff7bf: Make `yarn dev` respect the `PLUGIN_PORT` environment variable.
+- Updated dependencies
+ - @backstage/backend-common@0.8.3
+ - @backstage/catalog-model@0.8.3
+
## 0.1.6
### Patch Changes
diff --git a/plugins/code-coverage-backend/api-report.md b/plugins/code-coverage-backend/api-report.md
new file mode 100644
index 0000000000..f8f1575d0b
--- /dev/null
+++ b/plugins/code-coverage-backend/api-report.md
@@ -0,0 +1,43 @@
+## API Report File for "@backstage/plugin-code-coverage-backend"
+
+> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
+
+```ts
+
+import { Config } from '@backstage/config';
+import express from 'express';
+import { Logger } from 'winston';
+import { PluginDatabaseManager } from '@backstage/backend-common';
+import { PluginEndpointDiscovery } from '@backstage/backend-common';
+import { UrlReader } from '@backstage/backend-common';
+
+// @public (undocumented)
+export interface CodeCoverageApi {
+ // (undocumented)
+ name: string;
+}
+
+// @public (undocumented)
+export function createRouter(options: RouterOptions): Promise;
+
+// @public (undocumented)
+export const makeRouter: (options: RouterOptions) => Promise;
+
+// @public (undocumented)
+export interface RouterOptions {
+ // (undocumented)
+ config: Config;
+ // (undocumented)
+ database: PluginDatabaseManager;
+ // (undocumented)
+ discovery: PluginEndpointDiscovery;
+ // (undocumented)
+ logger: Logger;
+ // (undocumented)
+ urlReader: UrlReader;
+}
+
+
+// (No @packageDocumentation comment for this package)
+
+```
diff --git a/plugins/code-coverage-backend/migrations/20210302_init.js b/plugins/code-coverage-backend/migrations/20210302_init.js
index 538f658948..a794b6a60c 100644
--- a/plugins/code-coverage-backend/migrations/20210302_init.js
+++ b/plugins/code-coverage-backend/migrations/20210302_init.js
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/code-coverage-backend/package.json b/plugins/code-coverage-backend/package.json
index 7def52f498..e3aab9bd38 100644
--- a/plugins/code-coverage-backend/package.json
+++ b/plugins/code-coverage-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-code-coverage-backend",
- "version": "0.1.6",
+ "version": "0.1.7",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -19,9 +19,9 @@
"clean": "backstage-cli clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.8.2",
+ "@backstage/backend-common": "^0.8.3",
"@backstage/catalog-client": "^0.3.13",
- "@backstage/catalog-model": "^0.8.2",
+ "@backstage/catalog-model": "^0.8.3",
"@backstage/config": "^0.1.5",
"@backstage/errors": "^0.1.1",
"@backstage/integration": "^0.5.6",
@@ -36,7 +36,7 @@
"yn": "^4.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.7.0",
+ "@backstage/cli": "^0.7.1",
"@types/express-xml-bodyparser": "^0.3.2",
"@types/supertest": "^2.0.8",
"msw": "^0.21.2",
diff --git a/plugins/code-coverage-backend/src/index.ts b/plugins/code-coverage-backend/src/index.ts
index 7612c392a2..ca73cb27ba 100644
--- a/plugins/code-coverage-backend/src/index.ts
+++ b/plugins/code-coverage-backend/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/code-coverage-backend/src/run.ts b/plugins/code-coverage-backend/src/run.ts
index b96989e4b8..54d2716290 100644
--- a/plugins/code-coverage-backend/src/run.ts
+++ b/plugins/code-coverage-backend/src/run.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/code-coverage-backend/src/service/CodeCoverageDatabase.test.ts b/plugins/code-coverage-backend/src/service/CodeCoverageDatabase.test.ts
index 688eeb4ba2..15028a76fd 100644
--- a/plugins/code-coverage-backend/src/service/CodeCoverageDatabase.test.ts
+++ b/plugins/code-coverage-backend/src/service/CodeCoverageDatabase.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import { SingleConnectionDatabaseManager } from '@backstage/backend-common';
+import { DatabaseManager } from '@backstage/backend-common';
import { stringifyEntityRef } from '@backstage/catalog-model';
import { ConfigReader } from '@backstage/config';
import {
@@ -22,7 +22,7 @@ import {
} from './CodeCoverageDatabase';
import { JsonCodeCoverage } from './types';
-const db = SingleConnectionDatabaseManager.fromConfig(
+const db = DatabaseManager.fromConfig(
new ConfigReader({
backend: {
database: {
diff --git a/plugins/code-coverage-backend/src/service/CodeCoverageDatabase.ts b/plugins/code-coverage-backend/src/service/CodeCoverageDatabase.ts
index 390fd815f1..580d560bae 100644
--- a/plugins/code-coverage-backend/src/service/CodeCoverageDatabase.ts
+++ b/plugins/code-coverage-backend/src/service/CodeCoverageDatabase.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/code-coverage-backend/src/service/CoverageUtils.test.ts b/plugins/code-coverage-backend/src/service/CoverageUtils.test.ts
index 4a96e67338..b666e042de 100644
--- a/plugins/code-coverage-backend/src/service/CoverageUtils.test.ts
+++ b/plugins/code-coverage-backend/src/service/CoverageUtils.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/code-coverage-backend/src/service/CoverageUtils.ts b/plugins/code-coverage-backend/src/service/CoverageUtils.ts
index f41a1d05a0..d965ae6300 100644
--- a/plugins/code-coverage-backend/src/service/CoverageUtils.ts
+++ b/plugins/code-coverage-backend/src/service/CoverageUtils.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/code-coverage-backend/src/service/converter/Converter.ts b/plugins/code-coverage-backend/src/service/converter/Converter.ts
index 43d9855e61..afaf03bd64 100644
--- a/plugins/code-coverage-backend/src/service/converter/Converter.ts
+++ b/plugins/code-coverage-backend/src/service/converter/Converter.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/code-coverage-backend/src/service/converter/cobertura.test.ts b/plugins/code-coverage-backend/src/service/converter/cobertura.test.ts
index 0e67d35d7a..dfe6c77c98 100644
--- a/plugins/code-coverage-backend/src/service/converter/cobertura.test.ts
+++ b/plugins/code-coverage-backend/src/service/converter/cobertura.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/code-coverage-backend/src/service/converter/cobertura.ts b/plugins/code-coverage-backend/src/service/converter/cobertura.ts
index fcaea839ee..429e645cf2 100644
--- a/plugins/code-coverage-backend/src/service/converter/cobertura.ts
+++ b/plugins/code-coverage-backend/src/service/converter/cobertura.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/code-coverage-backend/src/service/converter/index.ts b/plugins/code-coverage-backend/src/service/converter/index.ts
index 8ea7a41f65..a85f320486 100644
--- a/plugins/code-coverage-backend/src/service/converter/index.ts
+++ b/plugins/code-coverage-backend/src/service/converter/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/code-coverage-backend/src/service/converter/jacoco.test.ts b/plugins/code-coverage-backend/src/service/converter/jacoco.test.ts
index 0507cf3a98..80de585d44 100644
--- a/plugins/code-coverage-backend/src/service/converter/jacoco.test.ts
+++ b/plugins/code-coverage-backend/src/service/converter/jacoco.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/code-coverage-backend/src/service/converter/jacoco.ts b/plugins/code-coverage-backend/src/service/converter/jacoco.ts
index e4a41f8bc4..be46c5152e 100644
--- a/plugins/code-coverage-backend/src/service/converter/jacoco.ts
+++ b/plugins/code-coverage-backend/src/service/converter/jacoco.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/code-coverage-backend/src/service/converter/types.ts b/plugins/code-coverage-backend/src/service/converter/types.ts
index 35e70faae4..978961acb4 100644
--- a/plugins/code-coverage-backend/src/service/converter/types.ts
+++ b/plugins/code-coverage-backend/src/service/converter/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/code-coverage-backend/src/service/router.test.ts b/plugins/code-coverage-backend/src/service/router.test.ts
index e18cd75c2f..462606bbab 100644
--- a/plugins/code-coverage-backend/src/service/router.test.ts
+++ b/plugins/code-coverage-backend/src/service/router.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -20,14 +20,14 @@ import {
getVoidLogger,
PluginDatabaseManager,
PluginEndpointDiscovery,
- SingleConnectionDatabaseManager,
+ DatabaseManager,
UrlReaders,
} from '@backstage/backend-common';
import { ConfigReader } from '@backstage/config';
import { createRouter } from './router';
function createDatabase(): PluginDatabaseManager {
- return SingleConnectionDatabaseManager.fromConfig(
+ return DatabaseManager.fromConfig(
new ConfigReader({
backend: {
database: {
diff --git a/plugins/code-coverage-backend/src/service/router.ts b/plugins/code-coverage-backend/src/service/router.ts
index 78aeab313c..f28ff5e0d5 100644
--- a/plugins/code-coverage-backend/src/service/router.ts
+++ b/plugins/code-coverage-backend/src/service/router.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/code-coverage-backend/src/service/standaloneServer.ts b/plugins/code-coverage-backend/src/service/standaloneServer.ts
index 2fb9627936..291f78ffc5 100644
--- a/plugins/code-coverage-backend/src/service/standaloneServer.ts
+++ b/plugins/code-coverage-backend/src/service/standaloneServer.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -61,9 +61,12 @@ export async function startStandaloneServer(
logger,
});
- const service = createServiceBuilder(module)
- .enableCors({ origin: 'http://localhost:3000' })
+ let service = createServiceBuilder(module)
+ .setPort(options.port)
.addRouter('/code-coverage', router);
+ if (options.enableCors) {
+ service = service.enableCors({ origin: 'http://localhost:3000' });
+ }
return await service.start().catch(err => {
logger.error(err);
diff --git a/plugins/code-coverage-backend/src/service/types.ts b/plugins/code-coverage-backend/src/service/types.ts
index 34fcf57968..c4c622bfaf 100644
--- a/plugins/code-coverage-backend/src/service/types.ts
+++ b/plugins/code-coverage-backend/src/service/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/code-coverage-backend/src/setupTests.ts b/plugins/code-coverage-backend/src/setupTests.ts
index ba33cf996b..d3232290a7 100644
--- a/plugins/code-coverage-backend/src/setupTests.ts
+++ b/plugins/code-coverage-backend/src/setupTests.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/code-coverage/api-report.md b/plugins/code-coverage/api-report.md
new file mode 100644
index 0000000000..bade5ddb8a
--- /dev/null
+++ b/plugins/code-coverage/api-report.md
@@ -0,0 +1,32 @@
+## API Report File for "@backstage/plugin-code-coverage"
+
+> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
+
+```ts
+
+import { BackstagePlugin } from '@backstage/core';
+import { Entity } from '@backstage/catalog-model';
+import { RouteRef } from '@backstage/core';
+
+// @public (undocumented)
+export const codeCoveragePlugin: BackstagePlugin<{
+ root: RouteRef;
+}, {}>;
+
+// @public (undocumented)
+export const EntityCodeCoverageContent: () => JSX.Element;
+
+// @public (undocumented)
+const isCodeCoverageAvailable: (entity: Entity) => boolean;
+
+export { isCodeCoverageAvailable }
+
+export { isCodeCoverageAvailable as isPluginApplicableToEntity }
+
+// @public (undocumented)
+export const Router: () => JSX.Element;
+
+
+// (No @packageDocumentation comment for this package)
+
+```
diff --git a/plugins/code-coverage/dev/index.tsx b/plugins/code-coverage/dev/index.tsx
index 69ff4bcda2..f364c2a0d1 100644
--- a/plugins/code-coverage/dev/index.tsx
+++ b/plugins/code-coverage/dev/index.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/code-coverage/package.json b/plugins/code-coverage/package.json
index 51626acef0..9d963ee50b 100644
--- a/plugins/code-coverage/package.json
+++ b/plugins/code-coverage/package.json
@@ -39,7 +39,7 @@
"recharts": "^1.8.5"
},
"devDependencies": {
- "@backstage/cli": "^0.7.0",
+ "@backstage/cli": "^0.7.1",
"@backstage/dev-utils": "^0.1.17",
"@backstage/test-utils": "^0.1.13",
"@testing-library/jest-dom": "^5.10.1",
diff --git a/plugins/code-coverage/src/api.ts b/plugins/code-coverage/src/api.ts
index 6331f8020f..e65ec0da3e 100644
--- a/plugins/code-coverage/src/api.ts
+++ b/plugins/code-coverage/src/api.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/code-coverage/src/components/CodeCoveragePage/CodeCoveragePage.tsx b/plugins/code-coverage/src/components/CodeCoveragePage/CodeCoveragePage.tsx
index 47811b93cd..89219ce323 100644
--- a/plugins/code-coverage/src/components/CodeCoveragePage/CodeCoveragePage.tsx
+++ b/plugins/code-coverage/src/components/CodeCoveragePage/CodeCoveragePage.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/code-coverage/src/components/CodeCoveragePage/index.ts b/plugins/code-coverage/src/components/CodeCoveragePage/index.ts
index c5479c0098..353f528431 100644
--- a/plugins/code-coverage/src/components/CodeCoveragePage/index.ts
+++ b/plugins/code-coverage/src/components/CodeCoveragePage/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/code-coverage/src/components/CoverageHistoryChart/CoverageHistoryChart.tsx b/plugins/code-coverage/src/components/CoverageHistoryChart/CoverageHistoryChart.tsx
index 7bb4648f6f..da64900a85 100644
--- a/plugins/code-coverage/src/components/CoverageHistoryChart/CoverageHistoryChart.tsx
+++ b/plugins/code-coverage/src/components/CoverageHistoryChart/CoverageHistoryChart.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/code-coverage/src/components/CoverageHistoryChart/index.ts b/plugins/code-coverage/src/components/CoverageHistoryChart/index.ts
index b9dd72e34b..4e51632f6a 100644
--- a/plugins/code-coverage/src/components/CoverageHistoryChart/index.ts
+++ b/plugins/code-coverage/src/components/CoverageHistoryChart/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/code-coverage/src/components/FileExplorer/CodeRow.tsx b/plugins/code-coverage/src/components/FileExplorer/CodeRow.tsx
index bd982b0f6b..7eb8ce0f29 100644
--- a/plugins/code-coverage/src/components/FileExplorer/CodeRow.tsx
+++ b/plugins/code-coverage/src/components/FileExplorer/CodeRow.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/code-coverage/src/components/FileExplorer/FileContent.tsx b/plugins/code-coverage/src/components/FileExplorer/FileContent.tsx
index b43874123d..2e14248a75 100644
--- a/plugins/code-coverage/src/components/FileExplorer/FileContent.tsx
+++ b/plugins/code-coverage/src/components/FileExplorer/FileContent.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/code-coverage/src/components/FileExplorer/FileExplorer.tsx b/plugins/code-coverage/src/components/FileExplorer/FileExplorer.tsx
index b49b78c5dc..4b4ea2dc83 100644
--- a/plugins/code-coverage/src/components/FileExplorer/FileExplorer.tsx
+++ b/plugins/code-coverage/src/components/FileExplorer/FileExplorer.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/code-coverage/src/components/FileExplorer/Highlighter.ts b/plugins/code-coverage/src/components/FileExplorer/Highlighter.ts
index 39f56200b6..3cb20ad5a7 100644
--- a/plugins/code-coverage/src/components/FileExplorer/Highlighter.ts
+++ b/plugins/code-coverage/src/components/FileExplorer/Highlighter.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/code-coverage/src/components/FileExplorer/index.ts b/plugins/code-coverage/src/components/FileExplorer/index.ts
index 88da4059bd..c3733893cf 100644
--- a/plugins/code-coverage/src/components/FileExplorer/index.ts
+++ b/plugins/code-coverage/src/components/FileExplorer/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/code-coverage/src/components/Router.tsx b/plugins/code-coverage/src/components/Router.tsx
index 12be6ef5a8..fb772f80c7 100644
--- a/plugins/code-coverage/src/components/Router.tsx
+++ b/plugins/code-coverage/src/components/Router.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Spotify AB
+ * Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/code-coverage/src/index.ts b/plugins/code-coverage/src/index.ts
index 7542f963b5..e15b58db75 100644
--- a/plugins/code-coverage/src/index.ts
+++ b/plugins/code-coverage/src/index.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/code-coverage/src/plugin.test.ts b/plugins/code-coverage/src/plugin.test.ts
index 9a34c66965..2b68224d19 100644
--- a/plugins/code-coverage/src/plugin.test.ts
+++ b/plugins/code-coverage/src/plugin.test.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/code-coverage/src/plugin.ts b/plugins/code-coverage/src/plugin.ts
index 68e8291bc4..572a42aa10 100644
--- a/plugins/code-coverage/src/plugin.ts
+++ b/plugins/code-coverage/src/plugin.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/code-coverage/src/routes.ts b/plugins/code-coverage/src/routes.ts
index 9eaf7859f5..705c79025c 100644
--- a/plugins/code-coverage/src/routes.ts
+++ b/plugins/code-coverage/src/routes.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/code-coverage/src/setupTests.ts b/plugins/code-coverage/src/setupTests.ts
index 0cec5b395d..fc6dbd98f8 100644
--- a/plugins/code-coverage/src/setupTests.ts
+++ b/plugins/code-coverage/src/setupTests.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/code-coverage/src/types.ts b/plugins/code-coverage/src/types.ts
index 34fcf57968..c4c622bfaf 100644
--- a/plugins/code-coverage/src/types.ts
+++ b/plugins/code-coverage/src/types.ts
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Spotify AB
+ * Copyright 2021 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/plugins/config-schema/api-report.md b/plugins/config-schema/api-report.md
new file mode 100644
index 0000000000..67497be6b6
--- /dev/null
+++ b/plugins/config-schema/api-report.md
@@ -0,0 +1,42 @@
+## API Report File for "@backstage/plugin-config-schema"
+
+> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
+
+```ts
+
+import { ApiRef } from '@backstage/core';
+import { BackstagePlugin } from '@backstage/core';
+import { Observable } from '@backstage/core';
+import { RouteRef } from '@backstage/core';
+import { Schema } from 'jsonschema';
+
+// @public (undocumented)
+export interface ConfigSchemaApi {
+ // (undocumented)
+ schema$(): Observable;
+}
+
+// @public (undocumented)
+export const configSchemaApiRef: ApiRef