diff --git a/.changeset/angry-beers-relate.md b/.changeset/angry-beers-relate.md
new file mode 100644
index 0000000000..4e51de99e4
--- /dev/null
+++ b/.changeset/angry-beers-relate.md
@@ -0,0 +1,43 @@
+---
+'@backstage/plugin-catalog-backend-module-incremental-ingestion': patch
+'@backstage/plugin-catalog-backend-module-bitbucket-server': patch
+'@backstage/plugin-catalog-backend-module-bitbucket-cloud': patch
+'@backstage/plugin-search-backend-module-elasticsearch': patch
+'@backstage/plugin-catalog-backend-module-puppetdb': patch
+'@backstage/plugin-catalog-backend-module-msgraph': patch
+'@backstage/plugin-search-backend-module-techdocs': patch
+'@backstage/plugin-catalog-backend-module-gerrit': patch
+'@backstage/plugin-catalog-backend-module-github': patch
+'@backstage/plugin-catalog-backend-module-gitlab': patch
+'@backstage/plugin-events-backend-module-aws-sqs': patch
+'@backstage/plugin-search-backend-module-catalog': patch
+'@backstage/plugin-search-backend-module-explore': patch
+'@backstage/plugin-catalog-backend-module-azure': patch
+'@backstage/plugin-events-backend-module-github': patch
+'@backstage/plugin-events-backend-module-gitlab': patch
+'@backstage/plugin-catalog-backend-module-aws': patch
+'@backstage/plugin-catalog-backend-module-gcp': patch
+'@backstage/plugin-search-backend-module-pg': patch
+'@backstage/plugin-azure-devops-backend': patch
+'@backstage/plugin-kubernetes-backend': patch
+'@backstage/plugin-lighthouse-backend': patch
+'@backstage/plugin-permission-backend': patch
+'@backstage/plugin-scaffolder-backend': patch
+'@backstage/backend-defaults': patch
+'@backstage/plugin-airbrake-backend': patch
+'@backstage/plugin-devtools-backend': patch
+'@backstage/plugin-periskop-backend': patch
+'@backstage/plugin-techdocs-backend': patch
+'@backstage/backend-common': patch
+'@backstage/plugin-catalog-backend': patch
+'@backstage/plugin-badges-backend': patch
+'@backstage/plugin-bazaar-backend': patch
+'@backstage/plugin-events-backend': patch
+'@backstage/plugin-search-backend': patch
+'@backstage/plugin-kafka-backend': patch
+'@backstage/plugin-proxy-backend': patch
+'@backstage/plugin-todo-backend': patch
+'@backstage/plugin-app-backend': patch
+---
+
+Use `coreServices.rootConfig` instead of `coreService.config`
diff --git a/.changeset/beige-files-reflect.md b/.changeset/beige-files-reflect.md
new file mode 100644
index 0000000000..e888d5e0f8
--- /dev/null
+++ b/.changeset/beige-files-reflect.md
@@ -0,0 +1,7 @@
+---
+'@backstage/plugin-search-backend-module-techdocs': patch
+'@backstage/plugin-search-backend-module-catalog': patch
+'@backstage/plugin-search-backend-module-explore': patch
+---
+
+Ensure that all services are dependency injected into the module instead of taken from options
diff --git a/.changeset/brown-taxis-develop.md b/.changeset/brown-taxis-develop.md
new file mode 100644
index 0000000000..19ebfdef1a
--- /dev/null
+++ b/.changeset/brown-taxis-develop.md
@@ -0,0 +1,5 @@
+---
+'@backstage/backend-app-api': patch
+---
+
+Do not throw in backend.stop, if start failed
diff --git a/.changeset/chatty-seahorses-juggle.md b/.changeset/chatty-seahorses-juggle.md
new file mode 100644
index 0000000000..8d699699a7
--- /dev/null
+++ b/.changeset/chatty-seahorses-juggle.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-kubernetes-backend': patch
+---
+
+Fixed a bug where the proxy was not rewriting WebSocket request paths properly.
diff --git a/.changeset/cold-numbers-sleep.md b/.changeset/cold-numbers-sleep.md
new file mode 100644
index 0000000000..ac53307b07
--- /dev/null
+++ b/.changeset/cold-numbers-sleep.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-scaffolder': patch
+---
+
+Fix the get entities query in the `MyGroupsPicker` to query the `kind=Group` entities.
diff --git a/.changeset/create-app-1690892926.md b/.changeset/create-app-1690892926.md
new file mode 100644
index 0000000000..b50d431d4b
--- /dev/null
+++ b/.changeset/create-app-1690892926.md
@@ -0,0 +1,5 @@
+---
+'@backstage/create-app': patch
+---
+
+Bumped create-app version.
diff --git a/.changeset/create-app-1691503547.md b/.changeset/create-app-1691503547.md
new file mode 100644
index 0000000000..b50d431d4b
--- /dev/null
+++ b/.changeset/create-app-1691503547.md
@@ -0,0 +1,5 @@
+---
+'@backstage/create-app': patch
+---
+
+Bumped create-app version.
diff --git a/.changeset/cuddly-colts-repeat.md b/.changeset/cuddly-colts-repeat.md
new file mode 100644
index 0000000000..8266eb7ff0
--- /dev/null
+++ b/.changeset/cuddly-colts-repeat.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-catalog-graph': patch
+---
+
+Added maximum depth parameter to the catalogGraphParams in CatalogGraphCard.
diff --git a/.changeset/dirty-chefs-listen.md b/.changeset/dirty-chefs-listen.md
new file mode 100644
index 0000000000..84b684b977
--- /dev/null
+++ b/.changeset/dirty-chefs-listen.md
@@ -0,0 +1,7 @@
+---
+'@backstage/config-loader': minor
+---
+
+Loading invalid TypeScript configuration schemas will now throw an error rather than silently being ignored.
+
+In particular this includes defining any additional types other than `Config` in the schema file, or use of unsupported types such as `Record` or `Partial`.
diff --git a/.changeset/fluffy-pens-prove.md b/.changeset/fluffy-pens-prove.md
new file mode 100644
index 0000000000..0bd7d9baf3
--- /dev/null
+++ b/.changeset/fluffy-pens-prove.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-auth-backend': patch
+---
+
+Updated `frameHandler` to return `undefined` when using the redirect flow instead of returning `postMessageReponse` which was causing errors
diff --git a/.changeset/funny-dancers-deliver.md b/.changeset/funny-dancers-deliver.md
new file mode 100644
index 0000000000..0518fe0a01
--- /dev/null
+++ b/.changeset/funny-dancers-deliver.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-scaffolder-backend': patch
+---
+
+Added examples for the `fs:delete` and `fs:rename` actions
diff --git a/.changeset/gold-steaks-thank.md b/.changeset/gold-steaks-thank.md
new file mode 100644
index 0000000000..03ed14653c
--- /dev/null
+++ b/.changeset/gold-steaks-thank.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-graphql-voyager': patch
+---
+
+Fix typo in install instructions.
diff --git a/.changeset/hot-cats-rush.md b/.changeset/hot-cats-rush.md
new file mode 100644
index 0000000000..2963804ff2
--- /dev/null
+++ b/.changeset/hot-cats-rush.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-explore-backend': patch
+---
+
+Moved the config example from the "Tools as Code" section to the "Tools as Config" section of the README
diff --git a/.changeset/hungry-shrimps-care.md b/.changeset/hungry-shrimps-care.md
new file mode 100644
index 0000000000..665a7bfc82
--- /dev/null
+++ b/.changeset/hungry-shrimps-care.md
@@ -0,0 +1,91 @@
+---
+'@backstage/plugin-scaffolder-backend-module-confluence-to-markdown': patch
+'@backstage/plugin-scaffolder-backend-module-cookiecutter': patch
+'@backstage/plugin-events-backend-module-bitbucket-cloud': patch
+'@backstage/plugin-search-backend-module-elasticsearch': patch
+'@backstage/plugin-catalog-backend-module-unprocessed': patch
+'@backstage/plugin-scaffolder-backend-module-sentry': patch
+'@backstage/plugin-scaffolder-backend-module-yeoman': patch
+'@backstage/plugin-scaffolder-backend-module-rails': patch
+'@backstage/plugin-search-backend-module-techdocs': patch
+'@backstage/plugin-cicd-statistics-module-gitlab': patch
+'@backstage/plugin-events-backend-module-aws-sqs': patch
+'@backstage/plugin-search-backend-module-catalog': patch
+'@backstage/plugin-search-backend-module-explore': patch
+'@backstage/plugin-events-backend-module-gerrit': patch
+'@backstage/plugin-events-backend-module-github': patch
+'@backstage/plugin-events-backend-module-gitlab': patch
+'@backstage/plugin-events-backend-module-azure': patch
+'@backstage/plugin-events-backend-test-utils': patch
+'@backstage/plugin-search-backend-module-pg': patch
+'@backstage/plugin-entity-feedback-backend': patch
+'@backstage/backend-openapi-utils': patch
+'@backstage/plugin-bitbucket-cloud-common': patch
+'@backstage/plugin-entity-feedback-common': patch
+'@backstage/plugin-code-coverage-backend': patch
+'@backstage/plugin-user-settings-backend': patch
+'@backstage/plugin-analytics-module-ga4': patch
+'@backstage/plugin-azure-devops-backend': patch
+'@backstage/plugin-analytics-module-ga': patch
+'@backstage/plugin-git-release-manager': patch
+'@backstage/plugin-search-backend-node': patch
+'@backstage/integration-react': patch
+'@backstage/plugin-github-deployments': patch
+'@backstage/plugin-microsoft-calendar': patch
+'@backstage/plugin-newrelic-dashboard': patch
+'@backstage/plugin-permission-backend': patch
+'@backstage/plugin-entity-validation': patch
+'@backstage/plugin-sonarqube-backend': patch
+'@backstage/plugin-airbrake-backend': patch
+'@backstage/plugin-devtools-backend': patch
+'@backstage/plugin-linguist-backend': patch
+'@backstage/plugin-periskop-backend': patch
+'@backstage/plugin-playlist-backend': patch
+'@backstage/plugin-apollo-explorer': patch
+'@backstage/plugin-devtools-common': patch
+'@backstage/plugin-entity-feedback': patch
+'@backstage/plugin-explore-backend': patch
+'@backstage/plugin-graphql-voyager': patch
+'@backstage/plugin-jenkins-backend': patch
+'@backstage/plugin-linguist-common': patch
+'@backstage/plugin-playlist-common': patch
+'@backstage/plugin-scaffolder-node': patch
+'@backstage/plugin-apache-airflow': patch
+'@backstage/plugin-bazaar-backend': patch
+'@backstage/plugin-events-backend': patch
+'@backstage/plugin-jenkins-common': patch
+'@backstage/plugin-octopus-deploy': patch
+'@backstage/plugin-search-backend': patch
+'@backstage/plugin-stack-overflow': patch
+'@backstage/plugin-catalog-graph': patch
+'@backstage/plugin-code-coverage': patch
+'@backstage/plugin-config-schema': patch
+'@backstage/plugin-github-issues': patch
+'@backstage/plugin-nomad-backend': patch
+'@backstage/plugin-tech-insights': patch
+'@backstage/plugin-catalog-node': patch
+'@backstage/plugin-code-climate': patch
+'@backstage/plugin-events-node': patch
+'@backstage/plugin-firehydrant': patch
+'@backstage/cli-node': patch
+'@backstage/plugin-auth-node': patch
+'@backstage/plugin-codescene': patch
+'@backstage/plugin-dynatrace': patch
+'@backstage/plugin-gcalendar': patch
+'@backstage/plugin-org-react': patch
+'@backstage/plugin-shortcuts': patch
+'@backstage/plugin-xcmetrics': patch
+'@backstage/plugin-airbrake': patch
+'@backstage/plugin-periskop': patch
+'@backstage/plugin-playlist': patch
+'@backstage/plugin-bitrise': patch
+'@backstage/plugin-allure': patch
+'@backstage/plugin-bazaar': patch
+'@backstage/plugin-ilert': patch
+'@backstage/plugin-kafka': patch
+'@backstage/plugin-nomad': patch
+'@backstage/plugin-adr': patch
+'@backstage/plugin-org': patch
+---
+
+Add package repository and homepage metadata
diff --git a/.changeset/kind-cougars-allow.md b/.changeset/kind-cougars-allow.md
new file mode 100644
index 0000000000..d37c4c5cf2
--- /dev/null
+++ b/.changeset/kind-cougars-allow.md
@@ -0,0 +1,14 @@
+---
+'@backstage/plugin-devtools-backend': patch
+---
+
+Add DevTools configuration to enable dependency listing to be filtered with custom prefixes. For instance, in your `app-config.yaml`:
+
+```yaml
+devTools:
+ info:
+ packagePrefixes:
+ - @backstage/
+ - @roadiehq/backstage-
+ - @spotify/backstage-
+```
diff --git a/.changeset/large-badgers-switch.md b/.changeset/large-badgers-switch.md
new file mode 100644
index 0000000000..47c06a4afe
--- /dev/null
+++ b/.changeset/large-badgers-switch.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-linguist-common': patch
+---
+
+Exported new LanguageType type alias
diff --git a/.changeset/large-vans-cross.md b/.changeset/large-vans-cross.md
new file mode 100644
index 0000000000..f50b432742
--- /dev/null
+++ b/.changeset/large-vans-cross.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-sonarqube': patch
+---
+
+Remove sonarQube card disable class
diff --git a/.changeset/lazy-pugs-wash.md b/.changeset/lazy-pugs-wash.md
new file mode 100644
index 0000000000..923ef5b116
--- /dev/null
+++ b/.changeset/lazy-pugs-wash.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-app-node': minor
+---
+
+Added the `app` plugin node library, initially providing an extension point that can be used to configure a static fallback handler.
diff --git a/.changeset/little-penguins-build.md b/.changeset/little-penguins-build.md
new file mode 100644
index 0000000000..9e54a566e2
--- /dev/null
+++ b/.changeset/little-penguins-build.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-catalog-backend': minor
+---
+
+Support configuring applicable kinds for `AnnotateScmSlugEntityProcessor`
diff --git a/.changeset/metal-buttons-search.md b/.changeset/metal-buttons-search.md
new file mode 100644
index 0000000000..9578d8d2d4
--- /dev/null
+++ b/.changeset/metal-buttons-search.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-scaffolder-backend': patch
+---
+
+Adds examples to a few scaffolder actions.
diff --git a/.changeset/mighty-lions-search-2.md b/.changeset/mighty-lions-search-2.md
new file mode 100644
index 0000000000..a7fb1a4a7d
--- /dev/null
+++ b/.changeset/mighty-lions-search-2.md
@@ -0,0 +1,5 @@
+---
+'@backstage/backend-test-utils': minor
+---
+
+**BREAKING**: Renamed `mockServices.config` to `mockServices.rootConfig`.
diff --git a/.changeset/mighty-lions-search-3.md b/.changeset/mighty-lions-search-3.md
new file mode 100644
index 0000000000..6b381ce2b2
--- /dev/null
+++ b/.changeset/mighty-lions-search-3.md
@@ -0,0 +1,5 @@
+---
+'@backstage/backend-app-api': minor
+---
+
+**BREAKING**: Renamed `configServiceFactory` to `rootConfigServiceFactory`.
diff --git a/.changeset/mighty-lions-search.md b/.changeset/mighty-lions-search.md
new file mode 100644
index 0000000000..6d2ffd02c0
--- /dev/null
+++ b/.changeset/mighty-lions-search.md
@@ -0,0 +1,5 @@
+---
+'@backstage/backend-plugin-api': minor
+---
+
+**BREAKING**: Renamed `coreServices.config` to `coreServices.rootConfig`.
diff --git a/.changeset/neat-coins-raise.md b/.changeset/neat-coins-raise.md
new file mode 100644
index 0000000000..c3045634bf
--- /dev/null
+++ b/.changeset/neat-coins-raise.md
@@ -0,0 +1,17 @@
+---
+'@backstage/plugin-catalog-backend-module-bitbucket-server': patch
+'@backstage/plugin-catalog-backend-module-bitbucket-cloud': patch
+'@backstage/plugin-catalog-backend-module-puppetdb': patch
+'@backstage/plugin-catalog-backend-module-msgraph': patch
+'@backstage/plugin-catalog-backend-module-gerrit': patch
+'@backstage/plugin-catalog-backend-module-github': patch
+'@backstage/plugin-catalog-backend-module-gitlab': patch
+'@backstage/plugin-events-backend-module-aws-sqs': patch
+'@backstage/plugin-catalog-backend-module-azure': patch
+'@backstage/plugin-catalog-backend-module-aws': patch
+'@backstage/backend-common': patch
+'@backstage/plugin-jenkins-backend': patch
+'@backstage/plugin-proxy-backend': patch
+---
+
+Fixed invalid configuration schema. The configuration schema may be more strict as a result.
diff --git a/.changeset/odd-avocados-buy.md b/.changeset/odd-avocados-buy.md
new file mode 100644
index 0000000000..9e71c19fc0
--- /dev/null
+++ b/.changeset/odd-avocados-buy.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-scaffolder-backend-module-confluence-to-markdown': patch
+---
+
+Use `fetchContents` directly instead of a `fetchPlainAction`
diff --git a/.changeset/popular-fans-camp.md b/.changeset/popular-fans-camp.md
new file mode 100644
index 0000000000..47fc095ef8
--- /dev/null
+++ b/.changeset/popular-fans-camp.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-auth-backend': patch
+---
+
+Updated config schema to match what was being used in code
diff --git a/.changeset/pre.json b/.changeset/pre.json
index 46dfaafe4e..64c8890ee2 100644
--- a/.changeset/pre.json
+++ b/.changeset/pre.json
@@ -229,26 +229,76 @@
"@backstage/plugin-vault": "0.1.14",
"@backstage/plugin-vault-backend": "0.3.3",
"@backstage/plugin-xcmetrics": "0.2.40",
- "@backstage/plugin-analytics-module-newrelic-browser": "0.0.0"
+ "@backstage/plugin-analytics-module-newrelic-browser": "0.0.0",
+ "@backstage/plugin-catalog-backend-module-gcp": "0.0.0",
+ "@backstage/plugin-app-node": "0.0.0"
},
"changesets": [
"analytics-millenial-whoop",
+ "angry-beers-relate",
+ "beige-files-reflect",
+ "brown-taxis-develop",
"chatty-foxes-buy",
+ "chatty-seahorses-juggle",
+ "chilly-keys-count",
+ "cold-numbers-sleep",
"create-app-1690284535",
+ "create-app-1690892926",
+ "create-app-1691503547",
+ "cuddly-colts-repeat",
+ "dirty-chefs-listen",
+ "fluffy-pens-prove",
+ "funny-dancers-deliver",
+ "gold-steaks-thank",
"gorgeous-months-doubt",
+ "hot-cats-rush",
+ "hungry-shrimps-care",
+ "khaki-flies-draw",
+ "kind-cougars-allow",
+ "large-badgers-switch",
"large-experts-poke",
+ "large-vans-cross",
+ "lazy-pugs-wash",
+ "little-penguins-build",
"loud-garlics-press",
"mean-squids-relax",
+ "metal-buttons-search",
+ "mighty-lions-search-2",
+ "mighty-lions-search-3",
+ "mighty-lions-search",
+ "neat-coins-raise",
"neat-lamps-press",
+ "odd-avocados-buy",
"pink-squids-nail",
+ "popular-fans-camp",
"quiet-starfishes-kick",
"rare-pens-exist",
+ "rich-zoos-occur",
+ "rotten-dolls-sing",
+ "rotten-rabbits-move",
"rude-feet-sparkle",
"search-donuts-wash",
"selfish-coats-shout",
"serious-bats-repair",
+ "serious-papayas-shout",
+ "serious-singers-vanish",
+ "seven-cougars-smash",
+ "sharp-months-think",
+ "slimy-kids-jam",
"smart-pandas-applaud",
+ "sour-hats-kick",
+ "stale-wombats-talk",
+ "strange-shrimps-mix",
+ "strong-bobcats-unite",
"stupid-berries-run",
- "ten-otters-appear"
+ "ten-lies-cheat",
+ "ten-otters-appear",
+ "tender-fireants-cheer",
+ "thin-yaks-hang",
+ "tidy-cobras-scream",
+ "tough-dolphins-care",
+ "tough-lies-float",
+ "unlucky-bags-pump",
+ "wild-timers-sparkle"
]
}
diff --git a/.changeset/renovate-9a0aa29.md b/.changeset/renovate-9a0aa29.md
new file mode 100644
index 0000000000..8885bf30cd
--- /dev/null
+++ b/.changeset/renovate-9a0aa29.md
@@ -0,0 +1,6 @@
+---
+'@backstage/cli': patch
+'@backstage/plugin-scaffolder-backend': patch
+---
+
+Updated dependency `esbuild` to `^0.19.0`.
diff --git a/.changeset/rich-zoos-occur.md b/.changeset/rich-zoos-occur.md
new file mode 100644
index 0000000000..979acb93c6
--- /dev/null
+++ b/.changeset/rich-zoos-occur.md
@@ -0,0 +1,6 @@
+---
+'@backstage/backend-plugin-api': minor
+'@backstage/backend-defaults': minor
+---
+
+**BREAKING**: Removing shared environments concept from the new experimental backend system.
diff --git a/.changeset/rotten-dolls-sing.md b/.changeset/rotten-dolls-sing.md
new file mode 100644
index 0000000000..039b287a77
--- /dev/null
+++ b/.changeset/rotten-dolls-sing.md
@@ -0,0 +1,5 @@
+---
+'@backstage/backend-plugin-api': patch
+---
+
+Added new experimental `featureDiscoveryServiceRef`, available as an `/alpha` export.
diff --git a/.changeset/rotten-rabbits-move.md b/.changeset/rotten-rabbits-move.md
new file mode 100644
index 0000000000..f2e1ffda08
--- /dev/null
+++ b/.changeset/rotten-rabbits-move.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-proxy-backend': minor
+---
+
+Defining proxy endpoints directly under the root `proxy` configuration key is deprecated. Endpoints should now be declared under `proxy.endpoints` instead. The `skipInvalidProxies` and `reviveConsumedRequestBodies` can now also be configured through static configuration.
diff --git a/.changeset/serious-papayas-shout.md b/.changeset/serious-papayas-shout.md
new file mode 100644
index 0000000000..f426dd02c7
--- /dev/null
+++ b/.changeset/serious-papayas-shout.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-catalog-backend-module-gitlab': patch
+---
+
+Filter Gitlab archived projects through APIs
diff --git a/.changeset/serious-singers-vanish.md b/.changeset/serious-singers-vanish.md
new file mode 100644
index 0000000000..e1f4a754a7
--- /dev/null
+++ b/.changeset/serious-singers-vanish.md
@@ -0,0 +1,5 @@
+---
+'@backstage/backend-app-api': patch
+---
+
+Added new experimental `featureDiscoveryServiceFactory`, available as an `/alpha` export.
diff --git a/.changeset/seven-cougars-smash.md b/.changeset/seven-cougars-smash.md
new file mode 100644
index 0000000000..5493a724d7
--- /dev/null
+++ b/.changeset/seven-cougars-smash.md
@@ -0,0 +1,5 @@
+---
+'@backstage/backend-tasks': patch
+---
+
+Make `readTaskScheduleDefinitionFromConfig` properly handle bad inputs
diff --git a/.changeset/sharp-months-think.md b/.changeset/sharp-months-think.md
new file mode 100644
index 0000000000..04ffbb8d1b
--- /dev/null
+++ b/.changeset/sharp-months-think.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-app-backend': patch
+---
+
+Migrated the alpha `appBackend` export to use static configuration and extension points rather than accepting options.
diff --git a/.changeset/slimy-kids-jam.md b/.changeset/slimy-kids-jam.md
new file mode 100644
index 0000000000..c02daf325e
--- /dev/null
+++ b/.changeset/slimy-kids-jam.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-catalog-backend': minor
+---
+
+Added OpenTelemetry spans for catalog processing
diff --git a/.changeset/sour-hats-kick.md b/.changeset/sour-hats-kick.md
new file mode 100644
index 0000000000..023cfff0f4
--- /dev/null
+++ b/.changeset/sour-hats-kick.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-catalog-react': patch
+---
+
+Allow specifying screen size when catalog filters are hidden in drawer
diff --git a/.changeset/stale-wombats-talk.md b/.changeset/stale-wombats-talk.md
new file mode 100644
index 0000000000..f4e0b852f8
--- /dev/null
+++ b/.changeset/stale-wombats-talk.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-catalog-backend-module-aws': patch
+---
+
+Added option to configure AWS `accountId` in `AwsS3EntityProvider`
diff --git a/.changeset/strange-shrimps-mix.md b/.changeset/strange-shrimps-mix.md
new file mode 100644
index 0000000000..fbb08eeeb6
--- /dev/null
+++ b/.changeset/strange-shrimps-mix.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-linguist-backend': minor
+---
+
+Adds a processor to the linguist backend which can automatically add language tags to entities
diff --git a/.changeset/strong-bobcats-unite.md b/.changeset/strong-bobcats-unite.md
new file mode 100644
index 0000000000..ef86023d58
--- /dev/null
+++ b/.changeset/strong-bobcats-unite.md
@@ -0,0 +1,5 @@
+---
+'@backstage/backend-test-utils': patch
+---
+
+Add needed constants and constructs to support PostgreSQL version 14 as test database
diff --git a/.changeset/ten-lies-cheat.md b/.changeset/ten-lies-cheat.md
new file mode 100644
index 0000000000..1c965a574c
--- /dev/null
+++ b/.changeset/ten-lies-cheat.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-scaffolder-node': patch
+---
+
+Export `TemplateExample` from the `createTemplateAction` type.
diff --git a/.changeset/tender-fireants-cheer.md b/.changeset/tender-fireants-cheer.md
new file mode 100644
index 0000000000..1d829f673b
--- /dev/null
+++ b/.changeset/tender-fireants-cheer.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-devtools': patch
+---
+
+Fix readme typo
diff --git a/.changeset/thin-yaks-hang.md b/.changeset/thin-yaks-hang.md
new file mode 100644
index 0000000000..1a1bdb4ab7
--- /dev/null
+++ b/.changeset/thin-yaks-hang.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-search-backend': patch
+---
+
+Add missing `configSchema` to package.json
diff --git a/.changeset/tidy-cobras-scream.md b/.changeset/tidy-cobras-scream.md
new file mode 100644
index 0000000000..2917f11dfc
--- /dev/null
+++ b/.changeset/tidy-cobras-scream.md
@@ -0,0 +1,7 @@
+---
+'@backstage/plugin-scaffolder-backend-module-confluence-to-markdown': patch
+'@backstage/plugin-scaffolder-backend-module-cookiecutter': patch
+'@backstage/plugin-scaffolder-backend-module-rails': patch
+---
+
+Import helpers from the node package instead of the backend package
diff --git a/.changeset/tough-dolphins-care.md b/.changeset/tough-dolphins-care.md
new file mode 100644
index 0000000000..7d9739ec10
--- /dev/null
+++ b/.changeset/tough-dolphins-care.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-catalog-backend-module-gcp': minor
+---
+
+Added GCP catalog plugin with GKE provider
diff --git a/.changeset/tough-lies-float.md b/.changeset/tough-lies-float.md
new file mode 100644
index 0000000000..2ad3b8623f
--- /dev/null
+++ b/.changeset/tough-lies-float.md
@@ -0,0 +1,6 @@
+---
+'@backstage/plugin-scaffolder-backend': patch
+'@backstage/plugin-scaffolder-node': patch
+---
+
+Deprecated `executeShellCommand`, `RunCommandOptions`, and `fetchContents` from `@backstage/plugin-scaffolder-backend`, since they are useful for Scaffolder modules (who should not be importing from the plugin package itself). You should now import these from `@backstage/plugin-scaffolder-backend-node` instead. `RunCommandOptions` was renamed in the Node package as `ExecuteShellCommandOptions`, for consistency.
diff --git a/.changeset/twelve-ducks-swim.md b/.changeset/twelve-ducks-swim.md
new file mode 100644
index 0000000000..1e44f09be1
--- /dev/null
+++ b/.changeset/twelve-ducks-swim.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-catalog': patch
+---
+
+Fixed an issue causing `EntitySwitch` to unmount its children once entity refresh was invoked
diff --git a/.changeset/unlucky-bags-pump.md b/.changeset/unlucky-bags-pump.md
new file mode 100644
index 0000000000..a275887410
--- /dev/null
+++ b/.changeset/unlucky-bags-pump.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-auth-backend': patch
+---
+
+Add frontend visibility to provider objects in `auth` config.
diff --git a/.changeset/wild-timers-sparkle.md b/.changeset/wild-timers-sparkle.md
new file mode 100644
index 0000000000..3df14f3a69
--- /dev/null
+++ b/.changeset/wild-timers-sparkle.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-microsoft-calendar': patch
+---
+
+README update - example of apiRef definition and fixed component name
diff --git a/.github/vale/Vocab/Backstage/accept.txt b/.github/vale/Vocab/Backstage/accept.txt
index ed09c73c91..7501010382 100644
--- a/.github/vale/Vocab/Backstage/accept.txt
+++ b/.github/vale/Vocab/Backstage/accept.txt
@@ -123,6 +123,8 @@ FireHydrant
Firekube
Firestore
Fiverr
+Flightcontrol
+flightcontrol
Francesco
Frontside
gerrit
@@ -405,6 +407,7 @@ unbreak
Unconference
unicode
unmanaged
+unmount
unregister
unregistering
unregistration
diff --git a/ADOPTERS.md b/ADOPTERS.md
index 926c303313..8afd8eb4ab 100644
--- a/ADOPTERS.md
+++ b/ADOPTERS.md
@@ -254,3 +254,6 @@ _You can do this by using the [Adopter form](https://info.backstage.spotify.com/
| [Celonis](https://celonis.com) | [@georgeyord](https://github.com/georgeyord), [@LauraMoraB](https://github.com/LauraMoraB), [@mariosant](https://github.com/mariosant), [@Rbillon59](https://github.com/Rbillon59) | Internal developer and product portal implementation. |
| [Rabobank](https://www.rabobank.com) | [Willem Dekker](https://github.com/wdekker), [Sridhar Gnanasekaran](https://github.com/srid99), [Ruben Ernst](https://github.com/Ruben-E) | At Rabobank, our mission is to make life better for engineers. After exploring various options in the market, we've discovered that Backstage provides the perfect foundation for creating a platform that meets our engineers' needs and helps us achieve our goals. We want to make our engineers happy by offering standardized services, freeing them up to focus on delivering value. Our vision is to create a one-stop platform where engineers can find everything related to software and services. In practice, we're excited about using all the cool features in Backstage, and we're even planning to build our own plugins. |
| [JB Hi-Fi](https://www.jbhifi.com.au) | [@bahman](https://github.com/bahman-jb/) | We use Backstage as a central place for all of our components/apis across multiple teams. It helps us to quickly identify the ownership of a component/api, find the related links and have a quick access to CI/CD pipelines. |
+| [Zenklub](https://www.zenklub.com.br) | [@zenklub](https://github.com/zenklub), [@gioufop](https://github.com/gioufop) | Developer portal, services catalog and centralization of metrics from Grafana Stack and AWS. Furthermore, centralization of documentation and infra details like Tools, Network services and so on. |
+| [Platzi](https://platzi.com/) | [@juancarestre](https://github.com/juancarestre/), [Engineering at Platzi](https://github.com/PlatziDev/) | Backstage allow our developers to get easily engaged with all the internal components, technical documentations and software templates. All new developers reduce its onboarding time via Backstage, and after a couple of integrations it allowed us to create new components with in a couple of clicks. |
+| [idealo](https://idealo.de) | [Wanis Fahmy](https://github.com/wanisfahmyDE), [Sajjad Pervaiz](https://github.com/sjvaiz), [Tim Heurich](https://github.com/theurichde) | Backstage is our Internal developer portal. Along with other plugins, We use the software catalog, TechDocs and explore plugins to manage, discover and document our software components and platform products. |
diff --git a/OWNERS.md b/OWNERS.md
index 5a9457d755..66575e8e35 100644
--- a/OWNERS.md
+++ b/OWNERS.md
@@ -42,6 +42,7 @@ Scope: Discoverability within Backstage, including the home page, information ar
| Emma Indal | Spotify | BUX | [emmaindal](http://github.com/emmaindal) | emmaindal#7503 |
| Raghunandan Balachandran | Spotify | BUX | [soapraj](http://github.com/soapraj) | raghunandanb#1114 |
| Renan Mendes Carvalho | Spotify | BUX | [aitherios](http://github.com/aitherios) | aitherios#0593 |
+| Bailey Brooks | Spotify | BUX | [bailey](http://github.com/bailey) | \_bailey4 |
### Helm Charts
diff --git a/README.md b/README.md
index d9da778694..9c8fbec79b 100644
--- a/README.md
+++ b/README.md
@@ -10,6 +10,8 @@
[](https://codecov.io/gh/backstage/backstage)
[](https://github.com/backstage/backstage/releases)
[](https://app.uffizzi.com/ephemeral-environments/backstage/backstage)
+[](https://bestpractices.coreinfrastructure.org/projects/7678)
+[](https://securityscorecards.dev/viewer/?uri=github.com/backstage/backstage)
> 🏖️ The week beginning the 26th of June, some of the maintainers will be taking a well earned Summer Holiday break. We will be slower to respond to issues and PRs during this time. Releases will continue to be shipped weekly. Normal service will resume on the 24th of July. 🏝️
diff --git a/app-config.yaml b/app-config.yaml
index da505d390b..37cb61f26e 100644
--- a/app-config.yaml
+++ b/app-config.yaml
@@ -20,6 +20,8 @@ app:
- url: https://discord.gg/backstage-687207715902193673
title: '#backstage'
+ packageName: example-app
+
backend:
# Used for enabling authentication, secret is shared by all backend plugins
# See https://backstage.io/docs/auth/service-to-service-auth for
@@ -49,82 +51,83 @@ backend:
# See README.md in the proxy-backend plugin for information on the configuration format
proxy:
- '/circleci/api':
- target: https://circleci.com/api/v1.1
- headers:
- Circle-Token: ${CIRCLECI_AUTH_TOKEN}
+ endpoints:
+ '/circleci/api':
+ target: https://circleci.com/api/v1.1
+ headers:
+ Circle-Token: ${CIRCLECI_AUTH_TOKEN}
- '/jenkins/api':
- target: http://localhost:8080
- headers:
- Authorization: ${JENKINS_BASIC_AUTH_HEADER}
+ '/jenkins/api':
+ target: http://localhost:8080
+ headers:
+ Authorization: ${JENKINS_BASIC_AUTH_HEADER}
- '/travisci/api':
- target: https://api.travis-ci.com
- changeOrigin: true
- headers:
- Authorization: ${TRAVISCI_AUTH_TOKEN}
- travis-api-version: '3'
+ '/travisci/api':
+ target: https://api.travis-ci.com
+ changeOrigin: true
+ headers:
+ Authorization: ${TRAVISCI_AUTH_TOKEN}
+ travis-api-version: '3'
- '/newrelic/apm/api':
- target: https://api.newrelic.com/v2
- headers:
- X-Api-Key: ${NEW_RELIC_REST_API_KEY}
- allowedHeaders:
- - link
+ '/newrelic/apm/api':
+ target: https://api.newrelic.com/v2
+ headers:
+ X-Api-Key: ${NEW_RELIC_REST_API_KEY}
+ allowedHeaders:
+ - link
- '/newrelic/api':
- target: https://api.newrelic.com
- headers:
- X-Api-Key: ${NEW_RELIC_USER_KEY}
+ '/newrelic/api':
+ target: https://api.newrelic.com
+ headers:
+ X-Api-Key: ${NEW_RELIC_USER_KEY}
- '/pagerduty':
- target: https://api.pagerduty.com
- headers:
- Authorization: Token token=${PAGERDUTY_TOKEN}
+ '/pagerduty':
+ target: https://api.pagerduty.com
+ headers:
+ Authorization: Token token=${PAGERDUTY_TOKEN}
- '/buildkite/api':
- target: https://api.buildkite.com/v2/
- headers:
- Authorization: ${BUILDKITE_TOKEN}
+ '/buildkite/api':
+ target: https://api.buildkite.com/v2/
+ headers:
+ Authorization: ${BUILDKITE_TOKEN}
- '/sentry/api':
- target: https://sentry.io/api/
- allowedMethods: ['GET']
- headers:
- Authorization: ${SENTRY_TOKEN}
+ '/sentry/api':
+ target: https://sentry.io/api/
+ allowedMethods: ['GET']
+ headers:
+ Authorization: ${SENTRY_TOKEN}
- '/ilert':
- target: https://api.ilert.com
- allowedMethods: ['GET', 'POST', 'PUT']
- allowedHeaders: ['Authorization']
- headers:
- Authorization: ${ILERT_AUTH_HEADER}
+ '/ilert':
+ target: https://api.ilert.com
+ allowedMethods: ['GET', 'POST', 'PUT']
+ allowedHeaders: ['Authorization']
+ headers:
+ Authorization: ${ILERT_AUTH_HEADER}
- '/airflow':
- target: https://your.airflow.instance.com/api/v1
- headers:
- Authorization: ${AIRFLOW_BASIC_AUTH_HEADER}
+ '/airflow':
+ target: https://your.airflow.instance.com/api/v1
+ headers:
+ Authorization: ${AIRFLOW_BASIC_AUTH_HEADER}
- '/gocd':
- target: https://your.gocd.instance.com/go/api
- allowedMethods: ['GET']
- allowedHeaders: ['Authorization']
- headers:
- Authorization: Basic ${GOCD_AUTH_CREDENTIALS}
+ '/gocd':
+ target: https://your.gocd.instance.com/go/api
+ allowedMethods: ['GET']
+ allowedHeaders: ['Authorization']
+ headers:
+ Authorization: Basic ${GOCD_AUTH_CREDENTIALS}
- '/dynatrace':
- target: https://your.dynatrace.instance.com/api/v2
- headers:
- Authorization: 'Api-Token ${DYNATRACE_ACCESS_TOKEN}'
+ '/dynatrace':
+ target: https://your.dynatrace.instance.com/api/v2
+ headers:
+ Authorization: 'Api-Token ${DYNATRACE_ACCESS_TOKEN}'
- '/stackstorm':
- target: https://your.stackstorm.instance.com/api
- headers:
- St2-Api-Key: ${ST2_API_KEY}
+ '/stackstorm':
+ target: https://your.stackstorm.instance.com/api
+ headers:
+ St2-Api-Key: ${ST2_API_KEY}
- '/puppetdb':
- target: https://your.puppetdb.instance.com
+ '/puppetdb':
+ target: https://your.puppetdb.instance.com
organization:
name: My Company
@@ -213,7 +216,7 @@ integrations:
# clientEmail: 'example@example.com'
# privateKey: ${GCS_PRIVATE_KEY}
awsS3:
- - host: amazonaws.com
+ - endpoint: ${AWS_S3_ENDPOINT}
accessKeyId: ${AWS_ACCESS_KEY_ID}
secretAccessKey: ${AWS_SECRET_ACCESS_KEY}
@@ -354,8 +357,6 @@ auth:
metadataUrl: ${AUTH_OIDC_METADATA_URL}
clientId: ${AUTH_OIDC_CLIENT_ID}
clientSecret: ${AUTH_OIDC_CLIENT_SECRET}
- authorizationUrl: ${AUTH_OIDC_AUTH_URL}
- tokenUrl: ${AUTH_OIDC_TOKEN_URL}
tokenEndpointAuthMethod: ${AUTH_OIDC_TOKEN_ENDPOINT_AUTH_METHOD} # default='client_secret_basic'
tokenSignedResponseAlg: ${AUTH_OIDC_TOKEN_SIGNED_RESPONSE_ALG} # default='RS256'
scope: ${AUTH_OIDC_SCOPE} # default='openid profile email'
@@ -436,8 +437,10 @@ costInsights:
kind: 'PINTS_OF_ICE_CREAM'
unit: 'ice cream pint'
rate: 5.5
-pagerduty:
+
+pagerDuty:
eventsBaseUrl: 'https://events.pagerduty.com/v2'
+
jenkins:
instances:
- name: default
diff --git a/contrib/docs/tutorials/aws-alb-aad-oidc-auth.md b/contrib/docs/tutorials/aws-alb-aad-oidc-auth.md
index 1bdf9cc367..f28a62c018 100644
--- a/contrib/docs/tutorials/aws-alb-aad-oidc-auth.md
+++ b/contrib/docs/tutorials/aws-alb-aad-oidc-auth.md
@@ -58,6 +58,7 @@ When using ALB authentication Backstage will only be loaded once the user has su
import React from 'react';
import { UserIdentity } from '@backstage/core-components';
import { SignInPageProps } from '@backstage/core-app-api';
+import { useApi, configApiRef } from '@backstage/core-plugin-api';
const SampleSignInComponent: any = (props: SignInPageProps) => {
const [error, setError] = React.useState();
@@ -90,8 +91,8 @@ const SampleSignInComponent: any = (props: SignInPageProps) => {
},
}),
);
- } catch (err) {
- setError(err.message);
+ } catch (err: any) {
+ setError(err.message as string);
}
}
}, [config]);
@@ -135,12 +136,14 @@ export default async function createPlugin({
database,
config,
discovery,
+ tokenManager,
}: PluginEnvironment): Promise {
return await createRouter({
logger,
config,
database,
discovery,
+ tokenManager,
providerFactories: {
awsalb: providers.awsAlb.create({
authHandler: async ({ fullProfile }) => {
@@ -168,25 +171,29 @@ export default async function createPlugin({
};
},
signIn: {
- resolver: async ({ profile: { email } }, ctx) => {
- const [id] = email?.split('@') ?? '';
- // Fetch from an external system that returns entity claims like:
- // ['user:default/breanna.davison', ...]
- const userEntityRef = stringifyEntityRef({
+ resolver: async ({ profile }, ctx) => {
+ if (!profile.email) {
+ throw new Error('Profile contained no email');
+ }
+
+ const [id] = profile.email.split('@');
+ if (!id) {
+ throw new Error('Invalid email format');
+ }
+
+ const userRef = stringifyEntityRef({
kind: 'User',
- namespace: DEFAULT_NAMESPACE,
name: id,
+ namespace: DEFAULT_NAMESPACE,
});
- // Resolve group membership from the Backstage catalog
- const fullEnt =
- await ctx.catalogIdentityClient.resolveCatalogMembership({
- entityRefs: [id].concat([userEntityRef]),
- logger: ctx.logger,
- });
- const token = await ctx.tokenIssuer.issueToken({
- claims: { sub: userEntityRef, ent: fullEnt },
+ const { token } = await ctx.issueToken({
+ claims: {
+ sub: userRef,
+ ent: [userRef],
+ },
});
+
return { id, token };
},
},
diff --git a/docs/auth/auth0/provider.md b/docs/auth/auth0/provider.md
index e9393cfa0b..dcd02d226f 100644
--- a/docs/auth/auth0/provider.md
+++ b/docs/auth/auth0/provider.md
@@ -41,14 +41,18 @@ auth:
secret: ${AUTH_SESSION_SECRET}
```
-The Auth0 provider is a structure with three configuration keys:
+The Auth0 provider is a structure with these configuration keys:
- `clientId`: The Application client ID, found on the Auth0 Application page
- `clientSecret`: The Application client secret, found on the Auth0 Application
page
- `domain`: The Application domain, found on the Auth0 Application page
-Because Auth0 requires a session you need to give the session a secret key.
+It additionally relies on the following configuration to function:
+
+- `session.secret`: The session secret is a key used for signing and/or encrypting cookies set by the application to maintain session state. In this case, 'your session secret' should be replaced with a long, complex, and unique string that only your application knows.
+
+Auth0 requires a session, so you need to give the session a secret key.
## Optional Configuration
diff --git a/docs/auth/oauth2-proxy/provider.md b/docs/auth/oauth2-proxy/provider.md
index 9c8f681138..5cff655c02 100644
--- a/docs/auth/oauth2-proxy/provider.md
+++ b/docs/auth/oauth2-proxy/provider.md
@@ -20,8 +20,10 @@ The provider configuration can be added to your `app-config.yaml` under the root
```yaml title="app-config.yaml"
auth:
+ environment: development
providers:
- oauth2Proxy: {}
+ oauth2Proxy:
+ development: {}
```
Right now no configuration options are supported, but the empty object is needed
@@ -58,6 +60,8 @@ providerFactories: {
},
```
+[An example on how to sign a user in without a matching user](https://github.com/backstage/backstage/blob/master/packages/backend/src/plugins/auth.ts)
+
## Adding the provider to the Backstage frontend
It is recommended to use the `ProxiedSignInPage` for this provider, which is
diff --git a/docs/backend-system/architecture/01-index.md b/docs/backend-system/architecture/01-index.md
index aff730b0d1..256d43bc4c 100644
--- a/docs/backend-system/architecture/01-index.md
+++ b/docs/backend-system/architecture/01-index.md
@@ -59,7 +59,7 @@ Just like plugins, modules also have access to services and can depend on their
A detailed explanation of the package architecture can be found in the
[Backstage Architecture
-Overview](../../overview/architecture-overview.md#package-architecture). The
+Overview](../../overview/architecture-overview/#package-architecture). The
most important packages to consider for this system are the following:
- `plugin--backend` houses the implementation of the backend plugins
diff --git a/docs/backend-system/architecture/02-backends.md b/docs/backend-system/architecture/02-backends.md
index b6079d71b4..70ea8f7836 100644
--- a/docs/backend-system/architecture/02-backends.md
+++ b/docs/backend-system/architecture/02-backends.md
@@ -37,4 +37,4 @@ At a high level, when you call `createBackend`, it will create a new backend ins
Underneath the hood, `createBackend` calls `createSpecializedBackend` from `@backstage/backend-app-api` which is responsible for actually creating the backend instance, but with no services or no features. You can think of `createBackend` more of a 'batteries included' approach, and `createSpecializedBackend` a little more low level.
-As mentioned previously there's also the ability to create multiple of these backends in your project so that you can split apart your backend and deploy different backends that can scale independently of each other. For instance you might choose to deploy a backend with only the catalog plugin enabled, and one with just the scaffolder plugin enabled. We've provided some tools to be able to share services and defaults across your backend system, and you can find out more about that in the [shared environments docs](../building-backends/01-index.md#shared-environments).
+As mentioned previously there's also the ability to create multiple of these backends in your project so that you can split apart your backend and deploy different backends that can scale independently of each other. For instance you might choose to deploy a backend with only the catalog plugin enabled, and one with just the scaffolder plugin enabled.
diff --git a/docs/backend-system/building-backends/01-index.md b/docs/backend-system/building-backends/01-index.md
index 66bf68ab07..d4b463af41 100644
--- a/docs/backend-system/building-backends/01-index.md
+++ b/docs/backend-system/building-backends/01-index.md
@@ -61,11 +61,11 @@ All of these services can be replaced with your own implementations if you need
For example, let's say we want to customize the core configuration service to enable remote configuration loading. That would look something like this:
```ts
-import { configServiceFactory } from '@backstage/backend-app-api';
+import { rootConfigServiceFactory } from '@backstage/backend-app-api';
const backend = createBackend({
services: [
- configServiceFactory({
+ rootConfigServiceFactory({
remote: { reloadIntervalSeconds: 60 },
}),
],
@@ -148,35 +148,3 @@ backend.start();
```
We've now split the backend into two separate deployments, but we still need to make sure that they can communicate with each other. This is the hard and somewhat tedious part, as Backstage currently doesn't provide an out of the box solution that solves this. You'll need to manually configure the two backends with custom implementations of the `DiscoveryService` and have them return the correct URLs for each other. Likewise, you'll also need to provide a custom implementation of the `DiscoveryApi` in the frontend, unless you surface the two backends via a proxy that handles the routing instead.
-
-### Shared Environments
-
-To make it a bit easier to manage multiple backends, it's possible to create a shared environment that can be used across multiple backends. You would typically house it in a separate package that can be referenced by backends in your monorepo, or published to a package registry for broader use.
-
-A shared environment contains a set of service implementations that should be used across all backends. These services will override the default ones, but if a service is provided directly to the backend, it will override the one in the shared environment.
-
-A shared environment is defined using `createSharedEnvironment`. In this example we place it in a new and separate package called `backend-env`:
-
-```ts
-// packages/backend-env/src/index.ts
-import { createSharedEnvironment } from '@backstage/backend-plugin-api';
-import { customDiscoveryServiceFactory } from './customDiscoveryServiceFactory';
-
-export const env = createSharedEnvironment({
- services: [
- customDiscoveryServiceFactory(), // custom DiscoveryService implementation
- ],
-});
-```
-
-And passed on to backends using the `env` option:
-
-```ts
-// packages/backend-b/src/index.ts, imports omitted
-import { env } from '@internal/backend-env';
-
-const backend = createBackend({ env });
-
-backend.add(scaffolderPlugin());
-backend.start();
-```
diff --git a/docs/backend-system/building-plugins-and-modules/02-testing.md b/docs/backend-system/building-plugins-and-modules/02-testing.md
index 7f93fab45b..fdd8cdb1e3 100644
--- a/docs/backend-system/building-plugins-and-modules/02-testing.md
+++ b/docs/backend-system/building-plugins-and-modules/02-testing.md
@@ -37,7 +37,7 @@ describe('myPlugin', () => {
const { server } = await startTestBackend({
features: [myPlugin()],
- services: [mockServices.config.factory({ data: fakeConfig })],
+ services: [mockServices.rootConfig.factory({ data: fakeConfig })],
});
const response = await request(server).get('/api/example/get-value');
diff --git a/docs/backend-system/core-services/01-index.md b/docs/backend-system/core-services/01-index.md
index c688055c96..a51db3c993 100644
--- a/docs/backend-system/core-services/01-index.md
+++ b/docs/backend-system/core-services/01-index.md
@@ -183,11 +183,11 @@ There's additional configuration that you can optionally pass to setup the `conf
You can configure these additional options by adding an override for the core service when calling `createBackend` like follows:
```ts
-import { configServiceFactory } from '@backstage/backend-app-api';
+import { rootConfigServiceFactory } from '@backstage/backend-app-api';
const backend = createBackend({
services: [
- configServiceFactory({
+ rootConfigServiceFactory({
argv: [
'--config',
'/backstage/app-config.development.yaml',
diff --git a/docs/deployment/flightcontrol.md b/docs/deployment/flightcontrol.md
new file mode 100644
index 0000000000..482e9341ea
--- /dev/null
+++ b/docs/deployment/flightcontrol.md
@@ -0,0 +1,78 @@
+---
+id: flightcontrol
+title: Deploying with Flightcontrol
+sidebar_label: AWS Fargate via Flightcontrol
+description: Deploying Backstage to AWS Fargate via Flightcontrol
+---
+
+This guide explains how to deploy Backstage to [Flightcontrol](https://www.flightcontrol.dev?ref=backstage), a platform that fully automates deployments to Amazon Web Services (AWS). Flightcontrol supports git-driven and image registry deployments.
+
+Before you begin, make sure you have a [Flightcontrol account](https://app.flightcontrol.dev/signup?ref=backstage) and a [Github account](https://github.com/login) to follow this guide.
+
+# Deployment Via Dashboard
+
+1. Create a new project from the Flightcontrol Dashboard
+
+2. Select the GitHub repo for your Backstage project
+
+3. Select `GUI` as the config type:
+
+4. Then, choose `+ Add Web Server (Fargate)` under Services before entering the following server information:
+
+| Field Name | Value |
+| ----------------- | ----------------- |
+| Build Type | Custom Dockerfile |
+| Health Check Path | /catalog |
+| Port | 7007 |
+
+5. Click `Create Project` and complete any required steps (like linking your AWS account).
+
+# Deployment via Code
+
+1. Create a new project from the Flightcontrol Dashboard
+
+2. Select the GitHub repo for your Backstage project
+
+3. Select the `flightcontrol.json` Config Type.
+
+```json filename="flightcontrol.json"
+{
+ "$schema": "https://app.flightcontrol.dev/schema.json",
+ "environments": [
+ {
+ "id": "backstage",
+ "name": "Backstage",
+ "region": "us-west-2",
+ "source": {
+ "branch": "main"
+ },
+ "services": [
+ {
+ "id": "backstage",
+ "name": "Backstage",
+ "type": "fargate",
+ "buildType": "docker",
+ "dockerfilePath": "Dockerfile",
+ "dockerContext": ".",
+ "healthCheckPath": "/catalog",
+ "cpu": 0.5,
+ "memory": 1,
+ "domain": "backstage.yourapp.com",
+ "port": 7007,
+ "minInstances": 1,
+ "maxInstances": 1
+ }
+ ]
+ }
+ ]
+}
+```
+
+# Databases and Redis
+
+If you need a database or Redis for your Backstage plugins, you can easily add those to your Flightcontrol deployment. For more information, see [the flightcontrol docs](https://www.flightcontrol.dev/docs/guides/flightcontrol/using-code?ref=backstage#redis).
+
+## Troubleshooting
+
+- [Flightcontrol Documentation](https://www.flightcontrol.dev/docs?ref=backstage)
+- [Troubleshooting](https://www.flightcontrol.dev/docs/troubleshooting?ref=backstage)
diff --git a/docs/features/search/how-to-guides.md b/docs/features/search/how-to-guides.md
index 7de37cb624..382221d781 100644
--- a/docs/features/search/how-to-guides.md
+++ b/docs/features/search/how-to-guides.md
@@ -51,7 +51,7 @@ The TechDocs plugin has supported integrations to Search, meaning that it
provides a default collator factory ready to be used.
The purpose of this guide is to walk you through how to register the
-[DefaultTechDocsCollatorFactory](https://github.com/backstage/backstage/blob/de294ce5c410c9eb56da6870a1fab795268f60e3/plugins/techdocs-backend/src/search/DefaultTechDocsCollatorFactory.ts)
+[DefaultTechDocsCollatorFactory](https://github.com/backstage/backstage/blob/1adc2c7/plugins/search-backend-module-techdocs/src/collators/DefaultTechDocsCollatorFactory.ts)
in your App, so that you can get TechDocs documents indexed.
If you have been through the
@@ -61,10 +61,10 @@ so, you can go ahead and follow this guide - if not, start by going through the
getting started guide.
1. Import the `DefaultTechDocsCollatorFactory` from
- `@backstage/plugin-techdocs-backend`.
+ `@backstage/plugin-search-backend-module-techdocs`.
```typescript
- import { DefaultTechDocsCollatorFactory } from '@backstage/plugin-techdocs-backend';
+ import { DefaultTechDocsCollatorFactory } from '@backstage/plugin-search-backend-module-techdocs';
```
2. If there isn't an existing schedule you'd like to run the collator on, be
diff --git a/docs/features/software-catalog/creating-the-catalog-graph.md b/docs/features/software-catalog/creating-the-catalog-graph.md
index 8b0f21a52c..4dc5b461b2 100644
--- a/docs/features/software-catalog/creating-the-catalog-graph.md
+++ b/docs/features/software-catalog/creating-the-catalog-graph.md
@@ -64,7 +64,7 @@ The recommended approach would be to represent information in catalog-info files
**Naming strategies:**
-- Ldap: Internal ldap usernames as entity names. e.g., owner: user:myuser or user: my-team-name.
+- Ldap: Internal ldap usernames as entity names. e.g., owner: user:my-user or user: my-team-name.
**Ownership strategies:**
diff --git a/docs/features/software-templates/writing-custom-actions.md b/docs/features/software-templates/writing-custom-actions.md
index c2f14d0ca0..5ed79083ee 100644
--- a/docs/features/software-templates/writing-custom-actions.md
+++ b/docs/features/software-templates/writing-custom-actions.md
@@ -207,5 +207,8 @@ scaffolder backend:
| Azure Pipeline Actions | [scaffolder-backend-module-azure-pipelines](https://www.npmjs.com/package/@parfuemerie-douglas/scaffolder-backend-module-azure-pipelines) | [Parfümerie Douglas](https://github.com/Parfuemerie-Douglas) |
| Azure Repository Actions | [scaffolder-backend-module-azure-repositories](https://www.npmjs.com/package/@parfuemerie-douglas/scaffolder-backend-module-azure-repositories) | [Parfümerie Douglas](https://github.com/Parfuemerie-Douglas) |
| Snyk Import Project | [plugin-scaffolder-backend-module-snyk](https://www.npmjs.com/package/@ma11hewthomas/plugin-scaffolder-backend-module-snyk) | [Matthew Thomas](https://github.com/Ma11hewThomas) |
+| JSON Merge Actions | [plugin-scaffolder-json-merge-actions](https://www.npmjs.com/package/@mdude2314/backstage-plugin-scaffolder-json-merge-actions) | [Drew Hill](https://github.com/arhill05) |
+| NPM Actions | [plugin-scaffolder-npm-actions](https://www.npmjs.com/package/@mdude2314/backstage-plugin-scaffolder-npm-actions) | [Drew Hill](https://github.com/arhill05) |
+| Slack Actions | [plugin-scaffolder-backend-module-slack](https://www.npmjs.com/package/@mdude2314/backstage-plugin-scaffolder-backend-module-slack) | [Drew Hill](https://github.com/arhill05) |
Have fun! 🚀
diff --git a/docs/plugins/proxying.md b/docs/plugins/proxying.md
index 3e20e37cad..442721a355 100644
--- a/docs/plugins/proxying.md
+++ b/docs/plugins/proxying.md
@@ -36,7 +36,7 @@ Example:
```yaml
# in app-config.yaml
proxy:
- simple-example: http://simple.example.com:8080
+ /simple-example: http://simple.example.com:8080
'/larger-example/v1':
target: http://larger.example.com:8080/svc.v1
headers:
diff --git a/docs/releases/v1.17.0-next.1-changelog.md b/docs/releases/v1.17.0-next.1-changelog.md
new file mode 100644
index 0000000000..5af9f0398b
--- /dev/null
+++ b/docs/releases/v1.17.0-next.1-changelog.md
@@ -0,0 +1,2208 @@
+# Release v1.17.0-next.1
+
+## @backstage/backend-app-api@0.5.0-next.1
+
+### Minor Changes
+
+- b9c57a4f857e: **BREAKING**: Renamed `configServiceFactory` to `rootConfigServiceFactory`.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/config-loader@1.4.0-next.1
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/plugin-permission-node@0.7.11-next.1
+ - @backstage/cli-common@0.1.12
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+
+## @backstage/backend-defaults@0.2.0-next.1
+
+### Minor Changes
+
+- d008aefef808: **BREAKING**: Removing shared environments concept from the new experimental backend system.
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/backend-app-api@0.5.0-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+
+## @backstage/backend-plugin-api@0.6.0-next.1
+
+### Minor Changes
+
+- 629cbd194a87: **BREAKING**: Renamed `coreServices.config` to `coreServices.rootConfig`.
+- d008aefef808: **BREAKING**: Removing shared environments concept from the new experimental backend system.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/config@1.0.8
+ - @backstage/types@1.1.0
+ - @backstage/plugin-permission-common@0.7.7
+
+## @backstage/backend-test-utils@0.2.0-next.1
+
+### Minor Changes
+
+- b9c57a4f857e: **BREAKING**: Renamed `mockServices.config` to `mockServices.rootConfig`.
+
+### Patch Changes
+
+- ae9304818136: Add needed constants and constructs to support PostgreSQL version 14 as test database
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/backend-app-api@0.5.0-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/config@1.0.8
+ - @backstage/types@1.1.0
+
+## @backstage/config-loader@1.4.0-next.1
+
+### Minor Changes
+
+- 2f1859585998: Loading invalid TypeScript configuration schemas will now throw an error rather than silently being ignored.
+
+ In particular this includes defining any additional types other than `Config` in the schema file, or use of unsupported types such as `Record` or `Partial`.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/cli-common@0.1.12
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+
+## @backstage/plugin-catalog-backend@1.12.0-next.1
+
+### Minor Changes
+
+- f32252cdf631: Added OpenTelemetry spans for catalog processing
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- Updated dependencies
+ - @backstage/plugin-search-backend-module-catalog@0.1.4-next.1
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/backend-openapi-utils@0.0.3-next.1
+ - @backstage/plugin-catalog-node@1.4.1-next.1
+ - @backstage/plugin-events-node@0.2.9-next.1
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/plugin-permission-node@0.7.11-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+ - @backstage/plugin-catalog-common@1.0.15
+ - @backstage/plugin-permission-common@0.7.7
+ - @backstage/plugin-scaffolder-common@1.3.2
+ - @backstage/plugin-search-common@1.2.5
+
+## @backstage/plugin-catalog-backend-module-gcp@0.1.0-next.0
+
+### Minor Changes
+
+- 290eff6692aa: Added GCP catalog plugin with GKE provider
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-catalog-node@1.4.1-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/config@1.0.8
+ - @backstage/plugin-kubernetes-common@0.6.5
+
+## @backstage/backend-common@0.19.2-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 4b82382ed8c2: Fixed invalid configuration schema. The configuration schema may be more strict as a result.
+- Updated dependencies
+ - @backstage/config-loader@1.4.0-next.1
+ - @backstage/backend-app-api@0.5.0-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/integration-aws-node@0.1.5
+ - @backstage/backend-dev-utils@0.1.1
+ - @backstage/cli-common@0.1.12
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+
+## @backstage/backend-openapi-utils@0.0.3-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/errors@1.2.1
+
+## @backstage/backend-tasks@0.5.5-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+
+## @backstage/cli@0.22.10-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/config-loader@1.4.0-next.1
+ - @backstage/cli-node@0.1.3-next.0
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/cli-common@0.1.12
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/eslint-plugin@0.1.3
+ - @backstage/release-manifests@0.0.9
+ - @backstage/types@1.1.0
+
+## @backstage/cli-node@0.1.3-next.0
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/cli-common@0.1.12
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+
+## @backstage/create-app@0.5.4-next.1
+
+### Patch Changes
+
+- Bumped create-app version.
+- Updated dependencies
+ - @backstage/cli-common@0.1.12
+
+## @backstage/dev-utils@1.0.18-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/integration-react@1.1.16-next.1
+ - @backstage/app-defaults@1.4.2-next.0
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-app-api@1.9.1-next.0
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/test-utils@1.4.2-next.0
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
+## @backstage/integration-react@1.1.16-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/integration@1.5.1
+ - @backstage/config@1.0.8
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+
+## @backstage/repo-tools@0.3.3-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/cli-node@0.1.3-next.0
+ - @backstage/cli-common@0.1.12
+ - @backstage/errors@1.2.1
+
+## @techdocs/cli@1.4.5-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-techdocs-node@1.7.4-next.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/cli-common@0.1.12
+ - @backstage/config@1.0.8
+
+## @backstage/plugin-adr@0.6.4-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/integration-react@1.1.16-next.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-adr-common@0.2.11
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+ - @backstage/plugin-search-common@1.2.5
+ - @backstage/plugin-search-react@1.6.4-next.0
+
+## @backstage/plugin-adr-backend@0.3.6-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/plugin-adr-common@0.2.11
+ - @backstage/plugin-search-common@1.2.5
+
+## @backstage/plugin-airbrake@0.3.21-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/dev-utils@1.0.18-next.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/test-utils@1.4.2-next.0
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
+## @backstage/plugin-airbrake-backend@0.2.21-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/config@1.0.8
+
+## @backstage/plugin-allure@0.1.37-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
+## @backstage/plugin-analytics-module-ga@0.1.32-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/config@1.0.8
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+
+## @backstage/plugin-analytics-module-ga4@0.1.3-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/config@1.0.8
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+
+## @backstage/plugin-apache-airflow@0.2.14-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+
+## @backstage/plugin-api-docs@0.9.7-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog@1.12.1-next.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
+## @backstage/plugin-apollo-explorer@0.1.14-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+
+## @backstage/plugin-app-backend@0.3.48-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/config-loader@1.4.0-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/config@1.0.8
+ - @backstage/types@1.1.0
+
+## @backstage/plugin-auth-backend@0.18.6-next.1
+
+### Patch Changes
+
+- 9dad4b0e61bd: Updated config schema to match what was being used in code
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+
+## @backstage/plugin-auth-node@0.2.17-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+
+## @backstage/plugin-azure-devops-backend@0.3.27-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/config@1.0.8
+ - @backstage/plugin-azure-devops-common@0.3.0
+
+## @backstage/plugin-azure-sites-backend@0.1.10-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/config@1.0.8
+ - @backstage/plugin-azure-sites-common@0.1.0
+
+## @backstage/plugin-badges-backend@0.2.3-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+
+## @backstage/plugin-bazaar@0.2.12-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/cli@0.22.10-next.1
+ - @backstage/plugin-catalog@1.12.1-next.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
+## @backstage/plugin-bazaar-backend@0.2.11-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+
+## @backstage/plugin-bitbucket-cloud-common@0.2.9-next.0
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/integration@1.5.1
+
+## @backstage/plugin-bitrise@0.1.48-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
+## @backstage/plugin-catalog@1.12.1-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/integration-react@1.1.16-next.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/theme@0.4.1
+ - @backstage/types@1.1.0
+ - @backstage/plugin-catalog-common@1.0.15
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+ - @backstage/plugin-scaffolder-common@1.3.2
+ - @backstage/plugin-search-common@1.2.5
+ - @backstage/plugin-search-react@1.6.4-next.0
+
+## @backstage/plugin-catalog-backend-module-aws@0.2.3-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 4b82382ed8c2: Fixed invalid configuration schema. The configuration schema may be more strict as a result.
+- b4222908b0c3: Added option to configure AWS `accountId` in `AwsS3EntityProvider`
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-catalog-node@1.4.1-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/integration-aws-node@0.1.5
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+ - @backstage/plugin-catalog-common@1.0.15
+ - @backstage/plugin-kubernetes-common@0.6.5
+
+## @backstage/plugin-catalog-backend-module-azure@0.1.19-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 4b82382ed8c2: Fixed invalid configuration schema. The configuration schema may be more strict as a result.
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-catalog-node@1.4.1-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+ - @backstage/plugin-catalog-common@1.0.15
+
+## @backstage/plugin-catalog-backend-module-bitbucket@0.2.15-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-bitbucket-cloud-common@0.2.9-next.0
+ - @backstage/plugin-catalog-node@1.4.1-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+
+## @backstage/plugin-catalog-backend-module-bitbucket-cloud@0.1.15-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 4b82382ed8c2: Fixed invalid configuration schema. The configuration schema may be more strict as a result.
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-bitbucket-cloud-common@0.2.9-next.0
+ - @backstage/plugin-catalog-node@1.4.1-next.1
+ - @backstage/plugin-events-node@0.2.9-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/plugin-catalog-common@1.0.15
+
+## @backstage/plugin-catalog-backend-module-bitbucket-server@0.1.13-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 4b82382ed8c2: Fixed invalid configuration schema. The configuration schema may be more strict as a result.
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-catalog-node@1.4.1-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+
+## @backstage/plugin-catalog-backend-module-gerrit@0.1.16-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 4b82382ed8c2: Fixed invalid configuration schema. The configuration schema may be more strict as a result.
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-catalog-node@1.4.1-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+
+## @backstage/plugin-catalog-backend-module-github@0.3.3-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 4b82382ed8c2: Fixed invalid configuration schema. The configuration schema may be more strict as a result.
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-catalog-backend@1.12.0-next.1
+ - @backstage/plugin-catalog-node@1.4.1-next.1
+ - @backstage/plugin-events-node@0.2.9-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+ - @backstage/plugin-catalog-common@1.0.15
+
+## @backstage/plugin-catalog-backend-module-gitlab@0.2.4-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- e6c721439f37: Added option to skip forked repos in GitlabDiscoveryEntityProvider
+- 4b82382ed8c2: Fixed invalid configuration schema. The configuration schema may be more strict as a result.
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-catalog-node@1.4.1-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+
+## @backstage/plugin-catalog-backend-module-incremental-ingestion@0.4.1-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-catalog-backend@1.12.0-next.1
+ - @backstage/plugin-catalog-node@1.4.1-next.1
+ - @backstage/plugin-events-node@0.2.9-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/plugin-permission-common@0.7.7
+
+## @backstage/plugin-catalog-backend-module-ldap@0.5.15-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-node@1.4.1-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+ - @backstage/plugin-catalog-common@1.0.15
+
+## @backstage/plugin-catalog-backend-module-msgraph@0.5.7-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 4b82382ed8c2: Fixed invalid configuration schema. The configuration schema may be more strict as a result.
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-catalog-node@1.4.1-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/plugin-catalog-common@1.0.15
+
+## @backstage/plugin-catalog-backend-module-openapi@0.1.14-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-catalog-backend@1.12.0-next.1
+ - @backstage/plugin-catalog-node@1.4.1-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/types@1.1.0
+ - @backstage/plugin-catalog-common@1.0.15
+
+## @backstage/plugin-catalog-backend-module-puppetdb@0.1.5-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 4b82382ed8c2: Fixed invalid configuration schema. The configuration schema may be more strict as a result.
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-catalog-node@1.4.1-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+
+## @backstage/plugin-catalog-backend-module-unprocessed@0.2.0-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/catalog-model@1.4.1
+
+## @backstage/plugin-catalog-graph@0.2.33-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+ - @backstage/types@1.1.0
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
+## @backstage/plugin-catalog-import@0.9.11-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/integration-react@1.1.16-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/plugin-catalog-common@1.0.15
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
+## @backstage/plugin-catalog-node@1.4.1-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+ - @backstage/plugin-catalog-common@1.0.15
+
+## @backstage/plugin-cicd-statistics-module-gitlab@0.1.17-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/plugin-cicd-statistics@0.1.23-next.0
+
+## @backstage/plugin-code-climate@0.1.21-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
+## @backstage/plugin-code-coverage@0.2.14-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
+## @backstage/plugin-code-coverage-backend@0.2.14-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+
+## @backstage/plugin-codescene@0.1.16-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/config@1.0.8
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/theme@0.4.1
+
+## @backstage/plugin-config-schema@0.1.44-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/config@1.0.8
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/theme@0.4.1
+ - @backstage/types@1.1.0
+
+## @backstage/plugin-devtools@0.1.3-next.1
+
+### Patch Changes
+
+- 48b6a04ad045: Fix readme typo
+- Updated dependencies
+ - @backstage/plugin-devtools-common@0.1.3-next.0
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/theme@0.4.1
+ - @backstage/types@1.1.0
+ - @backstage/plugin-permission-react@0.4.14
+
+## @backstage/plugin-devtools-backend@0.1.3-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+
+- 2b4f77a4e900: Add DevTools configuration to enable dependency listing to be filtered with custom prefixes. For instance, in your `app-config.yaml`:
+
+ ```yaml
+ devTools:
+ info:
+ packagePrefixes:
+ - @backstage/
+ - @roadiehq/backstage-
+ - @spotify/backstage-
+ ```
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/config-loader@1.4.0-next.1
+ - @backstage/plugin-devtools-common@0.1.3-next.0
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/plugin-permission-node@0.7.11-next.1
+ - @backstage/cli-common@0.1.12
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+ - @backstage/plugin-permission-common@0.7.7
+
+## @backstage/plugin-devtools-common@0.1.3-next.0
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/types@1.1.0
+ - @backstage/plugin-permission-common@0.7.7
+
+## @backstage/plugin-dynatrace@7.0.1-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
+## @backstage/plugin-entity-feedback@0.2.4-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/plugin-entity-feedback-common@0.1.2-next.0
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
+## @backstage/plugin-entity-feedback-backend@0.1.6-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-entity-feedback-common@0.1.2-next.0
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+
+## @backstage/plugin-entity-feedback-common@0.1.2-next.0
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+
+## @backstage/plugin-entity-validation@0.1.6-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-common@1.0.15
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
+## @backstage/plugin-events-backend@0.2.9-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-events-node@0.2.9-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/config@1.0.8
+
+## @backstage/plugin-events-backend-module-aws-sqs@0.2.3-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 12a8c94eda8d: Add package repository and homepage metadata
+- 4b82382ed8c2: Fixed invalid configuration schema. The configuration schema may be more strict as a result.
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-events-node@0.2.9-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/config@1.0.8
+ - @backstage/types@1.1.0
+
+## @backstage/plugin-events-backend-module-azure@0.1.10-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/plugin-events-node@0.2.9-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+
+## @backstage/plugin-events-backend-module-bitbucket-cloud@0.1.10-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/plugin-events-node@0.2.9-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+
+## @backstage/plugin-events-backend-module-gerrit@0.1.10-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/plugin-events-node@0.2.9-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+
+## @backstage/plugin-events-backend-module-github@0.1.10-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/plugin-events-node@0.2.9-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/config@1.0.8
+
+## @backstage/plugin-events-backend-module-gitlab@0.1.10-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/plugin-events-node@0.2.9-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/config@1.0.8
+
+## @backstage/plugin-events-backend-test-utils@0.1.10-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/plugin-events-node@0.2.9-next.1
+
+## @backstage/plugin-events-node@0.2.9-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.1
+
+## @backstage/plugin-explore-backend@0.0.10-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/plugin-search-backend-module-explore@0.1.4-next.1
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/config@1.0.8
+ - @backstage/types@1.1.0
+ - @backstage/plugin-explore-common@0.0.1
+ - @backstage/plugin-search-common@1.2.5
+
+## @backstage/plugin-firehydrant@0.2.5-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
+## @backstage/plugin-gcalendar@0.3.17-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/theme@0.4.1
+
+## @backstage/plugin-git-release-manager@0.3.34-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/integration@1.5.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+
+## @backstage/plugin-github-actions@0.6.2-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/integration-react@1.1.16-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
+## @backstage/plugin-github-deployments@0.1.52-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/integration-react@1.1.16-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
+## @backstage/plugin-github-issues@0.2.10-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
+## @backstage/plugin-graphql-backend@0.1.38-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/config@1.0.8
+ - @backstage/plugin-catalog-graphql@0.3.22
+
+## @backstage/plugin-graphql-voyager@0.1.6-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+
+## @backstage/plugin-ilert@0.2.10-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
+## @backstage/plugin-jenkins@0.8.3-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-jenkins-common@0.1.18-next.0
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
+## @backstage/plugin-jenkins-backend@0.2.3-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- 4b82382ed8c2: Fixed invalid configuration schema. The configuration schema may be more strict as a result.
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-jenkins-common@0.1.18-next.0
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/plugin-permission-node@0.7.11-next.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/plugin-permission-common@0.7.7
+
+## @backstage/plugin-jenkins-common@0.1.18-next.0
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/plugin-catalog-common@1.0.15
+ - @backstage/plugin-permission-common@0.7.7
+
+## @backstage/plugin-kafka@0.3.21-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
+## @backstage/plugin-kafka-backend@0.2.41-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+
+## @backstage/plugin-kubernetes-backend@0.11.3-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- bbf4e9c894b5: Fixed a bug where the proxy was not rewriting WebSocket request paths properly.
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-catalog-node@1.4.1-next.1
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/plugin-permission-node@0.7.11-next.1
+ - @backstage/integration-aws-node@0.1.5
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/plugin-kubernetes-common@0.6.5
+ - @backstage/plugin-permission-common@0.7.7
+
+## @backstage/plugin-lighthouse-backend@0.2.4-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-catalog-node@1.4.1-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/types@1.1.0
+ - @backstage/plugin-lighthouse-common@0.1.2
+
+## @backstage/plugin-linguist@0.1.6-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-linguist-common@0.1.1-next.0
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
+## @backstage/plugin-linguist-backend@0.3.2-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-linguist-common@0.1.1-next.0
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+
+## @backstage/plugin-linguist-common@0.1.1-next.0
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+
+## @backstage/plugin-microsoft-calendar@0.1.6-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- eea2922e749a: README update - example of apiRef definition and fixed component name
+- Updated dependencies
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/theme@0.4.1
+
+## @backstage/plugin-newrelic-dashboard@0.2.14-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
+## @backstage/plugin-nomad@0.1.2-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
+## @backstage/plugin-nomad-backend@0.1.2-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+
+## @backstage/plugin-octopus-deploy@0.2.3-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
+## @backstage/plugin-org@0.6.11-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
+## @backstage/plugin-org-react@0.1.10-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
+## @backstage/plugin-periskop@0.1.19-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
+## @backstage/plugin-periskop-backend@0.1.19-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/config@1.0.8
+
+## @backstage/plugin-permission-backend@0.5.23-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/plugin-permission-node@0.7.11-next.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/plugin-permission-common@0.7.7
+
+## @backstage/plugin-permission-node@0.7.11-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/plugin-permission-common@0.7.7
+
+## @backstage/plugin-playlist@0.1.13-next.1
+
+### Patch Changes
+
+- d1e0588324d1: Displaying an alert popup each time the Playlist is created or deleted
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/plugin-playlist-common@0.1.9-next.0
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-common@1.0.15
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+ - @backstage/plugin-permission-common@0.7.7
+ - @backstage/plugin-permission-react@0.4.14
+ - @backstage/plugin-search-react@1.6.4-next.0
+
+## @backstage/plugin-playlist-backend@0.3.4-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-playlist-common@0.1.9-next.0
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/plugin-permission-node@0.7.11-next.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/plugin-permission-common@0.7.7
+
+## @backstage/plugin-playlist-common@0.1.9-next.0
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/plugin-permission-common@0.7.7
+
+## @backstage/plugin-proxy-backend@0.2.42-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 4b82382ed8c2: Fixed invalid configuration schema. The configuration schema may be more strict as a result.
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/config@1.0.8
+
+## @backstage/plugin-rollbar-backend@0.1.45-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/config@1.0.8
+
+## @backstage/plugin-scaffolder@1.14.2-next.1
+
+### Patch Changes
+
+- 8a0490fb669e: Fix the get entities query in the `MyGroupsPicker` to query the `kind=Group` entities.
+- Updated dependencies
+ - @backstage/integration-react@1.1.16-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/theme@0.4.1
+ - @backstage/types@1.1.0
+ - @backstage/plugin-catalog-common@1.0.15
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+ - @backstage/plugin-permission-react@0.4.14
+ - @backstage/plugin-scaffolder-common@1.3.2
+ - @backstage/plugin-scaffolder-react@1.5.2-next.0
+
+## @backstage/plugin-scaffolder-backend@1.15.2-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- d3b31a791eb1: Deprecated `executeShellCommand`, `RunCommandOptions`, and `fetchContents` from `@backstage/plugin-scaffolder-backend`, since they are useful for Scaffolder modules (who should not be importing from the plugin package itself). You should now import these from `@backstage/plugin-scaffolder-backend-node` instead. `RunCommandOptions` was renamed in the Node package as `ExecuteShellCommandOptions`, for consistency.
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-catalog-backend@1.12.0-next.1
+ - @backstage/plugin-scaffolder-node@0.1.6-next.1
+ - @backstage/plugin-catalog-node@1.4.1-next.1
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/plugin-permission-node@0.7.11-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+ - @backstage/plugin-catalog-common@1.0.15
+ - @backstage/plugin-permission-common@0.7.7
+ - @backstage/plugin-scaffolder-common@1.3.2
+
+## @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.1-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- 0d347efc8f18: Use `fetchContents` directly instead of a `fetchPlainAction`
+- c186c631b429: Import helpers from the node package instead of the backend package
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-scaffolder-node@0.1.6-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+
+## @backstage/plugin-scaffolder-backend-module-cookiecutter@0.2.24-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- c186c631b429: Import helpers from the node package instead of the backend package
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-scaffolder-node@0.1.6-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+
+## @backstage/plugin-scaffolder-backend-module-gitlab@0.2.3-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-node@0.1.6-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+
+## @backstage/plugin-scaffolder-backend-module-rails@0.4.17-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- c186c631b429: Import helpers from the node package instead of the backend package
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-scaffolder-node@0.1.6-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+
+## @backstage/plugin-scaffolder-backend-module-sentry@0.1.8-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/plugin-scaffolder-node@0.1.6-next.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+
+## @backstage/plugin-scaffolder-backend-module-yeoman@0.2.21-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/plugin-scaffolder-node@0.1.6-next.1
+ - @backstage/config@1.0.8
+ - @backstage/types@1.1.0
+
+## @backstage/plugin-scaffolder-node@0.1.6-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- d3b31a791eb1: Deprecated `executeShellCommand`, `RunCommandOptions`, and `fetchContents` from `@backstage/plugin-scaffolder-backend`, since they are useful for Scaffolder modules (who should not be importing from the plugin package itself). You should now import these from `@backstage/plugin-scaffolder-backend-node` instead. `RunCommandOptions` was renamed in the Node package as `ExecuteShellCommandOptions`, for consistency.
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+ - @backstage/plugin-scaffolder-common@1.3.2
+
+## @backstage/plugin-search-backend@1.4.0-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 12a8c94eda8d: Add package repository and homepage metadata
+- 951ab6c9db58: Add missing `configSchema` to package.json
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/backend-openapi-utils@0.0.3-next.1
+ - @backstage/plugin-search-backend-node@1.2.4-next.1
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/plugin-permission-node@0.7.11-next.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+ - @backstage/plugin-permission-common@0.7.7
+ - @backstage/plugin-search-common@1.2.5
+
+## @backstage/plugin-search-backend-module-catalog@0.1.4-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-search-backend-node@1.2.4-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/plugin-catalog-common@1.0.15
+ - @backstage/plugin-permission-common@0.7.7
+ - @backstage/plugin-search-common@1.2.5
+
+## @backstage/plugin-search-backend-module-elasticsearch@1.3.3-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-search-backend-node@1.2.4-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/integration-aws-node@0.1.5
+ - @backstage/config@1.0.8
+ - @backstage/plugin-search-common@1.2.5
+
+## @backstage/plugin-search-backend-module-explore@0.1.4-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-search-backend-node@1.2.4-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/config@1.0.8
+ - @backstage/plugin-explore-common@0.0.1
+ - @backstage/plugin-search-common@1.2.5
+
+## @backstage/plugin-search-backend-module-pg@0.5.9-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-search-backend-node@1.2.4-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/config@1.0.8
+ - @backstage/plugin-search-common@1.2.5
+
+## @backstage/plugin-search-backend-module-techdocs@0.1.4-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-search-backend-node@1.2.4-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/plugin-techdocs-node@1.7.4-next.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/plugin-catalog-common@1.0.15
+ - @backstage/plugin-permission-common@0.7.7
+ - @backstage/plugin-search-common@1.2.5
+
+## @backstage/plugin-search-backend-node@1.2.4-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/plugin-permission-common@0.7.7
+ - @backstage/plugin-search-common@1.2.5
+
+## @backstage/plugin-shortcuts@0.3.13-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+ - @backstage/types@1.1.0
+
+## @backstage/plugin-sonarqube@0.7.2-next.1
+
+### Patch Changes
+
+- b2ccddefbdc6: Remove sonarQube card disable class
+- Updated dependencies
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+ - @backstage/plugin-sonarqube-react@0.1.7
+
+## @backstage/plugin-sonarqube-backend@0.2.2-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+
+## @backstage/plugin-stack-overflow@0.1.19-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/config@1.0.8
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-home-react@0.1.2-next.0
+ - @backstage/plugin-search-common@1.2.5
+ - @backstage/plugin-search-react@1.6.4-next.0
+
+## @backstage/plugin-stack-overflow-backend@0.2.4-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/config@1.0.8
+ - @backstage/plugin-search-common@1.2.5
+
+## @backstage/plugin-tech-insights@0.3.13-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/theme@0.4.1
+ - @backstage/types@1.1.0
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+ - @backstage/plugin-tech-insights-common@0.2.11
+
+## @backstage/plugin-tech-insights-backend@0.5.14-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/plugin-tech-insights-node@0.4.6-next.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+ - @backstage/plugin-tech-insights-common@0.2.11
+
+## @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.32-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-tech-insights-node@0.4.6-next.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/plugin-tech-insights-common@0.2.11
+
+## @backstage/plugin-tech-insights-node@0.4.6-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/config@1.0.8
+ - @backstage/types@1.1.0
+ - @backstage/plugin-tech-insights-common@0.2.11
+
+## @backstage/plugin-techdocs@1.6.6-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/integration-react@1.1.16-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+ - @backstage/plugin-search-common@1.2.5
+ - @backstage/plugin-search-react@1.6.4-next.0
+ - @backstage/plugin-techdocs-react@1.1.9-next.0
+
+## @backstage/plugin-techdocs-addons-test-utils@1.0.17-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/integration-react@1.1.16-next.1
+ - @backstage/plugin-catalog@1.12.1-next.1
+ - @backstage/plugin-techdocs@1.6.6-next.1
+ - @backstage/core-app-api@1.9.1-next.0
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/test-utils@1.4.2-next.0
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-search-react@1.6.4-next.0
+ - @backstage/plugin-techdocs-react@1.1.9-next.0
+
+## @backstage/plugin-techdocs-backend@1.6.5-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- Updated dependencies
+ - @backstage/plugin-search-backend-module-techdocs@0.1.4-next.1
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/plugin-techdocs-node@1.7.4-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/plugin-catalog-common@1.0.15
+ - @backstage/plugin-permission-common@0.7.7
+ - @backstage/plugin-search-common@1.2.5
+
+## @backstage/plugin-techdocs-module-addons-contrib@1.0.16-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/integration-react@1.1.16-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-techdocs-react@1.1.9-next.0
+
+## @backstage/plugin-techdocs-node@1.7.4-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/integration-aws-node@0.1.5
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/plugin-search-common@1.2.5
+
+## @backstage/plugin-todo-backend@0.2.0-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/backend-openapi-utils@0.0.3-next.1
+ - @backstage/plugin-catalog-node@1.4.1-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+
+## @backstage/plugin-user-settings-backend@0.1.12-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+
+## @backstage/plugin-vault-backend@0.3.4-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+
+## @backstage/plugin-xcmetrics@0.2.41-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/theme@0.4.1
+
+## example-app@0.2.86-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-playlist@0.1.13-next.1
+ - @backstage/plugin-scaffolder@1.14.2-next.1
+ - @backstage/integration-react@1.1.16-next.1
+ - @backstage/plugin-microsoft-calendar@0.1.6-next.1
+ - @backstage/plugin-newrelic-dashboard@0.2.14-next.1
+ - @backstage/plugin-entity-feedback@0.2.4-next.1
+ - @backstage/plugin-linguist-common@0.1.1-next.0
+ - @backstage/plugin-apache-airflow@0.2.14-next.1
+ - @backstage/plugin-octopus-deploy@0.2.3-next.1
+ - @backstage/plugin-stack-overflow@0.1.19-next.1
+ - @backstage/plugin-catalog-graph@0.2.33-next.1
+ - @backstage/plugin-code-coverage@0.2.14-next.1
+ - @backstage/plugin-tech-insights@0.3.13-next.1
+ - @backstage/plugin-dynatrace@7.0.1-next.1
+ - @backstage/plugin-gcalendar@0.3.17-next.1
+ - @backstage/plugin-shortcuts@0.3.13-next.1
+ - @backstage/plugin-airbrake@0.3.21-next.1
+ - @backstage/plugin-kafka@0.3.21-next.1
+ - @backstage/plugin-nomad@0.1.2-next.1
+ - @backstage/plugin-adr@0.6.4-next.1
+ - @backstage/plugin-org@0.6.11-next.1
+ - @backstage/plugin-devtools@0.1.3-next.1
+ - @backstage/cli@0.22.10-next.1
+ - @backstage/plugin-catalog-import@0.9.11-next.1
+ - @backstage/plugin-github-actions@0.6.2-next.1
+ - @backstage/plugin-techdocs@1.6.6-next.1
+ - @backstage/plugin-techdocs-module-addons-contrib@1.0.16-next.1
+ - @backstage/plugin-linguist@0.1.6-next.1
+ - @backstage/plugin-jenkins@0.8.3-next.1
+ - @backstage/app-defaults@1.4.2-next.0
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/core-app-api@1.9.1-next.0
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-api-docs@0.9.7-next.1
+ - @backstage/plugin-azure-devops@0.3.3-next.0
+ - @backstage/plugin-azure-sites@0.1.10-next.0
+ - @backstage/plugin-badges@0.2.45-next.0
+ - @backstage/plugin-catalog-common@1.0.15
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+ - @backstage/plugin-catalog-unprocessed-entities@0.1.2-next.0
+ - @backstage/plugin-circleci@0.3.21-next.0
+ - @backstage/plugin-cloudbuild@0.3.21-next.0
+ - @backstage/plugin-cost-insights@0.12.10-next.0
+ - @backstage/plugin-explore@0.4.7-next.0
+ - @backstage/plugin-gcp-projects@0.3.40-next.0
+ - @backstage/plugin-gocd@0.1.27-next.0
+ - @backstage/plugin-graphiql@0.2.53-next.0
+ - @backstage/plugin-home@0.5.5-next.0
+ - @backstage/plugin-kubernetes@0.9.4-next.0
+ - @backstage/plugin-lighthouse@0.4.6-next.0
+ - @backstage/plugin-newrelic@0.3.39-next.0
+ - @backstage/plugin-pagerduty@0.6.2-next.0
+ - @backstage/plugin-permission-react@0.4.14
+ - @backstage/plugin-puppetdb@0.1.4-next.0
+ - @backstage/plugin-rollbar@0.4.21-next.0
+ - @backstage/plugin-scaffolder-react@1.5.2-next.0
+ - @backstage/plugin-search@1.3.4-next.0
+ - @backstage/plugin-search-common@1.2.5
+ - @backstage/plugin-search-react@1.6.4-next.0
+ - @backstage/plugin-sentry@0.5.6-next.0
+ - @backstage/plugin-stackstorm@0.1.5-next.0
+ - @backstage/plugin-tech-radar@0.6.7-next.0
+ - @backstage/plugin-techdocs-react@1.1.9-next.0
+ - @backstage/plugin-todo@0.2.23-next.0
+ - @backstage/plugin-user-settings@0.7.6-next.0
+ - @internal/plugin-catalog-customized@0.0.13-next.1
+
+## example-backend@0.2.86-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-search-backend-module-elasticsearch@1.3.3-next.1
+ - @backstage/plugin-search-backend-module-pg@0.5.9-next.1
+ - @backstage/plugin-azure-devops-backend@0.3.27-next.1
+ - @backstage/plugin-kubernetes-backend@0.11.3-next.1
+ - @backstage/plugin-lighthouse-backend@0.2.4-next.1
+ - @backstage/plugin-permission-backend@0.5.23-next.1
+ - @backstage/plugin-scaffolder-backend@1.15.2-next.1
+ - @backstage/plugin-devtools-backend@0.1.3-next.1
+ - @backstage/plugin-techdocs-backend@1.6.5-next.1
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-catalog-backend@1.12.0-next.1
+ - @backstage/plugin-badges-backend@0.2.3-next.1
+ - @backstage/plugin-events-backend@0.2.9-next.1
+ - @backstage/plugin-search-backend@1.4.0-next.1
+ - @backstage/plugin-kafka-backend@0.2.41-next.1
+ - @backstage/plugin-proxy-backend@0.2.42-next.1
+ - @backstage/plugin-todo-backend@0.2.0-next.1
+ - @backstage/plugin-app-backend@0.3.48-next.1
+ - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.1-next.1
+ - @backstage/plugin-catalog-backend-module-unprocessed@0.2.0-next.1
+ - @backstage/plugin-scaffolder-backend-module-rails@0.4.17-next.1
+ - @backstage/plugin-entity-feedback-backend@0.1.6-next.1
+ - @backstage/plugin-code-coverage-backend@0.2.14-next.1
+ - @backstage/plugin-search-backend-node@1.2.4-next.1
+ - @backstage/plugin-linguist-backend@0.3.2-next.1
+ - @backstage/plugin-playlist-backend@0.3.4-next.1
+ - @backstage/plugin-explore-backend@0.0.10-next.1
+ - @backstage/plugin-jenkins-backend@0.2.3-next.1
+ - @backstage/plugin-nomad-backend@0.1.2-next.1
+ - @backstage/plugin-catalog-node@1.4.1-next.1
+ - @backstage/plugin-events-node@0.2.9-next.1
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/plugin-auth-backend@0.18.6-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/plugin-adr-backend@0.3.6-next.1
+ - @backstage/plugin-azure-sites-backend@0.1.10-next.1
+ - @backstage/plugin-graphql-backend@0.1.38-next.1
+ - @backstage/plugin-permission-node@0.7.11-next.1
+ - @backstage/plugin-rollbar-backend@0.1.45-next.1
+ - @backstage/plugin-tech-insights-backend@0.5.14-next.1
+ - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.32-next.1
+ - @backstage/plugin-tech-insights-node@0.4.6-next.1
+ - example-app@0.2.86-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/plugin-permission-common@0.7.7
+ - @backstage/plugin-search-common@1.2.5
+
+## example-backend-next@0.0.14-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-search-backend-module-techdocs@0.1.4-next.1
+ - @backstage/plugin-search-backend-module-catalog@0.1.4-next.1
+ - @backstage/plugin-search-backend-module-explore@0.1.4-next.1
+ - @backstage/plugin-azure-devops-backend@0.3.27-next.1
+ - @backstage/plugin-kubernetes-backend@0.11.3-next.1
+ - @backstage/plugin-lighthouse-backend@0.2.4-next.1
+ - @backstage/plugin-permission-backend@0.5.23-next.1
+ - @backstage/plugin-scaffolder-backend@1.15.2-next.1
+ - @backstage/backend-defaults@0.2.0-next.1
+ - @backstage/plugin-devtools-backend@0.1.3-next.1
+ - @backstage/plugin-techdocs-backend@1.6.5-next.1
+ - @backstage/plugin-catalog-backend@1.12.0-next.1
+ - @backstage/plugin-badges-backend@0.2.3-next.1
+ - @backstage/plugin-search-backend@1.4.0-next.1
+ - @backstage/plugin-todo-backend@0.2.0-next.1
+ - @backstage/plugin-app-backend@0.3.48-next.1
+ - @backstage/plugin-catalog-backend-module-unprocessed@0.2.0-next.1
+ - @backstage/plugin-entity-feedback-backend@0.1.6-next.1
+ - @backstage/plugin-search-backend-node@1.2.4-next.1
+ - @backstage/plugin-linguist-backend@0.3.2-next.1
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/plugin-adr-backend@0.3.6-next.1
+ - @backstage/plugin-permission-node@0.7.11-next.1
+ - @backstage/plugin-permission-common@0.7.7
+
+## e2e-test@0.2.6-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/create-app@0.5.4-next.1
+ - @backstage/cli-common@0.1.12
+ - @backstage/errors@1.2.1
+
+## techdocs-cli-embedded-app@0.2.85-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/integration-react@1.1.16-next.1
+ - @backstage/cli@0.22.10-next.1
+ - @backstage/plugin-catalog@1.12.1-next.1
+ - @backstage/plugin-techdocs@1.6.6-next.1
+ - @backstage/app-defaults@1.4.2-next.0
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/core-app-api@1.9.1-next.0
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/test-utils@1.4.2-next.0
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-techdocs-react@1.1.9-next.0
+
+## @internal/plugin-catalog-customized@0.0.13-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog@1.12.1-next.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
+## @internal/plugin-todo-list-backend@1.0.16-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
diff --git a/docs/releases/v1.17.0-next.2-changelog.md b/docs/releases/v1.17.0-next.2-changelog.md
new file mode 100644
index 0000000000..d1da6fa2be
--- /dev/null
+++ b/docs/releases/v1.17.0-next.2-changelog.md
@@ -0,0 +1,1430 @@
+# Release v1.17.0-next.2
+
+## @backstage/plugin-app-node@0.1.0-next.0
+
+### Minor Changes
+
+- 9fbe95ef6503: Added the `app` plugin node library, initially providing an extension point that can be used to configure a static fallback handler.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+
+## @backstage/plugin-catalog-backend@1.12.0-next.2
+
+### Minor Changes
+
+- b8cccd8ee858: Support configuring applicable kinds for `AnnotateScmSlugEntityProcessor`
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-search-backend-module-catalog@0.1.4-next.2
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+ - @backstage/plugin-events-node@0.2.9-next.2
+ - @backstage/plugin-permission-node@0.7.11-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+
+## @backstage/plugin-linguist-backend@0.4.0-next.2
+
+### Minor Changes
+
+- d440f1dd0e72: Adds a processor to the linguist backend which can automatically add language tags to entities
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-linguist-common@0.1.1-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+
+## @backstage/plugin-proxy-backend@0.3.0-next.2
+
+### Minor Changes
+
+- 7daf65bfcfa1: Defining proxy endpoints directly under the root `proxy` configuration key is deprecated. Endpoints should now be declared under `proxy.endpoints` instead. The `skipInvalidProxies` and `reviveConsumedRequestBodies` can now also be configured through static configuration.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+
+## @backstage/backend-app-api@0.5.0-next.2
+
+### Patch Changes
+
+- e65c4896f755: Do not throw in backend.stop, if start failed
+- cc9256a33bcc: Added new experimental `featureDiscoveryServiceFactory`, available as an `/alpha` export.
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-permission-node@0.7.11-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+ - @backstage/config-loader@1.4.0-next.1
+
+## @backstage/backend-common@0.19.2-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-app-api@0.5.0-next.2
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/config-loader@1.4.0-next.1
+
+## @backstage/backend-defaults@0.2.0-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-app-api@0.5.0-next.2
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+
+## @backstage/backend-plugin-api@0.6.0-next.2
+
+### Patch Changes
+
+- cc9256a33bcc: Added new experimental `featureDiscoveryServiceRef`, available as an `/alpha` export.
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+
+## @backstage/backend-tasks@0.5.5-next.2
+
+### Patch Changes
+
+- dfd1b6b2fc33: Make `readTaskScheduleDefinitionFromConfig` properly handle bad inputs
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.2
+
+## @backstage/backend-test-utils@0.2.0-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-app-api@0.5.0-next.2
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+
+## @backstage/create-app@0.5.4-next.2
+
+### Patch Changes
+
+- Bumped create-app version.
+
+## @backstage/dev-utils@1.0.18-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+ - @backstage/integration-react@1.1.16-next.1
+
+## @techdocs/cli@1.4.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-techdocs-node@1.7.4-next.2
+
+## @backstage/plugin-adr@0.6.4-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+ - @backstage/integration-react@1.1.16-next.1
+
+## @backstage/plugin-adr-backend@0.3.6-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+
+## @backstage/plugin-airbrake@0.3.21-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+ - @backstage/dev-utils@1.0.18-next.2
+
+## @backstage/plugin-airbrake-backend@0.2.21-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+
+## @backstage/plugin-allure@0.1.37-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-api-docs@0.9.7-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+ - @backstage/plugin-catalog@1.12.1-next.2
+
+## @backstage/plugin-app-backend@0.3.48-next.2
+
+### Patch Changes
+
+- d564ad142b17: Migrated the alpha `appBackend` export to use static configuration and extension points rather than accepting options.
+- Updated dependencies
+ - @backstage/plugin-app-node@0.1.0-next.0
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/config-loader@1.4.0-next.1
+
+## @backstage/plugin-auth-backend@0.18.6-next.2
+
+### Patch Changes
+
+- 16452cd007ae: Updated `frameHandler` to return `undefined` when using the redirect flow instead of returning `postMessageReponse` which was causing errors
+- bb70a9c3886a: Add frontend visibility to provider objects in `auth` config.
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+
+## @backstage/plugin-auth-node@0.2.17-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.2
+
+## @backstage/plugin-azure-devops@0.3.3-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-azure-devops-backend@0.3.27-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+
+## @backstage/plugin-azure-sites@0.1.10-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-azure-sites-backend@0.1.10-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.2
+
+## @backstage/plugin-badges@0.2.45-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-badges-backend@0.2.3-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+
+## @backstage/plugin-bazaar@0.2.12-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+ - @backstage/plugin-catalog@1.12.1-next.2
+ - @backstage/cli@0.22.10-next.1
+
+## @backstage/plugin-bazaar-backend@0.2.11-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+
+## @backstage/plugin-bitrise@0.1.48-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-catalog@1.12.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+ - @backstage/integration-react@1.1.16-next.1
+
+## @backstage/plugin-catalog-backend-module-aws@0.2.3-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+
+## @backstage/plugin-catalog-backend-module-azure@0.1.19-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+
+## @backstage/plugin-catalog-backend-module-bitbucket@0.2.15-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+
+## @backstage/plugin-catalog-backend-module-bitbucket-cloud@0.1.15-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+ - @backstage/plugin-events-node@0.2.9-next.2
+
+## @backstage/plugin-catalog-backend-module-bitbucket-server@0.1.13-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+
+## @backstage/plugin-catalog-backend-module-gcp@0.1.0-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+
+## @backstage/plugin-catalog-backend-module-gerrit@0.1.16-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+
+## @backstage/plugin-catalog-backend-module-github@0.3.3-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-backend@1.12.0-next.2
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+ - @backstage/plugin-events-node@0.2.9-next.2
+
+## @backstage/plugin-catalog-backend-module-gitlab@0.2.4-next.2
+
+### Patch Changes
+
+- 2fe1f5973ff7: Filter Gitlab archived projects through APIs
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+
+## @backstage/plugin-catalog-backend-module-incremental-ingestion@0.4.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-backend@1.12.0-next.2
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+ - @backstage/plugin-events-node@0.2.9-next.2
+
+## @backstage/plugin-catalog-backend-module-ldap@0.5.15-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+
+## @backstage/plugin-catalog-backend-module-msgraph@0.5.7-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+
+## @backstage/plugin-catalog-backend-module-openapi@0.1.14-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-backend@1.12.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+
+## @backstage/plugin-catalog-backend-module-puppetdb@0.1.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+
+## @backstage/plugin-catalog-backend-module-unprocessed@0.2.0-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+
+## @backstage/plugin-catalog-graph@0.2.33-next.2
+
+### Patch Changes
+
+- 62dc7a2b1ad1: Added maximum depth parameter to the catalogGraphParams in CatalogGraphCard.
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-catalog-import@0.9.11-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+ - @backstage/integration-react@1.1.16-next.1
+
+## @backstage/plugin-catalog-node@1.4.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+
+## @backstage/plugin-catalog-react@1.8.1-next.1
+
+### Patch Changes
+
+- aa3feedce10a: Allow specifying screen size when catalog filters are hidden in drawer
+
+## @backstage/plugin-cicd-statistics@0.1.23-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-cicd-statistics-module-gitlab@0.1.17-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-cicd-statistics@0.1.23-next.1
+
+## @backstage/plugin-circleci@0.3.21-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-cloudbuild@0.3.21-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-code-climate@0.1.21-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-code-coverage@0.2.14-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-code-coverage-backend@0.2.14-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.2
+
+## @backstage/plugin-cost-insights@0.12.10-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-devtools-backend@0.1.3-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-permission-node@0.7.11-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+ - @backstage/config-loader@1.4.0-next.1
+
+## @backstage/plugin-dynatrace@7.0.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-entity-feedback@0.2.4-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-entity-feedback-backend@0.1.6-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+
+## @backstage/plugin-entity-validation@0.1.6-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-events-backend@0.2.9-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-events-node@0.2.9-next.2
+
+## @backstage/plugin-events-backend-module-aws-sqs@0.2.3-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-events-node@0.2.9-next.2
+
+## @backstage/plugin-events-backend-module-azure@0.1.10-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/plugin-events-node@0.2.9-next.2
+
+## @backstage/plugin-events-backend-module-bitbucket-cloud@0.1.10-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/plugin-events-node@0.2.9-next.2
+
+## @backstage/plugin-events-backend-module-gerrit@0.1.10-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/plugin-events-node@0.2.9-next.2
+
+## @backstage/plugin-events-backend-module-github@0.1.10-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/plugin-events-node@0.2.9-next.2
+
+## @backstage/plugin-events-backend-module-gitlab@0.1.10-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/plugin-events-node@0.2.9-next.2
+
+## @backstage/plugin-events-backend-test-utils@0.1.10-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-events-node@0.2.9-next.2
+
+## @backstage/plugin-events-node@0.2.9-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+
+## @backstage/plugin-explore@0.4.7-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+ - @backstage/plugin-explore-react@0.0.30
+
+## @backstage/plugin-explore-backend@0.0.10-next.2
+
+### Patch Changes
+
+- eda2a699f40d: Moved the config example from the "Tools as Code" section to the "Tools as Config" section of the README
+- Updated dependencies
+ - @backstage/plugin-search-backend-module-explore@0.1.4-next.2
+ - @backstage/backend-common@0.19.2-next.2
+
+## @backstage/plugin-firehydrant@0.2.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-fossa@0.2.53-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-github-actions@0.6.2-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+ - @backstage/integration-react@1.1.16-next.1
+
+## @backstage/plugin-github-deployments@0.1.52-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+ - @backstage/integration-react@1.1.16-next.1
+
+## @backstage/plugin-github-issues@0.2.10-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-github-pull-requests-board@0.1.15-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-gocd@0.1.27-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-graphql-backend@0.1.38-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.2
+
+## @backstage/plugin-graphql-voyager@0.1.6-next.2
+
+### Patch Changes
+
+- bb1e1c2b26cc: Fix typo in install instructions.
+
+## @backstage/plugin-home@0.5.5-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+ - @backstage/plugin-home-react@0.1.2-next.0
+
+## @backstage/plugin-ilert@0.2.10-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-jenkins@0.8.3-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-jenkins-backend@0.2.3-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-permission-node@0.7.11-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+
+## @backstage/plugin-kafka@0.3.21-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-kafka-backend@0.2.41-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+
+## @backstage/plugin-kubernetes@0.9.4-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-kubernetes-backend@0.11.3-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+ - @backstage/plugin-permission-node@0.7.11-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+
+## @backstage/plugin-lighthouse@0.4.6-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-lighthouse-backend@0.2.4-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+
+## @backstage/plugin-linguist@0.1.6-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-linguist-common@0.1.1-next.1
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-linguist-common@0.1.1-next.1
+
+### Patch Changes
+
+- d440f1dd0e72: Exported new LanguageType type alias
+
+## @backstage/plugin-newrelic-dashboard@0.2.14-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-nomad@0.1.2-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-nomad-backend@0.1.2-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.2
+
+## @backstage/plugin-octopus-deploy@0.2.3-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-org@0.6.11-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-org-react@0.1.10-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-pagerduty@0.6.2-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+ - @backstage/plugin-home-react@0.1.2-next.0
+
+## @backstage/plugin-periskop@0.1.19-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-periskop-backend@0.1.19-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+
+## @backstage/plugin-permission-backend@0.5.23-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-permission-node@0.7.11-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+
+## @backstage/plugin-permission-node@0.7.11-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+
+## @backstage/plugin-playlist@0.1.13-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-playlist-backend@0.3.4-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-permission-node@0.7.11-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+
+## @backstage/plugin-puppetdb@0.1.4-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-rollbar@0.4.21-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-rollbar-backend@0.1.45-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.2
+
+## @backstage/plugin-scaffolder@1.14.2-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+ - @backstage/plugin-scaffolder-react@1.5.2-next.1
+ - @backstage/integration-react@1.1.16-next.1
+
+## @backstage/plugin-scaffolder-backend@1.15.2-next.2
+
+### Patch Changes
+
+- 33c76caef72a: Added examples for the fs:delete and fs:rename actions
+- 0b1d775be05b: Adds examples to a few scaffolder actions.
+- Updated dependencies
+ - @backstage/plugin-catalog-backend@1.12.0-next.2
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/plugin-scaffolder-node@0.1.6-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+ - @backstage/plugin-permission-node@0.7.11-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+
+## @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-node@0.1.6-next.2
+ - @backstage/backend-common@0.19.2-next.2
+
+## @backstage/plugin-scaffolder-backend-module-cookiecutter@0.2.24-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-node@0.1.6-next.2
+ - @backstage/backend-common@0.19.2-next.2
+
+## @backstage/plugin-scaffolder-backend-module-gitlab@0.2.3-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-node@0.1.6-next.2
+
+## @backstage/plugin-scaffolder-backend-module-rails@0.4.17-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-node@0.1.6-next.2
+ - @backstage/backend-common@0.19.2-next.2
+
+## @backstage/plugin-scaffolder-backend-module-sentry@0.1.8-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-node@0.1.6-next.2
+
+## @backstage/plugin-scaffolder-backend-module-yeoman@0.2.21-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-node@0.1.6-next.2
+
+## @backstage/plugin-scaffolder-node@0.1.6-next.2
+
+### Patch Changes
+
+- 0b1d775be05b: Export `TemplateExample` from the `createTemplateAction` type.
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+
+## @backstage/plugin-scaffolder-react@1.5.2-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-search@1.3.4-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-search-backend@1.4.0-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-permission-node@0.7.11-next.2
+ - @backstage/plugin-search-backend-node@1.2.4-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+
+## @backstage/plugin-search-backend-module-catalog@0.1.4-next.2
+
+### Patch Changes
+
+- 29f77f923c71: Ensure that all services are dependency injected into the module instead of taken from options
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+ - @backstage/plugin-search-backend-node@1.2.4-next.2
+
+## @backstage/plugin-search-backend-module-elasticsearch@1.3.3-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-search-backend-node@1.2.4-next.2
+
+## @backstage/plugin-search-backend-module-explore@0.1.4-next.2
+
+### Patch Changes
+
+- 29f77f923c71: Ensure that all services are dependency injected into the module instead of taken from options
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-search-backend-node@1.2.4-next.2
+
+## @backstage/plugin-search-backend-module-pg@0.5.9-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-search-backend-node@1.2.4-next.2
+
+## @backstage/plugin-search-backend-module-techdocs@0.1.4-next.2
+
+### Patch Changes
+
+- 29f77f923c71: Ensure that all services are dependency injected into the module instead of taken from options
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+ - @backstage/plugin-search-backend-node@1.2.4-next.2
+ - @backstage/plugin-techdocs-node@1.7.4-next.2
+
+## @backstage/plugin-search-backend-node@1.2.4-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+
+## @backstage/plugin-sentry@0.5.6-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-sonarqube@0.7.2-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-sonarqube-backend@0.2.2-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.2
+
+## @backstage/plugin-splunk-on-call@0.4.10-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-stack-overflow-backend@0.2.4-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.2
+
+## @backstage/plugin-tech-insights@0.3.13-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-tech-insights-backend@0.5.14-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-tech-insights-node@0.4.6-next.2
+
+## @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.32-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-tech-insights-node@0.4.6-next.2
+
+## @backstage/plugin-tech-insights-node@0.4.6-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+
+## @backstage/plugin-techdocs@1.6.6-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+ - @backstage/integration-react@1.1.16-next.1
+
+## @backstage/plugin-techdocs-addons-test-utils@1.0.17-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog@1.12.1-next.2
+ - @backstage/plugin-techdocs@1.6.6-next.2
+ - @backstage/integration-react@1.1.16-next.1
+
+## @backstage/plugin-techdocs-backend@1.6.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-search-backend-module-techdocs@0.1.4-next.2
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-techdocs-node@1.7.4-next.2
+
+## @backstage/plugin-techdocs-node@1.7.4-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.2
+
+## @backstage/plugin-todo@0.2.23-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-todo-backend@0.2.0-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+
+## @backstage/plugin-user-settings@0.7.6-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-user-settings-backend@0.1.12-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+
+## @backstage/plugin-vault@0.1.15-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## @backstage/plugin-vault-backend@0.3.4-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+
+## example-app@0.2.86-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-graph@0.2.33-next.2
+ - @backstage/plugin-linguist-common@0.1.1-next.1
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+ - @backstage/plugin-linguist@0.1.6-next.2
+ - @backstage/plugin-adr@0.6.4-next.2
+ - @backstage/plugin-airbrake@0.3.21-next.2
+ - @backstage/plugin-api-docs@0.9.7-next.2
+ - @backstage/plugin-azure-devops@0.3.3-next.1
+ - @backstage/plugin-azure-sites@0.1.10-next.1
+ - @backstage/plugin-badges@0.2.45-next.1
+ - @internal/plugin-catalog-customized@0.0.13-next.2
+ - @backstage/plugin-catalog-import@0.9.11-next.2
+ - @backstage/plugin-circleci@0.3.21-next.1
+ - @backstage/plugin-cloudbuild@0.3.21-next.1
+ - @backstage/plugin-code-coverage@0.2.14-next.2
+ - @backstage/plugin-cost-insights@0.12.10-next.1
+ - @backstage/plugin-dynatrace@7.0.1-next.2
+ - @backstage/plugin-entity-feedback@0.2.4-next.2
+ - @backstage/plugin-explore@0.4.7-next.1
+ - @backstage/plugin-github-actions@0.6.2-next.2
+ - @backstage/plugin-gocd@0.1.27-next.1
+ - @backstage/plugin-home@0.5.5-next.1
+ - @backstage/plugin-jenkins@0.8.3-next.2
+ - @backstage/plugin-kafka@0.3.21-next.2
+ - @backstage/plugin-kubernetes@0.9.4-next.1
+ - @backstage/plugin-lighthouse@0.4.6-next.1
+ - @backstage/plugin-newrelic-dashboard@0.2.14-next.2
+ - @backstage/plugin-nomad@0.1.2-next.2
+ - @backstage/plugin-octopus-deploy@0.2.3-next.2
+ - @backstage/plugin-org@0.6.11-next.2
+ - @backstage/plugin-pagerduty@0.6.2-next.1
+ - @backstage/plugin-playlist@0.1.13-next.2
+ - @backstage/plugin-puppetdb@0.1.4-next.1
+ - @backstage/plugin-rollbar@0.4.21-next.1
+ - @backstage/plugin-scaffolder@1.14.2-next.2
+ - @backstage/plugin-scaffolder-react@1.5.2-next.1
+ - @backstage/plugin-search@1.3.4-next.1
+ - @backstage/plugin-sentry@0.5.6-next.1
+ - @backstage/plugin-tech-insights@0.3.13-next.2
+ - @backstage/plugin-techdocs@1.6.6-next.2
+ - @backstage/plugin-todo@0.2.23-next.1
+ - @backstage/plugin-user-settings@0.7.6-next.1
+ - @backstage/cli@0.22.10-next.1
+ - @backstage/integration-react@1.1.16-next.1
+ - @backstage/plugin-apache-airflow@0.2.14-next.1
+ - @backstage/plugin-catalog-unprocessed-entities@0.1.2-next.0
+ - @backstage/plugin-devtools@0.1.3-next.1
+ - @backstage/plugin-gcalendar@0.3.17-next.1
+ - @backstage/plugin-gcp-projects@0.3.40-next.0
+ - @backstage/plugin-graphiql@0.2.53-next.0
+ - @backstage/plugin-microsoft-calendar@0.1.6-next.1
+ - @backstage/plugin-newrelic@0.3.39-next.0
+ - @backstage/plugin-shortcuts@0.3.13-next.1
+ - @backstage/plugin-stack-overflow@0.1.19-next.1
+ - @backstage/plugin-stackstorm@0.1.5-next.0
+ - @backstage/plugin-tech-radar@0.6.7-next.0
+ - @backstage/plugin-techdocs-module-addons-contrib@1.0.16-next.1
+
+## example-backend@0.2.86-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-auth-backend@0.18.6-next.2
+ - @backstage/plugin-scaffolder-backend@1.15.2-next.2
+ - @backstage/plugin-explore-backend@0.0.10-next.2
+ - @backstage/plugin-catalog-backend@1.12.0-next.2
+ - @backstage/plugin-proxy-backend@0.3.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/plugin-app-backend@0.3.48-next.2
+ - @backstage/plugin-linguist-backend@0.4.0-next.2
+ - @backstage/plugin-techdocs-backend@1.6.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - example-app@0.2.86-next.2
+ - @backstage/plugin-adr-backend@0.3.6-next.2
+ - @backstage/plugin-azure-devops-backend@0.3.27-next.2
+ - @backstage/plugin-badges-backend@0.2.3-next.2
+ - @backstage/plugin-catalog-backend-module-unprocessed@0.2.0-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+ - @backstage/plugin-devtools-backend@0.1.3-next.2
+ - @backstage/plugin-entity-feedback-backend@0.1.6-next.2
+ - @backstage/plugin-events-backend@0.2.9-next.2
+ - @backstage/plugin-events-node@0.2.9-next.2
+ - @backstage/plugin-kafka-backend@0.2.41-next.2
+ - @backstage/plugin-kubernetes-backend@0.11.3-next.2
+ - @backstage/plugin-lighthouse-backend@0.2.4-next.2
+ - @backstage/plugin-permission-backend@0.5.23-next.2
+ - @backstage/plugin-permission-node@0.7.11-next.2
+ - @backstage/plugin-search-backend@1.4.0-next.2
+ - @backstage/plugin-search-backend-module-elasticsearch@1.3.3-next.2
+ - @backstage/plugin-search-backend-module-pg@0.5.9-next.2
+ - @backstage/plugin-search-backend-node@1.2.4-next.2
+ - @backstage/plugin-todo-backend@0.2.0-next.2
+ - @backstage/plugin-tech-insights-backend@0.5.14-next.2
+ - @backstage/plugin-tech-insights-node@0.4.6-next.2
+ - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.1-next.2
+ - @backstage/plugin-scaffolder-backend-module-rails@0.4.17-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+ - @backstage/plugin-azure-sites-backend@0.1.10-next.2
+ - @backstage/plugin-code-coverage-backend@0.2.14-next.2
+ - @backstage/plugin-graphql-backend@0.1.38-next.2
+ - @backstage/plugin-jenkins-backend@0.2.3-next.2
+ - @backstage/plugin-nomad-backend@0.1.2-next.2
+ - @backstage/plugin-playlist-backend@0.3.4-next.2
+ - @backstage/plugin-rollbar-backend@0.1.45-next.2
+ - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.32-next.2
+
+## example-backend-next@0.0.14-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-search-backend-module-techdocs@0.1.4-next.2
+ - @backstage/plugin-search-backend-module-catalog@0.1.4-next.2
+ - @backstage/plugin-search-backend-module-explore@0.1.4-next.2
+ - @backstage/plugin-scaffolder-backend@1.15.2-next.2
+ - @backstage/plugin-catalog-backend@1.12.0-next.2
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/plugin-proxy-backend@0.3.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/plugin-app-backend@0.3.48-next.2
+ - @backstage/plugin-linguist-backend@0.4.0-next.2
+ - @backstage/plugin-techdocs-backend@1.6.5-next.2
+ - @backstage/backend-defaults@0.2.0-next.2
+ - @backstage/plugin-adr-backend@0.3.6-next.2
+ - @backstage/plugin-azure-devops-backend@0.3.27-next.2
+ - @backstage/plugin-badges-backend@0.2.3-next.2
+ - @backstage/plugin-catalog-backend-module-unprocessed@0.2.0-next.2
+ - @backstage/plugin-devtools-backend@0.1.3-next.2
+ - @backstage/plugin-entity-feedback-backend@0.1.6-next.2
+ - @backstage/plugin-kubernetes-backend@0.11.3-next.2
+ - @backstage/plugin-lighthouse-backend@0.2.4-next.2
+ - @backstage/plugin-permission-backend@0.5.23-next.2
+ - @backstage/plugin-permission-node@0.7.11-next.2
+ - @backstage/plugin-search-backend@1.4.0-next.2
+ - @backstage/plugin-search-backend-node@1.2.4-next.2
+ - @backstage/plugin-todo-backend@0.2.0-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+
+## e2e-test@0.2.6-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/create-app@0.5.4-next.2
+
+## techdocs-cli-embedded-app@0.2.85-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog@1.12.1-next.2
+ - @backstage/plugin-techdocs@1.6.6-next.2
+ - @backstage/cli@0.22.10-next.1
+ - @backstage/integration-react@1.1.16-next.1
+
+## @internal/plugin-catalog-customized@0.0.13-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+ - @backstage/plugin-catalog@1.12.1-next.2
+
+## @internal/plugin-todo-list-backend@1.0.16-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
diff --git a/microsite/blog/2023-02-15-backend-system-alpha.mdx b/microsite/blog/2023-02-15-backend-system-alpha.mdx
index 2aef5596a0..28ff7bdf6b 100644
--- a/microsite/blog/2023-02-15-backend-system-alpha.mdx
+++ b/microsite/blog/2023-02-15-backend-system-alpha.mdx
@@ -26,7 +26,6 @@ When we set out on this project, we had a few primary goals. First, we intended
- Make it easier to create and maintain backend installations.
- Align how plugins provide points of customization and how those customizations are installed.
- Make it much easier to maintain plugins, in particular keeping the API stable.
-- Simplify the process of splitting plugins out into separate deployments with shared environments.
- Improve the local development and testing experience.
Prioritizing simplicity is often a guiding principle that we use for designs that span multiple ownership roles. We decide on which parts of the system that we think are the most important to have as simple as possible, or, viewed from the opposite end, where in the system we put necessary complexity. In this case, we optimized for keeping the backend setup as simple as possible, followed by modules and plugins, then libraries, and lastly the framework itself. What this guidance means in practice is that when there is complexity that needs to be added to implement a certain feature, we place as much of it as possible within the framework itself, then libraries, plugins and modules, and if absolutely needed, the backend setup.
diff --git a/microsite/blog/2023-07-28-frontside-adopter-post.mdx b/microsite/blog/2023-07-28-frontside-adopter-post.mdx
new file mode 100644
index 0000000000..c6f3cba403
--- /dev/null
+++ b/microsite/blog/2023-07-28-frontside-adopter-post.mdx
@@ -0,0 +1,51 @@
+---
+# prettier-ignore
+title: "Five common traits of successful Backstage adopters"
+author: Taras Mankovski, CXO, Frontside
+---
+
+
+
+At [Frontside](https://frontside.com/), our goal is to help cloud-native teams create cohesive development experiences. We've been at the Backstage party since the beginning helping companies adopt and extend Backstage to fit the needs of their unique ecosystems.
+
+Through our experience, we've uncovered five common traits of organizations that have improved developer experience through successful Backstage implementation and adoption. In this blog, we'll dive into these traits with some thoughts on how you can follow their blueprint.
+
+{/* truncate */}
+
+## **1) They take a product-centric approach**
+
+The biggest factor for successful adopters of Backstage is their approach. There is a high correlation of success within organizations that approach building a developer portal like they're building a product. Some organizations will jump straight into solutioning instead of taking their time to identify what the problems are, how they affect users, and how those issues can be addressed.
+
+The team building out Backstage should assess or work from existing insights on the core challenges that developers are facing in their organization — both qualitative and quantitative data counts here — and connect those issues to a product roadmap with initial use cases and adoption milestones marked. By doing their research in advance, successful orgs have a clear vision of what they want to accomplish with their Backstage instance. They know exactly what goals need to be met and have pressure-tested potential issues and barriers.
+
+If you've already started your Backstage adoption journey but haven't mapped a Product Requirements Document (or PRD), don't panic! There is always time to do the foundational knowledge-building necessary to deploy something successful.
+
+## **2) They tie Backstage to a larger platform journey**
+
+Platform engineering has emerged in response to the growing complexity of cloud-native software architecture. Backstage has a huge role to play in implementing a platform strategy but its part of a larger story. Having buy-in from both higher ups and the teams tasked with platform goals is an essential step in successful Backstage adoption. Without the support at the top, it can be difficult to implement platforming as a priority within your organization.
+
+And by "the top", we don't necessarily mean your CTO needs to rubber stamp your Backstage POC. But it's important that higher-level Platform goals have been set among VPs and directors with the understanding that a well-constructed developer portal can be the catalyst to achieving not only better developer experience but broader cultural shifts.
+
+Having this kind of executive buy-in means more than just getting stakeholders on board with a portal build or clearing pathways towards Backstage adoption; it also means ensuring they understand the realities of your organization's journey.
+
+## **3) They prioritize developer experience**
+
+Having a dedicated developer experience or DevOps team tasked not only with building out a Backstage instance — but with leading adoption — is another big factor to success.
+
+Competing platforms are very common at big companies, with many teams doing different things or serving different parts of a business. But developer experience teams usually have a very clear mandate and are often one of the only commonalities between these competing teams. This team should have the bandwidth available to oversee the adoption process from start to finish, and partner with the right folks (research, design, internal comms and marketing) to create an effective adoption plan tailored specifically for a company's needs.
+
+If you don't have established developer experience resources in place, then the questions the team leading the Backstage work needs to ask are "what are the common problems to be solved at a platform level?" and "once we've proved our initial use cases, how are we internally evangelizing this amongst our competing teams?"
+
+## **4) They collaborate with other platform teams**
+
+A developer experience team can not single-handedly transform an organization's development structures, processes, and culture. It requires collaboration with teams responsible for other aspects of the platform. Successful adopters collaborate with other teams to bring them along on the journey of improving developer experience. They use Backstage as an opportunity to foster their inner-source contribution practice by allowing multiple platform teams to contribute plugins to their portal.
+
+The developer experience team takes on the role of host in that collaborative process. They support other teams in integrating their features into the portal, provide guidance on best practices, and advocate for the needs of developers.
+
+## **5) They engage, learn, and grow with the community**
+
+One of the key benefits of building a developer platform based off an open source framework is leveraging the contributions and best practices from the community. The Backstage community is the largest gathering of developer experience practitioners in the world. There are now [thousands of adopters](https://github.com/backstage/backstage/blob/63aa3a65ec05f638ba76c06878d6635194620b34/ADOPTERS.md#L4) with a wealth of experience and best practices to learn from — and they are excited to share!
+
+By participating in the community, developer experience leaders can learn from their peers at other companies about strategies that work and can keep up with the latest features of the ever-evolving Backstage platform. They're aware of what solutions exist within the open source framework and plugin marketplace as well as what they may need to build in-house.
+
+In short, successful Backstage adopters engage within the Backstage community and their peer group to find solutions that fit their common challenges as well as their unique needs.
diff --git a/microsite/blog/assets/2023-07-28/header.png b/microsite/blog/assets/2023-07-28/header.png
new file mode 100644
index 0000000000..69036b6038
Binary files /dev/null and b/microsite/blog/assets/2023-07-28/header.png differ
diff --git a/microsite/data/plugins/3scale.yaml b/microsite/data/plugins/3scale.yaml
index c190ed7e9e..fa568c17bf 100644
--- a/microsite/data/plugins/3scale.yaml
+++ b/microsite/data/plugins/3scale.yaml
@@ -5,6 +5,6 @@ authorUrl: https://redhat.com
category: Discovery
description: Synchronize 3scale content into the Backstage catalog.
documentation: https://janus-idp.io/plugins/3scale
-iconUrl: http://janus-idp.io/images/plugins/3scale.svg
+iconUrl: https://janus-idp.io/images/plugins/3scale.svg
npmPackageName: '@janus-idp/backstage-plugin-3scale-backend'
addedDate: '2023-05-15'
diff --git a/microsite/data/plugins/jfrog-artifactory.yaml b/microsite/data/plugins/jfrog-artifactory.yaml
index 279cbc161e..6765fe3d8d 100644
--- a/microsite/data/plugins/jfrog-artifactory.yaml
+++ b/microsite/data/plugins/jfrog-artifactory.yaml
@@ -5,6 +5,6 @@ authorUrl: https://redhat.com
category: Image
description: View container image details from JFrog Artifactory in Backstage.
documentation: https://janus-idp.io/plugins/jfrog-artifactory
-iconUrl: http://janus-idp.io/images/plugins/jfrog-artifactory.svg
+iconUrl: https://janus-idp.io/images/plugins/jfrog-artifactory.svg
npmPackageName: '@janus-idp/backstage-plugin-jfrog-artifactory'
addedDate: '2023-05-15'
diff --git a/microsite/data/plugins/keycloak.yaml b/microsite/data/plugins/keycloak.yaml
index ea657c74f2..3da89c3d0a 100644
--- a/microsite/data/plugins/keycloak.yaml
+++ b/microsite/data/plugins/keycloak.yaml
@@ -5,6 +5,6 @@ authorUrl: https://redhat.com
category: Authentication/Authorization
description: Load users and groups from Keycloak, enabling use of multiple authentication providers to be applied to Backstage entities.
documentation: https://janus-idp.io/plugins/keycloak
-iconUrl: http://janus-idp.io/images/plugins/keycloak.svg
+iconUrl: https://janus-idp.io/images/plugins/keycloak.svg
npmPackageName: '@janus-idp/backstage-plugin-keycloak-backend'
addedDate: '2023-05-15'
diff --git a/microsite/data/plugins/kiali.yaml b/microsite/data/plugins/kiali.yaml
new file mode 100644
index 0000000000..a85aa6444a
--- /dev/null
+++ b/microsite/data/plugins/kiali.yaml
@@ -0,0 +1,10 @@
+---
+title: Kiali Service Mesh
+author: Red Hat
+authorUrl: https://redhat.com
+category: Istio
+description: Configure, visualize, validate and troubleshoot your mesh with Istio
+documentation: https://janus-idp.io/plugins/kiali
+iconUrl: https://janus-idp.io/images/plugins/kiali.svg
+npmPackageName: '@janus-idp/backstage-plugin-kiali'
+addedDate: '2023-07-25'
diff --git a/microsite/data/plugins/ocm.yaml b/microsite/data/plugins/ocm.yaml
index 9e9b8ff1b7..6cf77ca678 100644
--- a/microsite/data/plugins/ocm.yaml
+++ b/microsite/data/plugins/ocm.yaml
@@ -5,6 +5,6 @@ authorUrl: https://redhat.com
category: Infrastructure
description: View clusters from OCM's MultiClusterHub and MultiCluster Engine in Backstage.
documentation: https://janus-idp.io/plugins/ocm
-iconUrl: http://janus-idp.io/images/plugins/ocm.svg
+iconUrl: https://janus-idp.io/images/plugins/ocm.svg
npmPackageName: '@janus-idp/backstage-plugin-ocm'
addedDate: '2023-05-15'
diff --git a/microsite/data/plugins/quay.yaml b/microsite/data/plugins/quay.yaml
index e4aeb1ec1a..79ae1c3408 100644
--- a/microsite/data/plugins/quay.yaml
+++ b/microsite/data/plugins/quay.yaml
@@ -5,6 +5,6 @@ authorUrl: https://redhat.com
category: Image
description: View container image details from Quay in Backstage.
documentation: https://janus-idp.io/plugins/quay
-iconUrl: http://janus-idp.io/images/plugins/quay.svg
+iconUrl: https://janus-idp.io/images/plugins/quay.svg
npmPackageName: '@janus-idp/backstage-plugin-quay'
addedDate: '2023-05-15'
diff --git a/microsite/data/plugins/scaffolder-backend-slack.yaml b/microsite/data/plugins/scaffolder-backend-slack.yaml
new file mode 100644
index 0000000000..dce7b60eb7
--- /dev/null
+++ b/microsite/data/plugins/scaffolder-backend-slack.yaml
@@ -0,0 +1,10 @@
+---
+title: Slack Scaffolder Actions
+author: Drew Hill
+authorUrl: https://github.com/arhill05
+category: Scaffolder
+description: Interact with Slack from scaffolder templates
+documentation: https://github.com/arhill05/backstage-plugin-scaffolder-backend-module-slack#readme
+iconUrl: img/Slack-mark-RGB.png
+npmPackageName: '@mdude2314/backstage-plugin-scaffolder-backend-module-slack'
+addedDate: '2023-08-04'
diff --git a/microsite/data/plugins/tekton.yaml b/microsite/data/plugins/tekton.yaml
index fa94b89c35..27540a81d3 100644
--- a/microsite/data/plugins/tekton.yaml
+++ b/microsite/data/plugins/tekton.yaml
@@ -5,6 +5,6 @@ authorUrl: https://redhat.com
category: CI/CD
description: Easily view Tekton PipelineRun status for your services in Backstage.
documentation: https://janus-idp.io/plugins/tekton
-iconUrl: http://janus-idp.io/images/plugins/tekton.svg
+iconUrl: https://janus-idp.io/images/plugins/tekton.svg
npmPackageName: '@janus-idp/backstage-plugin-tekton'
addedDate: '2023-05-15'
diff --git a/microsite/data/plugins/topology.yaml b/microsite/data/plugins/topology.yaml
index 2f26f7c755..9d3b816bd4 100644
--- a/microsite/data/plugins/topology.yaml
+++ b/microsite/data/plugins/topology.yaml
@@ -5,6 +5,6 @@ authorUrl: https://redhat.com
category: Kubernetes
description: Visualize the deployment status and related resources of your applications deployed on any Kubernetes cluster.
documentation: https://janus-idp.io/plugins/topology
-iconUrl: http://janus-idp.io/images/plugins/topology.svg
+iconUrl: https://janus-idp.io/images/plugins/topology.svg
npmPackageName: '@janus-idp/backstage-plugin-topology'
addedDate: '2023-05-15'
diff --git a/microsite/sidebars.json b/microsite/sidebars.json
index d9178396e8..198195eea1 100644
--- a/microsite/sidebars.json
+++ b/microsite/sidebars.json
@@ -331,6 +331,7 @@
"deployment/k8s",
"deployment/heroku",
"deployment/koyeb",
+ "deployment/flightcontrol",
{
"type": "category",
"label": "Using Backstage Deploy (alpha)",
diff --git a/microsite/static/img/Slack-mark-RGB.png b/microsite/static/img/Slack-mark-RGB.png
new file mode 100644
index 0000000000..8ac1d296c8
Binary files /dev/null and b/microsite/static/img/Slack-mark-RGB.png differ
diff --git a/package.json b/package.json
index 6c401498ba..e9813d113d 100644
--- a/package.json
+++ b/package.json
@@ -47,7 +47,7 @@
"@types/react": "^17",
"@types/react-dom": "^17"
},
- "version": "1.17.0-next.0",
+ "version": "1.17.0-next.2",
"dependencies": {
"@backstage/errors": "workspace:^",
"@manypkg/get-packages": "^1.1.3"
diff --git a/packages/app/CHANGELOG.md b/packages/app/CHANGELOG.md
index 5ddd5b1ba0..12e3dada41 100644
--- a/packages/app/CHANGELOG.md
+++ b/packages/app/CHANGELOG.md
@@ -1,5 +1,143 @@
# example-app
+## 0.2.86-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-graph@0.2.33-next.2
+ - @backstage/plugin-linguist-common@0.1.1-next.1
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+ - @backstage/plugin-linguist@0.1.6-next.2
+ - @backstage/plugin-adr@0.6.4-next.2
+ - @backstage/plugin-airbrake@0.3.21-next.2
+ - @backstage/plugin-api-docs@0.9.7-next.2
+ - @backstage/plugin-azure-devops@0.3.3-next.1
+ - @backstage/plugin-azure-sites@0.1.10-next.1
+ - @backstage/plugin-badges@0.2.45-next.1
+ - @internal/plugin-catalog-customized@0.0.13-next.2
+ - @backstage/plugin-catalog-import@0.9.11-next.2
+ - @backstage/plugin-circleci@0.3.21-next.1
+ - @backstage/plugin-cloudbuild@0.3.21-next.1
+ - @backstage/plugin-code-coverage@0.2.14-next.2
+ - @backstage/plugin-cost-insights@0.12.10-next.1
+ - @backstage/plugin-dynatrace@7.0.1-next.2
+ - @backstage/plugin-entity-feedback@0.2.4-next.2
+ - @backstage/plugin-explore@0.4.7-next.1
+ - @backstage/plugin-github-actions@0.6.2-next.2
+ - @backstage/plugin-gocd@0.1.27-next.1
+ - @backstage/plugin-home@0.5.5-next.1
+ - @backstage/plugin-jenkins@0.8.3-next.2
+ - @backstage/plugin-kafka@0.3.21-next.2
+ - @backstage/plugin-kubernetes@0.9.4-next.1
+ - @backstage/plugin-lighthouse@0.4.6-next.1
+ - @backstage/plugin-newrelic-dashboard@0.2.14-next.2
+ - @backstage/plugin-nomad@0.1.2-next.2
+ - @backstage/plugin-octopus-deploy@0.2.3-next.2
+ - @backstage/plugin-org@0.6.11-next.2
+ - @backstage/plugin-pagerduty@0.6.2-next.1
+ - @backstage/plugin-playlist@0.1.13-next.2
+ - @backstage/plugin-puppetdb@0.1.4-next.1
+ - @backstage/plugin-rollbar@0.4.21-next.1
+ - @backstage/plugin-scaffolder@1.14.2-next.2
+ - @backstage/plugin-scaffolder-react@1.5.2-next.1
+ - @backstage/plugin-search@1.3.4-next.1
+ - @backstage/plugin-sentry@0.5.6-next.1
+ - @backstage/plugin-tech-insights@0.3.13-next.2
+ - @backstage/plugin-techdocs@1.6.6-next.2
+ - @backstage/plugin-todo@0.2.23-next.1
+ - @backstage/plugin-user-settings@0.7.6-next.1
+ - @backstage/cli@0.22.10-next.1
+ - @backstage/integration-react@1.1.16-next.1
+ - @backstage/plugin-apache-airflow@0.2.14-next.1
+ - @backstage/plugin-catalog-unprocessed-entities@0.1.2-next.0
+ - @backstage/plugin-devtools@0.1.3-next.1
+ - @backstage/plugin-gcalendar@0.3.17-next.1
+ - @backstage/plugin-gcp-projects@0.3.40-next.0
+ - @backstage/plugin-graphiql@0.2.53-next.0
+ - @backstage/plugin-microsoft-calendar@0.1.6-next.1
+ - @backstage/plugin-newrelic@0.3.39-next.0
+ - @backstage/plugin-shortcuts@0.3.13-next.1
+ - @backstage/plugin-stack-overflow@0.1.19-next.1
+ - @backstage/plugin-stackstorm@0.1.5-next.0
+ - @backstage/plugin-tech-radar@0.6.7-next.0
+ - @backstage/plugin-techdocs-module-addons-contrib@1.0.16-next.1
+
+## 0.2.86-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-playlist@0.1.13-next.1
+ - @backstage/plugin-scaffolder@1.14.2-next.1
+ - @backstage/integration-react@1.1.16-next.1
+ - @backstage/plugin-microsoft-calendar@0.1.6-next.1
+ - @backstage/plugin-newrelic-dashboard@0.2.14-next.1
+ - @backstage/plugin-entity-feedback@0.2.4-next.1
+ - @backstage/plugin-linguist-common@0.1.1-next.0
+ - @backstage/plugin-apache-airflow@0.2.14-next.1
+ - @backstage/plugin-octopus-deploy@0.2.3-next.1
+ - @backstage/plugin-stack-overflow@0.1.19-next.1
+ - @backstage/plugin-catalog-graph@0.2.33-next.1
+ - @backstage/plugin-code-coverage@0.2.14-next.1
+ - @backstage/plugin-tech-insights@0.3.13-next.1
+ - @backstage/plugin-dynatrace@7.0.1-next.1
+ - @backstage/plugin-gcalendar@0.3.17-next.1
+ - @backstage/plugin-shortcuts@0.3.13-next.1
+ - @backstage/plugin-airbrake@0.3.21-next.1
+ - @backstage/plugin-kafka@0.3.21-next.1
+ - @backstage/plugin-nomad@0.1.2-next.1
+ - @backstage/plugin-adr@0.6.4-next.1
+ - @backstage/plugin-org@0.6.11-next.1
+ - @backstage/plugin-devtools@0.1.3-next.1
+ - @backstage/cli@0.22.10-next.1
+ - @backstage/plugin-catalog-import@0.9.11-next.1
+ - @backstage/plugin-github-actions@0.6.2-next.1
+ - @backstage/plugin-techdocs@1.6.6-next.1
+ - @backstage/plugin-techdocs-module-addons-contrib@1.0.16-next.1
+ - @backstage/plugin-linguist@0.1.6-next.1
+ - @backstage/plugin-jenkins@0.8.3-next.1
+ - @backstage/app-defaults@1.4.2-next.0
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/core-app-api@1.9.1-next.0
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-api-docs@0.9.7-next.1
+ - @backstage/plugin-azure-devops@0.3.3-next.0
+ - @backstage/plugin-azure-sites@0.1.10-next.0
+ - @backstage/plugin-badges@0.2.45-next.0
+ - @backstage/plugin-catalog-common@1.0.15
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+ - @backstage/plugin-catalog-unprocessed-entities@0.1.2-next.0
+ - @backstage/plugin-circleci@0.3.21-next.0
+ - @backstage/plugin-cloudbuild@0.3.21-next.0
+ - @backstage/plugin-cost-insights@0.12.10-next.0
+ - @backstage/plugin-explore@0.4.7-next.0
+ - @backstage/plugin-gcp-projects@0.3.40-next.0
+ - @backstage/plugin-gocd@0.1.27-next.0
+ - @backstage/plugin-graphiql@0.2.53-next.0
+ - @backstage/plugin-home@0.5.5-next.0
+ - @backstage/plugin-kubernetes@0.9.4-next.0
+ - @backstage/plugin-lighthouse@0.4.6-next.0
+ - @backstage/plugin-newrelic@0.3.39-next.0
+ - @backstage/plugin-pagerduty@0.6.2-next.0
+ - @backstage/plugin-permission-react@0.4.14
+ - @backstage/plugin-puppetdb@0.1.4-next.0
+ - @backstage/plugin-rollbar@0.4.21-next.0
+ - @backstage/plugin-scaffolder-react@1.5.2-next.0
+ - @backstage/plugin-search@1.3.4-next.0
+ - @backstage/plugin-search-common@1.2.5
+ - @backstage/plugin-search-react@1.6.4-next.0
+ - @backstage/plugin-sentry@0.5.6-next.0
+ - @backstage/plugin-stackstorm@0.1.5-next.0
+ - @backstage/plugin-tech-radar@0.6.7-next.0
+ - @backstage/plugin-techdocs-react@1.1.9-next.0
+ - @backstage/plugin-todo@0.2.23-next.0
+ - @backstage/plugin-user-settings@0.7.6-next.0
+ - @internal/plugin-catalog-customized@0.0.13-next.1
+
## 0.2.86-next.0
### Patch Changes
diff --git a/packages/app/package.json b/packages/app/package.json
index 3163995632..0528f33c68 100644
--- a/packages/app/package.json
+++ b/packages/app/package.json
@@ -1,11 +1,17 @@
{
"name": "example-app",
- "version": "0.2.86-next.0",
+ "version": "0.2.86-next.2",
"private": true,
"backstage": {
"role": "frontend"
},
"bundled": true,
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "packages/app"
+ },
"dependencies": {
"@backstage/app-defaults": "workspace:^",
"@backstage/catalog-model": "workspace:^",
diff --git a/packages/backend-app-api/CHANGELOG.md b/packages/backend-app-api/CHANGELOG.md
index 9c07587549..dd474ba143 100644
--- a/packages/backend-app-api/CHANGELOG.md
+++ b/packages/backend-app-api/CHANGELOG.md
@@ -1,5 +1,39 @@
# @backstage/backend-app-api
+## 0.5.0-next.2
+
+### Patch Changes
+
+- e65c4896f755: Do not throw in backend.stop, if start failed
+- cc9256a33bcc: Added new experimental `featureDiscoveryServiceFactory`, available as an `/alpha` export.
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-permission-node@0.7.11-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+ - @backstage/config-loader@1.4.0-next.1
+
+## 0.5.0-next.1
+
+### Minor Changes
+
+- b9c57a4f857e: **BREAKING**: Renamed `configServiceFactory` to `rootConfigServiceFactory`.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/config-loader@1.4.0-next.1
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/plugin-permission-node@0.7.11-next.1
+ - @backstage/cli-common@0.1.12
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+
## 0.4.6-next.0
### Patch Changes
diff --git a/packages/backend-app-api/alpha-api-report.md b/packages/backend-app-api/alpha-api-report.md
new file mode 100644
index 0000000000..488feedf2c
--- /dev/null
+++ b/packages/backend-app-api/alpha-api-report.md
@@ -0,0 +1,16 @@
+## API Report File for "@backstage/backend-app-api"
+
+> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
+
+```ts
+import { FeatureDiscoveryService } from '@backstage/backend-plugin-api/alpha';
+import { ServiceFactory } from '@backstage/backend-plugin-api';
+
+// @alpha (undocumented)
+export const featureDiscoveryServiceFactory: () => ServiceFactory<
+ FeatureDiscoveryService,
+ 'root'
+>;
+
+// (No @packageDocumentation comment for this package)
+```
diff --git a/packages/backend-app-api/api-report.md b/packages/backend-app-api/api-report.md
index 5f452f9e03..675a7755fc 100644
--- a/packages/backend-app-api/api-report.md
+++ b/packages/backend-app-api/api-report.md
@@ -9,7 +9,6 @@ import type { AppConfig } from '@backstage/config';
import { BackendFeature } from '@backstage/backend-plugin-api';
import { CacheClient } from '@backstage/backend-common';
import { Config } from '@backstage/config';
-import { ConfigService } from '@backstage/backend-plugin-api';
import { CorsOptions } from 'cors';
import { ErrorRequestHandler } from 'express';
import { Express as Express_2 } from 'express';
@@ -30,6 +29,7 @@ import { PluginEndpointDiscovery } from '@backstage/backend-common';
import { RemoteConfigSourceOptions } from '@backstage/config-loader';
import { RequestHandler } from 'express';
import { RequestListener } from 'http';
+import { RootConfigService } from '@backstage/backend-plugin-api';
import { RootHttpRouterService } from '@backstage/backend-plugin-api';
import { RootLifecycleService } from '@backstage/backend-plugin-api';
import { RootLoggerService } from '@backstage/backend-plugin-api';
@@ -53,17 +53,6 @@ export interface Backend {
// @public (undocumented)
export const cacheServiceFactory: () => ServiceFactory;
-// @public (undocumented)
-export interface ConfigFactoryOptions {
- argv?: string[];
- remote?: Pick;
-}
-
-// @public (undocumented)
-export const configServiceFactory: (
- options?: ConfigFactoryOptions | undefined,
-) => ServiceFactory;
-
// @public (undocumented)
export function createConfigSecretEnumerator(options: {
logger: LoggerService;
@@ -224,7 +213,7 @@ export interface MiddlewareFactoryErrorOptions {
// @public
export interface MiddlewareFactoryOptions {
// (undocumented)
- config: ConfigService;
+ config: RootConfigService;
// (undocumented)
logger: LoggerService;
}
@@ -244,12 +233,23 @@ export function readHelmetOptions(config?: Config): HelmetOptions;
// @public
export function readHttpServerOptions(config?: Config): HttpServerOptions;
+// @public (undocumented)
+export interface RootConfigFactoryOptions {
+ argv?: string[];
+ remote?: Pick;
+}
+
+// @public (undocumented)
+export const rootConfigServiceFactory: (
+ options?: RootConfigFactoryOptions | undefined,
+) => ServiceFactory;
+
// @public (undocumented)
export interface RootHttpRouterConfigureContext {
// (undocumented)
app: Express_2;
// (undocumented)
- config: ConfigService;
+ config: RootConfigService;
// (undocumented)
lifecycle: LifecycleService;
// (undocumented)
diff --git a/packages/backend-app-api/package.json b/packages/backend-app-api/package.json
index 6f8a5cf9e8..c1f9d30f92 100644
--- a/packages/backend-app-api/package.json
+++ b/packages/backend-app-api/package.json
@@ -1,17 +1,30 @@
{
"name": "@backstage/backend-app-api",
"description": "Core API used by Backstage backend apps",
- "version": "0.4.6-next.0",
+ "version": "0.5.0-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"publishConfig": {
- "access": "public",
- "main": "dist/index.cjs.js",
- "types": "dist/index.d.ts"
+ "access": "public"
},
"backstage": {
"role": "node-library"
},
+ "exports": {
+ ".": "./src/index.ts",
+ "./alpha": "./src/alpha.ts",
+ "./package.json": "./package.json"
+ },
+ "typesVersions": {
+ "*": {
+ "alpha": [
+ "src/alpha.ts"
+ ],
+ "package.json": [
+ "package.json"
+ ]
+ }
+ },
"homepage": "https://backstage.io",
"repository": {
"type": "git",
@@ -36,6 +49,7 @@
"@backstage/backend-plugin-api": "workspace:^",
"@backstage/backend-tasks": "workspace:^",
"@backstage/cli-common": "workspace:^",
+ "@backstage/cli-node": "workspace:^",
"@backstage/config": "workspace:^",
"@backstage/config-loader": "workspace:^",
"@backstage/errors": "workspace:^",
@@ -73,6 +87,7 @@
"@types/node-forge": "^1.3.0",
"@types/stoppable": "^1.1.0",
"http-errors": "^2.0.0",
+ "mock-fs": "^5.2.0",
"supertest": "^6.1.3"
},
"files": [
diff --git a/packages/backend-app-api/src/alpha.ts b/packages/backend-app-api/src/alpha.ts
new file mode 100644
index 0000000000..a334214738
--- /dev/null
+++ b/packages/backend-app-api/src/alpha.ts
@@ -0,0 +1,17 @@
+/*
+ * Copyright 2023 The 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 { featureDiscoveryServiceFactory } from './alpha/featureDiscoveryServiceFactory';
diff --git a/packages/backend-app-api/src/alpha/featureDiscoveryServiceFactory.test.ts b/packages/backend-app-api/src/alpha/featureDiscoveryServiceFactory.test.ts
new file mode 100644
index 0000000000..5a5917dd3b
--- /dev/null
+++ b/packages/backend-app-api/src/alpha/featureDiscoveryServiceFactory.test.ts
@@ -0,0 +1,114 @@
+/*
+ * Copyright 2023 The 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 mockFs from 'mock-fs';
+import { resolve as resolvePath, dirname } from 'path';
+import { startTestBackend, mockServices } from '@backstage/backend-test-utils';
+import { featureDiscoveryServiceFactory } from './featureDiscoveryServiceFactory';
+import {
+ coreServices,
+ createServiceFactory,
+} from '@backstage/backend-plugin-api';
+
+const rootDir = dirname(process.argv[1]);
+
+describe('featureDiscoveryServiceFactory', () => {
+ beforeEach(() => {
+ mockFs({
+ [rootDir]: {
+ 'package.json': JSON.stringify({
+ name: 'example-app',
+ dependencies: {
+ 'detected-plugin': '0.0.0',
+ 'detected-module': '0.0.0',
+ },
+ }),
+ },
+ [resolvePath(rootDir, 'node_modules/detected-plugin')]: {
+ 'package.json': JSON.stringify({
+ name: 'detected-plugin',
+ main: 'index.js',
+ backstage: {
+ role: 'backend-plugin',
+ },
+ }),
+ 'index.js': `
+ const { createBackendPlugin, coreServices } = require('@backstage/backend-plugin-api');
+ exports.detectedPlugin = createBackendPlugin({
+ pluginId: 'detected',
+ register(env) {
+ env.registerInit({
+ deps: { identity: coreServices.identity },
+ async init({ identity }) {
+ identity.getIdentity('detected-plugin');
+ },
+ });
+ },
+ });
+ `,
+ },
+ [resolvePath(rootDir, 'node_modules/detected-module')]: {
+ 'package.json': JSON.stringify({
+ name: 'detected-module',
+ main: 'index.js',
+ backstage: {
+ role: 'backend-module',
+ },
+ }),
+ 'index.js': `
+ const { createBackendModule, coreServices } = require('@backstage/backend-plugin-api');
+ exports.detectedModuleDerp = createBackendModule({
+ pluginId: 'detected',
+ moduleId: 'derp',
+ register(env) {
+ env.registerInit({
+ deps: { identity: coreServices.identity },
+ async init({ identity }) {
+ identity.getIdentity('detected-module');
+ },
+ });
+ },
+ });
+ `,
+ },
+ });
+ });
+
+ afterEach(() => {
+ mockFs.restore();
+ });
+
+ it('should detect plugin and module packages', async () => {
+ const fn = jest.fn().mockResolvedValue({});
+
+ await startTestBackend({
+ services: [
+ createServiceFactory({
+ service: coreServices.identity,
+ deps: {},
+ factory: () => ({ getIdentity: fn }),
+ }),
+ featureDiscoveryServiceFactory(),
+ mockServices.rootConfig.factory({
+ data: { backend: { packages: 'all' } },
+ }),
+ ],
+ });
+
+ expect(fn).toHaveBeenCalledWith('detected-plugin');
+ expect(fn).toHaveBeenCalledWith('detected-module');
+ });
+});
diff --git a/packages/backend-app-api/src/alpha/featureDiscoveryServiceFactory.ts b/packages/backend-app-api/src/alpha/featureDiscoveryServiceFactory.ts
new file mode 100644
index 0000000000..f9ee7edc5f
--- /dev/null
+++ b/packages/backend-app-api/src/alpha/featureDiscoveryServiceFactory.ts
@@ -0,0 +1,129 @@
+/*
+ * Copyright 2023 The 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 {
+ BackendFeature,
+ RootConfigService,
+ coreServices,
+ createServiceFactory,
+} from '@backstage/backend-plugin-api';
+import {
+ featureDiscoveryServiceRef,
+ FeatureDiscoveryService,
+} from '@backstage/backend-plugin-api/alpha';
+import { resolve as resolvePath, dirname } from 'path';
+import fs from 'fs-extra';
+import { BackstagePackageJson } from '@backstage/cli-node';
+
+const LOADED_PACKAGE_ROLES = ['backend-plugin', 'backend-module'];
+
+/** @internal */
+async function findClosestPackageDir(
+ searchDir: string,
+): Promise {
+ let path = searchDir;
+
+ // Some confidence check to avoid infinite loop
+ for (let i = 0; i < 1000; i++) {
+ const packagePath = resolvePath(path, 'package.json');
+ const exists = await fs.pathExists(packagePath);
+ if (exists) {
+ return path;
+ }
+
+ const newPath = dirname(path);
+ if (newPath === path) {
+ return undefined;
+ }
+ path = newPath;
+ }
+
+ throw new Error(
+ `Iteration limit reached when searching for root package.json at ${searchDir}`,
+ );
+}
+
+/** @internal */
+class PackageDiscoveryService implements FeatureDiscoveryService {
+ constructor(private readonly config: RootConfigService) {}
+
+ async getBackendFeatures(): Promise<{ features: Array }> {
+ if (this.config.getOptionalString('backend.packages') !== 'all') {
+ return { features: [] };
+ }
+
+ const packageDir = await findClosestPackageDir(process.argv[1]);
+ if (!packageDir) {
+ throw new Error('Package discovery failed to find package.json');
+ }
+ const { dependencies } = require(resolvePath(
+ packageDir,
+ 'package.json',
+ )) as BackstagePackageJson;
+ const dependencyNames = Object.keys(dependencies || {});
+
+ const features: BackendFeature[] = [];
+
+ for (const name of dependencyNames) {
+ const depPkg = require(require.resolve(`${name}/package.json`, {
+ paths: [packageDir],
+ })) as BackstagePackageJson;
+ if (!LOADED_PACKAGE_ROLES.includes(depPkg?.backstage?.role ?? '')) {
+ continue;
+ }
+ const depModule = require(require.resolve(name, { paths: [packageDir] }));
+ for (const exportValue of Object.values(depModule)) {
+ if (isBackendFeature(exportValue)) {
+ features.push(exportValue);
+ }
+ if (isBackendFeatureFactory(exportValue)) {
+ features.push(exportValue());
+ }
+ }
+ }
+
+ return { features };
+ }
+}
+
+/** @alpha */
+export const featureDiscoveryServiceFactory = createServiceFactory({
+ service: featureDiscoveryServiceRef,
+ deps: {
+ config: coreServices.rootConfig,
+ },
+ factory({ config }) {
+ return new PackageDiscoveryService(config);
+ },
+});
+
+function isBackendFeature(value: unknown): value is BackendFeature {
+ return (
+ !!value &&
+ typeof value === 'object' &&
+ (value as BackendFeature).$$type === '@backstage/BackendFeature'
+ );
+}
+
+function isBackendFeatureFactory(
+ value: unknown,
+): value is () => BackendFeature {
+ return (
+ !!value &&
+ typeof value === 'function' &&
+ (value as any).$$type === '@backstage/BackendFeatureFactory'
+ );
+}
diff --git a/packages/backend-app-api/src/config/ObservableConfigProxy.ts b/packages/backend-app-api/src/config/ObservableConfigProxy.ts
index dd3334c9a5..8c8d3b553f 100644
--- a/packages/backend-app-api/src/config/ObservableConfigProxy.ts
+++ b/packages/backend-app-api/src/config/ObservableConfigProxy.ts
@@ -14,12 +14,11 @@
* limitations under the License.
*/
-import { ConfigService } from '@backstage/backend-plugin-api';
-import { ConfigReader } from '@backstage/config';
+import { Config, ConfigReader } from '@backstage/config';
import { JsonValue } from '@backstage/types';
-export class ObservableConfigProxy implements ConfigService {
- private config: ConfigService = new ConfigReader({});
+export class ObservableConfigProxy implements Config {
+ private config: Config = new ConfigReader({});
private readonly subscribers: (() => void)[] = [];
@@ -32,7 +31,7 @@ export class ObservableConfigProxy implements ConfigService {
}
}
- setConfig(config: ConfigService) {
+ setConfig(config: Config) {
if (this.parent) {
throw new Error('immutable');
}
@@ -62,9 +61,9 @@ export class ObservableConfigProxy implements ConfigService {
};
}
- private select(required: true): ConfigService;
- private select(required: false): ConfigService | undefined;
- private select(required: boolean): ConfigService | undefined {
+ private select(required: true): Config;
+ private select(required: false): Config | undefined;
+ private select(required: boolean): Config | undefined {
if (this.parent && this.parentKey) {
if (required) {
return this.parent.select(true).getConfig(this.parentKey);
@@ -87,19 +86,19 @@ export class ObservableConfigProxy implements ConfigService {
getOptional(key?: string): T | undefined {
return this.select(false)?.getOptional(key);
}
- getConfig(key: string): ConfigService {
+ getConfig(key: string): Config {
return new ObservableConfigProxy(this, key);
}
- getOptionalConfig(key: string): ConfigService | undefined {
+ getOptionalConfig(key: string): Config | undefined {
if (this.select(false)?.has(key)) {
return new ObservableConfigProxy(this, key);
}
return undefined;
}
- getConfigArray(key: string): ConfigService[] {
+ getConfigArray(key: string): Config[] {
return this.select(true).getConfigArray(key);
}
- getOptionalConfigArray(key: string): ConfigService[] | undefined {
+ getOptionalConfigArray(key: string): Config[] | undefined {
return this.select(false)?.getOptionalConfigArray(key);
}
getNumber(key: string): number {
diff --git a/packages/backend-app-api/src/http/MiddlewareFactory.ts b/packages/backend-app-api/src/http/MiddlewareFactory.ts
index 774e784d1d..bd78d77045 100644
--- a/packages/backend-app-api/src/http/MiddlewareFactory.ts
+++ b/packages/backend-app-api/src/http/MiddlewareFactory.ts
@@ -14,7 +14,10 @@
* limitations under the License.
*/
-import { ConfigService, LoggerService } from '@backstage/backend-plugin-api';
+import {
+ RootConfigService,
+ LoggerService,
+} from '@backstage/backend-plugin-api';
import {
Request,
Response,
@@ -47,7 +50,7 @@ import { NotImplementedError } from '@backstage/errors';
* @public
*/
export interface MiddlewareFactoryOptions {
- config: ConfigService;
+ config: RootConfigService;
logger: LoggerService;
}
@@ -78,7 +81,7 @@ export interface MiddlewareFactoryErrorOptions {
* @public
*/
export class MiddlewareFactory {
- #config: ConfigService;
+ #config: RootConfigService;
#logger: LoggerService;
/**
diff --git a/packages/backend-app-api/src/services/implementations/cache/cacheServiceFactory.ts b/packages/backend-app-api/src/services/implementations/cache/cacheServiceFactory.ts
index 2208249280..b91356a13a 100644
--- a/packages/backend-app-api/src/services/implementations/cache/cacheServiceFactory.ts
+++ b/packages/backend-app-api/src/services/implementations/cache/cacheServiceFactory.ts
@@ -24,7 +24,7 @@ import {
export const cacheServiceFactory = createServiceFactory({
service: coreServices.cache,
deps: {
- config: coreServices.config,
+ config: coreServices.rootConfig,
plugin: coreServices.pluginMetadata,
},
async createRootContext({ config }) {
diff --git a/packages/backend-app-api/src/services/implementations/config/index.ts b/packages/backend-app-api/src/services/implementations/config/index.ts
index 690f1e2d36..1775ef2efc 100644
--- a/packages/backend-app-api/src/services/implementations/config/index.ts
+++ b/packages/backend-app-api/src/services/implementations/config/index.ts
@@ -14,5 +14,5 @@
* limitations under the License.
*/
-export { configServiceFactory } from './configServiceFactory';
-export type { ConfigFactoryOptions } from './configServiceFactory';
+export { rootConfigServiceFactory } from './rootConfigServiceFactory';
+export type { RootConfigFactoryOptions } from './rootConfigServiceFactory';
diff --git a/packages/backend-app-api/src/services/implementations/config/configServiceFactory.ts b/packages/backend-app-api/src/services/implementations/config/rootConfigServiceFactory.ts
similarity index 87%
rename from packages/backend-app-api/src/services/implementations/config/configServiceFactory.ts
rename to packages/backend-app-api/src/services/implementations/config/rootConfigServiceFactory.ts
index d3b29ce545..1fa8d792ad 100644
--- a/packages/backend-app-api/src/services/implementations/config/configServiceFactory.ts
+++ b/packages/backend-app-api/src/services/implementations/config/rootConfigServiceFactory.ts
@@ -24,7 +24,7 @@ import {
} from '@backstage/config-loader';
/** @public */
-export interface ConfigFactoryOptions {
+export interface RootConfigFactoryOptions {
/**
* Process arguments to use instead of the default `process.argv()`.
*/
@@ -37,9 +37,9 @@ export interface ConfigFactoryOptions {
}
/** @public */
-export const configServiceFactory = createServiceFactory(
- (options?: ConfigFactoryOptions) => ({
- service: coreServices.config,
+export const rootConfigServiceFactory = createServiceFactory(
+ (options?: RootConfigFactoryOptions) => ({
+ service: coreServices.rootConfig,
deps: {},
async factory() {
const source = ConfigSources.default({
diff --git a/packages/backend-app-api/src/services/implementations/database/databaseServiceFactory.ts b/packages/backend-app-api/src/services/implementations/database/databaseServiceFactory.ts
index 05e2f1deb9..139609b6c1 100644
--- a/packages/backend-app-api/src/services/implementations/database/databaseServiceFactory.ts
+++ b/packages/backend-app-api/src/services/implementations/database/databaseServiceFactory.ts
@@ -25,7 +25,7 @@ import { ConfigReader } from '@backstage/config';
export const databaseServiceFactory = createServiceFactory({
service: coreServices.database,
deps: {
- config: coreServices.config,
+ config: coreServices.rootConfig,
lifecycle: coreServices.lifecycle,
pluginMetadata: coreServices.pluginMetadata,
},
diff --git a/packages/backend-app-api/src/services/implementations/discovery/discoveryServiceFactory.ts b/packages/backend-app-api/src/services/implementations/discovery/discoveryServiceFactory.ts
index 7e2bb6b21e..6bdc4b4856 100644
--- a/packages/backend-app-api/src/services/implementations/discovery/discoveryServiceFactory.ts
+++ b/packages/backend-app-api/src/services/implementations/discovery/discoveryServiceFactory.ts
@@ -24,7 +24,7 @@ import {
export const discoveryServiceFactory = createServiceFactory({
service: coreServices.discovery,
deps: {
- config: coreServices.config,
+ config: coreServices.rootConfig,
},
async factory({ config }) {
return HostDiscovery.fromConfig(config);
diff --git a/packages/backend-app-api/src/services/implementations/permissions/permissionsServiceFactory.ts b/packages/backend-app-api/src/services/implementations/permissions/permissionsServiceFactory.ts
index 38cba73eda..3e5b7da9dd 100644
--- a/packages/backend-app-api/src/services/implementations/permissions/permissionsServiceFactory.ts
+++ b/packages/backend-app-api/src/services/implementations/permissions/permissionsServiceFactory.ts
@@ -24,7 +24,7 @@ import { ServerPermissionClient } from '@backstage/plugin-permission-node';
export const permissionsServiceFactory = createServiceFactory({
service: coreServices.permissions,
deps: {
- config: coreServices.config,
+ config: coreServices.rootConfig,
discovery: coreServices.discovery,
tokenManager: coreServices.tokenManager,
},
diff --git a/packages/backend-app-api/src/services/implementations/rootHttpRouter/rootHttpRouterServiceFactory.ts b/packages/backend-app-api/src/services/implementations/rootHttpRouter/rootHttpRouterServiceFactory.ts
index 5eaf8aa152..4c410e25ea 100644
--- a/packages/backend-app-api/src/services/implementations/rootHttpRouter/rootHttpRouterServiceFactory.ts
+++ b/packages/backend-app-api/src/services/implementations/rootHttpRouter/rootHttpRouterServiceFactory.ts
@@ -15,7 +15,7 @@
*/
import {
- ConfigService,
+ RootConfigService,
coreServices,
createServiceFactory,
LifecycleService,
@@ -36,7 +36,7 @@ export interface RootHttpRouterConfigureContext {
app: Express;
middleware: MiddlewareFactory;
routes: RequestHandler;
- config: ConfigService;
+ config: RootConfigService;
logger: LoggerService;
lifecycle: LifecycleService;
}
@@ -70,7 +70,7 @@ export const rootHttpRouterServiceFactory = createServiceFactory(
(options?: RootHttpRouterFactoryOptions) => ({
service: coreServices.rootHttpRouter,
deps: {
- config: coreServices.config,
+ config: coreServices.rootConfig,
rootLogger: coreServices.rootLogger,
lifecycle: coreServices.rootLifecycle,
},
diff --git a/packages/backend-app-api/src/services/implementations/rootLogger/rootLoggerServiceFactory.ts b/packages/backend-app-api/src/services/implementations/rootLogger/rootLoggerServiceFactory.ts
index 11bbd58050..bd45df383f 100644
--- a/packages/backend-app-api/src/services/implementations/rootLogger/rootLoggerServiceFactory.ts
+++ b/packages/backend-app-api/src/services/implementations/rootLogger/rootLoggerServiceFactory.ts
@@ -26,7 +26,7 @@ import { createConfigSecretEnumerator } from '../../../config';
export const rootLoggerServiceFactory = createServiceFactory({
service: coreServices.rootLogger,
deps: {
- config: coreServices.config,
+ config: coreServices.rootConfig,
},
async factory({ config }) {
const logger = WinstonLogger.create({
diff --git a/packages/backend-app-api/src/services/implementations/tokenManager/tokenManagerServiceFactory.ts b/packages/backend-app-api/src/services/implementations/tokenManager/tokenManagerServiceFactory.ts
index b3726176b6..7417c18e23 100644
--- a/packages/backend-app-api/src/services/implementations/tokenManager/tokenManagerServiceFactory.ts
+++ b/packages/backend-app-api/src/services/implementations/tokenManager/tokenManagerServiceFactory.ts
@@ -24,7 +24,7 @@ import { ServerTokenManager } from '@backstage/backend-common';
export const tokenManagerServiceFactory = createServiceFactory({
service: coreServices.tokenManager,
deps: {
- config: coreServices.config,
+ config: coreServices.rootConfig,
logger: coreServices.rootLogger,
},
createRootContext({ config, logger }) {
diff --git a/packages/backend-app-api/src/services/implementations/urlReader/urlReaderServiceFactory.ts b/packages/backend-app-api/src/services/implementations/urlReader/urlReaderServiceFactory.ts
index 83e594aa0b..6da71ac0fc 100644
--- a/packages/backend-app-api/src/services/implementations/urlReader/urlReaderServiceFactory.ts
+++ b/packages/backend-app-api/src/services/implementations/urlReader/urlReaderServiceFactory.ts
@@ -24,7 +24,7 @@ import {
export const urlReaderServiceFactory = createServiceFactory({
service: coreServices.urlReader,
deps: {
- config: coreServices.config,
+ config: coreServices.rootConfig,
logger: coreServices.logger,
},
async factory({ config, logger }) {
diff --git a/packages/backend-app-api/src/wiring/BackendInitializer.ts b/packages/backend-app-api/src/wiring/BackendInitializer.ts
index 8c2b75e887..6bc4e995e2 100644
--- a/packages/backend-app-api/src/wiring/BackendInitializer.ts
+++ b/packages/backend-app-api/src/wiring/BackendInitializer.ts
@@ -27,6 +27,7 @@ import { EnumerableServiceHolder, ServiceOrExtensionPoint } from './types';
// eslint-disable-next-line @backstage/no-forbidden-package-imports
import { InternalBackendFeature } from '@backstage/backend-plugin-api/src/wiring/types';
import { ForwardedError } from '@backstage/errors';
+import { featureDiscoveryServiceRef } from '@backstage/backend-plugin-api/alpha';
export interface BackendRegisterInit {
consumes: Set;
@@ -87,6 +88,10 @@ export class BackendInitializer {
if (this.#startPromise) {
throw new Error('feature can not be added after the backend has started');
}
+ this.#addFeature(feature);
+ }
+
+ #addFeature(feature: BackendFeature) {
if (feature.$$type !== '@backstage/BackendFeature') {
throw new Error(
`Failed to add feature, invalid type '${feature.$$type}'`,
@@ -129,6 +134,18 @@ export class BackendInitializer {
}
async #doStart(): Promise {
+ const featureDiscovery = await this.#serviceHolder.get(
+ featureDiscoveryServiceRef,
+ 'root',
+ );
+
+ if (featureDiscovery) {
+ const { features } = await featureDiscovery.getBackendFeatures();
+ for (const feature of features) {
+ this.#addFeature(feature);
+ }
+ }
+
// Initialize all root scoped services
for (const ref of this.#serviceHolder.getServiceRefs()) {
if (ref.scope === 'root') {
@@ -259,7 +276,12 @@ export class BackendInitializer {
if (!this.#startPromise) {
return;
}
- await this.#startPromise;
+
+ try {
+ await this.#startPromise;
+ } catch (error) {
+ // The startup failed, but we may still want to do cleanup so we continue silently
+ }
const lifecycleService = await this.#getRootLifecycleImpl();
await lifecycleService.shutdown();
diff --git a/packages/backend-common/CHANGELOG.md b/packages/backend-common/CHANGELOG.md
index 2977d54c01..c11acc0966 100644
--- a/packages/backend-common/CHANGELOG.md
+++ b/packages/backend-common/CHANGELOG.md
@@ -1,5 +1,32 @@
# @backstage/backend-common
+## 0.19.2-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-app-api@0.5.0-next.2
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/config-loader@1.4.0-next.1
+
+## 0.19.2-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 4b82382ed8c2: Fixed invalid configuration schema. The configuration schema may be more strict as a result.
+- Updated dependencies
+ - @backstage/config-loader@1.4.0-next.1
+ - @backstage/backend-app-api@0.5.0-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/integration-aws-node@0.1.5
+ - @backstage/backend-dev-utils@0.1.1
+ - @backstage/cli-common@0.1.12
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+
## 0.19.2-next.0
### Patch Changes
diff --git a/packages/backend-common/api-report.md b/packages/backend-common/api-report.md
index d40027cba9..fae3e2117d 100644
--- a/packages/backend-common/api-report.md
+++ b/packages/backend-common/api-report.md
@@ -18,7 +18,6 @@ import { CacheService as CacheClient } from '@backstage/backend-plugin-api';
import { CacheServiceOptions as CacheClientOptions } from '@backstage/backend-plugin-api';
import { CacheServiceSetOptions as CacheClientSetOptions } from '@backstage/backend-plugin-api';
import { Config } from '@backstage/config';
-import { ConfigService } from '@backstage/backend-plugin-api';
import cors from 'cors';
import Docker from 'dockerode';
import { ErrorRequestHandler } from 'express';
@@ -51,6 +50,7 @@ import { ReadTreeResponseFile } from '@backstage/backend-plugin-api';
import { ReadUrlOptions } from '@backstage/backend-plugin-api';
import { ReadUrlResponse } from '@backstage/backend-plugin-api';
import { RequestHandler } from 'express';
+import { RootConfigService } from '@backstage/backend-plugin-api';
import { Router } from 'express';
import { SchedulerService } from '@backstage/backend-plugin-api';
import { SearchOptions } from '@backstage/backend-plugin-api';
@@ -525,7 +525,7 @@ export const legacyPlugin: (
TransformedEnv<
{
cache: CacheClient;
- config: ConfigService;
+ config: RootConfigService;
database: PluginDatabaseManager;
discovery: PluginEndpointDiscovery;
logger: LoggerService;
diff --git a/packages/backend-common/config.d.ts b/packages/backend-common/config.d.ts
index 3fd886874e..e5b193c543 100644
--- a/packages/backend-common/config.d.ts
+++ b/packages/backend-common/config.d.ts
@@ -77,17 +77,17 @@ export interface Config {
*/
connection:
| string
- | Partial<{
+ | {
/**
* Password that belongs to the client User
* @visibility secret
*/
- password: string;
+ password?: string;
/**
* Other connection settings
*/
[key: string]: unknown;
- }>;
+ };
/** Database name prefix override */
prefix?: string;
/**
diff --git a/packages/backend-common/package.json b/packages/backend-common/package.json
index 6e561fa564..c8cb426eb3 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.19.2-next.0",
+ "version": "0.19.2-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"publishConfig": {
diff --git a/packages/backend-common/src/legacy.ts b/packages/backend-common/src/legacy.ts
index 408966f3bc..df1030e6b6 100644
--- a/packages/backend-common/src/legacy.ts
+++ b/packages/backend-common/src/legacy.ts
@@ -108,7 +108,7 @@ export function makeLegacyPlugin<
export const legacyPlugin = makeLegacyPlugin(
{
cache: coreServices.cache,
- config: coreServices.config,
+ config: coreServices.rootConfig,
database: coreServices.database,
discovery: coreServices.discovery,
logger: coreServices.logger,
diff --git a/packages/backend-defaults/CHANGELOG.md b/packages/backend-defaults/CHANGELOG.md
index 1ff580965f..ceb931df2a 100644
--- a/packages/backend-defaults/CHANGELOG.md
+++ b/packages/backend-defaults/CHANGELOG.md
@@ -1,5 +1,28 @@
# @backstage/backend-defaults
+## 0.2.0-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-app-api@0.5.0-next.2
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+
+## 0.2.0-next.1
+
+### Minor Changes
+
+- d008aefef808: **BREAKING**: Removing shared environments concept from the new experimental backend system.
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/backend-app-api@0.5.0-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+
## 0.1.13-next.0
### Patch Changes
diff --git a/packages/backend-defaults/api-report.md b/packages/backend-defaults/api-report.md
index 07218f610e..6cc58de663 100644
--- a/packages/backend-defaults/api-report.md
+++ b/packages/backend-defaults/api-report.md
@@ -5,15 +5,12 @@
```ts
import { Backend } from '@backstage/backend-app-api';
import { ServiceFactoryOrFunction } from '@backstage/backend-plugin-api';
-import { SharedBackendEnvironment } from '@backstage/backend-plugin-api';
// @public (undocumented)
export function createBackend(options?: CreateBackendOptions): Backend;
// @public (undocumented)
export interface CreateBackendOptions {
- // (undocumented)
- env?: SharedBackendEnvironment;
// (undocumented)
services?: ServiceFactoryOrFunction[];
}
diff --git a/packages/backend-defaults/package.json b/packages/backend-defaults/package.json
index 318b00c7f2..84e1d5c665 100644
--- a/packages/backend-defaults/package.json
+++ b/packages/backend-defaults/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/backend-defaults",
"description": "Backend defaults used by Backstage backend apps",
- "version": "0.1.13-next.0",
+ "version": "0.2.0-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"publishConfig": {
diff --git a/packages/backend-defaults/src/CreateBackend.test.ts b/packages/backend-defaults/src/CreateBackend.test.ts
index 946de90b2b..de04d4e350 100644
--- a/packages/backend-defaults/src/CreateBackend.test.ts
+++ b/packages/backend-defaults/src/CreateBackend.test.ts
@@ -16,17 +16,10 @@
import {
coreServices,
- createBackendPlugin,
createServiceFactory,
- createServiceRef,
- createSharedEnvironment,
} from '@backstage/backend-plugin-api';
-import { mockServices } from '@backstage/backend-test-utils';
import { createBackend } from './CreateBackend';
-const fooServiceRef = createServiceRef({ id: 'foo', scope: 'root' });
-const barServiceRef = createServiceRef({ id: 'bar', scope: 'root' });
-
describe('createBackend', () => {
it('should not throw when overriding a default service implementation', () => {
expect(() =>
@@ -85,91 +78,4 @@ describe('createBackend', () => {
}),
).toThrow('The core.pluginMetadata service cannot be overridden');
});
-
- it('should throw if an unsupported InternalSharedEnvironment version is passed in', () => {
- expect(() =>
- createBackend({
- env: {} as any,
- }),
- ).toThrow(
- "Shared environment version 'undefined' is invalid or not supported",
- );
- expect(() =>
- createBackend({
- env: { version: {} } as any,
- }),
- ).toThrow(
- "Shared environment version '[object Object]' is invalid or not supported",
- );
- expect(() =>
- createBackend({
- env: { version: 'v2' } as any,
- }),
- ).toThrow("Shared environment version 'v2' is invalid or not supported");
- });
-
- it('should prioritize services correctly', async () => {
- const backend = createBackend({
- env: createSharedEnvironment({
- services: [
- createServiceFactory({
- service: coreServices.rootHttpRouter,
- deps: {},
- async factory() {
- return {
- use() {},
- };
- },
- }),
- mockServices.config.factory({
- data: { root: 'root-env' },
- }),
- createServiceFactory({
- service: fooServiceRef,
- deps: {},
- async factory() {
- return 'foo-env';
- },
- }),
- createServiceFactory({
- service: barServiceRef,
- deps: {},
- async factory() {
- return 'bar-env';
- },
- }),
- ],
- })(),
- services: [
- createServiceFactory({
- service: fooServiceRef,
- deps: {},
- factory: async () => 'foo-backend',
- }),
- ],
- });
-
- expect.assertions(3);
- backend.add(
- createBackendPlugin({
- pluginId: 'test',
- register(reg) {
- reg.registerInit({
- deps: {
- config: coreServices.config,
- foo: fooServiceRef,
- bar: barServiceRef,
- },
- async init({ config, foo, bar }) {
- expect(config.get('root')).toBe('root-env');
- expect(foo).toBe('foo-backend');
- expect(bar).toBe('bar-env');
- },
- });
- },
- })(),
- );
-
- await backend.start();
- });
});
diff --git a/packages/backend-defaults/src/CreateBackend.ts b/packages/backend-defaults/src/CreateBackend.ts
index 480f365216..3db013a290 100644
--- a/packages/backend-defaults/src/CreateBackend.ts
+++ b/packages/backend-defaults/src/CreateBackend.ts
@@ -17,7 +17,7 @@
import {
Backend,
cacheServiceFactory,
- configServiceFactory,
+ rootConfigServiceFactory,
createSpecializedBackend,
databaseServiceFactory,
discoveryServiceFactory,
@@ -36,16 +36,11 @@ import {
import {
ServiceFactory,
ServiceFactoryOrFunction,
- SharedBackendEnvironment,
} from '@backstage/backend-plugin-api';
-// Internal import of the type to avoid needing to export this.
-// eslint-disable-next-line @backstage/no-forbidden-package-imports
-import type { InternalSharedBackendEnvironment } from '@backstage/backend-plugin-api/src/wiring/createSharedEnvironment';
-
export const defaultServiceFactories = [
cacheServiceFactory(),
- configServiceFactory(),
+ rootConfigServiceFactory(),
databaseServiceFactory(),
discoveryServiceFactory(),
httpRouterServiceFactory(),
@@ -65,7 +60,6 @@ export const defaultServiceFactories = [
* @public
*/
export interface CreateBackendOptions {
- env?: SharedBackendEnvironment;
services?: ServiceFactoryOrFunction[];
}
@@ -81,22 +75,6 @@ export function createBackend(options?: CreateBackendOptions): Backend {
);
services.push(...providedServices);
- // Middle priority: Services from the shared environment
- if (options?.env) {
- const env = options.env as unknown as InternalSharedBackendEnvironment;
- if (env.version !== 'v1') {
- throw new Error(
- `Shared environment version '${env.version}' is invalid or not supported`,
- );
- }
-
- const environmentServices =
- env.services?.filter(
- sf => !services.some(({ service }) => sf.service.id === service.id),
- ) ?? [];
- services.push(...environmentServices);
- }
-
// Lowest priority: Default services that are not already provided by environment or directly to createBackend
const defaultServices = defaultServiceFactories.filter(
sf => !services.some(({ service }) => service.id === sf.service.id),
diff --git a/packages/backend-next/.snyk b/packages/backend-next/.snyk
new file mode 100644
index 0000000000..ea5abd653d
--- /dev/null
+++ b/packages/backend-next/.snyk
@@ -0,0 +1,10 @@
+# Snyk (https://snyk.io) policy file, patches or ignores known vulnerabilities.
+version: v1.22.1
+# ignores vulnerabilities until expiry date; change duration by modifying expiry date
+ignore:
+ SNYK-JS-ISOLATEDVM-3037320:
+ - '*':
+ reason: We do not pass any V8 cache data, and are therefore unaffected by this vulnerability
+ expires: 2033-07-02T16:55:57.077Z
+ created: 2023-07-02T16:55:57.077Z
+patch: {}
diff --git a/packages/backend-next/CHANGELOG.md b/packages/backend-next/CHANGELOG.md
index 9a9be3b3e2..df26f26f50 100644
--- a/packages/backend-next/CHANGELOG.md
+++ b/packages/backend-next/CHANGELOG.md
@@ -1,5 +1,68 @@
# example-backend-next
+## 0.0.14-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-search-backend-module-techdocs@0.1.4-next.2
+ - @backstage/plugin-search-backend-module-catalog@0.1.4-next.2
+ - @backstage/plugin-search-backend-module-explore@0.1.4-next.2
+ - @backstage/plugin-scaffolder-backend@1.15.2-next.2
+ - @backstage/plugin-catalog-backend@1.12.0-next.2
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/plugin-proxy-backend@0.3.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/plugin-app-backend@0.3.48-next.2
+ - @backstage/plugin-linguist-backend@0.4.0-next.2
+ - @backstage/plugin-techdocs-backend@1.6.5-next.2
+ - @backstage/backend-defaults@0.2.0-next.2
+ - @backstage/plugin-adr-backend@0.3.6-next.2
+ - @backstage/plugin-azure-devops-backend@0.3.27-next.2
+ - @backstage/plugin-badges-backend@0.2.3-next.2
+ - @backstage/plugin-catalog-backend-module-unprocessed@0.2.0-next.2
+ - @backstage/plugin-devtools-backend@0.1.3-next.2
+ - @backstage/plugin-entity-feedback-backend@0.1.6-next.2
+ - @backstage/plugin-kubernetes-backend@0.11.3-next.2
+ - @backstage/plugin-lighthouse-backend@0.2.4-next.2
+ - @backstage/plugin-permission-backend@0.5.23-next.2
+ - @backstage/plugin-permission-node@0.7.11-next.2
+ - @backstage/plugin-search-backend@1.4.0-next.2
+ - @backstage/plugin-search-backend-node@1.2.4-next.2
+ - @backstage/plugin-todo-backend@0.2.0-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+
+## 0.0.14-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-search-backend-module-techdocs@0.1.4-next.1
+ - @backstage/plugin-search-backend-module-catalog@0.1.4-next.1
+ - @backstage/plugin-search-backend-module-explore@0.1.4-next.1
+ - @backstage/plugin-azure-devops-backend@0.3.27-next.1
+ - @backstage/plugin-kubernetes-backend@0.11.3-next.1
+ - @backstage/plugin-lighthouse-backend@0.2.4-next.1
+ - @backstage/plugin-permission-backend@0.5.23-next.1
+ - @backstage/plugin-scaffolder-backend@1.15.2-next.1
+ - @backstage/backend-defaults@0.2.0-next.1
+ - @backstage/plugin-devtools-backend@0.1.3-next.1
+ - @backstage/plugin-techdocs-backend@1.6.5-next.1
+ - @backstage/plugin-catalog-backend@1.12.0-next.1
+ - @backstage/plugin-badges-backend@0.2.3-next.1
+ - @backstage/plugin-search-backend@1.4.0-next.1
+ - @backstage/plugin-todo-backend@0.2.0-next.1
+ - @backstage/plugin-app-backend@0.3.48-next.1
+ - @backstage/plugin-catalog-backend-module-unprocessed@0.2.0-next.1
+ - @backstage/plugin-entity-feedback-backend@0.1.6-next.1
+ - @backstage/plugin-search-backend-node@1.2.4-next.1
+ - @backstage/plugin-linguist-backend@0.3.2-next.1
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/plugin-adr-backend@0.3.6-next.1
+ - @backstage/plugin-permission-node@0.7.11-next.1
+ - @backstage/plugin-permission-common@0.7.7
+
## 0.0.14-next.0
### Patch Changes
diff --git a/packages/backend-next/package.json b/packages/backend-next/package.json
index 3043a96ebd..8548294398 100644
--- a/packages/backend-next/package.json
+++ b/packages/backend-next/package.json
@@ -1,6 +1,6 @@
{
"name": "example-backend-next",
- "version": "0.0.14-next.0",
+ "version": "0.0.14-next.2",
"main": "dist/index.cjs.js",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -26,6 +26,7 @@
},
"dependencies": {
"@backstage/backend-defaults": "workspace:^",
+ "@backstage/backend-plugin-api": "workspace:^",
"@backstage/backend-tasks": "workspace:^",
"@backstage/plugin-adr-backend": "workspace:^",
"@backstage/plugin-app-backend": "workspace:^",
@@ -42,6 +43,7 @@
"@backstage/plugin-permission-backend": "workspace:^",
"@backstage/plugin-permission-common": "workspace:^",
"@backstage/plugin-permission-node": "workspace:^",
+ "@backstage/plugin-proxy-backend": "workspace:^",
"@backstage/plugin-scaffolder-backend": "workspace:^",
"@backstage/plugin-search-backend": "workspace:^",
"@backstage/plugin-search-backend-module-catalog": "workspace:^",
diff --git a/packages/backend-next/src/index.ts b/packages/backend-next/src/index.ts
index fa7561e211..bbb7290c73 100644
--- a/packages/backend-next/src/index.ts
+++ b/packages/backend-next/src/index.ts
@@ -39,10 +39,11 @@ import { devtoolsPlugin } from '@backstage/plugin-devtools-backend';
import { TaskScheduleDefinition } from '@backstage/backend-tasks';
import { adrPlugin } from '@backstage/plugin-adr-backend';
import { lighthousePlugin } from '@backstage/plugin-lighthouse-backend';
+import { proxyPlugin } from '@backstage/plugin-proxy-backend';
const backend = createBackend();
-backend.add(appPlugin({ appPackageName: 'example-app' }));
+backend.add(appPlugin());
// Badges
backend.add(badgesPlugin());
@@ -98,6 +99,9 @@ backend.add(kubernetesPlugin());
// Lighthouse
backend.add(lighthousePlugin());
+// Proxy
+backend.add(proxyPlugin());
+
// Permissions
backend.add(permissionPlugin());
backend.add(permissionModuleAllowAllPolicy());
diff --git a/packages/backend-openapi-utils/CHANGELOG.md b/packages/backend-openapi-utils/CHANGELOG.md
index bd1d7f380a..3eb95afe95 100644
--- a/packages/backend-openapi-utils/CHANGELOG.md
+++ b/packages/backend-openapi-utils/CHANGELOG.md
@@ -1,5 +1,13 @@
# @backstage/backend-openapi-utils
+## 0.0.3-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/errors@1.2.1
+
## 0.0.3-next.0
### Patch Changes
diff --git a/packages/backend-openapi-utils/package.json b/packages/backend-openapi-utils/package.json
index 85a1677adb..9123d6dd77 100644
--- a/packages/backend-openapi-utils/package.json
+++ b/packages/backend-openapi-utils/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/backend-openapi-utils",
"description": "OpenAPI typescript support.",
- "version": "0.0.3-next.0",
+ "version": "0.0.3-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -11,6 +11,12 @@
"module": "dist/index.esm.js",
"types": "dist/index.d.ts"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "packages/backend-openapi-utils"
+ },
"backstage": {
"role": "node-library"
},
diff --git a/packages/backend-plugin-api/CHANGELOG.md b/packages/backend-plugin-api/CHANGELOG.md
index a77cdb71eb..4e64cca8ee 100644
--- a/packages/backend-plugin-api/CHANGELOG.md
+++ b/packages/backend-plugin-api/CHANGELOG.md
@@ -1,5 +1,30 @@
# @backstage/backend-plugin-api
+## 0.6.0-next.2
+
+### Patch Changes
+
+- cc9256a33bcc: Added new experimental `featureDiscoveryServiceRef`, available as an `/alpha` export.
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+
+## 0.6.0-next.1
+
+### Minor Changes
+
+- 629cbd194a87: **BREAKING**: Renamed `coreServices.config` to `coreServices.rootConfig`.
+- d008aefef808: **BREAKING**: Removing shared environments concept from the new experimental backend system.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/config@1.0.8
+ - @backstage/types@1.1.0
+ - @backstage/plugin-permission-common@0.7.7
+
## 0.5.5-next.0
### Patch Changes
diff --git a/packages/backend-plugin-api/alpha-api-report.md b/packages/backend-plugin-api/alpha-api-report.md
new file mode 100644
index 0000000000..81b378a671
--- /dev/null
+++ b/packages/backend-plugin-api/alpha-api-report.md
@@ -0,0 +1,24 @@
+## API Report File for "@backstage/backend-plugin-api"
+
+> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
+
+```ts
+import { BackendFeature } from '@backstage/backend-plugin-api';
+import { ServiceRef } from '@backstage/backend-plugin-api';
+
+// @alpha (undocumented)
+export interface FeatureDiscoveryService {
+ // (undocumented)
+ getBackendFeatures(): Promise<{
+ features: Array;
+ }>;
+}
+
+// @alpha
+export const featureDiscoveryServiceRef: ServiceRef<
+ FeatureDiscoveryService,
+ 'root'
+>;
+
+// (No @packageDocumentation comment for this package)
+```
diff --git a/packages/backend-plugin-api/api-report.md b/packages/backend-plugin-api/api-report.md
index b3cbef993c..a1ae6284c6 100644
--- a/packages/backend-plugin-api/api-report.md
+++ b/packages/backend-plugin-api/api-report.md
@@ -93,13 +93,10 @@ export type CacheServiceSetOptions = {
ttl?: number;
};
-// @public (undocumented)
-export interface ConfigService extends Config {}
-
// @public
export namespace coreServices {
const cache: ServiceRef;
- const config: ServiceRef;
+ const rootConfig: ServiceRef;
const database: ServiceRef;
const discovery: ServiceRef;
const httpRouter: ServiceRef;
@@ -222,15 +219,6 @@ export function createServiceRef(
config: ServiceRefConfig,
): ServiceRef;
-// @public
-export function createSharedEnvironment<
- TOptions extends [options?: object] = [],
->(
- config:
- | SharedBackendEnvironmentConfig
- | ((...params: TOptions) => SharedBackendEnvironmentConfig),
-): (...options: TOptions) => SharedBackendEnvironment;
-
// @public
export interface DatabaseService {
getClient(): Promise;
@@ -389,6 +377,9 @@ export type ReadUrlResponse = {
lastModifiedAt?: Date;
};
+// @public (undocumented)
+export interface RootConfigService extends Config {}
+
// @public (undocumented)
export interface RootHttpRouterService {
use(path: string, handler: Handler): void;
@@ -476,18 +467,6 @@ export interface ServiceRefConfig {
scope?: TScope;
}
-// @public
-export interface SharedBackendEnvironment {
- // (undocumented)
- $$type: '@backstage/SharedBackendEnvironment';
-}
-
-// @public
-export interface SharedBackendEnvironmentConfig {
- // (undocumented)
- services?: ServiceFactoryOrFunction[];
-}
-
// @public
export interface TokenManagerService {
authenticate(token: string): Promise;
diff --git a/packages/backend-plugin-api/package.json b/packages/backend-plugin-api/package.json
index 91936a4c16..86eb1135f4 100644
--- a/packages/backend-plugin-api/package.json
+++ b/packages/backend-plugin-api/package.json
@@ -1,17 +1,30 @@
{
"name": "@backstage/backend-plugin-api",
"description": "Core API used by Backstage backend plugins",
- "version": "0.5.5-next.0",
+ "version": "0.6.0-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"publishConfig": {
- "access": "public",
- "main": "dist/index.cjs.js",
- "types": "dist/index.d.ts"
+ "access": "public"
},
"backstage": {
"role": "node-library"
},
+ "exports": {
+ ".": "./src/index.ts",
+ "./alpha": "./src/alpha.ts",
+ "./package.json": "./package.json"
+ },
+ "typesVersions": {
+ "*": {
+ "alpha": [
+ "src/alpha.ts"
+ ],
+ "package.json": [
+ "package.json"
+ ]
+ }
+ },
"homepage": "https://backstage.io",
"repository": {
"type": "git",
diff --git a/packages/backend-plugin-api/src/alpha.ts b/packages/backend-plugin-api/src/alpha.ts
new file mode 100644
index 0000000000..baee739f49
--- /dev/null
+++ b/packages/backend-plugin-api/src/alpha.ts
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2023 The 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 {
+ BackendFeature,
+ createServiceRef,
+} from '@backstage/backend-plugin-api';
+
+/** @alpha */
+export interface FeatureDiscoveryService {
+ getBackendFeatures(): Promise<{ features: Array }>;
+}
+
+/**
+ * An optional service that can be used to dynamically load in additional BackendFeatures at runtime.
+ * @alpha
+ */
+export const featureDiscoveryServiceRef =
+ createServiceRef({
+ id: 'core.featureDiscovery',
+ scope: 'root',
+ });
diff --git a/packages/backend-plugin-api/src/services/definitions/ConfigService.ts b/packages/backend-plugin-api/src/services/definitions/RootConfigService.ts
similarity index 92%
rename from packages/backend-plugin-api/src/services/definitions/ConfigService.ts
rename to packages/backend-plugin-api/src/services/definitions/RootConfigService.ts
index db9aa88dda..02343e4ee8 100644
--- a/packages/backend-plugin-api/src/services/definitions/ConfigService.ts
+++ b/packages/backend-plugin-api/src/services/definitions/RootConfigService.ts
@@ -19,4 +19,4 @@ import { Config } from '@backstage/config';
/**
* @public
*/
-export interface ConfigService extends Config {}
+export interface RootConfigService extends Config {}
diff --git a/packages/backend-plugin-api/src/services/definitions/coreServices.ts b/packages/backend-plugin-api/src/services/definitions/coreServices.ts
index 7dad94cebf..b42795d052 100644
--- a/packages/backend-plugin-api/src/services/definitions/coreServices.ts
+++ b/packages/backend-plugin-api/src/services/definitions/coreServices.ts
@@ -32,13 +32,13 @@ export namespace coreServices {
});
/**
- * The service reference for the root scoped {@link ConfigService}.
+ * The service reference for the root scoped {@link RootConfigService}.
*
* @public
*/
- export const config = createServiceRef<
- import('./ConfigService').ConfigService
- >({ id: 'core.config', scope: 'root' });
+ export const rootConfig = createServiceRef<
+ import('./RootConfigService').RootConfigService
+ >({ id: 'core.rootConfig', scope: 'root' });
/**
* The service reference for the plugin scoped {@link DatabaseService}.
diff --git a/packages/backend-plugin-api/src/services/definitions/index.ts b/packages/backend-plugin-api/src/services/definitions/index.ts
index ab0f0b84b1..98be8211db 100644
--- a/packages/backend-plugin-api/src/services/definitions/index.ts
+++ b/packages/backend-plugin-api/src/services/definitions/index.ts
@@ -20,7 +20,7 @@ export type {
CacheServiceOptions,
CacheServiceSetOptions,
} from './CacheService';
-export type { ConfigService } from './ConfigService';
+export type { RootConfigService } from './RootConfigService';
export type { DatabaseService } from './DatabaseService';
export type { DiscoveryService } from './DiscoveryService';
export type { HttpRouterService } from './HttpRouterService';
diff --git a/packages/backend-plugin-api/src/wiring/createSharedEnvironment.test.ts b/packages/backend-plugin-api/src/wiring/createSharedEnvironment.test.ts
deleted file mode 100644
index 381a4799d2..0000000000
--- a/packages/backend-plugin-api/src/wiring/createSharedEnvironment.test.ts
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright 2023 The 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 {
- createServiceFactory,
- createServiceRef,
- ServiceFactoryOrFunction,
-} from '../services';
-import {
- createSharedEnvironment,
- InternalSharedBackendEnvironment,
-} from './createSharedEnvironment';
-
-const fooService = createServiceRef({ id: 'foo', scope: 'root' });
-const fooFactory = createServiceFactory({
- service: fooService,
- deps: {},
- async factory() {
- return 'foo';
- },
-});
-
-const barService = createServiceRef({ id: 'bar', scope: 'root' });
-const barFactory = createServiceFactory({
- service: barService,
- deps: {},
- async factory() {
- return 0xba5;
- },
-});
-
-describe('createSharedEnvironment', () => {
- it('should create an empty shared environment', () => {
- const env = createSharedEnvironment({});
- expect(env).toBeDefined();
- const internalEnv = env() as unknown as InternalSharedBackendEnvironment;
- expect(internalEnv).toEqual({
- $$type: '@backstage/SharedBackendEnvironment',
- version: 'v1',
- services: undefined,
- });
- });
-
- it('should create a shared environment with services', () => {
- const env = createSharedEnvironment({
- services: [fooFactory, barFactory()],
- });
- const internalEnv = env() as unknown as InternalSharedBackendEnvironment;
- expect(internalEnv.version).toBe('v1');
- expect(internalEnv.services?.length).toBe(2);
- expect(internalEnv.services?.[0]?.service.id).toBe('foo');
- expect(internalEnv.services?.[1]?.service.id).toBe('bar');
- });
-
- it('should create a shared environment with options', () => {
- const env = createSharedEnvironment((options?: { withFoo?: boolean }) => {
- const services = new Array();
- if (options?.withFoo) {
- services.push(fooFactory());
- }
- services.push(barFactory);
- return { services };
- });
- const internalEnv1 = env() as unknown as InternalSharedBackendEnvironment;
- expect(internalEnv1.version).toBe('v1');
- expect(internalEnv1.services?.length).toBe(1);
- expect(internalEnv1.services?.[0]?.service.id).toBe('bar');
-
- const internalEnv2 = env({
- withFoo: true,
- }) as unknown as InternalSharedBackendEnvironment;
- expect(internalEnv2.version).toBe('v1');
- expect(internalEnv2.services?.length).toBe(2);
- expect(internalEnv2.services?.[0]?.service.id).toBe('foo');
- expect(internalEnv2.services?.[1]?.service.id).toBe('bar');
- });
-
- it('should not allow duplicate service factories', () => {
- expect(() =>
- createSharedEnvironment({
- services: [fooFactory, fooFactory()],
- })(),
- ).toThrow(
- "Duplicate service implementations provided in shared environment for 'foo'",
- );
- });
-});
diff --git a/packages/backend-plugin-api/src/wiring/createSharedEnvironment.ts b/packages/backend-plugin-api/src/wiring/createSharedEnvironment.ts
deleted file mode 100644
index 57f0533523..0000000000
--- a/packages/backend-plugin-api/src/wiring/createSharedEnvironment.ts
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright 2023 The 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 { ServiceFactory, ServiceFactoryOrFunction } from '../services';
-
-/**
- * The configuration options passed to {@link createSharedEnvironment}.
- *
- * @public
- */
-export interface SharedBackendEnvironmentConfig {
- services?: ServiceFactoryOrFunction[];
-}
-
-/**
- * An opaque type that represents the contents of a shared backend environment.
- *
- * @public
- */
-export interface SharedBackendEnvironment {
- $$type: '@backstage/SharedBackendEnvironment';
-
- // NOTE: This type is opaque in order to allow for future API evolution without
- // cluttering the external API. For example we might want to add support
- // for more powerful callback based backend modifications.
- //
- // By making this opaque we also ensure that the type doesn't become an input
- // type that we need to care about, as it would otherwise be possible to pass
- // a custom environment definition to `createBackend`, which we don't want.
-}
-
-/**
- * This type is NOT supposed to be used by anyone except internally by the
- * backend-app-api package.
- *
- * @internal
- */
-export interface InternalSharedBackendEnvironment {
- version: 'v1';
- services?: ServiceFactory[];
-}
-
-/**
- * Creates a shared backend environment which can be used to create multiple
- * backends.
- *
- * @public
- */
-export function createSharedEnvironment<
- TOptions extends [options?: object] = [],
->(
- config:
- | SharedBackendEnvironmentConfig
- | ((...params: TOptions) => SharedBackendEnvironmentConfig),
-): (...options: TOptions) => SharedBackendEnvironment {
- const configCallback = typeof config === 'function' ? config : () => config;
-
- return (...options) => {
- const actualConfig = configCallback(...options);
- const services = actualConfig?.services?.map(sf =>
- typeof sf === 'function' ? sf() : sf,
- );
-
- const exists = new Set();
- const duplicates = new Set();
- for (const { service } of services ?? []) {
- if (exists.has(service.id)) {
- duplicates.add(service.id);
- } else {
- exists.add(service.id);
- }
- }
-
- if (duplicates.size > 0) {
- const dupStr = [...duplicates].map(id => `'${id}'`).join(', ');
- throw new Error(
- `Duplicate service implementations provided in shared environment for ${dupStr}`,
- );
- }
-
- // Here to ensure type safety in this internal implementation.
- const env: SharedBackendEnvironment & InternalSharedBackendEnvironment = {
- $$type: '@backstage/SharedBackendEnvironment',
- version: 'v1',
- services,
- };
- return env;
- };
-}
diff --git a/packages/backend-plugin-api/src/wiring/factories.ts b/packages/backend-plugin-api/src/wiring/factories.ts
index 928c933af0..ecaccdc6de 100644
--- a/packages/backend-plugin-api/src/wiring/factories.ts
+++ b/packages/backend-plugin-api/src/wiring/factories.ts
@@ -17,11 +17,11 @@
import {
BackendModuleRegistrationPoints,
BackendPluginRegistrationPoints,
- BackendFeature,
ExtensionPoint,
- InternalBackendFeature,
InternalBackendModuleRegistration,
InternalBackendPluginRegistration,
+ BackendFeatureFactory,
+ BackendFeature,
} from './types';
/**
@@ -89,7 +89,8 @@ export function createBackendPlugin(
config: BackendPluginConfig | ((...params: TOptions) => BackendPluginConfig),
): (...params: TOptions) => BackendFeature {
const configCallback = typeof config === 'function' ? config : () => config;
- return (...options: TOptions): InternalBackendFeature => {
+
+ const factory: BackendFeatureFactory = (...options) => {
const c = configCallback(...options);
let registrations: InternalBackendPluginRegistration[];
@@ -144,6 +145,9 @@ export function createBackendPlugin(
},
};
};
+ factory.$$type = '@backstage/BackendFeatureFactory';
+
+ return factory;
}
/**
@@ -178,7 +182,7 @@ export function createBackendModule(
config: BackendModuleConfig | ((...params: TOptions) => BackendModuleConfig),
): (...params: TOptions) => BackendFeature {
const configCallback = typeof config === 'function' ? config : () => config;
- return (...options: TOptions): InternalBackendFeature => {
+ const factory: BackendFeatureFactory = (...options: TOptions) => {
const c = configCallback(...options);
let registrations: InternalBackendModuleRegistration[];
@@ -223,4 +227,7 @@ export function createBackendModule(
},
};
};
+ factory.$$type = '@backstage/BackendFeatureFactory';
+
+ return factory;
}
diff --git a/packages/backend-plugin-api/src/wiring/index.ts b/packages/backend-plugin-api/src/wiring/index.ts
index 242301ea4d..9cb767b8ac 100644
--- a/packages/backend-plugin-api/src/wiring/index.ts
+++ b/packages/backend-plugin-api/src/wiring/index.ts
@@ -14,11 +14,6 @@
* limitations under the License.
*/
-export { createSharedEnvironment } from './createSharedEnvironment';
-export type {
- SharedBackendEnvironment,
- SharedBackendEnvironmentConfig,
-} from './createSharedEnvironment';
export type {
BackendModuleConfig,
BackendPluginConfig,
diff --git a/packages/backend-plugin-api/src/wiring/types.ts b/packages/backend-plugin-api/src/wiring/types.ts
index c81ee3ceb7..028c2b87da 100644
--- a/packages/backend-plugin-api/src/wiring/types.ts
+++ b/packages/backend-plugin-api/src/wiring/types.ts
@@ -67,6 +67,14 @@ export interface BackendModuleRegistrationPoints {
}): void;
}
+/** @internal */
+export interface BackendFeatureFactory<
+ TOptions extends [options?: object] = [],
+> {
+ (...options: TOptions): BackendFeature;
+ $$type: '@backstage/BackendFeatureFactory';
+}
+
/** @public */
export interface BackendFeature {
// NOTE: This type is opaque in order to simplify future API evolution.
diff --git a/packages/backend-tasks/CHANGELOG.md b/packages/backend-tasks/CHANGELOG.md
index ec1dd319ea..f2f558f084 100644
--- a/packages/backend-tasks/CHANGELOG.md
+++ b/packages/backend-tasks/CHANGELOG.md
@@ -1,5 +1,23 @@
# @backstage/backend-tasks
+## 0.5.5-next.2
+
+### Patch Changes
+
+- dfd1b6b2fc33: Make `readTaskScheduleDefinitionFromConfig` properly handle bad inputs
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.2
+
+## 0.5.5-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+
## 0.5.5-next.0
### Patch Changes
diff --git a/packages/backend-tasks/package.json b/packages/backend-tasks/package.json
index 4c0e4fd27e..aaba56f48e 100644
--- a/packages/backend-tasks/package.json
+++ b/packages/backend-tasks/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/backend-tasks",
"description": "Common distributed task management library for Backstage backends",
- "version": "0.5.5-next.0",
+ "version": "0.5.5-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"publishConfig": {
diff --git a/packages/backend-tasks/src/tasks/readTaskScheduleDefinitionFromConfig.test.ts b/packages/backend-tasks/src/tasks/readTaskScheduleDefinitionFromConfig.test.ts
index fc2a045614..21f51954b5 100644
--- a/packages/backend-tasks/src/tasks/readTaskScheduleDefinitionFromConfig.test.ts
+++ b/packages/backend-tasks/src/tasks/readTaskScheduleDefinitionFromConfig.test.ts
@@ -76,7 +76,7 @@ describe('readTaskScheduleDefinitionFromConfig', () => {
);
});
- it('invalid frequency value', () => {
+ it('invalid frequency key', () => {
const config = new ConfigReader({
frequency: {
invalid: 'value',
@@ -89,6 +89,19 @@ describe('readTaskScheduleDefinitionFromConfig', () => {
);
});
+ it('invalid frequency value', () => {
+ const config = new ConfigReader({
+ frequency: {
+ minutes: 'value',
+ },
+ timeout: 'PT3M',
+ });
+
+ expect(() => readTaskScheduleDefinitionFromConfig(config)).toThrow(
+ "Unable to convert config value for key 'frequency.minutes' in 'mock-config' to a number",
+ );
+ });
+
it('frequency value with additional invalid prop', () => {
const config = new ConfigReader({
frequency: {
diff --git a/packages/backend-tasks/src/tasks/readTaskScheduleDefinitionFromConfig.ts b/packages/backend-tasks/src/tasks/readTaskScheduleDefinitionFromConfig.ts
index 1448a328f8..b31cf68f74 100644
--- a/packages/backend-tasks/src/tasks/readTaskScheduleDefinitionFromConfig.ts
+++ b/packages/backend-tasks/src/tasks/readTaskScheduleDefinitionFromConfig.ts
@@ -15,7 +15,7 @@
*/
import { Config } from '@backstage/config';
-import { HumanDuration, JsonObject } from '@backstage/types';
+import { HumanDuration } from '@backstage/types';
import { TaskScheduleDefinition } from './types';
import { Duration } from 'luxon';
@@ -31,29 +31,48 @@ const propsOfHumanDuration = [
];
function convertToHumanDuration(config: Config, key: string): HumanDuration {
- const props = config.getConfig(key).keys();
- if (!props.find(prop => propsOfHumanDuration.includes(prop))) {
+ // Ensures that the root is an object
+ const root = config.getConfig(key);
+
+ const result: Record = {};
+ let found = false;
+ for (const prop of propsOfHumanDuration) {
+ const value = root.getOptionalNumber(prop);
+ if (value !== undefined) {
+ result[prop] = value;
+ found = true;
+ }
+ }
+
+ if (!found) {
throw new Error(
`HumanDuration needs at least one of: ${propsOfHumanDuration}`,
);
}
- const invalidProps = props.filter(
- prop => !propsOfHumanDuration.includes(prop),
- );
+ const invalidProps = root
+ .keys()
+ .filter(prop => !propsOfHumanDuration.includes(prop));
if (invalidProps.length > 0) {
throw new Error(
`HumanDuration does not contain properties: ${invalidProps}`,
);
}
- return config.get(key) as HumanDuration;
+ return result as HumanDuration;
}
function readDuration(config: Config, key: string): Duration | HumanDuration {
- return typeof config.get(key) === 'string'
- ? Duration.fromISO(config.getString(key))
- : convertToHumanDuration(config, key);
+ if (typeof config.get(key) === 'string') {
+ const value = config.getString(key);
+ const duration = Duration.fromISO(value);
+ if (!duration.isValid) {
+ throw new Error(`Invalid duration: ${value}`);
+ }
+ return duration;
+ }
+
+ return convertToHumanDuration(config, key);
}
function readCronOrDuration(
diff --git a/packages/backend-test-utils/CHANGELOG.md b/packages/backend-test-utils/CHANGELOG.md
index 2d40873bb9..7cff4e8f6b 100644
--- a/packages/backend-test-utils/CHANGELOG.md
+++ b/packages/backend-test-utils/CHANGELOG.md
@@ -1,5 +1,32 @@
# @backstage/backend-test-utils
+## 0.2.0-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-app-api@0.5.0-next.2
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+
+## 0.2.0-next.1
+
+### Minor Changes
+
+- b9c57a4f857e: **BREAKING**: Renamed `mockServices.config` to `mockServices.rootConfig`.
+
+### Patch Changes
+
+- ae9304818136: Add needed constants and constructs to support PostgreSQL version 14 as test database
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/backend-app-api@0.5.0-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/config@1.0.8
+ - @backstage/types@1.1.0
+
## 0.1.40-next.0
### Patch Changes
diff --git a/packages/backend-test-utils/api-report.md b/packages/backend-test-utils/api-report.md
index 358b51071f..1cb7a83a0e 100644
--- a/packages/backend-test-utils/api-report.md
+++ b/packages/backend-test-utils/api-report.md
@@ -6,7 +6,6 @@
import { Backend } from '@backstage/backend-app-api';
import { BackendFeature } from '@backstage/backend-plugin-api';
import { CacheService } from '@backstage/backend-plugin-api';
-import { ConfigService } from '@backstage/backend-plugin-api';
import { DatabaseService } from '@backstage/backend-plugin-api';
import { ExtendedHttpServer } from '@backstage/backend-app-api';
import { ExtensionPoint } from '@backstage/backend-plugin-api';
@@ -18,6 +17,7 @@ import { Knex } from 'knex';
import { LifecycleService } from '@backstage/backend-plugin-api';
import { LoggerService } from '@backstage/backend-plugin-api';
import { PermissionsService } from '@backstage/backend-plugin-api';
+import { RootConfigService } from '@backstage/backend-plugin-api';
import { RootLifecycleService } from '@backstage/backend-plugin-api';
import { SchedulerService } from '@backstage/backend-plugin-api';
import { ServiceFactory } from '@backstage/backend-plugin-api';
@@ -36,19 +36,6 @@ export namespace mockServices {
factory: () => ServiceFactory;
}
// (undocumented)
- export function config(options?: config.Options): ConfigService;
- // (undocumented)
- export namespace config {
- // (undocumented)
- export type Options = {
- data?: JsonObject;
- };
- const // (undocumented)
- factory: (
- options?: Options | undefined,
- ) => ServiceFactory;
- }
- // (undocumented)
export namespace database {
const // (undocumented)
factory: () => ServiceFactory;
@@ -83,6 +70,19 @@ export namespace mockServices {
factory: () => ServiceFactory;
}
// (undocumented)
+ export function rootConfig(options?: rootConfig.Options): RootConfigService;
+ // (undocumented)
+ export namespace rootConfig {
+ // (undocumented)
+ export type Options = {
+ data?: JsonObject;
+ };
+ const // (undocumented)
+ factory: (
+ options?: Options | undefined,
+ ) => ServiceFactory;
+ }
+ // (undocumented)
export namespace rootLifecycle {
const // (undocumented)
factory: () => ServiceFactory;
@@ -168,6 +168,7 @@ export interface TestBackendOptions<
// @public
export type TestDatabaseId =
+ | 'POSTGRES_14'
| 'POSTGRES_13'
| 'POSTGRES_12'
| 'POSTGRES_11'
diff --git a/packages/backend-test-utils/package.json b/packages/backend-test-utils/package.json
index d9d904357b..9f59962a8a 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.40-next.0",
+ "version": "0.2.0-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"publishConfig": {
diff --git a/packages/backend-test-utils/src/database/TestDatabases.test.ts b/packages/backend-test-utils/src/database/TestDatabases.test.ts
index be29a42806..d766d38815 100644
--- a/packages/backend-test-utils/src/database/TestDatabases.test.ts
+++ b/packages/backend-test-utils/src/database/TestDatabases.test.ts
@@ -59,6 +59,37 @@ describe('TestDatabases', () => {
describe('each connect', () => {
const dbs = TestDatabases.create();
+ itIfDocker(
+ 'obeys a provided connection string for postgres 14',
+ async () => {
+ const { host, port, user, password, stop } =
+ await startPostgresContainer('postgres:14');
+
+ try {
+ // Leave a mark
+ process.env.BACKSTAGE_TEST_DATABASE_POSTGRES14_CONNECTION_STRING = `postgresql://${user}:${password}@${host}:${port}`;
+ const input = await dbs.init('POSTGRES_14');
+ await input.schema.createTable('a', table =>
+ table.string('x').primary(),
+ );
+ await input.insert({ x: 'y' }).into('a');
+
+ // Look for the mark
+ const database = input.client.config.connection.database;
+ const output = knexFactory({
+ client: 'pg',
+ connection: { host, port, user, password, database },
+ });
+ // eslint-disable-next-line jest/no-standalone-expect
+ await expect(output.select('x').from('a')).resolves.toEqual([
+ { x: 'y' },
+ ]);
+ } finally {
+ await stop();
+ }
+ },
+ );
+
itIfDocker(
'obeys a provided connection string for postgres 13',
async () => {
diff --git a/packages/backend-test-utils/src/database/types.ts b/packages/backend-test-utils/src/database/types.ts
index 8c1d6f5193..a7bfdeb12d 100644
--- a/packages/backend-test-utils/src/database/types.ts
+++ b/packages/backend-test-utils/src/database/types.ts
@@ -24,6 +24,7 @@ import { getDockerImageForName } from '../util/getDockerImageForName';
* @public
*/
export type TestDatabaseId =
+ | 'POSTGRES_14'
| 'POSTGRES_13'
| 'POSTGRES_12'
| 'POSTGRES_11'
@@ -46,6 +47,13 @@ export type Instance = {
export const allDatabases: Record =
Object.freeze({
+ POSTGRES_14: {
+ name: 'Postgres 14.x',
+ driver: 'pg',
+ dockerImageName: getDockerImageForName('postgres:14'),
+ connectionStringEnvironmentVariableName:
+ 'BACKSTAGE_TEST_DATABASE_POSTGRES14_CONNECTION_STRING',
+ },
POSTGRES_13: {
name: 'Postgres 13.x',
driver: 'pg',
diff --git a/packages/backend-test-utils/src/next/services/mockServices.ts b/packages/backend-test-utils/src/next/services/mockServices.ts
index 8a3125214c..0455b9f1ae 100644
--- a/packages/backend-test-utils/src/next/services/mockServices.ts
+++ b/packages/backend-test-utils/src/next/services/mockServices.ts
@@ -15,7 +15,7 @@
*/
import {
- ConfigService,
+ RootConfigService,
coreServices,
createServiceFactory,
IdentityService,
@@ -61,13 +61,13 @@ function simpleFactory<
* @public
*/
export namespace mockServices {
- export function config(options?: config.Options): ConfigService {
+ export function rootConfig(options?: rootConfig.Options): RootConfigService {
return new ConfigReader(options?.data, 'mock-config');
}
- export namespace config {
+ export namespace rootConfig {
export type Options = { data?: JsonObject };
- export const factory = simpleFactory(coreServices.config, config);
+ export const factory = simpleFactory(coreServices.rootConfig, rootConfig);
}
export function rootLogger(options?: rootLogger.Options): LoggerService {
diff --git a/packages/backend-test-utils/src/next/wiring/TestBackend.test.ts b/packages/backend-test-utils/src/next/wiring/TestBackend.test.ts
index aa93a7dae1..cc916d4309 100644
--- a/packages/backend-test-utils/src/next/wiring/TestBackend.test.ts
+++ b/packages/backend-test-utils/src/next/wiring/TestBackend.test.ts
@@ -168,7 +168,7 @@ describe('TestBackend', () => {
env.registerInit({
deps: {
cache: coreServices.cache,
- config: coreServices.config,
+ config: coreServices.rootConfig,
database: coreServices.database,
discovery: coreServices.discovery,
httpRouter: coreServices.httpRouter,
diff --git a/packages/backend-test-utils/src/next/wiring/TestBackend.ts b/packages/backend-test-utils/src/next/wiring/TestBackend.ts
index e8df15862f..8a4e1d8471 100644
--- a/packages/backend-test-utils/src/next/wiring/TestBackend.ts
+++ b/packages/backend-test-utils/src/next/wiring/TestBackend.ts
@@ -73,7 +73,7 @@ export interface TestBackend extends Backend {
const defaultServiceFactories = [
mockServices.cache.factory(),
- mockServices.config.factory(),
+ mockServices.rootConfig.factory(),
mockServices.database.factory(),
mockServices.httpRouter.factory(),
mockServices.identity.factory(),
@@ -108,7 +108,7 @@ export async function startTestBackend<
const rootHttpRouterFactory = createServiceFactory({
service: coreServices.rootHttpRouter,
deps: {
- config: coreServices.config,
+ config: coreServices.rootConfig,
lifecycle: coreServices.rootLifecycle,
rootLogger: coreServices.rootLogger,
},
diff --git a/packages/backend/.snyk b/packages/backend/.snyk
new file mode 100644
index 0000000000..ea5abd653d
--- /dev/null
+++ b/packages/backend/.snyk
@@ -0,0 +1,10 @@
+# Snyk (https://snyk.io) policy file, patches or ignores known vulnerabilities.
+version: v1.22.1
+# ignores vulnerabilities until expiry date; change duration by modifying expiry date
+ignore:
+ SNYK-JS-ISOLATEDVM-3037320:
+ - '*':
+ reason: We do not pass any V8 cache data, and are therefore unaffected by this vulnerability
+ expires: 2033-07-02T16:55:57.077Z
+ created: 2023-07-02T16:55:57.077Z
+patch: {}
diff --git a/packages/backend/CHANGELOG.md b/packages/backend/CHANGELOG.md
index d4359d6ece..14ad991533 100644
--- a/packages/backend/CHANGELOG.md
+++ b/packages/backend/CHANGELOG.md
@@ -1,5 +1,109 @@
# example-backend
+## 0.2.86-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-auth-backend@0.18.6-next.2
+ - @backstage/plugin-scaffolder-backend@1.15.2-next.2
+ - @backstage/plugin-explore-backend@0.0.10-next.2
+ - @backstage/plugin-catalog-backend@1.12.0-next.2
+ - @backstage/plugin-proxy-backend@0.3.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/plugin-app-backend@0.3.48-next.2
+ - @backstage/plugin-linguist-backend@0.4.0-next.2
+ - @backstage/plugin-techdocs-backend@1.6.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - example-app@0.2.86-next.2
+ - @backstage/plugin-adr-backend@0.3.6-next.2
+ - @backstage/plugin-azure-devops-backend@0.3.27-next.2
+ - @backstage/plugin-badges-backend@0.2.3-next.2
+ - @backstage/plugin-catalog-backend-module-unprocessed@0.2.0-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+ - @backstage/plugin-devtools-backend@0.1.3-next.2
+ - @backstage/plugin-entity-feedback-backend@0.1.6-next.2
+ - @backstage/plugin-events-backend@0.2.9-next.2
+ - @backstage/plugin-events-node@0.2.9-next.2
+ - @backstage/plugin-kafka-backend@0.2.41-next.2
+ - @backstage/plugin-kubernetes-backend@0.11.3-next.2
+ - @backstage/plugin-lighthouse-backend@0.2.4-next.2
+ - @backstage/plugin-permission-backend@0.5.23-next.2
+ - @backstage/plugin-permission-node@0.7.11-next.2
+ - @backstage/plugin-search-backend@1.4.0-next.2
+ - @backstage/plugin-search-backend-module-elasticsearch@1.3.3-next.2
+ - @backstage/plugin-search-backend-module-pg@0.5.9-next.2
+ - @backstage/plugin-search-backend-node@1.2.4-next.2
+ - @backstage/plugin-todo-backend@0.2.0-next.2
+ - @backstage/plugin-tech-insights-backend@0.5.14-next.2
+ - @backstage/plugin-tech-insights-node@0.4.6-next.2
+ - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.1-next.2
+ - @backstage/plugin-scaffolder-backend-module-rails@0.4.17-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+ - @backstage/plugin-azure-sites-backend@0.1.10-next.2
+ - @backstage/plugin-code-coverage-backend@0.2.14-next.2
+ - @backstage/plugin-graphql-backend@0.1.38-next.2
+ - @backstage/plugin-jenkins-backend@0.2.3-next.2
+ - @backstage/plugin-nomad-backend@0.1.2-next.2
+ - @backstage/plugin-playlist-backend@0.3.4-next.2
+ - @backstage/plugin-rollbar-backend@0.1.45-next.2
+ - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.32-next.2
+
+## 0.2.86-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-search-backend-module-elasticsearch@1.3.3-next.1
+ - @backstage/plugin-search-backend-module-pg@0.5.9-next.1
+ - @backstage/plugin-azure-devops-backend@0.3.27-next.1
+ - @backstage/plugin-kubernetes-backend@0.11.3-next.1
+ - @backstage/plugin-lighthouse-backend@0.2.4-next.1
+ - @backstage/plugin-permission-backend@0.5.23-next.1
+ - @backstage/plugin-scaffolder-backend@1.15.2-next.1
+ - @backstage/plugin-devtools-backend@0.1.3-next.1
+ - @backstage/plugin-techdocs-backend@1.6.5-next.1
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-catalog-backend@1.12.0-next.1
+ - @backstage/plugin-badges-backend@0.2.3-next.1
+ - @backstage/plugin-events-backend@0.2.9-next.1
+ - @backstage/plugin-search-backend@1.4.0-next.1
+ - @backstage/plugin-kafka-backend@0.2.41-next.1
+ - @backstage/plugin-proxy-backend@0.2.42-next.1
+ - @backstage/plugin-todo-backend@0.2.0-next.1
+ - @backstage/plugin-app-backend@0.3.48-next.1
+ - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.1-next.1
+ - @backstage/plugin-catalog-backend-module-unprocessed@0.2.0-next.1
+ - @backstage/plugin-scaffolder-backend-module-rails@0.4.17-next.1
+ - @backstage/plugin-entity-feedback-backend@0.1.6-next.1
+ - @backstage/plugin-code-coverage-backend@0.2.14-next.1
+ - @backstage/plugin-search-backend-node@1.2.4-next.1
+ - @backstage/plugin-linguist-backend@0.3.2-next.1
+ - @backstage/plugin-playlist-backend@0.3.4-next.1
+ - @backstage/plugin-explore-backend@0.0.10-next.1
+ - @backstage/plugin-jenkins-backend@0.2.3-next.1
+ - @backstage/plugin-nomad-backend@0.1.2-next.1
+ - @backstage/plugin-catalog-node@1.4.1-next.1
+ - @backstage/plugin-events-node@0.2.9-next.1
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/plugin-auth-backend@0.18.6-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/plugin-adr-backend@0.3.6-next.1
+ - @backstage/plugin-azure-sites-backend@0.1.10-next.1
+ - @backstage/plugin-graphql-backend@0.1.38-next.1
+ - @backstage/plugin-permission-node@0.7.11-next.1
+ - @backstage/plugin-rollbar-backend@0.1.45-next.1
+ - @backstage/plugin-tech-insights-backend@0.5.14-next.1
+ - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.32-next.1
+ - @backstage/plugin-tech-insights-node@0.4.6-next.1
+ - example-app@0.2.86-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/plugin-permission-common@0.7.7
+ - @backstage/plugin-search-common@1.2.5
+
## 0.2.86-next.0
### Patch Changes
diff --git a/packages/backend/package.json b/packages/backend/package.json
index 1c99a1bdf3..965da35ee3 100644
--- a/packages/backend/package.json
+++ b/packages/backend/package.json
@@ -1,6 +1,6 @@
{
"name": "example-backend",
- "version": "0.2.86-next.0",
+ "version": "0.2.86-next.2",
"main": "dist/index.cjs.js",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/packages/cli-node/CHANGELOG.md b/packages/cli-node/CHANGELOG.md
index fc2876fa76..2615c2ddd7 100644
--- a/packages/cli-node/CHANGELOG.md
+++ b/packages/cli-node/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/cli-node
+## 0.1.3-next.0
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/cli-common@0.1.12
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+
## 0.1.2
### Patch Changes
diff --git a/packages/cli-node/package.json b/packages/cli-node/package.json
index c59a8930c0..f87f70b135 100644
--- a/packages/cli-node/package.json
+++ b/packages/cli-node/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/cli-node",
"description": "Node.js library for Backstage CLIs",
- "version": "0.1.2",
+ "version": "0.1.3-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -13,6 +13,12 @@
"backstage": {
"role": "node-library"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "packages/cli-node"
+ },
"scripts": {
"build": "backstage-cli package build",
"lint": "backstage-cli package lint",
diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md
index 2652a40bde..54660d1773 100644
--- a/packages/cli/CHANGELOG.md
+++ b/packages/cli/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/cli
+## 0.22.10-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/config-loader@1.4.0-next.1
+ - @backstage/cli-node@0.1.3-next.0
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/cli-common@0.1.12
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/eslint-plugin@0.1.3
+ - @backstage/release-manifests@0.0.9
+ - @backstage/types@1.1.0
+
## 0.22.10-next.0
### Patch Changes
diff --git a/packages/cli/package.json b/packages/cli/package.json
index 8b78b16900..37f3d3a093 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.22.10-next.0",
+ "version": "0.22.10-next.1",
"publishConfig": {
"access": "public"
},
@@ -78,7 +78,7 @@
"cross-spawn": "^7.0.3",
"css-loader": "^6.5.1",
"diff": "^5.0.0",
- "esbuild": "^0.18.0",
+ "esbuild": "^0.19.0",
"esbuild-loader": "^2.18.0",
"eslint": "^8.6.0",
"eslint-config-prettier": "^8.3.0",
diff --git a/packages/config-loader/CHANGELOG.md b/packages/config-loader/CHANGELOG.md
index 0782876942..b02d08495a 100644
--- a/packages/config-loader/CHANGELOG.md
+++ b/packages/config-loader/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/config-loader
+## 1.4.0-next.1
+
+### Minor Changes
+
+- 2f1859585998: Loading invalid TypeScript configuration schemas will now throw an error rather than silently being ignored.
+
+ In particular this includes defining any additional types other than `Config` in the schema file, or use of unsupported types such as `Record` or `Partial`.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/cli-common@0.1.12
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+
## 1.4.0-next.0
### Minor Changes
diff --git a/packages/config-loader/package.json b/packages/config-loader/package.json
index 51a4a5a6cd..5e82c0bb76 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": "1.4.0-next.0",
+ "version": "1.4.0-next.1",
"publishConfig": {
"access": "public",
"main": "dist/index.cjs.js",
diff --git a/packages/config-loader/src/schema/collect.ts b/packages/config-loader/src/schema/collect.ts
index ac3e4af341..7120c12d90 100644
--- a/packages/config-loader/src/schema/collect.ts
+++ b/packages/config-loader/src/schema/collect.ts
@@ -15,6 +15,7 @@
*/
import fs from 'fs-extra';
+import { EOL } from 'os';
import {
resolve as resolvePath,
relative as relativePath,
@@ -163,7 +164,7 @@ async function compileTsSchemas(paths: string[]) {
// Lazy loaded, because this brings up all of TypeScript and we don't
// want that eagerly loaded in tests
- const { getProgramFromFiles, generateSchema } = await import(
+ const { getProgramFromFiles, buildGenerator } = await import(
'typescript-json-schema'
);
@@ -183,17 +184,40 @@ async function compileTsSchemas(paths: string[]) {
const tsSchemas = paths.map(path => {
let value;
try {
- value = generateSchema(
+ const generator = buildGenerator(
program,
- // All schemas should export a `Config` symbol
- 'Config',
// This enables the use of these tags in TSDoc comments
{
required: true,
validationKeywords: ['visibility', 'deepVisibility', 'deprecated'],
},
[path.split(sep).join('/')], // Unix paths are expected for all OSes here
- ) as JsonObject | null;
+ );
+
+ // All schemas should export a `Config` symbol
+ value = generator?.getSchemaForSymbol('Config') as JsonObject | null;
+
+ // This makes sure that no additional symbols are defined in the schema. We don't allow
+ // this because they share a global namespace and will be merged together, leading to
+ // unpredictable behavior.
+ const userSymbols = new Set(generator?.getUserSymbols());
+ userSymbols.delete('Config');
+ if (userSymbols.size !== 0) {
+ const names = Array.from(userSymbols).join("', '");
+ throw new Error(
+ `Invalid configuration schema in ${path}, additional symbol definitions are not allowed, found '${names}'`,
+ );
+ }
+
+ // This makes sure that no unsupported types are used in the schema, for example `Record<,>`.
+ // The generator will extract these as a schema reference, which will in turn be broken for our usage.
+ const reffedDefs = Object.keys(generator?.ReffedDefinitions ?? {});
+ if (reffedDefs.length !== 0) {
+ const lines = reffedDefs.join(`${EOL} `);
+ throw new Error(
+ `Invalid configuration schema in ${path}, the following definitions are not supported:${EOL}${EOL} ${lines}`,
+ );
+ }
} catch (error) {
assertError(error);
if (error.message !== 'type Config not found') {
diff --git a/packages/create-app/CHANGELOG.md b/packages/create-app/CHANGELOG.md
index 9a65a15f98..978911ed3e 100644
--- a/packages/create-app/CHANGELOG.md
+++ b/packages/create-app/CHANGELOG.md
@@ -1,5 +1,19 @@
# @backstage/create-app
+## 0.5.4-next.2
+
+### Patch Changes
+
+- Bumped create-app version.
+
+## 0.5.4-next.1
+
+### Patch Changes
+
+- Bumped create-app version.
+- Updated dependencies
+ - @backstage/cli-common@0.1.12
+
## 0.5.4-next.0
### Patch Changes
diff --git a/packages/create-app/package.json b/packages/create-app/package.json
index fb203edf26..62d455b7db 100644
--- a/packages/create-app/package.json
+++ b/packages/create-app/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/create-app",
"description": "A CLI that helps you create your own Backstage app",
- "version": "0.5.4-next.0",
+ "version": "0.5.4-next.2",
"publishConfig": {
"access": "public"
},
diff --git a/packages/dev-utils/CHANGELOG.md b/packages/dev-utils/CHANGELOG.md
index 45df686876..cc1b274d98 100644
--- a/packages/dev-utils/CHANGELOG.md
+++ b/packages/dev-utils/CHANGELOG.md
@@ -1,5 +1,28 @@
# @backstage/dev-utils
+## 1.0.18-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+ - @backstage/integration-react@1.1.16-next.1
+
+## 1.0.18-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/integration-react@1.1.16-next.1
+ - @backstage/app-defaults@1.4.2-next.0
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-app-api@1.9.1-next.0
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/test-utils@1.4.2-next.0
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
## 1.0.18-next.0
### Patch Changes
diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json
index d7e12209c3..b5cc72bfcd 100644
--- a/packages/dev-utils/package.json
+++ b/packages/dev-utils/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/dev-utils",
"description": "Utilities for developing Backstage plugins.",
- "version": "1.0.18-next.0",
+ "version": "1.0.18-next.2",
"publishConfig": {
"access": "public",
"main": "dist/index.esm.js",
diff --git a/packages/e2e-test/CHANGELOG.md b/packages/e2e-test/CHANGELOG.md
index f6f29ff3f2..5b3930f0af 100644
--- a/packages/e2e-test/CHANGELOG.md
+++ b/packages/e2e-test/CHANGELOG.md
@@ -1,5 +1,21 @@
# e2e-test
+## 0.2.6-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/create-app@0.5.4-next.2
+
+## 0.2.6-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/create-app@0.5.4-next.1
+ - @backstage/cli-common@0.1.12
+ - @backstage/errors@1.2.1
+
## 0.2.6-next.0
### Patch Changes
diff --git a/packages/e2e-test/package.json b/packages/e2e-test/package.json
index 48ef90db6f..64ee370d8a 100644
--- a/packages/e2e-test/package.json
+++ b/packages/e2e-test/package.json
@@ -1,7 +1,7 @@
{
"name": "e2e-test",
"description": "E2E test for verifying Backstage packages",
- "version": "0.2.6-next.0",
+ "version": "0.2.6-next.2",
"private": true,
"backstage": {
"role": "cli"
diff --git a/packages/integration-react/CHANGELOG.md b/packages/integration-react/CHANGELOG.md
index 4f275a8750..dd43ed34a0 100644
--- a/packages/integration-react/CHANGELOG.md
+++ b/packages/integration-react/CHANGELOG.md
@@ -1,5 +1,17 @@
# @backstage/integration-react
+## 1.1.16-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/integration@1.5.1
+ - @backstage/config@1.0.8
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+
## 1.1.16-next.0
### Patch Changes
diff --git a/packages/integration-react/package.json b/packages/integration-react/package.json
index 616826b430..71f7597635 100644
--- a/packages/integration-react/package.json
+++ b/packages/integration-react/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/integration-react",
"description": "Frontend package for managing integrations towards external systems",
- "version": "1.1.16-next.0",
+ "version": "1.1.16-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -13,6 +13,12 @@
"backstage": {
"role": "web-library"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "packages/integration-react"
+ },
"scripts": {
"build": "backstage-cli package build",
"start": "backstage-cli package start",
diff --git a/packages/repo-tools/CHANGELOG.md b/packages/repo-tools/CHANGELOG.md
index b8f37f4977..763c9f1cc1 100644
--- a/packages/repo-tools/CHANGELOG.md
+++ b/packages/repo-tools/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/repo-tools
+## 0.3.3-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/cli-node@0.1.3-next.0
+ - @backstage/cli-common@0.1.12
+ - @backstage/errors@1.2.1
+
## 0.3.3-next.0
### Patch Changes
diff --git a/packages/repo-tools/package.json b/packages/repo-tools/package.json
index c05cd30c75..c5d9e266c9 100644
--- a/packages/repo-tools/package.json
+++ b/packages/repo-tools/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/repo-tools",
"description": "CLI for Backstage repo tooling ",
- "version": "0.3.3-next.0",
+ "version": "0.3.3-next.1",
"publishConfig": {
"access": "public"
},
diff --git a/packages/techdocs-cli-embedded-app/CHANGELOG.md b/packages/techdocs-cli-embedded-app/CHANGELOG.md
index 26f2246d13..8e1d2bcaa8 100644
--- a/packages/techdocs-cli-embedded-app/CHANGELOG.md
+++ b/packages/techdocs-cli-embedded-app/CHANGELOG.md
@@ -1,5 +1,34 @@
# techdocs-cli-embedded-app
+## 0.2.85-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog@1.12.1-next.2
+ - @backstage/plugin-techdocs@1.6.6-next.2
+ - @backstage/cli@0.22.10-next.1
+ - @backstage/integration-react@1.1.16-next.1
+
+## 0.2.85-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/integration-react@1.1.16-next.1
+ - @backstage/cli@0.22.10-next.1
+ - @backstage/plugin-catalog@1.12.1-next.1
+ - @backstage/plugin-techdocs@1.6.6-next.1
+ - @backstage/app-defaults@1.4.2-next.0
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/core-app-api@1.9.1-next.0
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/test-utils@1.4.2-next.0
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-techdocs-react@1.1.9-next.0
+
## 0.2.85-next.0
### Patch Changes
diff --git a/packages/techdocs-cli-embedded-app/package.json b/packages/techdocs-cli-embedded-app/package.json
index 3bbef65e68..8a8675f3e8 100644
--- a/packages/techdocs-cli-embedded-app/package.json
+++ b/packages/techdocs-cli-embedded-app/package.json
@@ -1,11 +1,17 @@
{
"name": "techdocs-cli-embedded-app",
- "version": "0.2.85-next.0",
+ "version": "0.2.85-next.2",
"private": true,
"backstage": {
"role": "frontend"
},
"bundled": true,
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "packages/techdocs-cli-embedded-app"
+ },
"dependencies": {
"@backstage/app-defaults": "workspace:^",
"@backstage/catalog-model": "workspace:^",
diff --git a/packages/techdocs-cli/CHANGELOG.md b/packages/techdocs-cli/CHANGELOG.md
index daefe75e38..e41e16b4d3 100644
--- a/packages/techdocs-cli/CHANGELOG.md
+++ b/packages/techdocs-cli/CHANGELOG.md
@@ -1,5 +1,24 @@
# @techdocs/cli
+## 1.4.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-techdocs-node@1.7.4-next.2
+
+## 1.4.5-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-techdocs-node@1.7.4-next.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/cli-common@0.1.12
+ - @backstage/config@1.0.8
+
## 1.4.5-next.0
### Patch Changes
diff --git a/packages/techdocs-cli/package.json b/packages/techdocs-cli/package.json
index d59450992b..5968deddfb 100644
--- a/packages/techdocs-cli/package.json
+++ b/packages/techdocs-cli/package.json
@@ -1,7 +1,7 @@
{
"name": "@techdocs/cli",
"description": "Utility CLI for managing TechDocs sites in Backstage.",
- "version": "1.4.5-next.0",
+ "version": "1.4.5-next.2",
"publishConfig": {
"access": "public"
},
diff --git a/plugins/adr-backend/CHANGELOG.md b/plugins/adr-backend/CHANGELOG.md
index c63b8bd687..574d649a67 100644
--- a/plugins/adr-backend/CHANGELOG.md
+++ b/plugins/adr-backend/CHANGELOG.md
@@ -1,5 +1,28 @@
# @backstage/plugin-adr-backend
+## 0.3.6-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+
+## 0.3.6-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/plugin-adr-common@0.2.11
+ - @backstage/plugin-search-common@1.2.5
+
## 0.3.6-next.0
### Patch Changes
diff --git a/plugins/adr-backend/package.json b/plugins/adr-backend/package.json
index e7f390b790..9af7a1e617 100644
--- a/plugins/adr-backend/package.json
+++ b/plugins/adr-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-adr-backend",
- "version": "0.3.6-next.0",
+ "version": "0.3.6-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/adr/CHANGELOG.md b/plugins/adr/CHANGELOG.md
index fbbf4c13de..976b9ef238 100644
--- a/plugins/adr/CHANGELOG.md
+++ b/plugins/adr/CHANGELOG.md
@@ -1,5 +1,29 @@
# @backstage/plugin-adr
+## 0.6.4-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+ - @backstage/integration-react@1.1.16-next.1
+
+## 0.6.4-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/integration-react@1.1.16-next.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-adr-common@0.2.11
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+ - @backstage/plugin-search-common@1.2.5
+ - @backstage/plugin-search-react@1.6.4-next.0
+
## 0.6.4-next.0
### Patch Changes
diff --git a/plugins/adr/package.json b/plugins/adr/package.json
index 486ea800a2..c280e87bc9 100644
--- a/plugins/adr/package.json
+++ b/plugins/adr/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-adr",
- "version": "0.6.4-next.0",
+ "version": "0.6.4-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -12,6 +12,12 @@
"backstage": {
"role": "frontend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/adr"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
diff --git a/plugins/airbrake-backend/CHANGELOG.md b/plugins/airbrake-backend/CHANGELOG.md
index c0f695f372..c283d99987 100644
--- a/plugins/airbrake-backend/CHANGELOG.md
+++ b/plugins/airbrake-backend/CHANGELOG.md
@@ -1,5 +1,24 @@
# @backstage/plugin-airbrake-backend
+## 0.2.21-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+
+## 0.2.21-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/config@1.0.8
+
## 0.2.21-next.0
### Patch Changes
diff --git a/plugins/airbrake-backend/package.json b/plugins/airbrake-backend/package.json
index 06e5183a44..17ddf81297 100644
--- a/plugins/airbrake-backend/package.json
+++ b/plugins/airbrake-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-airbrake-backend",
- "version": "0.2.21-next.0",
+ "version": "0.2.21-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -12,6 +12,12 @@
"backstage": {
"role": "backend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/airbrake-backend"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
diff --git a/plugins/airbrake-backend/src/plugin.ts b/plugins/airbrake-backend/src/plugin.ts
index 79850c1272..90e790c05f 100644
--- a/plugins/airbrake-backend/src/plugin.ts
+++ b/plugins/airbrake-backend/src/plugin.ts
@@ -32,7 +32,7 @@ export const airbrakePlugin = createBackendPlugin({
register(env) {
env.registerInit({
deps: {
- config: coreServices.config,
+ config: coreServices.rootConfig,
logger: coreServices.logger,
httpRouter: coreServices.httpRouter,
},
diff --git a/plugins/airbrake/CHANGELOG.md b/plugins/airbrake/CHANGELOG.md
index e5b52f1932..ca3c39d275 100644
--- a/plugins/airbrake/CHANGELOG.md
+++ b/plugins/airbrake/CHANGELOG.md
@@ -1,5 +1,27 @@
# @backstage/plugin-airbrake
+## 0.3.21-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+ - @backstage/dev-utils@1.0.18-next.2
+
+## 0.3.21-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/dev-utils@1.0.18-next.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/test-utils@1.4.2-next.0
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
## 0.3.21-next.0
### Patch Changes
diff --git a/plugins/airbrake/package.json b/plugins/airbrake/package.json
index 48a825f93b..1cbefe43b7 100644
--- a/plugins/airbrake/package.json
+++ b/plugins/airbrake/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-airbrake",
- "version": "0.3.21-next.0",
+ "version": "0.3.21-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -12,6 +12,12 @@
"backstage": {
"role": "frontend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/airbrake"
+ },
"scripts": {
"build": "backstage-cli package build",
"start": "backstage-cli package start",
diff --git a/plugins/allure/CHANGELOG.md b/plugins/allure/CHANGELOG.md
index caa81f04cf..b53cd64d52 100644
--- a/plugins/allure/CHANGELOG.md
+++ b/plugins/allure/CHANGELOG.md
@@ -1,5 +1,24 @@
# @backstage/plugin-allure
+## 0.1.37-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## 0.1.37-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
## 0.1.37-next.0
### Patch Changes
diff --git a/plugins/allure/package.json b/plugins/allure/package.json
index f4809128ff..71458aa0f1 100644
--- a/plugins/allure/package.json
+++ b/plugins/allure/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-allure",
"description": "A Backstage plugin that integrates with Allure",
- "version": "0.1.37-next.0",
+ "version": "0.1.37-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -13,6 +13,12 @@
"backstage": {
"role": "frontend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/allure"
+ },
"scripts": {
"build": "backstage-cli package build",
"start": "backstage-cli package start",
diff --git a/plugins/analytics-module-ga/CHANGELOG.md b/plugins/analytics-module-ga/CHANGELOG.md
index d7c09cddb1..d40cb001e2 100644
--- a/plugins/analytics-module-ga/CHANGELOG.md
+++ b/plugins/analytics-module-ga/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-analytics-module-ga
+## 0.1.32-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/config@1.0.8
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+
## 0.1.32-next.0
### Patch Changes
diff --git a/plugins/analytics-module-ga/package.json b/plugins/analytics-module-ga/package.json
index 302ee1cd86..ef77925719 100644
--- a/plugins/analytics-module-ga/package.json
+++ b/plugins/analytics-module-ga/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-analytics-module-ga",
- "version": "0.1.32-next.0",
+ "version": "0.1.32-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -12,6 +12,12 @@
"backstage": {
"role": "frontend-plugin-module"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/analytics-module-ga"
+ },
"scripts": {
"build": "backstage-cli package build",
"start": "backstage-cli package start",
diff --git a/plugins/analytics-module-ga4/CHANGELOG.md b/plugins/analytics-module-ga4/CHANGELOG.md
index 9715015579..fd589fec4b 100644
--- a/plugins/analytics-module-ga4/CHANGELOG.md
+++ b/plugins/analytics-module-ga4/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-analytics-module-ga4
+## 0.1.3-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/config@1.0.8
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+
## 0.1.3-next.0
### Patch Changes
diff --git a/plugins/analytics-module-ga4/package.json b/plugins/analytics-module-ga4/package.json
index 85f34468b1..ef55377f0c 100644
--- a/plugins/analytics-module-ga4/package.json
+++ b/plugins/analytics-module-ga4/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-analytics-module-ga4",
- "version": "0.1.3-next.0",
+ "version": "0.1.3-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -12,6 +12,12 @@
"backstage": {
"role": "frontend-plugin-module"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/plugins/analytics-module-ga4"
+ },
"scripts": {
"build": "backstage-cli package build",
"start": "backstage-cli package start",
diff --git a/plugins/apache-airflow/CHANGELOG.md b/plugins/apache-airflow/CHANGELOG.md
index ef1d34dc23..42756b19df 100644
--- a/plugins/apache-airflow/CHANGELOG.md
+++ b/plugins/apache-airflow/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-apache-airflow
+## 0.2.14-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+
## 0.2.14-next.0
### Patch Changes
diff --git a/plugins/apache-airflow/package.json b/plugins/apache-airflow/package.json
index b30abb3bc9..a1e84dc6fb 100644
--- a/plugins/apache-airflow/package.json
+++ b/plugins/apache-airflow/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-apache-airflow",
- "version": "0.2.14-next.0",
+ "version": "0.2.14-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -12,6 +12,12 @@
"backstage": {
"role": "frontend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/apache-airflow"
+ },
"scripts": {
"build": "backstage-cli package build",
"start": "backstage-cli package start",
diff --git a/plugins/api-docs/CHANGELOG.md b/plugins/api-docs/CHANGELOG.md
index 68923046f5..d7d002739a 100644
--- a/plugins/api-docs/CHANGELOG.md
+++ b/plugins/api-docs/CHANGELOG.md
@@ -1,5 +1,25 @@
# @backstage/plugin-api-docs
+## 0.9.7-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+ - @backstage/plugin-catalog@1.12.1-next.2
+
+## 0.9.7-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog@1.12.1-next.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
## 0.9.7-next.0
### Patch Changes
diff --git a/plugins/api-docs/package.json b/plugins/api-docs/package.json
index 625fbd3138..43af4da872 100644
--- a/plugins/api-docs/package.json
+++ b/plugins/api-docs/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-api-docs",
"description": "A Backstage plugin that helps represent API entities in the frontend",
- "version": "0.9.7-next.0",
+ "version": "0.9.7-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/apollo-explorer/CHANGELOG.md b/plugins/apollo-explorer/CHANGELOG.md
index 0051c8a9e7..b733c807ba 100644
--- a/plugins/apollo-explorer/CHANGELOG.md
+++ b/plugins/apollo-explorer/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-apollo-explorer
+## 0.1.14-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+
## 0.1.14-next.0
### Patch Changes
diff --git a/plugins/apollo-explorer/package.json b/plugins/apollo-explorer/package.json
index 0b43fd63ba..f989ba29ad 100644
--- a/plugins/apollo-explorer/package.json
+++ b/plugins/apollo-explorer/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-apollo-explorer",
- "version": "0.1.14-next.0",
+ "version": "0.1.14-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -12,6 +12,12 @@
"backstage": {
"role": "frontend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/apollo-explorer"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
diff --git a/plugins/app-backend/CHANGELOG.md b/plugins/app-backend/CHANGELOG.md
index 7e048ba4d5..eb570e4153 100644
--- a/plugins/app-backend/CHANGELOG.md
+++ b/plugins/app-backend/CHANGELOG.md
@@ -1,5 +1,28 @@
# @backstage/plugin-app-backend
+## 0.3.48-next.2
+
+### Patch Changes
+
+- d564ad142b17: Migrated the alpha `appBackend` export to use static configuration and extension points rather than accepting options.
+- Updated dependencies
+ - @backstage/plugin-app-node@0.1.0-next.0
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/config-loader@1.4.0-next.1
+
+## 0.3.48-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/config-loader@1.4.0-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/config@1.0.8
+ - @backstage/types@1.1.0
+
## 0.3.48-next.0
### Patch Changes
diff --git a/plugins/app-backend/alpha-api-report.md b/plugins/app-backend/alpha-api-report.md
index 20a2902557..5fb0546a79 100644
--- a/plugins/app-backend/alpha-api-report.md
+++ b/plugins/app-backend/alpha-api-report.md
@@ -4,18 +4,9 @@
```ts
import { BackendFeature } from '@backstage/backend-plugin-api';
-import express from 'express';
// @alpha
-export const appPlugin: (options: AppPluginOptions) => BackendFeature;
-
-// @alpha (undocumented)
-export type AppPluginOptions = {
- appPackageName?: string;
- staticFallbackHandler?: express.Handler;
- disableConfigInjection?: boolean;
- disableStaticFallbackCache?: boolean;
-};
+export const appPlugin: () => BackendFeature;
// (No @packageDocumentation comment for this package)
```
diff --git a/plugins/app-backend/config.d.ts b/plugins/app-backend/config.d.ts
new file mode 100644
index 0000000000..dc11bc4e0a
--- /dev/null
+++ b/plugins/app-backend/config.d.ts
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2023 The 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 {
+ app?: {
+ /**
+ * The name of the app package (in most Backstage repositories, this is the
+ * "name" field in `packages/app/package.json`) that content should be served
+ * from. The same app package should be added as a dependency to the backend
+ * package in order for it to be accessible at runtime.
+ *
+ * In a typical setup with a single app package, this will default to 'app'.
+ */
+ packageName?: string;
+
+ /**
+ * Disables the configuration injection. This can be useful if you're running in an environment
+ * with a read-only filesystem, or for some other reason don't want configuration to be injected.
+ *
+ * Note that this will cause the configuration used when building the app bundle to be used, unless
+ * a separate configuration loading strategy is set up.
+ *
+ * This also disables configuration injection though `APP_CONFIG_` environment variables.
+ */
+ disableConfigInjection?: boolean;
+
+ /**
+ * By default the app backend plugin will cache previously deployed static assets in the database.
+ * If you disable this, it is recommended to set a `staticFallbackHandler` instead.
+ */
+ disableStaticFallbackCache?: boolean;
+ };
+}
diff --git a/plugins/app-backend/package.json b/plugins/app-backend/package.json
index 5574c8aba3..0000cfdcb1 100644
--- a/plugins/app-backend/package.json
+++ b/plugins/app-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-app-backend",
"description": "A Backstage backend plugin that serves the Backstage frontend app",
- "version": "0.3.48-next.0",
+ "version": "0.3.48-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -49,6 +49,7 @@
"@backstage/backend-plugin-api": "workspace:^",
"@backstage/config": "workspace:^",
"@backstage/config-loader": "workspace:^",
+ "@backstage/plugin-app-node": "workspace:^",
"@backstage/types": "workspace:^",
"@types/express": "^4.17.6",
"express": "^4.17.1",
@@ -73,8 +74,10 @@
"node-fetch": "^2.6.7",
"supertest": "^6.1.3"
},
+ "configSchema": "config.d.ts",
"files": [
"dist",
+ "config.d.ts",
"migrations/**/*.{js,d.ts}",
"static"
]
diff --git a/plugins/app-backend/src/alpha.ts b/plugins/app-backend/src/alpha.ts
index cc8276b853..edb5c8caf5 100644
--- a/plugins/app-backend/src/alpha.ts
+++ b/plugins/app-backend/src/alpha.ts
@@ -15,4 +15,3 @@
*/
export { appPlugin } from './service/appPlugin';
-export type { AppPluginOptions } from './service/appPlugin';
diff --git a/plugins/app-backend/src/service/appPlugin.test.ts b/plugins/app-backend/src/service/appPlugin.test.ts
index 518f56b7f9..37d38663ef 100644
--- a/plugins/app-backend/src/service/appPlugin.test.ts
+++ b/plugins/app-backend/src/service/appPlugin.test.ts
@@ -17,7 +17,7 @@
import mockFs from 'mock-fs';
import { resolve as resolvePath } from 'path';
import fetch from 'node-fetch';
-import { startTestBackend } from '@backstage/backend-test-utils';
+import { mockServices, startTestBackend } from '@backstage/backend-test-utils';
import { appPlugin } from './appPlugin';
describe('appPlugin', () => {
@@ -39,10 +39,14 @@ describe('appPlugin', () => {
it('boots', async () => {
const { server } = await startTestBackend({
- features: [
- appPlugin({
- appPackageName: 'app',
- disableStaticFallbackCache: true,
+ features: [appPlugin()],
+ services: [
+ mockServices.rootConfig.factory({
+ data: {
+ app: {
+ disableStaticFallbackCache: true,
+ },
+ },
}),
],
});
diff --git a/plugins/app-backend/src/service/appPlugin.ts b/plugins/app-backend/src/service/appPlugin.ts
index a29f8fd5a8..9ba2ea6d6c 100644
--- a/plugins/app-backend/src/service/appPlugin.ts
+++ b/plugins/app-backend/src/service/appPlugin.ts
@@ -21,84 +21,49 @@ import {
} from '@backstage/backend-plugin-api';
import { createRouter } from './router';
import { loggerToWinstonLogger } from '@backstage/backend-common';
-
-/** @alpha */
-export type AppPluginOptions = {
- /**
- * The name of the app package (in most Backstage repositories, this is the
- * "name" field in `packages/app/package.json`) that content should be served
- * from. The same app package should be added as a dependency to the backend
- * package in order for it to be accessible at runtime.
- *
- * In a typical setup with a single app package, this will default to 'app'.
- */
- appPackageName?: string;
-
- /**
- * A request handler to handle requests for static content that are not present in the app bundle.
- *
- * This can be used to avoid issues with clients on older deployment versions trying to access lazy
- * loaded content that is no longer present. Typically the requests would fall back to a long-term
- * object store where all recently deployed versions of the app are present.
- *
- * Another option is to provide a `database` that will take care of storing the static assets instead.
- *
- * If both `database` and `staticFallbackHandler` are provided, the `database` will attempt to serve
- * static assets first, and if they are not found, the `staticFallbackHandler` will be called.
- */
- staticFallbackHandler?: express.Handler;
-
- /**
- * Disables the configuration injection. This can be useful if you're running in an environment
- * with a read-only filesystem, or for some other reason don't want configuration to be injected.
- *
- * Note that this will cause the configuration used when building the app bundle to be used, unless
- * a separate configuration loading strategy is set up.
- *
- * This also disables configuration injection though `APP_CONFIG_` environment variables.
- */
- disableConfigInjection?: boolean;
-
- /**
- * By default the app backend plugin will cache previously deployed static assets in the database.
- * If you disable this, it is recommended to set a `staticFallbackHandler` instead.
- */
- disableStaticFallbackCache?: boolean;
-};
+import { staticFallbackHandlerExtensionPoint } from '@backstage/plugin-app-node';
/**
* The App plugin is responsible for serving the frontend app bundle and static assets.
* @alpha
*/
-export const appPlugin = createBackendPlugin((options: AppPluginOptions) => ({
+export const appPlugin = createBackendPlugin({
pluginId: 'app',
register(env) {
+ let staticFallbackHandler: express.Handler | undefined;
+
+ env.registerExtensionPoint(staticFallbackHandlerExtensionPoint, {
+ setStaticFallbackHandler(handler) {
+ if (staticFallbackHandler) {
+ throw new Error(
+ 'Attempted to install a static fallback handler for the app-backend twice',
+ );
+ }
+ staticFallbackHandler = handler;
+ },
+ });
+
env.registerInit({
deps: {
logger: coreServices.logger,
- config: coreServices.config,
+ config: coreServices.rootConfig,
database: coreServices.database,
httpRouter: coreServices.httpRouter,
},
async init({ logger, config, database, httpRouter }) {
- const {
- appPackageName,
- staticFallbackHandler,
- disableConfigInjection,
- disableStaticFallbackCache,
- } = options;
+ const appPackageName =
+ config.getOptionalString('app.packageName') ?? 'app';
const winstonLogger = loggerToWinstonLogger(logger);
const router = await createRouter({
logger: winstonLogger,
config,
- database: disableStaticFallbackCache ? undefined : database,
- appPackageName: appPackageName ?? 'app',
+ database,
+ appPackageName,
staticFallbackHandler,
- disableConfigInjection,
});
httpRouter.use(router);
},
});
},
-}));
+});
diff --git a/plugins/app-backend/src/service/router.ts b/plugins/app-backend/src/service/router.ts
index 4e94138439..40e291c19d 100644
--- a/plugins/app-backend/src/service/router.ts
+++ b/plugins/app-backend/src/service/router.ts
@@ -92,6 +92,13 @@ export async function createRouter(
): Promise {
const { config, logger, appPackageName, staticFallbackHandler } = options;
+ const disableConfigInjection =
+ options.disableConfigInjection ??
+ config.getOptionalBoolean('app.disableConfigInjection');
+ const disableStaticFallbackCache = config.getOptionalBoolean(
+ 'app.disableStaticFallbackCache',
+ );
+
const appDistDir = resolvePackagePath(appPackageName, 'dist');
const staticDir = resolvePath(appDistDir, 'static');
@@ -107,7 +114,7 @@ export async function createRouter(
logger.info(`Serving static app content from ${appDistDir}`);
- if (!options.disableConfigInjection) {
+ if (!disableConfigInjection) {
const appConfigs = await readConfigs({
config,
appDistDir,
@@ -131,7 +138,7 @@ export async function createRouter(
}),
);
- if (options.database) {
+ if (options.database && !disableStaticFallbackCache) {
const store = await StaticAssetsStore.create({
logger,
database: options.database,
diff --git a/plugins/app-node/.eslintrc.js b/plugins/app-node/.eslintrc.js
new file mode 100644
index 0000000000..e2a53a6ad2
--- /dev/null
+++ b/plugins/app-node/.eslintrc.js
@@ -0,0 +1 @@
+module.exports = require('@backstage/cli/config/eslint-factory')(__dirname);
diff --git a/plugins/app-node/CHANGELOG.md b/plugins/app-node/CHANGELOG.md
new file mode 100644
index 0000000000..cd67ddf91d
--- /dev/null
+++ b/plugins/app-node/CHANGELOG.md
@@ -0,0 +1,12 @@
+# @backstage/plugin-app-node
+
+## 0.1.0-next.0
+
+### Minor Changes
+
+- 9fbe95ef6503: Added the `app` plugin node library, initially providing an extension point that can be used to configure a static fallback handler.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
diff --git a/plugins/app-node/README.md b/plugins/app-node/README.md
new file mode 100644
index 0000000000..5c606540c0
--- /dev/null
+++ b/plugins/app-node/README.md
@@ -0,0 +1,5 @@
+# @backstage/plugin-app-node
+
+Welcome to the Node.js library package for the app plugin!
+
+_This plugin was created through the Backstage CLI_
diff --git a/plugins/app-node/api-report.md b/plugins/app-node/api-report.md
new file mode 100644
index 0000000000..504c9d48c1
--- /dev/null
+++ b/plugins/app-node/api-report.md
@@ -0,0 +1,16 @@
+## API Report File for "@backstage/plugin-app-node"
+
+> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
+
+```ts
+import { ExtensionPoint } from '@backstage/backend-plugin-api';
+import { Handler } from 'express';
+
+// @public
+export interface StaticFallbackHandlerExtensionPoint {
+ setStaticFallbackHandler(handler: Handler): void;
+}
+
+// @public
+export const staticFallbackHandlerExtensionPoint: ExtensionPoint;
+```
diff --git a/plugins/app-node/package.json b/plugins/app-node/package.json
new file mode 100644
index 0000000000..106b3bdb01
--- /dev/null
+++ b/plugins/app-node/package.json
@@ -0,0 +1,35 @@
+{
+ "name": "@backstage/plugin-app-node",
+ "description": "Node.js library for the app plugin",
+ "version": "0.1.0-next.0",
+ "main": "src/index.ts",
+ "types": "src/index.ts",
+ "license": "Apache-2.0",
+ "publishConfig": {
+ "access": "public",
+ "main": "dist/index.cjs.js",
+ "types": "dist/index.d.ts"
+ },
+ "backstage": {
+ "role": "node-library"
+ },
+ "scripts": {
+ "build": "backstage-cli package build",
+ "lint": "backstage-cli package lint",
+ "test": "backstage-cli package test",
+ "clean": "backstage-cli package clean",
+ "prepack": "backstage-cli package prepack",
+ "postpack": "backstage-cli package postpack"
+ },
+ "devDependencies": {
+ "@backstage/cli": "workspace:^"
+ },
+ "files": [
+ "dist"
+ ],
+ "dependencies": {
+ "@backstage/backend-plugin-api": "workspace:^",
+ "@types/express": "^4.17.6",
+ "express": "^4.17.1"
+ }
+}
diff --git a/plugins/app-node/src/extensions.ts b/plugins/app-node/src/extensions.ts
new file mode 100644
index 0000000000..6a75a5b791
--- /dev/null
+++ b/plugins/app-node/src/extensions.ts
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2023 The 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 { createExtensionPoint } from '@backstage/backend-plugin-api';
+import { Handler } from 'express';
+
+/**
+ * The interface for {@link staticFallbackHandlerExtensionPoint}.
+ *
+ * @public
+ */
+export interface StaticFallbackHandlerExtensionPoint {
+ /**
+ * Sets the static fallback handler. This can only be done once.
+ */
+ setStaticFallbackHandler(handler: Handler): void;
+}
+
+/**
+ * An extension point the exposes the ability to configure a static fallback handler for the app backend.
+ *
+ * The static fallback handler is a request handler to handle requests for static content that is not
+ * present in the app bundle.
+ *
+ * This can be used to avoid issues with clients on older deployment versions trying to access lazy
+ * loaded content that is no longer present. Typically the requests would fall back to a long-term
+ * object store where all recently deployed versions of the app are present.
+ *
+ * Another option is to provide a `database` that will take care of storing the static assets instead.
+ *
+ * If both `database` and `staticFallbackHandler` are provided, the `database` will attempt to serve
+ * static assets first, and if they are not found, the `staticFallbackHandler` will be called.
+ *
+ * @public
+ */
+export const staticFallbackHandlerExtensionPoint =
+ createExtensionPoint({
+ id: 'app.staticFallbackHandler',
+ });
diff --git a/plugins/app-node/src/index.ts b/plugins/app-node/src/index.ts
new file mode 100644
index 0000000000..c5189fa8b9
--- /dev/null
+++ b/plugins/app-node/src/index.ts
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2023 The 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.
+ */
+
+/**
+ * Node.js library for the app plugin.
+ *
+ * @packageDocumentation
+ */
+
+export {
+ staticFallbackHandlerExtensionPoint,
+ type StaticFallbackHandlerExtensionPoint,
+} from './extensions';
diff --git a/plugins/app-node/src/setupTests.ts b/plugins/app-node/src/setupTests.ts
new file mode 100644
index 0000000000..4b9026cde5
--- /dev/null
+++ b/plugins/app-node/src/setupTests.ts
@@ -0,0 +1,16 @@
+/*
+ * Copyright 2023 The 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 {};
diff --git a/plugins/auth-backend/CHANGELOG.md b/plugins/auth-backend/CHANGELOG.md
index 60555ef74f..c8900b6df6 100644
--- a/plugins/auth-backend/CHANGELOG.md
+++ b/plugins/auth-backend/CHANGELOG.md
@@ -1,5 +1,29 @@
# @backstage/plugin-auth-backend
+## 0.18.6-next.2
+
+### Patch Changes
+
+- 16452cd007ae: Updated `frameHandler` to return `undefined` when using the redirect flow instead of returning `postMessageReponse` which was causing errors
+- bb70a9c3886a: Add frontend visibility to provider objects in `auth` config.
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+
+## 0.18.6-next.1
+
+### Patch Changes
+
+- 9dad4b0e61bd: Updated config schema to match what was being used in code
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+
## 0.18.6-next.0
### Patch Changes
diff --git a/plugins/auth-backend/config.d.ts b/plugins/auth-backend/config.d.ts
index c6579e08f8..4ebf7c9de1 100644
--- a/plugins/auth-backend/config.d.ts
+++ b/plugins/auth-backend/config.d.ts
@@ -62,6 +62,7 @@ export interface Config {
* @additionalProperties true
*/
providers?: {
+ /** @visibility frontend */
google?: {
[authEnv: string]: {
clientId: string;
@@ -72,6 +73,7 @@ export interface Config {
callbackUrl?: string;
};
};
+ /** @visibility frontend */
github?: {
[authEnv: string]: {
clientId: string;
@@ -83,6 +85,7 @@ export interface Config {
enterpriseInstanceUrl?: string;
};
};
+ /** @visibility frontend */
gitlab?: {
[authEnv: string]: {
clientId: string;
@@ -94,6 +97,7 @@ export interface Config {
callbackUrl?: string;
};
};
+ /** @visibility frontend */
saml?: {
entryPoint: string;
logoutUrl?: string;
@@ -117,6 +121,7 @@ export interface Config {
digestAlgorithm?: string;
acceptedClockSkewMs?: number;
};
+ /** @visibility frontend */
okta?: {
[authEnv: string]: {
clientId: string;
@@ -130,6 +135,7 @@ export interface Config {
callbackUrl?: string;
};
};
+ /** @visibility frontend */
oauth2?: {
[authEnv: string]: {
clientId: string;
@@ -143,6 +149,7 @@ export interface Config {
disableRefresh?: boolean;
};
};
+ /** @visibility frontend */
oidc?: {
[authEnv: string]: {
clientId: string;
@@ -152,10 +159,13 @@ export interface Config {
clientSecret: string;
callbackUrl?: string;
metadataUrl: string;
+ tokenEndpointAuthMethod?: string;
+ tokenSignedResponseAlg?: string;
scope?: string;
prompt?: string;
};
};
+ /** @visibility frontend */
auth0?: {
[authEnv: string]: {
clientId: string;
@@ -170,6 +180,7 @@ export interface Config {
connectionScope?: string;
};
};
+ /** @visibility frontend */
microsoft?: {
[authEnv: string]: {
clientId: string;
@@ -181,6 +192,7 @@ export interface Config {
callbackUrl?: string;
};
};
+ /** @visibility frontend */
onelogin?: {
[authEnv: string]: {
clientId: string;
@@ -192,10 +204,12 @@ export interface Config {
callbackUrl?: string;
};
};
+ /** @visibility frontend */
awsalb?: {
iss?: string;
region: string;
};
+ /** @visibility frontend */
cfaccess?: {
teamName: string;
};
diff --git a/plugins/auth-backend/package.json b/plugins/auth-backend/package.json
index 4e7f80afaf..1ad8d6c0c0 100644
--- a/plugins/auth-backend/package.json
+++ b/plugins/auth-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-auth-backend",
"description": "A Backstage backend plugin that handles authentication",
- "version": "0.18.6-next.0",
+ "version": "0.18.6-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/auth-backend/src/lib/flow/authFlowHelpers.test.ts b/plugins/auth-backend/src/lib/flow/authFlowHelpers.test.ts
index a0c437815d..a61d51b27b 100644
--- a/plugins/auth-backend/src/lib/flow/authFlowHelpers.test.ts
+++ b/plugins/auth-backend/src/lib/flow/authFlowHelpers.test.ts
@@ -125,7 +125,7 @@ describe('oauth helpers', () => {
postMessageResponse(mockResponse, appOrigin, data);
expect(responseBody.match(/.postMessage\(/g)).toHaveLength(2);
expect(
- responseBody.match(/.postMessage\([a-zA-z.()]*, \'\*\'\)/g),
+ responseBody.match(/.postMessage\([a-zA-Z.()]*, \'\*\'\)/g),
).toHaveLength(1);
const errData: WebMessageResponse = {
@@ -135,7 +135,7 @@ describe('oauth helpers', () => {
postMessageResponse(mockResponse, appOrigin, errData);
expect(responseBody.match(/.postMessage\(/g)).toHaveLength(2);
expect(
- responseBody.match(/.postMessage\([a-zA-z.()]*, \'\*\'\)/g),
+ responseBody.match(/.postMessage\([a-zA-Z.()]*, \'\*\'\)/g),
).toHaveLength(1);
});
diff --git a/plugins/auth-backend/src/lib/oauth/OAuthAdapter.ts b/plugins/auth-backend/src/lib/oauth/OAuthAdapter.ts
index 5f51b2d301..fb0750f0cb 100644
--- a/plugins/auth-backend/src/lib/oauth/OAuthAdapter.ts
+++ b/plugins/auth-backend/src/lib/oauth/OAuthAdapter.ts
@@ -187,6 +187,7 @@ export class OAuthAdapter implements AuthProviderRouteHandlers {
);
}
res.redirect(state.redirectUrl);
+ return undefined;
}
// post message back to popup if successful
return postMessageResponse(res, appOrigin, responseObj);
diff --git a/plugins/auth-node/CHANGELOG.md b/plugins/auth-node/CHANGELOG.md
index cb802b9757..9cfd5c28d9 100644
--- a/plugins/auth-node/CHANGELOG.md
+++ b/plugins/auth-node/CHANGELOG.md
@@ -1,5 +1,22 @@
# @backstage/plugin-auth-node
+## 0.2.17-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.2
+
+## 0.2.17-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+
## 0.2.17-next.0
### Patch Changes
diff --git a/plugins/auth-node/package.json b/plugins/auth-node/package.json
index 07b9adacb4..f57ff4e2fb 100644
--- a/plugins/auth-node/package.json
+++ b/plugins/auth-node/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-auth-node",
- "version": "0.2.17-next.0",
+ "version": "0.2.17-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -12,6 +12,12 @@
"backstage": {
"role": "node-library"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/auth-node"
+ },
"scripts": {
"build": "backstage-cli package build",
"lint": "backstage-cli package lint",
diff --git a/plugins/azure-devops-backend/CHANGELOG.md b/plugins/azure-devops-backend/CHANGELOG.md
index 8aa39659fa..0cd3b2eed5 100644
--- a/plugins/azure-devops-backend/CHANGELOG.md
+++ b/plugins/azure-devops-backend/CHANGELOG.md
@@ -1,5 +1,25 @@
# @backstage/plugin-azure-devops-backend
+## 0.3.27-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+
+## 0.3.27-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/config@1.0.8
+ - @backstage/plugin-azure-devops-common@0.3.0
+
## 0.3.27-next.0
### Patch Changes
diff --git a/plugins/azure-devops-backend/package.json b/plugins/azure-devops-backend/package.json
index 0a34ab449b..2702d38539 100644
--- a/plugins/azure-devops-backend/package.json
+++ b/plugins/azure-devops-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-azure-devops-backend",
- "version": "0.3.27-next.0",
+ "version": "0.3.27-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -12,6 +12,12 @@
"backstage": {
"role": "backend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/azure-devops-backend"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
diff --git a/plugins/azure-devops-backend/src/plugin.ts b/plugins/azure-devops-backend/src/plugin.ts
index 808bdfa248..ea0976a1f2 100644
--- a/plugins/azure-devops-backend/src/plugin.ts
+++ b/plugins/azure-devops-backend/src/plugin.ts
@@ -31,7 +31,7 @@ export const azureDevOpsPlugin = createBackendPlugin({
register(env) {
env.registerInit({
deps: {
- config: coreServices.config,
+ config: coreServices.rootConfig,
logger: coreServices.logger,
reader: coreServices.urlReader,
httpRouter: coreServices.httpRouter,
diff --git a/plugins/azure-devops/CHANGELOG.md b/plugins/azure-devops/CHANGELOG.md
index 1b405ad870..46583f66b2 100644
--- a/plugins/azure-devops/CHANGELOG.md
+++ b/plugins/azure-devops/CHANGELOG.md
@@ -1,5 +1,12 @@
# @backstage/plugin-azure-devops
+## 0.3.3-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
## 0.3.3-next.0
### Patch Changes
diff --git a/plugins/azure-devops/package.json b/plugins/azure-devops/package.json
index daaedae825..abc08d6c65 100644
--- a/plugins/azure-devops/package.json
+++ b/plugins/azure-devops/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-azure-devops",
- "version": "0.3.3-next.0",
+ "version": "0.3.3-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/azure-sites-backend/CHANGELOG.md b/plugins/azure-sites-backend/CHANGELOG.md
index 6aa958a860..4ce541ce02 100644
--- a/plugins/azure-sites-backend/CHANGELOG.md
+++ b/plugins/azure-sites-backend/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-azure-sites-backend
+## 0.1.10-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.2
+
+## 0.1.10-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/config@1.0.8
+ - @backstage/plugin-azure-sites-common@0.1.0
+
## 0.1.10-next.0
### Patch Changes
diff --git a/plugins/azure-sites-backend/package.json b/plugins/azure-sites-backend/package.json
index 81d6c434a6..178a207071 100644
--- a/plugins/azure-sites-backend/package.json
+++ b/plugins/azure-sites-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-azure-sites-backend",
- "version": "0.1.10-next.0",
+ "version": "0.1.10-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/azure-sites/CHANGELOG.md b/plugins/azure-sites/CHANGELOG.md
index 636c69c76a..4faef98d4f 100644
--- a/plugins/azure-sites/CHANGELOG.md
+++ b/plugins/azure-sites/CHANGELOG.md
@@ -1,5 +1,12 @@
# @backstage/plugin-azure-sites
+## 0.1.10-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
## 0.1.10-next.0
### Patch Changes
diff --git a/plugins/azure-sites/package.json b/plugins/azure-sites/package.json
index 82b1bd1041..35b1bf365d 100644
--- a/plugins/azure-sites/package.json
+++ b/plugins/azure-sites/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-azure-sites",
- "version": "0.1.10-next.0",
+ "version": "0.1.10-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/badges-backend/CHANGELOG.md b/plugins/badges-backend/CHANGELOG.md
index 03ba2fa42b..531cf25310 100644
--- a/plugins/badges-backend/CHANGELOG.md
+++ b/plugins/badges-backend/CHANGELOG.md
@@ -1,5 +1,28 @@
# @backstage/plugin-badges-backend
+## 0.2.3-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+
+## 0.2.3-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+
## 0.2.3-next.0
### Patch Changes
diff --git a/plugins/badges-backend/package.json b/plugins/badges-backend/package.json
index 02f20826f2..a3f822ef95 100644
--- a/plugins/badges-backend/package.json
+++ b/plugins/badges-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-badges-backend",
"description": "A Backstage backend plugin that generates README badges for your entities",
- "version": "0.2.3-next.0",
+ "version": "0.2.3-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/badges-backend/src/plugin.ts b/plugins/badges-backend/src/plugin.ts
index ecc03f0c15..3e462e88e9 100644
--- a/plugins/badges-backend/src/plugin.ts
+++ b/plugins/badges-backend/src/plugin.ts
@@ -31,7 +31,7 @@ export const badgesPlugin = createBackendPlugin({
register(env) {
env.registerInit({
deps: {
- config: coreServices.config,
+ config: coreServices.rootConfig,
logger: coreServices.logger,
discovery: coreServices.discovery,
tokenManager: coreServices.tokenManager,
diff --git a/plugins/badges/CHANGELOG.md b/plugins/badges/CHANGELOG.md
index 5d7527fba4..970344653a 100644
--- a/plugins/badges/CHANGELOG.md
+++ b/plugins/badges/CHANGELOG.md
@@ -1,5 +1,12 @@
# @backstage/plugin-badges
+## 0.2.45-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
## 0.2.45-next.0
### Patch Changes
diff --git a/plugins/badges/package.json b/plugins/badges/package.json
index 79add2944c..dc288eb4d0 100644
--- a/plugins/badges/package.json
+++ b/plugins/badges/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-badges",
"description": "A Backstage plugin that generates README badges for your entities",
- "version": "0.2.45-next.0",
+ "version": "0.2.45-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/bazaar-backend/CHANGELOG.md b/plugins/bazaar-backend/CHANGELOG.md
index 15059fe6df..70b9ea1a21 100644
--- a/plugins/bazaar-backend/CHANGELOG.md
+++ b/plugins/bazaar-backend/CHANGELOG.md
@@ -1,5 +1,27 @@
# @backstage/plugin-bazaar-backend
+## 0.2.11-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+
+## 0.2.11-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+
## 0.2.11-next.0
### Patch Changes
diff --git a/plugins/bazaar-backend/package.json b/plugins/bazaar-backend/package.json
index 6e960f384c..5dacefc140 100644
--- a/plugins/bazaar-backend/package.json
+++ b/plugins/bazaar-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-bazaar-backend",
- "version": "0.2.11-next.0",
+ "version": "0.2.11-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -13,6 +13,12 @@
"backstage": {
"role": "backend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/bazaar-backend"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build --experimental-type-build",
diff --git a/plugins/bazaar-backend/src/plugin.ts b/plugins/bazaar-backend/src/plugin.ts
index 62622717c8..1c06bda705 100644
--- a/plugins/bazaar-backend/src/plugin.ts
+++ b/plugins/bazaar-backend/src/plugin.ts
@@ -31,7 +31,7 @@ export const bazaarPlugin = createBackendPlugin({
register(env) {
env.registerInit({
deps: {
- config: coreServices.config,
+ config: coreServices.rootConfig,
database: coreServices.database,
identity: coreServices.identity,
logger: coreServices.logger,
diff --git a/plugins/bazaar/CHANGELOG.md b/plugins/bazaar/CHANGELOG.md
index 7168eaec27..519b5aa753 100644
--- a/plugins/bazaar/CHANGELOG.md
+++ b/plugins/bazaar/CHANGELOG.md
@@ -1,5 +1,30 @@
# @backstage/plugin-bazaar
+## 0.2.12-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+ - @backstage/plugin-catalog@1.12.1-next.2
+ - @backstage/cli@0.22.10-next.1
+
+## 0.2.12-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/cli@0.22.10-next.1
+ - @backstage/plugin-catalog@1.12.1-next.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
## 0.2.12-next.0
### Patch Changes
diff --git a/plugins/bazaar/package.json b/plugins/bazaar/package.json
index 0536367512..252c1c037f 100644
--- a/plugins/bazaar/package.json
+++ b/plugins/bazaar/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-bazaar",
- "version": "0.2.12-next.0",
+ "version": "0.2.12-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -12,6 +12,12 @@
"backstage": {
"role": "frontend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/bazaar"
+ },
"scripts": {
"build": "backstage-cli package build",
"start": "backstage-cli package start",
diff --git a/plugins/bitbucket-cloud-common/CHANGELOG.md b/plugins/bitbucket-cloud-common/CHANGELOG.md
index d438d843fd..1afd2eb74e 100644
--- a/plugins/bitbucket-cloud-common/CHANGELOG.md
+++ b/plugins/bitbucket-cloud-common/CHANGELOG.md
@@ -1,5 +1,13 @@
# @backstage/plugin-bitbucket-cloud-common
+## 0.2.9-next.0
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/integration@1.5.1
+
## 0.2.8
### Patch Changes
diff --git a/plugins/bitbucket-cloud-common/package.json b/plugins/bitbucket-cloud-common/package.json
index ffbe670094..7d1ef19b6b 100644
--- a/plugins/bitbucket-cloud-common/package.json
+++ b/plugins/bitbucket-cloud-common/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-bitbucket-cloud-common",
"description": "Common functionalities for bitbucket-cloud plugins",
- "version": "0.2.8",
+ "version": "0.2.9-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -14,6 +14,12 @@
"backstage": {
"role": "common-library"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/bitbucket-cloud-common"
+ },
"scripts": {
"build": "backstage-cli package build",
"lint": "backstage-cli package lint",
diff --git a/plugins/bitrise/CHANGELOG.md b/plugins/bitrise/CHANGELOG.md
index db09305c36..bb1cf3b072 100644
--- a/plugins/bitrise/CHANGELOG.md
+++ b/plugins/bitrise/CHANGELOG.md
@@ -1,5 +1,24 @@
# @backstage/plugin-bitrise
+## 0.1.48-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## 0.1.48-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
## 0.1.48-next.0
### Patch Changes
diff --git a/plugins/bitrise/package.json b/plugins/bitrise/package.json
index fe7f1f1591..f499ec6dd5 100644
--- a/plugins/bitrise/package.json
+++ b/plugins/bitrise/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-bitrise",
"description": "A Backstage plugin that integrates towards Bitrise",
- "version": "0.1.48-next.0",
+ "version": "0.1.48-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -13,6 +13,12 @@
"backstage": {
"role": "frontend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/bitrise"
+ },
"scripts": {
"build": "backstage-cli package build",
"start": "backstage-cli package start",
diff --git a/plugins/catalog-backend-module-aws/CHANGELOG.md b/plugins/catalog-backend-module-aws/CHANGELOG.md
index 560e1cafb7..49df1ca628 100644
--- a/plugins/catalog-backend-module-aws/CHANGELOG.md
+++ b/plugins/catalog-backend-module-aws/CHANGELOG.md
@@ -1,5 +1,36 @@
# @backstage/plugin-catalog-backend-module-aws
+## 0.2.3-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+
+## 0.2.3-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 4b82382ed8c2: Fixed invalid configuration schema. The configuration schema may be more strict as a result.
+- b4222908b0c3: Added option to configure AWS `accountId` in `AwsS3EntityProvider`
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-catalog-node@1.4.1-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/integration-aws-node@0.1.5
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+ - @backstage/plugin-catalog-common@1.0.15
+ - @backstage/plugin-kubernetes-common@0.6.5
+
## 0.2.3-next.0
### Patch Changes
diff --git a/plugins/catalog-backend-module-aws/config.d.ts b/plugins/catalog-backend-module-aws/config.d.ts
index b3610ccfc5..4c9c98512e 100644
--- a/plugins/catalog-backend-module-aws/config.d.ts
+++ b/plugins/catalog-backend-module-aws/config.d.ts
@@ -54,14 +54,19 @@ export interface Config {
* @see https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/setting-region.html
*/
region?: string;
+ /**
+ * (Optional) AWS Account id.
+ * If not set, main account is used.
+ * @see https://github.com/backstage/backstage/blob/master/packages/integration-aws-node/README.md
+ */
+ accountId?: string;
/**
* (Optional) TaskScheduleDefinition for the refresh.
*/
schedule?: TaskScheduleDefinitionConfig;
}
- | Record<
- string,
- {
+ | {
+ [name: string]: {
/**
* (Required) AWS S3 Bucket Name
*/
@@ -77,12 +82,18 @@ export interface Config {
* @see https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/setting-region.html
*/
region?: string;
+ /**
+ * (Optional) AWS Account id.
+ * If not set, main account is used.
+ * @see https://github.com/backstage/backstage/blob/master/packages/integration-aws-node/README.md
+ */
+ accountId?: string;
/**
* (Optional) TaskScheduleDefinition for the refresh.
*/
schedule?: TaskScheduleDefinitionConfig;
- }
- >;
+ };
+ };
};
};
}
diff --git a/plugins/catalog-backend-module-aws/package.json b/plugins/catalog-backend-module-aws/package.json
index d27587a6b3..c470b30e70 100644
--- a/plugins/catalog-backend-module-aws/package.json
+++ b/plugins/catalog-backend-module-aws/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-backend-module-aws",
"description": "A Backstage catalog backend module that helps integrate towards AWS",
- "version": "0.2.3-next.0",
+ "version": "0.2.3-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-backend-module-aws/src/module/catalogModuleAwsS3EntityProvider.test.ts b/plugins/catalog-backend-module-aws/src/module/catalogModuleAwsS3EntityProvider.test.ts
index 1475da9e79..7599f8446f 100644
--- a/plugins/catalog-backend-module-aws/src/module/catalogModuleAwsS3EntityProvider.test.ts
+++ b/plugins/catalog-backend-module-aws/src/module/catalogModuleAwsS3EntityProvider.test.ts
@@ -62,7 +62,7 @@ describe('catalogModuleAwsS3EntityProvider', () => {
await startTestBackend({
extensionPoints: [[catalogProcessingExtensionPoint, extensionPoint]],
services: [
- [coreServices.config, config],
+ [coreServices.rootConfig, config],
[coreServices.logger, getVoidLogger()],
[coreServices.scheduler, scheduler],
],
diff --git a/plugins/catalog-backend-module-aws/src/module/catalogModuleAwsS3EntityProvider.ts b/plugins/catalog-backend-module-aws/src/module/catalogModuleAwsS3EntityProvider.ts
index 452284e526..521d61d3d8 100644
--- a/plugins/catalog-backend-module-aws/src/module/catalogModuleAwsS3EntityProvider.ts
+++ b/plugins/catalog-backend-module-aws/src/module/catalogModuleAwsS3EntityProvider.ts
@@ -33,7 +33,7 @@ export const catalogModuleAwsS3EntityProvider = createBackendModule({
register(env) {
env.registerInit({
deps: {
- config: coreServices.config,
+ config: coreServices.rootConfig,
catalog: catalogProcessingExtensionPoint,
logger: coreServices.logger,
scheduler: coreServices.scheduler,
diff --git a/plugins/catalog-backend-module-aws/src/providers/AwsS3EntityProvider.ts b/plugins/catalog-backend-module-aws/src/providers/AwsS3EntityProvider.ts
index 4a87a42e75..4df92b58c2 100644
--- a/plugins/catalog-backend-module-aws/src/providers/AwsS3EntityProvider.ts
+++ b/plugins/catalog-backend-module-aws/src/providers/AwsS3EntityProvider.ts
@@ -146,20 +146,22 @@ export class AwsS3EntityProvider implements EntityProvider {
/** {@inheritdoc @backstage/plugin-catalog-backend#EntityProvider.connect} */
async connect(connection: EntityProviderConnection): Promise {
this.connection = connection;
- const credProvider =
- await this.awsCredentialsManager.getCredentialProvider();
+ const { accountId, region, bucketName } = this.config;
+ const credProvider = await this.awsCredentialsManager.getCredentialProvider(
+ accountId ? { accountId } : undefined,
+ );
this.s3 = new S3({
apiVersion: '2006-03-01',
credentialDefaultProvider: () => credProvider.sdkCredentialProvider,
endpoint: this.integration.config.endpoint,
- region: this.config.region,
+ region,
forcePathStyle: this.integration.config.s3ForcePathStyle,
});
// https://github.com/aws/aws-sdk-js-v3/issues/4122#issuecomment-1298968804
const endpoint = await getEndpointFromInstructions(
{
- Bucket: this.config.bucketName,
+ Bucket: bucketName,
},
ListObjectsV2Command,
this.s3.config as unknown as Record,
diff --git a/plugins/catalog-backend-module-aws/src/providers/config.ts b/plugins/catalog-backend-module-aws/src/providers/config.ts
index 5ef2729bf0..1ab52f9fd4 100644
--- a/plugins/catalog-backend-module-aws/src/providers/config.ts
+++ b/plugins/catalog-backend-module-aws/src/providers/config.ts
@@ -46,6 +46,7 @@ function readAwsS3Config(id: string, config: Config): AwsS3Config {
const bucketName = config.getString('bucketName');
const region = config.getOptionalString('region');
const prefix = config.getOptionalString('prefix');
+ const accountId = config.getOptionalString('accountId');
const schedule = config.has('schedule')
? readTaskScheduleDefinitionFromConfig(config.getConfig('schedule'))
@@ -57,5 +58,6 @@ function readAwsS3Config(id: string, config: Config): AwsS3Config {
region,
prefix,
schedule,
+ accountId,
};
}
diff --git a/plugins/catalog-backend-module-aws/src/providers/types.ts b/plugins/catalog-backend-module-aws/src/providers/types.ts
index 204fa154c6..8e12b5f096 100644
--- a/plugins/catalog-backend-module-aws/src/providers/types.ts
+++ b/plugins/catalog-backend-module-aws/src/providers/types.ts
@@ -22,4 +22,5 @@ export type AwsS3Config = {
prefix?: string;
region?: string;
schedule?: TaskScheduleDefinition;
+ accountId?: string;
};
diff --git a/plugins/catalog-backend-module-azure/CHANGELOG.md b/plugins/catalog-backend-module-azure/CHANGELOG.md
index 9d60b4a5f2..48bd1452d5 100644
--- a/plugins/catalog-backend-module-azure/CHANGELOG.md
+++ b/plugins/catalog-backend-module-azure/CHANGELOG.md
@@ -1,5 +1,33 @@
# @backstage/plugin-catalog-backend-module-azure
+## 0.1.19-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+
+## 0.1.19-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 4b82382ed8c2: Fixed invalid configuration schema. The configuration schema may be more strict as a result.
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-catalog-node@1.4.1-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+ - @backstage/plugin-catalog-common@1.0.15
+
## 0.1.19-next.0
### Patch Changes
diff --git a/plugins/catalog-backend-module-azure/config.d.ts b/plugins/catalog-backend-module-azure/config.d.ts
index 940695c8ea..757ed2bfd3 100644
--- a/plugins/catalog-backend-module-azure/config.d.ts
+++ b/plugins/catalog-backend-module-azure/config.d.ts
@@ -16,35 +16,6 @@
import { TaskScheduleDefinitionConfig } from '@backstage/backend-tasks';
-interface AzureDevOpsConfig {
- /**
- * (Optional) The DevOps host; leave empty for `dev.azure.com`, otherwise set to your self-hosted instance host.
- */
- host: string;
- /**
- * (Required) Your organization slug.
- */
- organization: string;
- /**
- * (Required) Your project slug.
- */
- project: string;
- /**
- * (Optional) The repository name. Wildcards are supported as show on the examples above.
- * If not set, all repositories will be searched.
- */
- repository?: string;
- /**
- * (Optional) Where to find catalog-info.yaml files. Wildcards are supported.
- * If not set, defaults to /catalog-info.yaml.
- */
- path?: string;
- /**
- * (Optional) TaskScheduleDefinition for the refresh.
- */
- schedule?: TaskScheduleDefinitionConfig;
-}
-
export interface Config {
catalog?: {
/**
@@ -54,7 +25,36 @@ export interface Config {
/**
* AzureDevopsEntityProvider configuration
*/
- azureDevOps?: Record;
+ azureDevOps?: {
+ [name: string]: {
+ /**
+ * (Optional) The DevOps host; leave empty for `dev.azure.com`, otherwise set to your self-hosted instance host.
+ */
+ host: string;
+ /**
+ * (Required) Your organization slug.
+ */
+ organization: string;
+ /**
+ * (Required) Your project slug.
+ */
+ project: string;
+ /**
+ * (Optional) The repository name. Wildcards are supported as show on the examples above.
+ * If not set, all repositories will be searched.
+ */
+ repository?: string;
+ /**
+ * (Optional) Where to find catalog-info.yaml files. Wildcards are supported.
+ * If not set, defaults to /catalog-info.yaml.
+ */
+ path?: string;
+ /**
+ * (Optional) TaskScheduleDefinition for the refresh.
+ */
+ schedule?: TaskScheduleDefinitionConfig;
+ };
+ };
};
};
}
diff --git a/plugins/catalog-backend-module-azure/package.json b/plugins/catalog-backend-module-azure/package.json
index ac3cdd2b05..9c91403165 100644
--- a/plugins/catalog-backend-module-azure/package.json
+++ b/plugins/catalog-backend-module-azure/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-backend-module-azure",
"description": "A Backstage catalog backend module that helps integrate towards Azure",
- "version": "0.1.19-next.0",
+ "version": "0.1.19-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-backend-module-azure/src/module/catalogModuleAzureDevOpsEntityProvider.test.ts b/plugins/catalog-backend-module-azure/src/module/catalogModuleAzureDevOpsEntityProvider.test.ts
index fa3b3d865e..e3140f4583 100644
--- a/plugins/catalog-backend-module-azure/src/module/catalogModuleAzureDevOpsEntityProvider.test.ts
+++ b/plugins/catalog-backend-module-azure/src/module/catalogModuleAzureDevOpsEntityProvider.test.ts
@@ -65,7 +65,7 @@ describe('catalogModuleAzureDevOpsEntityProvider', () => {
await startTestBackend({
extensionPoints: [[catalogProcessingExtensionPoint, extensionPoint]],
services: [
- [coreServices.config, config],
+ [coreServices.rootConfig, config],
[coreServices.logger, getVoidLogger()],
[coreServices.scheduler, scheduler],
],
diff --git a/plugins/catalog-backend-module-azure/src/module/catalogModuleAzureDevOpsEntityProvider.ts b/plugins/catalog-backend-module-azure/src/module/catalogModuleAzureDevOpsEntityProvider.ts
index ec8b6441ba..804c0d4712 100644
--- a/plugins/catalog-backend-module-azure/src/module/catalogModuleAzureDevOpsEntityProvider.ts
+++ b/plugins/catalog-backend-module-azure/src/module/catalogModuleAzureDevOpsEntityProvider.ts
@@ -33,7 +33,7 @@ export const catalogModuleAzureDevOpsEntityProvider = createBackendModule({
register(env) {
env.registerInit({
deps: {
- config: coreServices.config,
+ config: coreServices.rootConfig,
catalog: catalogProcessingExtensionPoint,
logger: coreServices.logger,
scheduler: coreServices.scheduler,
diff --git a/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md b/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md
index 4aeca8609e..2aceb188be 100644
--- a/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md
+++ b/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md
@@ -1,5 +1,35 @@
# @backstage/plugin-catalog-backend-module-bitbucket-cloud
+## 0.1.15-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+ - @backstage/plugin-events-node@0.2.9-next.2
+
+## 0.1.15-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 4b82382ed8c2: Fixed invalid configuration schema. The configuration schema may be more strict as a result.
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-bitbucket-cloud-common@0.2.9-next.0
+ - @backstage/plugin-catalog-node@1.4.1-next.1
+ - @backstage/plugin-events-node@0.2.9-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/plugin-catalog-common@1.0.15
+
## 0.1.15-next.0
### Patch Changes
diff --git a/plugins/catalog-backend-module-bitbucket-cloud/config.d.ts b/plugins/catalog-backend-module-bitbucket-cloud/config.d.ts
index 8fa58413c0..fa7c070042 100644
--- a/plugins/catalog-backend-module-bitbucket-cloud/config.d.ts
+++ b/plugins/catalog-backend-module-bitbucket-cloud/config.d.ts
@@ -45,24 +45,23 @@ export interface Config {
*/
filters?: {
/**
- * (Optional) Filter for the repository slug.
+ * (Optional) Regular expression filter for the repository slug.
* @visibility frontend
*/
- repoSlug?: RegExp;
+ repoSlug?: string;
/**
- * (Optional) Filter for the project key.
+ * (Optional) Regular expression filter for the project key.
* @visibility frontend
*/
- projectKey?: RegExp;
+ projectKey?: string;
};
/**
* (Optional) TaskScheduleDefinition for the discovery.
*/
schedule?: TaskScheduleDefinitionConfig;
}
- | Record<
- string,
- {
+ | {
+ [name: string]: {
/**
* (Optional) Path to the catalog file. Default to "/catalog-info.yaml".
* @visibility frontend
@@ -79,22 +78,22 @@ export interface Config {
*/
filters?: {
/**
- * (Optional) Filter for the repository slug.
+ * (Optional) Regular expression filter for the repository slug.
* @visibility frontend
*/
- repoSlug?: RegExp;
+ repoSlug?: string;
/**
- * (Optional) Filter for the project key.
+ * (Optional) Regular expression filter for the project key.
* @visibility frontend
*/
- projectKey?: RegExp;
+ projectKey?: string;
};
/**
* (Optional) TaskScheduleDefinition for the discovery.
*/
schedule?: TaskScheduleDefinitionConfig;
- }
- >;
+ };
+ };
};
};
}
diff --git a/plugins/catalog-backend-module-bitbucket-cloud/package.json b/plugins/catalog-backend-module-bitbucket-cloud/package.json
index 1baa14f00f..6806ce1184 100644
--- a/plugins/catalog-backend-module-bitbucket-cloud/package.json
+++ b/plugins/catalog-backend-module-bitbucket-cloud/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-backend-module-bitbucket-cloud",
"description": "A Backstage catalog backend module that helps integrate towards Bitbucket Cloud",
- "version": "0.1.15-next.0",
+ "version": "0.1.15-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-backend-module-bitbucket-cloud/src/module/catalogModuleBitbucketCloudEntityProvider.test.ts b/plugins/catalog-backend-module-bitbucket-cloud/src/module/catalogModuleBitbucketCloudEntityProvider.test.ts
index a34eae3750..b46304d4e3 100644
--- a/plugins/catalog-backend-module-bitbucket-cloud/src/module/catalogModuleBitbucketCloudEntityProvider.test.ts
+++ b/plugins/catalog-backend-module-bitbucket-cloud/src/module/catalogModuleBitbucketCloudEntityProvider.test.ts
@@ -56,7 +56,7 @@ describe('catalogModuleBitbucketCloudEntityProvider', () => {
[eventsExtensionPoint, eventsExtensionPointImpl],
],
services: [
- mockServices.config.factory({
+ mockServices.rootConfig.factory({
data: {
catalog: {
providers: {
diff --git a/plugins/catalog-backend-module-bitbucket-cloud/src/module/catalogModuleBitbucketCloudEntityProvider.ts b/plugins/catalog-backend-module-bitbucket-cloud/src/module/catalogModuleBitbucketCloudEntityProvider.ts
index 7c4f4a30b2..e5e1ad1609 100644
--- a/plugins/catalog-backend-module-bitbucket-cloud/src/module/catalogModuleBitbucketCloudEntityProvider.ts
+++ b/plugins/catalog-backend-module-bitbucket-cloud/src/module/catalogModuleBitbucketCloudEntityProvider.ts
@@ -37,7 +37,7 @@ export const catalogModuleBitbucketCloudEntityProvider = createBackendModule({
deps: {
catalog: catalogProcessingExtensionPoint,
catalogApi: catalogServiceRef,
- config: coreServices.config,
+ config: coreServices.rootConfig,
// TODO(pjungermann): How to make this optional for those which only want the provider without event support?
// Do we even want to support this?
events: eventsExtensionPoint,
diff --git a/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md b/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md
index fa0c443e3a..feb0a2f984 100644
--- a/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md
+++ b/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md
@@ -1,5 +1,31 @@
# @backstage/plugin-catalog-backend-module-bitbucket-server
+## 0.1.13-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+
+## 0.1.13-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 4b82382ed8c2: Fixed invalid configuration schema. The configuration schema may be more strict as a result.
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-catalog-node@1.4.1-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+
## 0.1.13-next.0
### Patch Changes
diff --git a/plugins/catalog-backend-module-bitbucket-server/config.d.ts b/plugins/catalog-backend-module-bitbucket-server/config.d.ts
index 67f694d419..57a94550e9 100644
--- a/plugins/catalog-backend-module-bitbucket-server/config.d.ts
+++ b/plugins/catalog-backend-module-bitbucket-server/config.d.ts
@@ -37,24 +37,23 @@ export interface Config {
*/
filters?: {
/**
- * (Optional) Filter for the repository slug.
+ * (Optional) Regular expression filter for the repository slug.
* @visibility frontend
*/
- repoSlug?: RegExp;
+ repoSlug?: string;
/**
- * (Optional) Filter for the project key.
+ * (Optional) Regular expression filter for the project key.
* @visibility frontend
*/
- projectKey?: RegExp;
+ projectKey?: string;
};
/**
* (Optional) TaskScheduleDefinition for the refresh.
*/
schedule?: TaskScheduleDefinitionConfig;
}
- | Record<
- string,
- {
+ | {
+ [name: string]: {
/**
* (Optional) Path to the catalog file. Default to "/catalog-info.yaml".
* @visibility frontend
@@ -66,22 +65,22 @@ export interface Config {
*/
filters?: {
/**
- * (Optional) Filter for the repository slug.
+ * (Optional) Regular expression filter for the repository slug.
* @visibility frontend
*/
- repoSlug?: RegExp;
+ repoSlug?: string;
/**
- * (Optional) Filter for the project key.
+ * (Optional) Regular expression filter for the project key.
* @visibility frontend
*/
- projectKey?: RegExp;
+ projectKey?: string;
};
/**
* (Optional) TaskScheduleDefinition for the refresh.
*/
schedule?: TaskScheduleDefinitionConfig;
- }
- >;
+ };
+ };
};
};
}
diff --git a/plugins/catalog-backend-module-bitbucket-server/package.json b/plugins/catalog-backend-module-bitbucket-server/package.json
index 4b35c8f7d7..cd1d19cd90 100644
--- a/plugins/catalog-backend-module-bitbucket-server/package.json
+++ b/plugins/catalog-backend-module-bitbucket-server/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-catalog-backend-module-bitbucket-server",
- "version": "0.1.13-next.0",
+ "version": "0.1.13-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-backend-module-bitbucket-server/src/module/catalogModuleBitbucketServerEntityProvider.test.ts b/plugins/catalog-backend-module-bitbucket-server/src/module/catalogModuleBitbucketServerEntityProvider.test.ts
index d17b4a4c96..f072823052 100644
--- a/plugins/catalog-backend-module-bitbucket-server/src/module/catalogModuleBitbucketServerEntityProvider.test.ts
+++ b/plugins/catalog-backend-module-bitbucket-server/src/module/catalogModuleBitbucketServerEntityProvider.test.ts
@@ -69,7 +69,7 @@ describe('catalogModuleBitbucketServerEntityProvider', () => {
await startTestBackend({
extensionPoints: [[catalogProcessingExtensionPoint, extensionPoint]],
services: [
- [coreServices.config, config],
+ [coreServices.rootConfig, config],
[coreServices.logger, getVoidLogger()],
[coreServices.scheduler, scheduler],
],
diff --git a/plugins/catalog-backend-module-bitbucket-server/src/module/catalogModuleBitbucketServerEntityProvider.ts b/plugins/catalog-backend-module-bitbucket-server/src/module/catalogModuleBitbucketServerEntityProvider.ts
index 354bce7d6d..ef71df9b06 100644
--- a/plugins/catalog-backend-module-bitbucket-server/src/module/catalogModuleBitbucketServerEntityProvider.ts
+++ b/plugins/catalog-backend-module-bitbucket-server/src/module/catalogModuleBitbucketServerEntityProvider.ts
@@ -32,7 +32,7 @@ export const catalogModuleBitbucketServerEntityProvider = createBackendModule({
env.registerInit({
deps: {
catalog: catalogProcessingExtensionPoint,
- config: coreServices.config,
+ config: coreServices.rootConfig,
logger: coreServices.logger,
scheduler: coreServices.scheduler,
},
diff --git a/plugins/catalog-backend-module-bitbucket/CHANGELOG.md b/plugins/catalog-backend-module-bitbucket/CHANGELOG.md
index 9c1da14fba..d7b456e3ee 100644
--- a/plugins/catalog-backend-module-bitbucket/CHANGELOG.md
+++ b/plugins/catalog-backend-module-bitbucket/CHANGELOG.md
@@ -1,5 +1,27 @@
# @backstage/plugin-catalog-backend-module-bitbucket
+## 0.2.15-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+
+## 0.2.15-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-bitbucket-cloud-common@0.2.9-next.0
+ - @backstage/plugin-catalog-node@1.4.1-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+
## 0.2.15-next.0
### Patch Changes
diff --git a/plugins/catalog-backend-module-bitbucket/package.json b/plugins/catalog-backend-module-bitbucket/package.json
index e968aad343..fb641a5af9 100644
--- a/plugins/catalog-backend-module-bitbucket/package.json
+++ b/plugins/catalog-backend-module-bitbucket/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-backend-module-bitbucket",
"description": "A Backstage catalog backend module that helps integrate towards Bitbucket",
- "version": "0.2.15-next.0",
+ "version": "0.2.15-next.2",
"deprecated": true,
"main": "src/index.ts",
"types": "src/index.ts",
diff --git a/plugins/catalog-backend-module-gcp/.eslintrc.js b/plugins/catalog-backend-module-gcp/.eslintrc.js
new file mode 100644
index 0000000000..e2a53a6ad2
--- /dev/null
+++ b/plugins/catalog-backend-module-gcp/.eslintrc.js
@@ -0,0 +1 @@
+module.exports = require('@backstage/cli/config/eslint-factory')(__dirname);
diff --git a/plugins/catalog-backend-module-gcp/CHANGELOG.md b/plugins/catalog-backend-module-gcp/CHANGELOG.md
new file mode 100644
index 0000000000..3885e371a2
--- /dev/null
+++ b/plugins/catalog-backend-module-gcp/CHANGELOG.md
@@ -0,0 +1,28 @@
+# @backstage/plugin-catalog-backend-module-gcp
+
+## 0.1.0-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+
+## 0.1.0-next.0
+
+### Minor Changes
+
+- 290eff6692aa: Added GCP catalog plugin with GKE provider
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-catalog-node@1.4.1-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/config@1.0.8
+ - @backstage/plugin-kubernetes-common@0.6.5
diff --git a/plugins/catalog-backend-module-gcp/README.md b/plugins/catalog-backend-module-gcp/README.md
new file mode 100644
index 0000000000..d1ef926310
--- /dev/null
+++ b/plugins/catalog-backend-module-gcp/README.md
@@ -0,0 +1,41 @@
+# Catalog Backend Module for GCP
+
+This is an extension module to the plugin-catalog-backend plugin, containing catalog processors and providers to ingest GCP resources as `Resource` kind entities.
+
+## installation
+
+Register the plugin in `catalog.ts``
+
+```typescript
+import { GkeEntityProvider } from '@backstage/plugin-catalog-backend-module-gcp';
+
+...
+
+builder.addEntityProvider(
+ GkeEntityProvider.fromConfig({
+ logger: env.logger,
+ scheduler: env.scheduler,
+ config: env.config
+ })
+);
+```
+
+Update `app-config.yaml` as follows:
+
+```yaml
+catalog:
+ providers:
+ gcp:
+ gke:
+ parents:
+ # consult https://cloud.google.com/kubernetes-engine/docs/ for valid values
+ # list all clusters in the project
+ - 'projects/some-project/locations/-'
+ # list all clusters in the region, in the project
+ - 'projects/some-other-project/locations/some-region'
+ schedule: # optional; same options as in TaskScheduleDefinition
+ # supports cron, ISO duration, "human duration" as used in code
+ frequency: { minutes: 30 }
+ # supports ISO duration, "human duration" as used in code
+ timeout: { minutes: 3 }
+```
diff --git a/plugins/catalog-backend-module-gcp/alpha-api-report.md b/plugins/catalog-backend-module-gcp/alpha-api-report.md
new file mode 100644
index 0000000000..6e6f0427e9
--- /dev/null
+++ b/plugins/catalog-backend-module-gcp/alpha-api-report.md
@@ -0,0 +1,7 @@
+## API Report File for "@backstage/plugin-catalog-backend-module-gcp"
+
+> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
+
+```ts
+
+```
diff --git a/plugins/catalog-backend-module-gcp/api-report.md b/plugins/catalog-backend-module-gcp/api-report.md
new file mode 100644
index 0000000000..6f963ed51d
--- /dev/null
+++ b/plugins/catalog-backend-module-gcp/api-report.md
@@ -0,0 +1,48 @@
+## API Report File for "@backstage/plugin-catalog-backend-module-gcp"
+
+> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
+
+```ts
+import { BackendFeature } from '@backstage/backend-plugin-api';
+import { Config } from '@backstage/config';
+import * as container from '@google-cloud/container';
+import { EntityProvider } from '@backstage/plugin-catalog-node';
+import { EntityProviderConnection } from '@backstage/plugin-catalog-node';
+import { Logger } from 'winston';
+import { SchedulerService } from '@backstage/backend-plugin-api';
+
+// @public
+export const catalogModuleGcpGkeEntityProvider: () => BackendFeature;
+
+// @public
+export class GkeEntityProvider implements EntityProvider {
+ // (undocumented)
+ connect(connection: EntityProviderConnection): Promise;
+ // (undocumented)
+ static fromConfig({
+ logger,
+ scheduler,
+ config,
+ }: {
+ logger: Logger;
+ scheduler: SchedulerService;
+ config: Config;
+ }): GkeEntityProvider;
+ // (undocumented)
+ static fromConfigWithClient({
+ logger,
+ scheduler,
+ config,
+ clusterManagerClient,
+ }: {
+ logger: Logger;
+ scheduler: SchedulerService;
+ config: Config;
+ clusterManagerClient: container.v1.ClusterManagerClient;
+ }): GkeEntityProvider;
+ // (undocumented)
+ getProviderName(): string;
+ // (undocumented)
+ refresh(): Promise;
+}
+```
diff --git a/plugins/catalog-backend-module-gcp/config.d.ts b/plugins/catalog-backend-module-gcp/config.d.ts
new file mode 100644
index 0000000000..d6884d32ce
--- /dev/null
+++ b/plugins/catalog-backend-module-gcp/config.d.ts
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2023 The 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 { TaskScheduleDefinitionConfig } from '@backstage/backend-tasks';
+
+export interface Config {
+ catalog?: {
+ /**
+ * List of provider-specific options and attributes
+ */
+ providers?: {
+ /**
+ * GCPCatalogModuleConfig configuration
+ */
+ gcp?: {
+ /**
+ * Config for GKE clusters
+ */
+ gke?: {
+ /**
+ * Locations to list clusters from
+ */
+ parents: string[];
+ /**
+ * (Optional) TaskScheduleDefinition for the refresh.
+ */
+ schedule: TaskScheduleDefinitionConfig;
+ };
+ };
+ };
+ };
+}
diff --git a/plugins/catalog-backend-module-gcp/package.json b/plugins/catalog-backend-module-gcp/package.json
new file mode 100644
index 0000000000..24f7dd0a25
--- /dev/null
+++ b/plugins/catalog-backend-module-gcp/package.json
@@ -0,0 +1,66 @@
+{
+ "name": "@backstage/plugin-catalog-backend-module-gcp",
+ "description": "A Backstage catalog backend module that helps integrate towards GCP",
+ "version": "0.1.0-next.1",
+ "main": "src/index.ts",
+ "types": "src/index.ts",
+ "license": "Apache-2.0",
+ "publishConfig": {
+ "access": "public"
+ },
+ "exports": {
+ ".": "./src/index.ts",
+ "./alpha": "./src/alpha.ts",
+ "./package.json": "./package.json"
+ },
+ "typesVersions": {
+ "*": {
+ "alpha": [
+ "src/alpha.ts"
+ ],
+ "package.json": [
+ "package.json"
+ ]
+ }
+ },
+ "backstage": {
+ "role": "backend-plugin-module"
+ },
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/catalog-backend-module-gcp"
+ },
+ "keywords": [
+ "backstage"
+ ],
+ "scripts": {
+ "start": "backstage-cli package start",
+ "build": "backstage-cli package build",
+ "lint": "backstage-cli package lint",
+ "test": "backstage-cli package test",
+ "prepack": "backstage-cli package prepack",
+ "postpack": "backstage-cli package postpack",
+ "clean": "backstage-cli package clean"
+ },
+ "dependencies": {
+ "@backstage/backend-common": "workspace:^",
+ "@backstage/backend-plugin-api": "workspace:^",
+ "@backstage/backend-tasks": "workspace:^",
+ "@backstage/config": "workspace:^",
+ "@backstage/plugin-catalog-node": "workspace:^",
+ "@backstage/plugin-kubernetes-common": "workspace:^",
+ "@google-cloud/container": "^4.15.0",
+ "winston": "^3.2.1"
+ },
+ "devDependencies": {
+ "@backstage/backend-test-utils": "workspace:^",
+ "@backstage/cli": "workspace:^"
+ },
+ "files": [
+ "config.d.ts",
+ "dist"
+ ],
+ "configSchema": "config.d.ts"
+}
diff --git a/plugins/catalog-backend-module-gcp/src/alpha.ts b/plugins/catalog-backend-module-gcp/src/alpha.ts
new file mode 100644
index 0000000000..9eec69e76f
--- /dev/null
+++ b/plugins/catalog-backend-module-gcp/src/alpha.ts
@@ -0,0 +1,23 @@
+/*
+ * Copyright 2023 The 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.
+ */
+
+/**
+ * A Backstage catalog backend module that helps integrate towards GCP
+ *
+ * @packageDocumentation
+ */
+
+export {};
diff --git a/plugins/catalog-backend-module-gcp/src/index.ts b/plugins/catalog-backend-module-gcp/src/index.ts
new file mode 100644
index 0000000000..fb3984a04d
--- /dev/null
+++ b/plugins/catalog-backend-module-gcp/src/index.ts
@@ -0,0 +1,24 @@
+/*
+ * Copyright 2023 The 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.
+ */
+
+/**
+ * A Backstage catalog backend module that helps integrate towards GCP
+ *
+ * @packageDocumentation
+ */
+
+export * from './providers';
+export * from './module';
diff --git a/plugins/catalog-backend-module-gcp/src/module/catalogModuleGcpGkeEntityProvider.ts b/plugins/catalog-backend-module-gcp/src/module/catalogModuleGcpGkeEntityProvider.ts
new file mode 100644
index 0000000000..7f93bddbfe
--- /dev/null
+++ b/plugins/catalog-backend-module-gcp/src/module/catalogModuleGcpGkeEntityProvider.ts
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2022 The 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 { loggerToWinstonLogger } from '@backstage/backend-common';
+import {
+ coreServices,
+ createBackendModule,
+} from '@backstage/backend-plugin-api';
+import { catalogProcessingExtensionPoint } from '@backstage/plugin-catalog-node/alpha';
+import { GkeEntityProvider } from '../providers/GkeEntityProvider';
+
+/**
+ * Registers the GcpGkeEntityProvider with the catalog processing extension point.
+ *
+ * @public
+ */
+export const catalogModuleGcpGkeEntityProvider = createBackendModule({
+ pluginId: 'catalog',
+ moduleId: 'gcpGkeEntityProvider',
+ register(env) {
+ env.registerInit({
+ deps: {
+ config: coreServices.rootConfig,
+ catalog: catalogProcessingExtensionPoint,
+ logger: coreServices.logger,
+ scheduler: coreServices.scheduler,
+ },
+ async init({ config, catalog, logger, scheduler }) {
+ catalog.addEntityProvider(
+ GkeEntityProvider.fromConfig({
+ logger: loggerToWinstonLogger(logger),
+ scheduler,
+ config,
+ }),
+ );
+ },
+ });
+ },
+});
diff --git a/plugins/catalog-backend-module-gcp/src/module/index.ts b/plugins/catalog-backend-module-gcp/src/module/index.ts
new file mode 100644
index 0000000000..c7cd310c97
--- /dev/null
+++ b/plugins/catalog-backend-module-gcp/src/module/index.ts
@@ -0,0 +1,17 @@
+/*
+ * Copyright 2023 The 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 { catalogModuleGcpGkeEntityProvider } from './catalogModuleGcpGkeEntityProvider';
diff --git a/plugins/catalog-backend-module-gcp/src/providers/GkeEntityProvider.test.ts b/plugins/catalog-backend-module-gcp/src/providers/GkeEntityProvider.test.ts
new file mode 100644
index 0000000000..20e91a85bf
--- /dev/null
+++ b/plugins/catalog-backend-module-gcp/src/providers/GkeEntityProvider.test.ts
@@ -0,0 +1,251 @@
+/*
+ * Copyright 2023 The 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 { GkeEntityProvider } from './GkeEntityProvider';
+import { TaskRunner } from '@backstage/backend-tasks';
+import {
+ ANNOTATION_KUBERNETES_API_SERVER,
+ ANNOTATION_KUBERNETES_API_SERVER_CA,
+ ANNOTATION_KUBERNETES_AUTH_PROVIDER,
+} from '@backstage/plugin-kubernetes-common';
+import * as container from '@google-cloud/container';
+import { ConfigReader } from '@backstage/config';
+
+describe('GkeEntityProvider', () => {
+ const clusterManagerClientMock = {
+ listClusters: jest.fn(),
+ };
+ const connectionMock = {
+ applyMutation: jest.fn(),
+ refresh: jest.fn(),
+ };
+ const taskRunner = {
+ createScheduleFn: jest.fn(),
+ run: jest.fn(),
+ } as TaskRunner;
+ const schedulerMock = {
+ createScheduledTaskRunner: jest.fn(),
+ } as any;
+ const logger = {
+ info: jest.fn(),
+ error: jest.fn(),
+ };
+ let gkeEntityProvider: GkeEntityProvider;
+
+ beforeEach(async () => {
+ jest.resetAllMocks();
+ schedulerMock.createScheduledTaskRunner.mockReturnValue(taskRunner);
+ gkeEntityProvider = GkeEntityProvider.fromConfigWithClient({
+ logger: logger as any,
+ config: new ConfigReader({
+ catalog: {
+ providers: {
+ gcp: {
+ gke: {
+ parents: ['parent1', 'parent2'],
+ schedule: {
+ frequency: {
+ minutes: 3,
+ },
+ timeout: {
+ minutes: 3,
+ },
+ },
+ },
+ },
+ },
+ },
+ }),
+ scheduler: schedulerMock,
+ clusterManagerClient: clusterManagerClientMock as any,
+ });
+ await gkeEntityProvider.connect(connectionMock);
+ });
+
+ it('should return clusters as Resources', async () => {
+ clusterManagerClientMock.listClusters.mockImplementation(req => {
+ if (req.parent === 'parent1') {
+ return [
+ {
+ clusters: [
+ {
+ name: 'some-cluster',
+ endpoint: 'http://127.0.0.1:1234',
+ location: 'some-location',
+ selfLink: 'http://127.0.0.1/some-link',
+ masterAuth: {
+ clusterCaCertificate: 'abcdefg',
+ },
+ },
+ ],
+ },
+ ];
+ } else if (req.parent === 'parent2') {
+ return [
+ {
+ clusters: [
+ {
+ name: 'some-other-cluster',
+ endpoint: 'http://127.0.0.1:5678',
+ location: 'some-other-location',
+ selfLink: 'http://127.0.0.1/some-other-link',
+ masterAuth: {
+ // no CA cert is ok
+ },
+ },
+ ],
+ },
+ ];
+ }
+
+ throw new Error(`unexpected parent ${req.parent}`);
+ });
+ await gkeEntityProvider.refresh();
+ expect(connectionMock.applyMutation).toHaveBeenCalledWith({
+ type: 'full',
+ entities: [
+ {
+ locationKey: 'gcp-gke:some-location',
+ entity: {
+ apiVersion: 'backstage.io/v1alpha1',
+ kind: 'Resource',
+ metadata: {
+ annotations: {
+ [ANNOTATION_KUBERNETES_API_SERVER]: 'http://127.0.0.1:1234',
+ [ANNOTATION_KUBERNETES_API_SERVER_CA]: 'abcdefg',
+ [ANNOTATION_KUBERNETES_AUTH_PROVIDER]: 'google',
+ 'backstage.io/managed-by-location': 'gcp-gke:some-location',
+ 'backstage.io/managed-by-origin-location':
+ 'gcp-gke:some-location',
+ },
+ name: 'some-cluster',
+ namespace: 'default',
+ },
+ spec: {
+ type: 'kubernetes-cluster',
+ owner: 'unknown',
+ },
+ },
+ },
+ {
+ locationKey: 'gcp-gke:some-other-location',
+ entity: {
+ apiVersion: 'backstage.io/v1alpha1',
+ kind: 'Resource',
+ metadata: {
+ annotations: {
+ [ANNOTATION_KUBERNETES_API_SERVER]: 'http://127.0.0.1:5678',
+ [ANNOTATION_KUBERNETES_API_SERVER_CA]: '',
+ [ANNOTATION_KUBERNETES_AUTH_PROVIDER]: 'google',
+ 'backstage.io/managed-by-location':
+ 'gcp-gke:some-other-location',
+ 'backstage.io/managed-by-origin-location':
+ 'gcp-gke:some-other-location',
+ },
+ name: 'some-other-cluster',
+ namespace: 'default',
+ },
+ spec: {
+ type: 'kubernetes-cluster',
+ owner: 'unknown',
+ },
+ },
+ },
+ ],
+ });
+ });
+
+ const ignoredPartialClustersTests: [
+ string,
+ container.protos.google.container.v1.ICluster,
+ ][] = [
+ [
+ 'no-cluster-name',
+ {
+ endpoint: 'http://127.0.0.1:1234',
+ location: 'some-location',
+ selfLink: 'http://127.0.0.1/some-link',
+ masterAuth: {
+ clusterCaCertificate: 'abcdefg',
+ },
+ },
+ ],
+ [
+ 'no-self-link',
+ {
+ // no selfLink
+ name: 'some-name',
+ endpoint: 'http://127.0.0.1:1234',
+ location: 'some-location',
+ masterAuth: {
+ clusterCaCertificate: 'abcdefg',
+ },
+ },
+ ],
+ [
+ 'no-endpoint',
+ {
+ name: 'some-name',
+ location: 'some-location',
+ selfLink: 'http://127.0.0.1/some-link',
+ masterAuth: {
+ clusterCaCertificate: 'abcdefg',
+ },
+ },
+ ],
+ [
+ 'no-location',
+ {
+ name: 'some-name',
+ endpoint: 'http://127.0.0.1:1234',
+ selfLink: 'http://127.0.0.1/some-link',
+ masterAuth: {
+ clusterCaCertificate: 'abcdefg',
+ },
+ },
+ ],
+ ];
+
+ it.each(ignoredPartialClustersTests)(
+ 'ignore cluster - %s',
+ async (_name, ignoredCluster) => {
+ clusterManagerClientMock.listClusters.mockImplementation(req => {
+ if (req.parent === 'parent1') {
+ return [ignoredCluster];
+ }
+ return [
+ {
+ clusters: [],
+ },
+ ];
+ });
+ await gkeEntityProvider.refresh();
+ expect(connectionMock.applyMutation).toHaveBeenCalledWith({
+ type: 'full',
+ entities: [],
+ });
+ },
+ );
+
+ it('should log GKE API errors', async () => {
+ clusterManagerClientMock.listClusters.mockRejectedValue(
+ new Error('some-error'),
+ );
+ await gkeEntityProvider.refresh();
+ expect(connectionMock.applyMutation).toHaveBeenCalledTimes(0);
+ expect(logger.error).toHaveBeenCalledTimes(1);
+ });
+});
diff --git a/plugins/catalog-backend-module-gcp/src/providers/GkeEntityProvider.ts b/plugins/catalog-backend-module-gcp/src/providers/GkeEntityProvider.ts
new file mode 100644
index 0000000000..0130955737
--- /dev/null
+++ b/plugins/catalog-backend-module-gcp/src/providers/GkeEntityProvider.ts
@@ -0,0 +1,223 @@
+/*
+ * Copyright 2023 The 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 {
+ TaskRunner,
+ readTaskScheduleDefinitionFromConfig,
+} from '@backstage/backend-tasks';
+import {
+ DeferredEntity,
+ EntityProvider,
+ EntityProviderConnection,
+} from '@backstage/plugin-catalog-node';
+
+import { Logger } from 'winston';
+import * as container from '@google-cloud/container';
+import {
+ ANNOTATION_KUBERNETES_API_SERVER,
+ ANNOTATION_KUBERNETES_API_SERVER_CA,
+ ANNOTATION_KUBERNETES_AUTH_PROVIDER,
+} from '@backstage/plugin-kubernetes-common';
+import { Config } from '@backstage/config';
+import { SchedulerService } from '@backstage/backend-plugin-api';
+
+/**
+ * Catalog provider to ingest GKE clusters
+ *
+ * @public
+ */
+export class GkeEntityProvider implements EntityProvider {
+ private readonly logger: Logger;
+ private readonly scheduleFn: () => Promise;
+ private readonly gkeParents: string[];
+ private readonly clusterManagerClient: container.v1.ClusterManagerClient;
+ private connection?: EntityProviderConnection;
+
+ private constructor(
+ logger: Logger,
+ taskRunner: TaskRunner,
+ gkeParents: string[],
+ clusterManagerClient: container.v1.ClusterManagerClient,
+ ) {
+ this.logger = logger;
+ this.scheduleFn = this.createScheduleFn(taskRunner);
+ this.gkeParents = gkeParents;
+ this.clusterManagerClient = clusterManagerClient;
+ }
+
+ public static fromConfig({
+ logger,
+ scheduler,
+ config,
+ }: {
+ logger: Logger;
+ scheduler: SchedulerService;
+ config: Config;
+ }) {
+ return GkeEntityProvider.fromConfigWithClient({
+ logger,
+ scheduler: scheduler,
+ config,
+ clusterManagerClient: new container.v1.ClusterManagerClient(),
+ });
+ }
+
+ public static fromConfigWithClient({
+ logger,
+ scheduler,
+ config,
+ clusterManagerClient,
+ }: {
+ logger: Logger;
+ scheduler: SchedulerService;
+ config: Config;
+ clusterManagerClient: container.v1.ClusterManagerClient;
+ }) {
+ const gkeProviderConfig = config.getConfig('catalog.providers.gcp.gke');
+ const schedule = readTaskScheduleDefinitionFromConfig(
+ gkeProviderConfig.getConfig('schedule'),
+ );
+ return new GkeEntityProvider(
+ logger,
+ scheduler.createScheduledTaskRunner(schedule),
+ gkeProviderConfig.getStringArray('parents'),
+ clusterManagerClient,
+ );
+ }
+
+ getProviderName(): string {
+ return `gcp-gke`;
+ }
+
+ async connect(connection: EntityProviderConnection): Promise {
+ this.connection = connection;
+ await this.scheduleFn();
+ }
+
+ private filterOutUndefinedDeferredEntity(
+ e: DeferredEntity | undefined,
+ ): e is DeferredEntity {
+ return e !== undefined;
+ }
+
+ private filterOutUndefinedCluster(
+ c: container.protos.google.container.v1.ICluster | null | undefined,
+ ): c is container.protos.google.container.v1.ICluster {
+ return c !== undefined && c !== null;
+ }
+
+ private clusterToResource(
+ cluster: container.protos.google.container.v1.ICluster,
+ ): DeferredEntity | undefined {
+ const location = `${this.getProviderName()}:${cluster.location}`;
+
+ if (!cluster.name || !cluster.selfLink || !location || !cluster.endpoint) {
+ this.logger.warn(
+ `ignoring partial cluster, one of name=${cluster.name}, endpoint=${cluster.endpoint}, selfLink=${cluster.selfLink} or location=${cluster.location} is missing`,
+ );
+ return undefined;
+ }
+
+ // TODO fix location type
+ return {
+ locationKey: location,
+ entity: {
+ apiVersion: 'backstage.io/v1alpha1',
+ kind: 'Resource',
+ metadata: {
+ annotations: {
+ [ANNOTATION_KUBERNETES_API_SERVER]: cluster.endpoint,
+ [ANNOTATION_KUBERNETES_API_SERVER_CA]:
+ cluster.masterAuth?.clusterCaCertificate || '',
+ [ANNOTATION_KUBERNETES_AUTH_PROVIDER]: 'google',
+ 'backstage.io/managed-by-location': location,
+ 'backstage.io/managed-by-origin-location': location,
+ },
+ name: cluster.name,
+ namespace: 'default',
+ },
+ spec: {
+ type: 'kubernetes-cluster',
+ owner: 'unknown',
+ },
+ },
+ };
+ }
+
+ private createScheduleFn(taskRunner: TaskRunner): () => Promise {
+ return async () => {
+ const taskId = `${this.getProviderName()}:refresh`;
+ return taskRunner.run({
+ id: taskId,
+ fn: async () => {
+ try {
+ await this.refresh();
+ } catch (error) {
+ this.logger.error(error);
+ }
+ },
+ });
+ };
+ }
+
+ private async getClusters(): Promise<
+ container.protos.google.container.v1.ICluster[]
+ > {
+ const clusters = await Promise.all(
+ this.gkeParents.map(async parent => {
+ const request = {
+ parent: parent,
+ };
+ const [response] = await this.clusterManagerClient.listClusters(
+ request,
+ );
+ return response.clusters?.filter(this.filterOutUndefinedCluster) ?? [];
+ }),
+ );
+ return clusters.flat();
+ }
+
+ async refresh() {
+ if (!this.connection) {
+ throw new Error('Not initialized');
+ }
+
+ this.logger.info('Discovering GKE clusters');
+
+ let clusters: container.protos.google.container.v1.ICluster[];
+
+ try {
+ clusters = await this.getClusters();
+ } catch (e) {
+ this.logger.error('error fetching GKE clusters', e);
+ return;
+ }
+ const resources =
+ clusters
+ .map(c => this.clusterToResource(c))
+ .filter(this.filterOutUndefinedDeferredEntity) ?? [];
+
+ this.logger.info(
+ `Ingesting GKE clusters [${resources
+ .map(r => r.entity.metadata.name)
+ .join(', ')}]`,
+ );
+
+ await this.connection.applyMutation({
+ type: 'full',
+ entities: resources,
+ });
+ }
+}
diff --git a/plugins/catalog-backend-module-gcp/src/providers/index.ts b/plugins/catalog-backend-module-gcp/src/providers/index.ts
new file mode 100644
index 0000000000..7846afc3ed
--- /dev/null
+++ b/plugins/catalog-backend-module-gcp/src/providers/index.ts
@@ -0,0 +1,17 @@
+/*
+ * Copyright 2022 The 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 { GkeEntityProvider } from './GkeEntityProvider';
diff --git a/plugins/catalog-backend-module-gcp/src/setupTests.ts b/plugins/catalog-backend-module-gcp/src/setupTests.ts
new file mode 100644
index 0000000000..aa70772592
--- /dev/null
+++ b/plugins/catalog-backend-module-gcp/src/setupTests.ts
@@ -0,0 +1,17 @@
+/*
+ * Copyright 2023 The 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 {};
diff --git a/plugins/catalog-backend-module-gerrit/CHANGELOG.md b/plugins/catalog-backend-module-gerrit/CHANGELOG.md
index 09df93f029..54ed3b5a02 100644
--- a/plugins/catalog-backend-module-gerrit/CHANGELOG.md
+++ b/plugins/catalog-backend-module-gerrit/CHANGELOG.md
@@ -1,5 +1,31 @@
# @backstage/plugin-catalog-backend-module-gerrit
+## 0.1.16-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+
+## 0.1.16-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 4b82382ed8c2: Fixed invalid configuration schema. The configuration schema may be more strict as a result.
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-catalog-node@1.4.1-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+
## 0.1.16-next.0
### Patch Changes
diff --git a/plugins/catalog-backend-module-gerrit/config.d.ts b/plugins/catalog-backend-module-gerrit/config.d.ts
index d8b48d2967..a246662b0a 100644
--- a/plugins/catalog-backend-module-gerrit/config.d.ts
+++ b/plugins/catalog-backend-module-gerrit/config.d.ts
@@ -25,9 +25,8 @@ export interface Config {
*
* Maps provider id with configuration.
*/
- gerrit?: Record<
- string,
- {
+ gerrit?: {
+ [name: string]: {
/**
* (Required) The host of the Gerrit integration to use.
*/
@@ -42,8 +41,8 @@ export interface Config {
* The branch where the provider will try to find entities. Defaults to "master".
*/
branch?: string;
- }
- >;
+ };
+ };
};
};
}
diff --git a/plugins/catalog-backend-module-gerrit/package.json b/plugins/catalog-backend-module-gerrit/package.json
index aa0fc95907..f0cafe2c9e 100644
--- a/plugins/catalog-backend-module-gerrit/package.json
+++ b/plugins/catalog-backend-module-gerrit/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-catalog-backend-module-gerrit",
- "version": "0.1.16-next.0",
+ "version": "0.1.16-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-backend-module-gerrit/src/module/catalogModuleGerritEntityProvider.test.ts b/plugins/catalog-backend-module-gerrit/src/module/catalogModuleGerritEntityProvider.test.ts
index 0511aa7b4c..464837124f 100644
--- a/plugins/catalog-backend-module-gerrit/src/module/catalogModuleGerritEntityProvider.test.ts
+++ b/plugins/catalog-backend-module-gerrit/src/module/catalogModuleGerritEntityProvider.test.ts
@@ -75,7 +75,7 @@ describe('catalogModuleGerritEntityProvider', () => {
await startTestBackend({
extensionPoints: [[catalogProcessingExtensionPoint, extensionPoint]],
services: [
- [coreServices.config, config],
+ [coreServices.rootConfig, config],
[coreServices.logger, getVoidLogger()],
[coreServices.scheduler, scheduler],
],
diff --git a/plugins/catalog-backend-module-gerrit/src/module/catalogModuleGerritEntityProvider.ts b/plugins/catalog-backend-module-gerrit/src/module/catalogModuleGerritEntityProvider.ts
index 814259fb40..bb29ce6eef 100644
--- a/plugins/catalog-backend-module-gerrit/src/module/catalogModuleGerritEntityProvider.ts
+++ b/plugins/catalog-backend-module-gerrit/src/module/catalogModuleGerritEntityProvider.ts
@@ -32,7 +32,7 @@ export const catalogModuleGerritEntityProvider = createBackendModule({
env.registerInit({
deps: {
catalog: catalogProcessingExtensionPoint,
- config: coreServices.config,
+ config: coreServices.rootConfig,
logger: coreServices.logger,
scheduler: coreServices.scheduler,
},
diff --git a/plugins/catalog-backend-module-github/CHANGELOG.md b/plugins/catalog-backend-module-github/CHANGELOG.md
index 3743f035c4..fbee4b92d6 100644
--- a/plugins/catalog-backend-module-github/CHANGELOG.md
+++ b/plugins/catalog-backend-module-github/CHANGELOG.md
@@ -1,5 +1,38 @@
# @backstage/plugin-catalog-backend-module-github
+## 0.3.3-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-backend@1.12.0-next.2
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+ - @backstage/plugin-events-node@0.2.9-next.2
+
+## 0.3.3-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 4b82382ed8c2: Fixed invalid configuration schema. The configuration schema may be more strict as a result.
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-catalog-backend@1.12.0-next.1
+ - @backstage/plugin-catalog-node@1.4.1-next.1
+ - @backstage/plugin-events-node@0.2.9-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+ - @backstage/plugin-catalog-common@1.0.15
+
## 0.3.3-next.0
### Patch Changes
diff --git a/plugins/catalog-backend-module-github/config.d.ts b/plugins/catalog-backend-module-github/config.d.ts
index 5a699e745f..9755504ee2 100644
--- a/plugins/catalog-backend-module-github/config.d.ts
+++ b/plugins/catalog-backend-module-github/config.d.ts
@@ -118,9 +118,8 @@ export interface Config {
*/
schedule?: TaskScheduleDefinitionConfig;
}
- | Record<
- string,
- {
+ | {
+ [name: string]: {
/**
* (Optional) The hostname of your GitHub Enterprise instance.
* Default: `github.com`.
@@ -182,8 +181,8 @@ export interface Config {
* (Optional) TaskScheduleDefinition for the refresh.
*/
schedule?: TaskScheduleDefinitionConfig;
- }
- >;
+ };
+ };
};
};
}
diff --git a/plugins/catalog-backend-module-github/package.json b/plugins/catalog-backend-module-github/package.json
index 2e64d39638..08214b0342 100644
--- a/plugins/catalog-backend-module-github/package.json
+++ b/plugins/catalog-backend-module-github/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-backend-module-github",
"description": "A Backstage catalog backend module that helps integrate towards GitHub",
- "version": "0.3.3-next.0",
+ "version": "0.3.3-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-backend-module-github/src/module/catalogModuleGithubEntityProvider.test.ts b/plugins/catalog-backend-module-github/src/module/catalogModuleGithubEntityProvider.test.ts
index 82a5552dba..ca82e58e26 100644
--- a/plugins/catalog-backend-module-github/src/module/catalogModuleGithubEntityProvider.test.ts
+++ b/plugins/catalog-backend-module-github/src/module/catalogModuleGithubEntityProvider.test.ts
@@ -62,7 +62,7 @@ describe('catalogModuleGithubEntityProvider', () => {
await startTestBackend({
extensionPoints: [[catalogProcessingExtensionPoint, extensionPoint]],
services: [
- [coreServices.config, config],
+ [coreServices.rootConfig, config],
[coreServices.logger, getVoidLogger()],
[coreServices.scheduler, scheduler],
],
diff --git a/plugins/catalog-backend-module-github/src/module/catalogModuleGithubEntityProvider.ts b/plugins/catalog-backend-module-github/src/module/catalogModuleGithubEntityProvider.ts
index 997da3023b..8e052bd0a0 100644
--- a/plugins/catalog-backend-module-github/src/module/catalogModuleGithubEntityProvider.ts
+++ b/plugins/catalog-backend-module-github/src/module/catalogModuleGithubEntityProvider.ts
@@ -34,7 +34,7 @@ export const catalogModuleGithubEntityProvider = createBackendModule({
env.registerInit({
deps: {
catalog: catalogProcessingExtensionPoint,
- config: coreServices.config,
+ config: coreServices.rootConfig,
logger: coreServices.logger,
scheduler: coreServices.scheduler,
},
diff --git a/plugins/catalog-backend-module-gitlab/CHANGELOG.md b/plugins/catalog-backend-module-gitlab/CHANGELOG.md
index 2fcba33d47..a1f7d0265e 100644
--- a/plugins/catalog-backend-module-gitlab/CHANGELOG.md
+++ b/plugins/catalog-backend-module-gitlab/CHANGELOG.md
@@ -1,5 +1,34 @@
# @backstage/plugin-catalog-backend-module-gitlab
+## 0.2.4-next.2
+
+### Patch Changes
+
+- 2fe1f5973ff7: Filter Gitlab archived projects through APIs
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+
+## 0.2.4-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- e6c721439f37: Added option to skip forked repos in GitlabDiscoveryEntityProvider
+- 4b82382ed8c2: Fixed invalid configuration schema. The configuration schema may be more strict as a result.
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-catalog-node@1.4.1-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+
## 0.2.4-next.0
### Patch Changes
diff --git a/plugins/catalog-backend-module-gitlab/config.d.ts b/plugins/catalog-backend-module-gitlab/config.d.ts
index f5afc71093..7d183b6e58 100644
--- a/plugins/catalog-backend-module-gitlab/config.d.ts
+++ b/plugins/catalog-backend-module-gitlab/config.d.ts
@@ -22,9 +22,8 @@ export interface Config {
/**
* GitlabDiscoveryEntityProvider configuration
*/
- gitlab?: Record<
- string,
- {
+ gitlab?: {
+ [name: string]: {
/**
* (Required) Gitlab's host name.
*/
@@ -51,21 +50,21 @@ export interface Config {
/**
* (Optional) RegExp for the Project Name Pattern
*/
- projectPattern?: RegExp;
+ projectPattern?: string;
/**
* (Optional) RegExp for the User Name Pattern
*/
- userPattern?: RegExp;
+ userPattern?: string;
/**
* (Optional) RegExp for the Group Name Pattern
*/
- groupPattern?: RegExp;
+ groupPattern?: string;
/**
* (Optional) Skip forked repository
*/
skipForkedRepos?: boolean;
- }
- >;
+ };
+ };
};
};
}
diff --git a/plugins/catalog-backend-module-gitlab/package.json b/plugins/catalog-backend-module-gitlab/package.json
index 1a3f0245eb..08f4d8b897 100644
--- a/plugins/catalog-backend-module-gitlab/package.json
+++ b/plugins/catalog-backend-module-gitlab/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-backend-module-gitlab",
"description": "A Backstage catalog backend module that helps integrate towards GitLab",
- "version": "0.2.4-next.0",
+ "version": "0.2.4-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-backend-module-gitlab/src/GitLabDiscoveryProcessor.test.ts b/plugins/catalog-backend-module-gitlab/src/GitLabDiscoveryProcessor.test.ts
index 6333184ea8..a56c229105 100644
--- a/plugins/catalog-backend-module-gitlab/src/GitLabDiscoveryProcessor.test.ts
+++ b/plugins/catalog-backend-module-gitlab/src/GitLabDiscoveryProcessor.test.ts
@@ -56,6 +56,7 @@ function setupFakeServer(
listProjectsCallback: (request: {
page: number;
include_subgroups: boolean;
+ archived: boolean;
}) => {
data: GitLabProject[];
nextPage?: number;
@@ -74,20 +75,24 @@ function setupFakeServer(
}
const page = req.url.searchParams.get('page');
const include_subgroups = req.url.searchParams.get('include_subgroups');
+ const archived = req.url.searchParams.get('archived');
const response = listProjectsCallback({
page: parseInt(page!, 10),
include_subgroups: include_subgroups === 'true',
+ archived: archived === 'true',
});
// Filter the fake results based on the `last_activity_after` parameter
const last_activity_after = req.url.searchParams.get(
'last_activity_after',
);
- const filteredData = response.data.filter(
- v =>
- !last_activity_after ||
- Date.parse(v.last_activity_at) >= Date.parse(last_activity_after),
- );
+ const filteredData = response.data
+ .filter(
+ v =>
+ !last_activity_after ||
+ Date.parse(v.last_activity_at) >= Date.parse(last_activity_after),
+ )
+ .filter(v => archived || !v.archived);
return res(
ctx.set('x-next-page', response.nextPage?.toString() ?? ''),
@@ -250,6 +255,7 @@ describe('GitlabDiscoveryProcessor', () => {
},
],
};
+
default:
throw new Error('Invalid request');
}
diff --git a/plugins/catalog-backend-module-gitlab/src/GitLabDiscoveryProcessor.ts b/plugins/catalog-backend-module-gitlab/src/GitLabDiscoveryProcessor.ts
index c9bd4d9187..02b1b1cb51 100644
--- a/plugins/catalog-backend-module-gitlab/src/GitLabDiscoveryProcessor.ts
+++ b/plugins/catalog-backend-module-gitlab/src/GitLabDiscoveryProcessor.ts
@@ -109,6 +109,7 @@ export class GitLabDiscoveryProcessor implements CatalogProcessor {
const lastActivity = (await this.cache.get(this.getCacheKey())) as string;
const opts = {
+ archived: false,
group,
page: 1,
// We check for the existence of lastActivity and only set it if it's present to ensure
@@ -125,10 +126,6 @@ export class GitLabDiscoveryProcessor implements CatalogProcessor {
for await (const project of projects) {
res.scanned++;
- if (project.archived) {
- continue;
- }
-
if (branch === '*' && project.default_branch === undefined) {
continue;
}
diff --git a/plugins/catalog-backend-module-gitlab/src/lib/client.ts b/plugins/catalog-backend-module-gitlab/src/lib/client.ts
index f0e169d8df..41b99e1c5b 100644
--- a/plugins/catalog-backend-module-gitlab/src/lib/client.ts
+++ b/plugins/catalog-backend-module-gitlab/src/lib/client.ts
@@ -30,6 +30,7 @@ export type CommonListOptions = {
};
interface ListProjectOptions extends CommonListOptions {
+ archived?: boolean;
group?: string;
}
diff --git a/plugins/catalog-backend-module-gitlab/src/module/catalogModuleGitlabDiscoveryEntityProvider.test.ts b/plugins/catalog-backend-module-gitlab/src/module/catalogModuleGitlabDiscoveryEntityProvider.test.ts
index 7a3d0a0e0d..da11601f09 100644
--- a/plugins/catalog-backend-module-gitlab/src/module/catalogModuleGitlabDiscoveryEntityProvider.test.ts
+++ b/plugins/catalog-backend-module-gitlab/src/module/catalogModuleGitlabDiscoveryEntityProvider.test.ts
@@ -74,7 +74,7 @@ describe('catalogModuleGitlabDiscoveryEntityProvider', () => {
await startTestBackend({
extensionPoints: [[catalogProcessingExtensionPoint, extensionPoint]],
services: [
- [coreServices.config, config],
+ [coreServices.rootConfig, config],
[coreServices.logger, getVoidLogger()],
[coreServices.scheduler, scheduler],
],
diff --git a/plugins/catalog-backend-module-gitlab/src/module/catalogModuleGitlabDiscoveryEntityProvider.ts b/plugins/catalog-backend-module-gitlab/src/module/catalogModuleGitlabDiscoveryEntityProvider.ts
index ffae233319..d192e8f3a5 100644
--- a/plugins/catalog-backend-module-gitlab/src/module/catalogModuleGitlabDiscoveryEntityProvider.ts
+++ b/plugins/catalog-backend-module-gitlab/src/module/catalogModuleGitlabDiscoveryEntityProvider.ts
@@ -33,7 +33,7 @@ export const catalogModuleGitlabDiscoveryEntityProvider = createBackendModule({
register(env) {
env.registerInit({
deps: {
- config: coreServices.config,
+ config: coreServices.rootConfig,
catalog: catalogProcessingExtensionPoint,
logger: coreServices.logger,
scheduler: coreServices.scheduler,
diff --git a/plugins/catalog-backend-module-gitlab/src/providers/GitlabDiscoveryEntityProvider.ts b/plugins/catalog-backend-module-gitlab/src/providers/GitlabDiscoveryEntityProvider.ts
index 08d2fe48a7..ce7a304746 100644
--- a/plugins/catalog-backend-module-gitlab/src/providers/GitlabDiscoveryEntityProvider.ts
+++ b/plugins/catalog-backend-module-gitlab/src/providers/GitlabDiscoveryEntityProvider.ts
@@ -155,6 +155,7 @@ export class GitlabDiscoveryEntityProvider implements EntityProvider {
const projects = paginated(
options => client.listProjects(options),
{
+ archived: false,
group: this.config.group,
page: 1,
per_page: 50,
@@ -173,10 +174,6 @@ export class GitlabDiscoveryEntityProvider implements EntityProvider {
res.scanned++;
- if (project.archived) {
- continue;
- }
-
if (
this.config.skipForkedRepos &&
project.hasOwnProperty('forked_from_project')
diff --git a/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md b/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md
index 583458667d..3e33f19f54 100644
--- a/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md
+++ b/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md
@@ -1,5 +1,34 @@
# @backstage/plugin-catalog-backend-module-incremental-ingestion
+## 0.4.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-backend@1.12.0-next.2
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+ - @backstage/plugin-events-node@0.2.9-next.2
+
+## 0.4.1-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-catalog-backend@1.12.0-next.1
+ - @backstage/plugin-catalog-node@1.4.1-next.1
+ - @backstage/plugin-events-node@0.2.9-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/plugin-permission-common@0.7.7
+
## 0.4.1-next.0
### Patch Changes
diff --git a/plugins/catalog-backend-module-incremental-ingestion/package.json b/plugins/catalog-backend-module-incremental-ingestion/package.json
index a6a947c93c..aa664151d8 100644
--- a/plugins/catalog-backend-module-incremental-ingestion/package.json
+++ b/plugins/catalog-backend-module-incremental-ingestion/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-backend-module-incremental-ingestion",
"description": "An entity provider for streaming large asset sources into the catalog",
- "version": "0.4.1-next.0",
+ "version": "0.4.1-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-backend-module-incremental-ingestion/src/module/WrapperProviders.ts b/plugins/catalog-backend-module-incremental-ingestion/src/module/WrapperProviders.ts
index 4738893c95..cc2954ea05 100644
--- a/plugins/catalog-backend-module-incremental-ingestion/src/module/WrapperProviders.ts
+++ b/plugins/catalog-backend-module-incremental-ingestion/src/module/WrapperProviders.ts
@@ -15,7 +15,7 @@
*/
import {
- ConfigService,
+ RootConfigService,
LoggerService,
SchedulerService,
} from '@backstage/backend-plugin-api';
@@ -49,7 +49,7 @@ export class WrapperProviders {
constructor(
private readonly options: {
- config: ConfigService;
+ config: RootConfigService;
logger: LoggerService;
client: Knex;
scheduler: SchedulerService;
diff --git a/plugins/catalog-backend-module-incremental-ingestion/src/module/catalogModuleIncrementalIngestionEntityProvider.test.ts b/plugins/catalog-backend-module-incremental-ingestion/src/module/catalogModuleIncrementalIngestionEntityProvider.test.ts
index ef07b4cb10..ae480048d1 100644
--- a/plugins/catalog-backend-module-incremental-ingestion/src/module/catalogModuleIncrementalIngestionEntityProvider.test.ts
+++ b/plugins/catalog-backend-module-incremental-ingestion/src/module/catalogModuleIncrementalIngestionEntityProvider.test.ts
@@ -50,7 +50,7 @@ describe('catalogModuleIncrementalIngestionEntityProvider', () => {
[catalogProcessingExtensionPoint, { addEntityProvider }],
],
services: [
- [coreServices.config, new ConfigReader({})],
+ [coreServices.rootConfig, new ConfigReader({})],
[coreServices.database, database],
[coreServices.httpRouter, httpRouter],
[coreServices.logger, getVoidLogger()],
diff --git a/plugins/catalog-backend-module-incremental-ingestion/src/module/catalogModuleIncrementalIngestionEntityProvider.ts b/plugins/catalog-backend-module-incremental-ingestion/src/module/catalogModuleIncrementalIngestionEntityProvider.ts
index 19d5742b46..78d28d7b07 100644
--- a/plugins/catalog-backend-module-incremental-ingestion/src/module/catalogModuleIncrementalIngestionEntityProvider.ts
+++ b/plugins/catalog-backend-module-incremental-ingestion/src/module/catalogModuleIncrementalIngestionEntityProvider.ts
@@ -44,7 +44,7 @@ export const catalogModuleIncrementalIngestionEntityProvider =
env.registerInit({
deps: {
catalog: catalogProcessingExtensionPoint,
- config: coreServices.config,
+ config: coreServices.rootConfig,
database: coreServices.database,
httpRouter: coreServices.httpRouter,
logger: coreServices.logger,
diff --git a/plugins/catalog-backend-module-incremental-ingestion/src/run.ts b/plugins/catalog-backend-module-incremental-ingestion/src/run.ts
index f94c988237..e7e7a900b9 100644
--- a/plugins/catalog-backend-module-incremental-ingestion/src/run.ts
+++ b/plugins/catalog-backend-module-incremental-ingestion/src/run.ts
@@ -54,7 +54,7 @@ async function main() {
const backend = createBackend({
services: [
createServiceFactory({
- service: coreServices.config,
+ service: coreServices.rootConfig,
deps: {},
factory: () => new ConfigReader(config),
}),
diff --git a/plugins/catalog-backend-module-ldap/CHANGELOG.md b/plugins/catalog-backend-module-ldap/CHANGELOG.md
index 4e9cabb577..bb411cc81d 100644
--- a/plugins/catalog-backend-module-ldap/CHANGELOG.md
+++ b/plugins/catalog-backend-module-ldap/CHANGELOG.md
@@ -1,5 +1,26 @@
# @backstage/plugin-catalog-backend-module-ldap
+## 0.5.15-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+
+## 0.5.15-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-node@1.4.1-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+ - @backstage/plugin-catalog-common@1.0.15
+
## 0.5.15-next.0
### Patch Changes
diff --git a/plugins/catalog-backend-module-ldap/package.json b/plugins/catalog-backend-module-ldap/package.json
index 742065735d..a9cf8c6079 100644
--- a/plugins/catalog-backend-module-ldap/package.json
+++ b/plugins/catalog-backend-module-ldap/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-backend-module-ldap",
"description": "A Backstage catalog backend module that helps integrate towards LDAP",
- "version": "0.5.15-next.0",
+ "version": "0.5.15-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-backend-module-msgraph/CHANGELOG.md b/plugins/catalog-backend-module-msgraph/CHANGELOG.md
index 0edda3b91d..c37c228dc4 100644
--- a/plugins/catalog-backend-module-msgraph/CHANGELOG.md
+++ b/plugins/catalog-backend-module-msgraph/CHANGELOG.md
@@ -1,5 +1,30 @@
# @backstage/plugin-catalog-backend-module-msgraph
+## 0.5.7-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+
+## 0.5.7-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 4b82382ed8c2: Fixed invalid configuration schema. The configuration schema may be more strict as a result.
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-catalog-node@1.4.1-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/plugin-catalog-common@1.0.15
+
## 0.5.7-next.0
### Patch Changes
diff --git a/plugins/catalog-backend-module-msgraph/config.d.ts b/plugins/catalog-backend-module-msgraph/config.d.ts
index 904ce1f646..9d341215cd 100644
--- a/plugins/catalog-backend-module-msgraph/config.d.ts
+++ b/plugins/catalog-backend-module-msgraph/config.d.ts
@@ -209,9 +209,8 @@ export interface Config {
*/
schedule?: TaskScheduleDefinitionConfig;
}
- | Record<
- string,
- {
+ | {
+ [name: string]: {
/**
* The prefix of the target that this matches on, e.g.
* "https://graph.microsoft.com/v1.0", with no trailing slash.
@@ -296,8 +295,8 @@ export interface Config {
* (Optional) TaskScheduleDefinition for the refresh.
*/
schedule?: TaskScheduleDefinitionConfig;
- }
- >;
+ };
+ };
};
};
}
diff --git a/plugins/catalog-backend-module-msgraph/package.json b/plugins/catalog-backend-module-msgraph/package.json
index c802b15d16..e5a61ae54d 100644
--- a/plugins/catalog-backend-module-msgraph/package.json
+++ b/plugins/catalog-backend-module-msgraph/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-backend-module-msgraph",
"description": "A Backstage catalog backend module that helps integrate towards Microsoft Graph",
- "version": "0.5.7-next.0",
+ "version": "0.5.7-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-backend-module-msgraph/src/module/catalogModuleMicrosoftGraphOrgEntityProvider.test.ts b/plugins/catalog-backend-module-msgraph/src/module/catalogModuleMicrosoftGraphOrgEntityProvider.test.ts
index 3362c75c95..9f1a4ead8b 100644
--- a/plugins/catalog-backend-module-msgraph/src/module/catalogModuleMicrosoftGraphOrgEntityProvider.test.ts
+++ b/plugins/catalog-backend-module-msgraph/src/module/catalogModuleMicrosoftGraphOrgEntityProvider.test.ts
@@ -67,7 +67,7 @@ describe('catalogModuleMicrosoftGraphOrgEntityProvider', () => {
await startTestBackend({
extensionPoints: [[catalogProcessingExtensionPoint, extensionPoint]],
services: [
- [coreServices.config, config],
+ [coreServices.rootConfig, config],
[coreServices.logger, getVoidLogger()],
[coreServices.scheduler, scheduler],
],
diff --git a/plugins/catalog-backend-module-msgraph/src/module/catalogModuleMicrosoftGraphOrgEntityProvider.ts b/plugins/catalog-backend-module-msgraph/src/module/catalogModuleMicrosoftGraphOrgEntityProvider.ts
index 7cd8b65f0b..2d3e1dd4d4 100644
--- a/plugins/catalog-backend-module-msgraph/src/module/catalogModuleMicrosoftGraphOrgEntityProvider.ts
+++ b/plugins/catalog-backend-module-msgraph/src/module/catalogModuleMicrosoftGraphOrgEntityProvider.ts
@@ -70,7 +70,7 @@ export const catalogModuleMicrosoftGraphOrgEntityProvider = createBackendModule(
env.registerInit({
deps: {
catalog: catalogProcessingExtensionPoint,
- config: coreServices.config,
+ config: coreServices.rootConfig,
logger: coreServices.logger,
scheduler: coreServices.scheduler,
},
diff --git a/plugins/catalog-backend-module-openapi/CHANGELOG.md b/plugins/catalog-backend-module-openapi/CHANGELOG.md
index 8b6a4c3162..c9cbc11199 100644
--- a/plugins/catalog-backend-module-openapi/CHANGELOG.md
+++ b/plugins/catalog-backend-module-openapi/CHANGELOG.md
@@ -1,5 +1,28 @@
# @backstage/plugin-catalog-backend-module-openapi
+## 0.1.14-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-backend@1.12.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+
+## 0.1.14-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-catalog-backend@1.12.0-next.1
+ - @backstage/plugin-catalog-node@1.4.1-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/types@1.1.0
+ - @backstage/plugin-catalog-common@1.0.15
+
## 0.1.14-next.0
### Patch Changes
diff --git a/plugins/catalog-backend-module-openapi/package.json b/plugins/catalog-backend-module-openapi/package.json
index cbc42851d9..8fbe3840c5 100644
--- a/plugins/catalog-backend-module-openapi/package.json
+++ b/plugins/catalog-backend-module-openapi/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-backend-module-openapi",
"description": "A Backstage catalog backend module that helps with OpenAPI specifications",
- "version": "0.1.14-next.0",
+ "version": "0.1.14-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-backend-module-puppetdb/CHANGELOG.md b/plugins/catalog-backend-module-puppetdb/CHANGELOG.md
index d7606911e3..6fab80842e 100644
--- a/plugins/catalog-backend-module-puppetdb/CHANGELOG.md
+++ b/plugins/catalog-backend-module-puppetdb/CHANGELOG.md
@@ -1,5 +1,31 @@
# @backstage/plugin-catalog-backend-module-puppetdb
+## 0.1.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+
+## 0.1.5-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 4b82382ed8c2: Fixed invalid configuration schema. The configuration schema may be more strict as a result.
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-catalog-node@1.4.1-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+
## 0.1.5-next.0
### Patch Changes
diff --git a/plugins/catalog-backend-module-puppetdb/config.d.ts b/plugins/catalog-backend-module-puppetdb/config.d.ts
index edd7ab3889..8aab239047 100644
--- a/plugins/catalog-backend-module-puppetdb/config.d.ts
+++ b/plugins/catalog-backend-module-puppetdb/config.d.ts
@@ -46,9 +46,8 @@ export interface Config {
*/
schedule?: TaskScheduleDefinition;
}
- | Record<
- string,
- {
+ | {
+ [name: string]: {
/**
* (Required) The base URL of PuppetDB API instance.
*/
@@ -61,8 +60,8 @@ export interface Config {
* (Optional) Task schedule definition for the refresh.
*/
schedule?: TaskScheduleDefinition;
- }
- >;
+ };
+ };
};
};
}
diff --git a/plugins/catalog-backend-module-puppetdb/package.json b/plugins/catalog-backend-module-puppetdb/package.json
index 8adbd65941..938ea30f24 100644
--- a/plugins/catalog-backend-module-puppetdb/package.json
+++ b/plugins/catalog-backend-module-puppetdb/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-backend-module-puppetdb",
"description": "A Backstage catalog backend module that helps integrate towards PuppetDB",
- "version": "0.1.5-next.0",
+ "version": "0.1.5-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-backend-module-puppetdb/src/module/catalogModulePuppetDbEntityProvider.test.ts b/plugins/catalog-backend-module-puppetdb/src/module/catalogModulePuppetDbEntityProvider.test.ts
index e2745e9268..c167035917 100644
--- a/plugins/catalog-backend-module-puppetdb/src/module/catalogModulePuppetDbEntityProvider.test.ts
+++ b/plugins/catalog-backend-module-puppetdb/src/module/catalogModulePuppetDbEntityProvider.test.ts
@@ -61,7 +61,7 @@ describe('catalogModulePuppetDbEntityProvider', () => {
await startTestBackend({
extensionPoints: [[catalogProcessingExtensionPoint, extensionPoint]],
services: [
- [coreServices.config, config],
+ [coreServices.rootConfig, config],
[coreServices.logger, getVoidLogger()],
[coreServices.scheduler, scheduler],
],
diff --git a/plugins/catalog-backend-module-puppetdb/src/module/catalogModulePuppetDbEntityProvider.ts b/plugins/catalog-backend-module-puppetdb/src/module/catalogModulePuppetDbEntityProvider.ts
index 9a7d279cd3..5546b5283b 100644
--- a/plugins/catalog-backend-module-puppetdb/src/module/catalogModulePuppetDbEntityProvider.ts
+++ b/plugins/catalog-backend-module-puppetdb/src/module/catalogModulePuppetDbEntityProvider.ts
@@ -34,7 +34,7 @@ export const catalogModulePuppetDbEntityProvider = createBackendModule({
env.registerInit({
deps: {
catalog: catalogProcessingExtensionPoint,
- config: coreServices.config,
+ config: coreServices.rootConfig,
logger: coreServices.logger,
scheduler: coreServices.scheduler,
},
diff --git a/plugins/catalog-backend-module-unprocessed/CHANGELOG.md b/plugins/catalog-backend-module-unprocessed/CHANGELOG.md
index 999c7cf85f..c54fd24a21 100644
--- a/plugins/catalog-backend-module-unprocessed/CHANGELOG.md
+++ b/plugins/catalog-backend-module-unprocessed/CHANGELOG.md
@@ -1,5 +1,23 @@
# @backstage/plugin-catalog-backend-module-unprocessed
+## 0.2.0-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+
+## 0.2.0-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/catalog-model@1.4.1
+
## 0.2.0-next.0
### Minor Changes
diff --git a/plugins/catalog-backend-module-unprocessed/package.json b/plugins/catalog-backend-module-unprocessed/package.json
index 9f3f2f0b11..429f778677 100644
--- a/plugins/catalog-backend-module-unprocessed/package.json
+++ b/plugins/catalog-backend-module-unprocessed/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-backend-module-unprocessed",
"description": "Backstage Catalog module to view unprocessed entities",
- "version": "0.2.0-next.0",
+ "version": "0.2.0-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -13,6 +13,12 @@
"backstage": {
"role": "backend-plugin-module"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/catalog-backend-module-unprocessed"
+ },
"scripts": {
"build": "backstage-cli package build",
"lint": "backstage-cli package lint",
diff --git a/plugins/catalog-backend/CHANGELOG.md b/plugins/catalog-backend/CHANGELOG.md
index 0c0f3c7be8..83a15e0d83 100644
--- a/plugins/catalog-backend/CHANGELOG.md
+++ b/plugins/catalog-backend/CHANGELOG.md
@@ -1,5 +1,53 @@
# @backstage/plugin-catalog-backend
+## 1.12.0-next.2
+
+### Minor Changes
+
+- b8cccd8ee858: Support configuring applicable kinds for `AnnotateScmSlugEntityProcessor`
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-search-backend-module-catalog@0.1.4-next.2
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+ - @backstage/plugin-events-node@0.2.9-next.2
+ - @backstage/plugin-permission-node@0.7.11-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+
+## 1.12.0-next.1
+
+### Minor Changes
+
+- f32252cdf631: Added OpenTelemetry spans for catalog processing
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- Updated dependencies
+ - @backstage/plugin-search-backend-module-catalog@0.1.4-next.1
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/backend-openapi-utils@0.0.3-next.1
+ - @backstage/plugin-catalog-node@1.4.1-next.1
+ - @backstage/plugin-events-node@0.2.9-next.1
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/plugin-permission-node@0.7.11-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+ - @backstage/plugin-catalog-common@1.0.15
+ - @backstage/plugin-permission-common@0.7.7
+ - @backstage/plugin-scaffolder-common@1.3.2
+ - @backstage/plugin-search-common@1.2.5
+
## 1.12.0-next.0
### Minor Changes
diff --git a/plugins/catalog-backend/api-report.md b/plugins/catalog-backend/api-report.md
index 84d8de4753..345874d919 100644
--- a/plugins/catalog-backend/api-report.md
+++ b/plugins/catalog-backend/api-report.md
@@ -91,9 +91,17 @@ export class AnnotateLocationEntityProcessor implements CatalogProcessor_2 {
// @public (undocumented)
export class AnnotateScmSlugEntityProcessor implements CatalogProcessor_2 {
- constructor(opts: { scmIntegrationRegistry: ScmIntegrationRegistry });
+ constructor(opts: {
+ scmIntegrationRegistry: ScmIntegrationRegistry;
+ kinds?: string[];
+ });
// (undocumented)
- static fromConfig(config: Config): AnnotateScmSlugEntityProcessor;
+ static fromConfig(
+ config: Config,
+ options?: {
+ kinds?: string[];
+ },
+ ): AnnotateScmSlugEntityProcessor;
// (undocumented)
getProcessorName(): string;
// (undocumented)
diff --git a/plugins/catalog-backend/package.json b/plugins/catalog-backend/package.json
index 8b4edcbc20..9585d79bb1 100644
--- a/plugins/catalog-backend/package.json
+++ b/plugins/catalog-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-backend",
"description": "The Backstage backend plugin that provides the Backstage catalog",
- "version": "1.12.0-next.0",
+ "version": "1.12.0-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-backend/src/modules/core/AnnotateScmSlugEntityProcessor.test.ts b/plugins/catalog-backend/src/modules/core/AnnotateScmSlugEntityProcessor.test.ts
index bafac6e3ac..0cde9417db 100644
--- a/plugins/catalog-backend/src/modules/core/AnnotateScmSlugEntityProcessor.test.ts
+++ b/plugins/catalog-backend/src/modules/core/AnnotateScmSlugEntityProcessor.test.ts
@@ -109,6 +109,73 @@ describe('AnnotateScmSlugEntityProcessor', () => {
},
});
});
+
+ it('should only process applicable kinds', async () => {
+ const component: Entity = {
+ apiVersion: 'backstage.io/v1alpha1',
+ kind: 'Component',
+ metadata: {
+ name: 'my-component',
+ },
+ };
+
+ const api: Entity = {
+ apiVersion: 'backstage.io/v1alpha1',
+ kind: 'API',
+ metadata: {
+ name: 'my-component',
+ },
+ };
+
+ const system: Entity = {
+ apiVersion: 'backstage.io/v1alpha1',
+ kind: 'System',
+ metadata: {
+ name: 'my-component',
+ },
+ };
+
+ const location: LocationSpec = {
+ type: 'url',
+ target:
+ 'https://github.com/backstage/backstage/blob/master/catalog-info.yaml',
+ };
+
+ const processor = AnnotateScmSlugEntityProcessor.fromConfig(
+ new ConfigReader({}),
+ { kinds: ['API', 'System'] },
+ );
+
+ expect(await processor.preProcessEntity(component, location)).toEqual({
+ apiVersion: 'backstage.io/v1alpha1',
+ kind: 'Component',
+ metadata: {
+ name: 'my-component',
+ },
+ });
+
+ expect(await processor.preProcessEntity(api, location)).toEqual({
+ apiVersion: 'backstage.io/v1alpha1',
+ kind: 'API',
+ metadata: {
+ name: 'my-component',
+ annotations: {
+ 'github.com/project-slug': 'backstage/backstage',
+ },
+ },
+ });
+
+ expect(await processor.preProcessEntity(system, location)).toEqual({
+ apiVersion: 'backstage.io/v1alpha1',
+ kind: 'System',
+ metadata: {
+ name: 'my-component',
+ annotations: {
+ 'github.com/project-slug': 'backstage/backstage',
+ },
+ },
+ });
+ });
});
describe('gitlab', () => {
it('adds annotation', async () => {
diff --git a/plugins/catalog-backend/src/modules/core/AnnotateScmSlugEntityProcessor.ts b/plugins/catalog-backend/src/modules/core/AnnotateScmSlugEntityProcessor.ts
index 2c18ba1d7d..241a27433e 100644
--- a/plugins/catalog-backend/src/modules/core/AnnotateScmSlugEntityProcessor.ts
+++ b/plugins/catalog-backend/src/modules/core/AnnotateScmSlugEntityProcessor.ts
@@ -31,16 +31,23 @@ const GITLAB_ACTIONS_ANNOTATION = 'gitlab.com/project-slug';
/** @public */
export class AnnotateScmSlugEntityProcessor implements CatalogProcessor {
constructor(
- private readonly opts: { scmIntegrationRegistry: ScmIntegrationRegistry },
+ private readonly opts: {
+ scmIntegrationRegistry: ScmIntegrationRegistry;
+ kinds?: string[];
+ },
) {}
getProcessorName(): string {
return 'AnnotateScmSlugEntityProcessor';
}
- static fromConfig(config: Config): AnnotateScmSlugEntityProcessor {
+ static fromConfig(
+ config: Config,
+ options?: { kinds?: string[] },
+ ): AnnotateScmSlugEntityProcessor {
return new AnnotateScmSlugEntityProcessor({
scmIntegrationRegistry: ScmIntegrations.fromConfig(config),
+ kinds: options?.kinds,
});
}
@@ -48,7 +55,13 @@ export class AnnotateScmSlugEntityProcessor implements CatalogProcessor {
entity: Entity,
location: LocationSpec,
): Promise {
- if (entity.kind !== 'Component' || location.type !== 'url') {
+ const applicableKinds = (this.opts.kinds ?? ['Component']).map(k =>
+ k.toLocaleLowerCase('en-US'),
+ );
+ if (
+ !applicableKinds.includes(entity.kind.toLocaleLowerCase('en-US')) ||
+ location.type !== 'url'
+ ) {
return entity;
}
diff --git a/plugins/catalog-backend/src/processing/DefaultCatalogProcessingEngine.ts b/plugins/catalog-backend/src/processing/DefaultCatalogProcessingEngine.ts
index 8e2f8b2f6f..bed1fe6f50 100644
--- a/plugins/catalog-backend/src/processing/DefaultCatalogProcessingEngine.ts
+++ b/plugins/catalog-backend/src/processing/DefaultCatalogProcessingEngine.ts
@@ -23,7 +23,7 @@ import { assertError, serializeError, stringifyError } from '@backstage/errors';
import { Hash } from 'crypto';
import stableStringify from 'fast-json-stable-stringify';
import { Logger } from 'winston';
-import { metrics } from '@opentelemetry/api';
+import { metrics, trace } from '@opentelemetry/api';
import { ProcessingDatabase, RefreshStateItem } from '../database/types';
import { createCounterMetric, createSummaryMetric } from '../util/metrics';
import {
@@ -35,9 +35,16 @@ import { Stitcher } from '../stitching/Stitcher';
import { startTaskPipeline } from './TaskPipeline';
import { PluginTaskScheduler } from '@backstage/backend-tasks';
import { Config } from '@backstage/config';
+import {
+ addEntityAttributes,
+ TRACER_ID,
+ withActiveSpan,
+} from '../util/opentelemetry';
const CACHE_TTL = 5;
+const tracer = trace.getTracer(TRACER_ID);
+
export type ProgressTracker = ReturnType;
export class DefaultCatalogProcessingEngine implements CatalogProcessingEngine {
@@ -131,177 +138,181 @@ export class DefaultCatalogProcessingEngine implements CatalogProcessingEngine {
}
},
processTask: async item => {
- const track = this.tracker.processStart(item, this.logger);
+ await withActiveSpan(tracer, 'ProcessingRun', async span => {
+ const track = this.tracker.processStart(item, this.logger);
+ addEntityAttributes(span, item.unprocessedEntity);
- try {
- const {
- id,
- state,
- unprocessedEntity,
- entityRef,
- locationKey,
- resultHash: previousResultHash,
- } = item;
- const result = await this.orchestrator.process({
- entity: unprocessedEntity,
- state,
- });
+ try {
+ const {
+ id,
+ state,
+ unprocessedEntity,
+ entityRef,
+ locationKey,
+ resultHash: previousResultHash,
+ } = item;
+ const result = await this.orchestrator.process({
+ entity: unprocessedEntity,
+ state,
+ });
- track.markProcessorsCompleted(result);
+ track.markProcessorsCompleted(result);
- if (result.ok) {
- const { ttl: _, ...stateWithoutTtl } = state ?? {};
- if (
- stableStringify(stateWithoutTtl) !== stableStringify(result.state)
- ) {
+ if (result.ok) {
+ const { ttl: _, ...stateWithoutTtl } = state ?? {};
+ if (
+ stableStringify(stateWithoutTtl) !==
+ stableStringify(result.state)
+ ) {
+ await this.processingDatabase.transaction(async tx => {
+ await this.processingDatabase.updateEntityCache(tx, {
+ id,
+ state: {
+ ttl: CACHE_TTL,
+ ...result.state,
+ },
+ });
+ });
+ }
+ } else {
+ const maybeTtl = state?.ttl;
+ const ttl = Number.isInteger(maybeTtl) ? (maybeTtl as number) : 0;
await this.processingDatabase.transaction(async tx => {
await this.processingDatabase.updateEntityCache(tx, {
id,
- state: {
- ttl: CACHE_TTL,
- ...result.state,
- },
+ state: ttl > 0 ? { ...state, ttl: ttl - 1 } : {},
});
});
}
- } else {
- const maybeTtl = state?.ttl;
- const ttl = Number.isInteger(maybeTtl) ? (maybeTtl as number) : 0;
- await this.processingDatabase.transaction(async tx => {
- await this.processingDatabase.updateEntityCache(tx, {
- id,
- state: ttl > 0 ? { ...state, ttl: ttl - 1 } : {},
+
+ const location =
+ unprocessedEntity?.metadata?.annotations?.[ANNOTATION_LOCATION];
+ for (const error of result.errors) {
+ this.logger.warn(error.message, {
+ entity: entityRef,
+ location,
});
- });
- }
+ }
+ const errorsString = JSON.stringify(
+ result.errors.map(e => serializeError(e)),
+ );
- const location =
- unprocessedEntity?.metadata?.annotations?.[ANNOTATION_LOCATION];
- for (const error of result.errors) {
- this.logger.warn(error.message, {
- entity: entityRef,
- location,
- });
- }
- const errorsString = JSON.stringify(
- result.errors.map(e => serializeError(e)),
- );
+ let hashBuilder = this.createHash().update(errorsString);
- let hashBuilder = this.createHash().update(errorsString);
-
- if (result.ok) {
- const { entityRefs: parents } =
- await this.processingDatabase.transaction(tx =>
- this.processingDatabase.listParents(tx, {
- entityRef,
- }),
- );
-
- hashBuilder = hashBuilder
- .update(stableStringify({ ...result.completedEntity }))
- .update(stableStringify([...result.deferredEntities]))
- .update(stableStringify([...result.relations]))
- .update(stableStringify([...result.refreshKeys]))
- .update(stableStringify([...parents]));
- }
-
- const resultHash = hashBuilder.digest('hex');
- if (resultHash === previousResultHash) {
- // If nothing changed in our produced outputs, we cannot have any
- // significant effect on our surroundings; therefore, we just abort
- // without any updates / stitching.
- track.markSuccessfulWithNoChanges();
- return;
- }
-
- // 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) {
- // notify the error listener if the entity can not be processed.
- Promise.resolve(undefined)
- .then(() =>
- this.onProcessingError?.({
- unprocessedEntity,
- errors: result.errors,
- }),
- )
- .catch(error => {
- this.logger.debug(
- `Processing error listener threw an exception, ${stringifyError(
- error,
- )}`,
+ if (result.ok) {
+ const { entityRefs: parents } =
+ await this.processingDatabase.transaction(tx =>
+ this.processingDatabase.listParents(tx, {
+ entityRef,
+ }),
);
- });
+ hashBuilder = hashBuilder
+ .update(stableStringify({ ...result.completedEntity }))
+ .update(stableStringify([...result.deferredEntities]))
+ .update(stableStringify([...result.relations]))
+ .update(stableStringify([...result.refreshKeys]))
+ .update(stableStringify([...parents]));
+ }
+
+ const resultHash = hashBuilder.digest('hex');
+ if (resultHash === previousResultHash) {
+ // If nothing changed in our produced outputs, we cannot have any
+ // significant effect on our surroundings; therefore, we just abort
+ // without any updates / stitching.
+ track.markSuccessfulWithNoChanges();
+ return;
+ }
+
+ // 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) {
+ // notify the error listener if the entity can not be processed.
+ Promise.resolve(undefined)
+ .then(() =>
+ this.onProcessingError?.({
+ unprocessedEntity,
+ errors: result.errors,
+ }),
+ )
+ .catch(error => {
+ this.logger.debug(
+ `Processing error listener threw an exception, ${stringifyError(
+ error,
+ )}`,
+ );
+ });
+
+ await this.processingDatabase.transaction(async tx => {
+ await this.processingDatabase.updateProcessedEntityErrors(tx, {
+ id,
+ errors: errorsString,
+ resultHash,
+ });
+ });
+ await this.stitcher.stitch(
+ new Set([stringifyEntityRef(unprocessedEntity)]),
+ );
+ track.markSuccessfulWithErrors();
+ return;
+ }
+
+ result.completedEntity.metadata.uid = id;
+ let oldRelationSources: Map;
await this.processingDatabase.transaction(async tx => {
- await this.processingDatabase.updateProcessedEntityErrors(tx, {
- id,
- errors: errorsString,
- resultHash,
- });
+ const { previous } =
+ await this.processingDatabase.updateProcessedEntity(tx, {
+ id,
+ processedEntity: result.completedEntity,
+ resultHash,
+ errors: errorsString,
+ relations: result.relations,
+ deferredEntities: result.deferredEntities,
+ locationKey,
+ refreshKeys: result.refreshKeys,
+ });
+ oldRelationSources = new Map(
+ previous.relations.map(r => [
+ `${r.source_entity_ref}:${r.type}`,
+ r.source_entity_ref,
+ ]),
+ );
});
- await this.stitcher.stitch(
- new Set([stringifyEntityRef(unprocessedEntity)]),
+
+ const newRelationSources = new Map(
+ result.relations.map(relation => {
+ const sourceEntityRef = stringifyEntityRef(relation.source);
+ return [`${sourceEntityRef}:${relation.type}`, sourceEntityRef];
+ }),
);
- track.markSuccessfulWithErrors();
- return;
+
+ const setOfThingsToStitch = new Set([
+ stringifyEntityRef(result.completedEntity),
+ ]);
+ newRelationSources.forEach((sourceEntityRef, uniqueKey) => {
+ if (!oldRelationSources.has(uniqueKey)) {
+ setOfThingsToStitch.add(sourceEntityRef);
+ }
+ });
+ oldRelationSources!.forEach((sourceEntityRef, uniqueKey) => {
+ if (!newRelationSources.has(uniqueKey)) {
+ setOfThingsToStitch.add(sourceEntityRef);
+ }
+ });
+
+ await this.stitcher.stitch(setOfThingsToStitch);
+
+ track.markSuccessfulWithChanges(setOfThingsToStitch.size);
+ } catch (error) {
+ assertError(error);
+ track.markFailed(error);
}
-
- result.completedEntity.metadata.uid = id;
- let oldRelationSources: Map;
- await this.processingDatabase.transaction(async tx => {
- const { previous } =
- await this.processingDatabase.updateProcessedEntity(tx, {
- id,
- processedEntity: result.completedEntity,
- resultHash,
- errors: errorsString,
- relations: result.relations,
- deferredEntities: result.deferredEntities,
- locationKey,
- refreshKeys: result.refreshKeys,
- });
- oldRelationSources = new Map(
- previous.relations.map(r => [
- `${r.source_entity_ref}:${r.type}`,
- r.source_entity_ref,
- ]),
- );
- });
-
- const newRelationSources = new Map(
- result.relations.map(relation => {
- const sourceEntityRef = stringifyEntityRef(relation.source);
- return [`${sourceEntityRef}:${relation.type}`, sourceEntityRef];
- }),
- );
-
- const setOfThingsToStitch = new Set([
- stringifyEntityRef(result.completedEntity),
- ]);
- newRelationSources.forEach((sourceEntityRef, uniqueKey) => {
- if (!oldRelationSources.has(uniqueKey)) {
- setOfThingsToStitch.add(sourceEntityRef);
- }
- });
- oldRelationSources!.forEach((sourceEntityRef, uniqueKey) => {
- if (!newRelationSources.has(uniqueKey)) {
- setOfThingsToStitch.add(sourceEntityRef);
- }
- });
-
- await this.stitcher.stitch(setOfThingsToStitch);
-
- track.markSuccessfulWithChanges(setOfThingsToStitch.size);
- } catch (error) {
- assertError(error);
- track.markFailed(error);
- }
+ });
},
});
}
diff --git a/plugins/catalog-backend/src/processing/DefaultCatalogProcessingOrchestrator.test.ts b/plugins/catalog-backend/src/processing/DefaultCatalogProcessingOrchestrator.test.ts
index ceb6992d7a..fc6855f6df 100644
--- a/plugins/catalog-backend/src/processing/DefaultCatalogProcessingOrchestrator.test.ts
+++ b/plugins/catalog-backend/src/processing/DefaultCatalogProcessingOrchestrator.test.ts
@@ -194,10 +194,12 @@ describe('DefaultCatalogProcessingOrchestrator', () => {
it('runs all processor validations when asked to', async () => {
const validate = jest.fn(async () => true);
- const processor1: Partial = {
+ const processor1: CatalogProcessor = {
+ getProcessorName: () => 'processor1',
validateEntityKind: validate,
};
- const processor2: Partial = {
+ const processor2: CatalogProcessor = {
+ getProcessorName: () => 'processor2',
validateEntityKind: validate,
};
diff --git a/plugins/catalog-backend/src/processing/DefaultCatalogProcessingOrchestrator.ts b/plugins/catalog-backend/src/processing/DefaultCatalogProcessingOrchestrator.ts
index d177a7d4a8..c5eaacbc68 100644
--- a/plugins/catalog-backend/src/processing/DefaultCatalogProcessingOrchestrator.ts
+++ b/plugins/catalog-backend/src/processing/DefaultCatalogProcessingOrchestrator.ts
@@ -14,6 +14,7 @@
* limitations under the License.
*/
+import { Span, trace } from '@opentelemetry/api';
import {
Entity,
EntityPolicy,
@@ -55,6 +56,13 @@ import {
} from './util';
import { CatalogRulesEnforcer } from '../ingestion/CatalogRules';
import { ProcessorCacheManager } from './ProcessorCacheManager';
+import {
+ addEntityAttributes,
+ TRACER_ID,
+ withActiveSpan,
+} from '../util/opentelemetry';
+
+const tracer = trace.getTracer(TRACER_ID);
type Context = {
entityRef: string;
@@ -64,6 +72,18 @@ type Context = {
cache: ProcessorCacheManager;
};
+function addProcessorAttributes(
+ span: Span,
+ stage: string,
+ processor: CatalogProcessor,
+) {
+ span.setAttribute('backstage.catalog.processor.stage', stage);
+ span.setAttribute(
+ 'backstage.catalog.processor.name',
+ processor.getProcessorName(),
+ );
+}
+
/** @public */
export class DefaultCatalogProcessingOrchestrator
implements CatalogProcessingOrchestrator
@@ -179,54 +199,71 @@ export class DefaultCatalogProcessingOrchestrator
entity: Entity,
context: Context,
): Promise {
- let res = entity;
+ return await withActiveSpan(tracer, 'ProcessingStage', async stageSpan => {
+ addEntityAttributes(stageSpan, entity);
+ stageSpan.setAttribute('backstage.catalog.processor.stage', 'preProcess');
+ let res = entity;
- for (const processor of this.options.processors) {
- if (processor.preProcessEntity) {
- try {
- res = await processor.preProcessEntity(
- res,
- context.location,
- context.collector.forProcessor(processor),
- context.originLocation,
- context.cache.forProcessor(processor),
- );
- } catch (e) {
- throw new InputError(
- `Processor ${processor.constructor.name} threw an error while preprocessing`,
- e,
- );
+ for (const processor of this.options.processors) {
+ if (processor.preProcessEntity) {
+ let innerRes = res;
+ res = await withActiveSpan(tracer, 'ProcessingStep', async span => {
+ addEntityAttributes(span, entity);
+ addProcessorAttributes(span, 'preProcessEntity', processor);
+ try {
+ innerRes = await processor.preProcessEntity!(
+ innerRes,
+ context.location,
+ context.collector.forProcessor(processor),
+ context.originLocation,
+ context.cache.forProcessor(processor),
+ );
+ } catch (e) {
+ throw new InputError(
+ `Processor ${processor.constructor.name} threw an error while preprocessing`,
+ e,
+ );
+ }
+ return innerRes;
+ });
}
}
- }
- return res;
+ return res;
+ });
}
/**
* Enforce entity policies making sure that entities conform to a general schema
*/
private async runPolicyStep(entity: Entity): Promise {
- let policyEnforcedEntity: Entity | undefined;
-
- try {
- policyEnforcedEntity = await this.options.policy.enforce(entity);
- } catch (e) {
- throw new InputError(
- `Policy check failed for ${stringifyEntityRef(entity)}`,
- e,
+ return await withActiveSpan(tracer, 'ProcessingStage', async stageSpan => {
+ addEntityAttributes(stageSpan, entity);
+ stageSpan.setAttribute(
+ 'backstage.catalog.processor.stage',
+ 'enforcePolicy',
);
- }
+ let policyEnforcedEntity: Entity | undefined;
- if (!policyEnforcedEntity) {
- throw new Error(
- `Policy unexpectedly returned no data for ${stringifyEntityRef(
- entity,
- )}`,
- );
- }
+ try {
+ policyEnforcedEntity = await this.options.policy.enforce(entity);
+ } catch (e) {
+ throw new InputError(
+ `Policy check failed for ${stringifyEntityRef(entity)}`,
+ e,
+ );
+ }
- return policyEnforcedEntity;
+ if (!policyEnforcedEntity) {
+ throw new Error(
+ `Policy unexpectedly returned no data for ${stringifyEntityRef(
+ entity,
+ )}`,
+ );
+ }
+
+ return policyEnforcedEntity;
+ });
}
/**
@@ -236,50 +273,62 @@ export class DefaultCatalogProcessingOrchestrator
entity: Entity,
context: Context,
): Promise {
- // Double check that none of the previous steps tried to change something
- // related to the entity ref, which would break downstream
- if (stringifyEntityRef(entity) !== context.entityRef) {
- throw new ConflictError(
- 'Fatal: The entity kind, namespace, or name changed during processing',
- );
- }
+ return await withActiveSpan(tracer, 'ProcessingStage', async stageSpan => {
+ addEntityAttributes(stageSpan, entity);
+ stageSpan.setAttribute('backstage.catalog.processor.stage', 'validate');
+ // Double check that none of the previous steps tried to change something
+ // related to the entity ref, which would break downstream
+ if (stringifyEntityRef(entity) !== context.entityRef) {
+ throw new ConflictError(
+ 'Fatal: The entity kind, namespace, or name changed during processing',
+ );
+ }
- // Validate that the end result is a valid Entity at all
- try {
- validateEntity(entity);
- } catch (e) {
- throw new ConflictError(
- `Entity envelope for ${context.entityRef} failed validation after preprocessing`,
- e,
- );
- }
+ // Validate that the end result is a valid Entity at all
+ try {
+ validateEntity(entity);
+ } catch (e) {
+ throw new ConflictError(
+ `Entity envelope for ${context.entityRef} failed validation after preprocessing`,
+ e,
+ );
+ }
- let valid = false;
+ let valid = false;
- for (const processor of this.options.processors) {
- if (processor.validateEntityKind) {
- try {
- const thisValid = await processor.validateEntityKind(entity);
- if (thisValid) {
- valid = true;
- if (this.options.legacySingleProcessorValidation) {
- break;
+ for (const processor of this.options.processors) {
+ if (processor.validateEntityKind) {
+ try {
+ const thisValid = await withActiveSpan(
+ tracer,
+ 'ProcessingStep',
+ async span => {
+ addEntityAttributes(span, entity);
+ addProcessorAttributes(span, 'validateEntityKind', processor);
+ return await processor.validateEntityKind!(entity);
+ },
+ );
+ if (thisValid) {
+ valid = true;
+ if (this.options.legacySingleProcessorValidation) {
+ break;
+ }
}
+ } catch (e) {
+ throw new InputError(
+ `Processor ${processor.constructor.name} threw an error while validating the entity ${context.entityRef}`,
+ e,
+ );
}
- } catch (e) {
- throw new InputError(
- `Processor ${processor.constructor.name} threw an error while validating the entity ${context.entityRef}`,
- e,
- );
}
}
- }
- if (!valid) {
- throw new InputError(
- `No processor recognized the entity ${context.entityRef} as valid, possibly caused by a foreign kind or apiVersion`,
- );
- }
+ if (!valid) {
+ throw new InputError(
+ `No processor recognized the entity ${context.entityRef} as valid, possibly caused by a foreign kind or apiVersion`,
+ );
+ }
+ });
}
/**
@@ -289,65 +338,81 @@ export class DefaultCatalogProcessingOrchestrator
entity: LocationEntity,
context: Context,
): Promise {
- const { type = context.location.type, presence = 'required' } = entity.spec;
- const targets = new Array();
- if (entity.spec.target) {
- targets.push(entity.spec.target);
- }
- if (entity.spec.targets) {
- targets.push(...entity.spec.targets);
- }
-
- for (const maybeRelativeTarget of targets) {
- if (type === 'file' && maybeRelativeTarget.endsWith(path.sep)) {
- context.collector.generic()(
- processingResult.inputError(
- context.location,
- `LocationEntityProcessor cannot handle ${type} type location with target ${context.location.target} that ends with a path separator`,
- ),
- );
- continue;
- }
- const target = toAbsoluteUrl(
- this.options.integrations,
- context.location,
- type,
- maybeRelativeTarget,
+ return await withActiveSpan(tracer, 'ProcessingStage', async stageSpan => {
+ addEntityAttributes(stageSpan, entity);
+ stageSpan.setAttribute(
+ 'backstage.catalog.processor.stage',
+ 'readLocation',
);
+ const { type = context.location.type, presence = 'required' } =
+ entity.spec;
+ const targets = new Array();
+ if (entity.spec.target) {
+ targets.push(entity.spec.target);
+ }
+ if (entity.spec.targets) {
+ targets.push(...entity.spec.targets);
+ }
- let didRead = false;
- for (const processor of this.options.processors) {
- if (processor.readLocation) {
- try {
- const read = await processor.readLocation(
- {
- type,
- target,
- presence,
- },
- presence === 'optional',
- context.collector.forProcessor(processor),
- this.options.parser,
- context.cache.forProcessor(processor, target),
- );
- if (read) {
- didRead = true;
- break;
+ for (const maybeRelativeTarget of targets) {
+ if (type === 'file' && maybeRelativeTarget.endsWith(path.sep)) {
+ context.collector.generic()(
+ processingResult.inputError(
+ context.location,
+ `LocationEntityProcessor cannot handle ${type} type location with target ${context.location.target} that ends with a path separator`,
+ ),
+ );
+ continue;
+ }
+ const target = toAbsoluteUrl(
+ this.options.integrations,
+ context.location,
+ type,
+ maybeRelativeTarget,
+ );
+
+ let didRead = false;
+ for (const processor of this.options.processors) {
+ if (processor.readLocation) {
+ try {
+ const read = await withActiveSpan(
+ tracer,
+ 'ProcessingStep',
+ async span => {
+ addEntityAttributes(span, entity);
+ addProcessorAttributes(span, 'readLocation', processor);
+ return await processor.readLocation!(
+ {
+ type,
+ target,
+ presence,
+ },
+ presence === 'optional',
+ context.collector.forProcessor(processor),
+ this.options.parser,
+ context.cache.forProcessor(processor, target),
+ );
+ },
+ );
+ if (read) {
+ didRead = true;
+ break;
+ }
+ } catch (e) {
+ throw new InputError(
+ `Processor ${processor.constructor.name} threw an error while reading ${type}:${target}`,
+ e,
+ );
}
- } catch (e) {
- throw new InputError(
- `Processor ${processor.constructor.name} threw an error while reading ${type}:${target}`,
- e,
- );
}
}
+ if (!didRead) {
+ throw new InputError(
+ `No processor was able to handle reading of ${type}:${target}`,
+ );
+ }
}
- if (!didRead) {
- throw new InputError(
- `No processor was able to handle reading of ${type}:${target}`,
- );
- }
- }
+ });
}
/**
@@ -357,26 +422,39 @@ export class DefaultCatalogProcessingOrchestrator
entity: Entity,
context: Context,
): Promise {
- let res = entity;
+ return await withActiveSpan(tracer, 'ProcessingStage', async stageSpan => {
+ addEntityAttributes(stageSpan, entity);
+ stageSpan.setAttribute(
+ 'backstage.catalog.processor.stage',
+ 'postProcessEntity',
+ );
+ let res = entity;
- for (const processor of this.options.processors) {
- if (processor.postProcessEntity) {
- try {
- res = await processor.postProcessEntity(
- res,
- context.location,
- context.collector.forProcessor(processor),
- context.cache.forProcessor(processor),
- );
- } catch (e) {
- throw new InputError(
- `Processor ${processor.constructor.name} threw an error while postprocessing`,
- e,
- );
+ for (const processor of this.options.processors) {
+ if (processor.postProcessEntity) {
+ let innerRes = res;
+ res = await withActiveSpan(tracer, 'ProcessingStep', async span => {
+ addEntityAttributes(span, entity);
+ addProcessorAttributes(span, 'postProcessEntity', processor);
+ try {
+ innerRes = await processor.postProcessEntity!(
+ innerRes,
+ context.location,
+ context.collector.forProcessor(processor),
+ context.cache.forProcessor(processor),
+ );
+ } catch (e) {
+ throw new InputError(
+ `Processor ${processor.constructor.name} threw an error while postprocessing`,
+ e,
+ );
+ }
+ return innerRes;
+ });
}
}
- }
- return res;
+ return res;
+ });
}
}
diff --git a/plugins/catalog-backend/src/service/CatalogPlugin.ts b/plugins/catalog-backend/src/service/CatalogPlugin.ts
index d77b034517..b8d5bdbeda 100644
--- a/plugins/catalog-backend/src/service/CatalogPlugin.ts
+++ b/plugins/catalog-backend/src/service/CatalogPlugin.ts
@@ -84,7 +84,7 @@ export const catalogPlugin = createBackendPlugin({
env.registerInit({
deps: {
logger: coreServices.logger,
- config: coreServices.config,
+ config: coreServices.rootConfig,
reader: coreServices.urlReader,
permissions: coreServices.permissions,
database: coreServices.database,
diff --git a/plugins/catalog-backend/src/util/opentelemetry.ts b/plugins/catalog-backend/src/util/opentelemetry.ts
new file mode 100644
index 0000000000..3fb83d7909
--- /dev/null
+++ b/plugins/catalog-backend/src/util/opentelemetry.ts
@@ -0,0 +1,101 @@
+/*
+ * Copyright 2023 The 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 { Span, SpanOptions, SpanStatusCode, Tracer } from '@opentelemetry/api';
+import { Entity } from '@backstage/catalog-model';
+
+export const TRACER_ID = 'backstage-plugin-catalog-backend';
+
+function setAttributeIfDefined(span: Span, attribute: string, value?: string) {
+ if (value !== null && value !== undefined) {
+ span.setAttribute(attribute, value);
+ }
+}
+
+export function addEntityAttributes(span: Span, entity: Entity) {
+ setAttributeIfDefined(span, 'backstage.entity.apiVersion', entity.apiVersion);
+ setAttributeIfDefined(span, 'backstage.entity.kind', entity.kind);
+ setAttributeIfDefined(
+ span,
+ 'backstage.entity.metadata.namespace',
+ entity.metadata?.namespace,
+ );
+ setAttributeIfDefined(
+ span,
+ 'backstage.entity.metadata.name',
+ entity.metadata?.name,
+ );
+}
+
+// Adapted from https://github.com/open-telemetry/opentelemetry-js/blob/359fbcc40a859057a02b14e84599eac399b8dba7/api/src/trace/SugaredTracer.ts
+// While waiting for something like https://github.com/open-telemetry/opentelemetry-js/pull/3317 to land upstream
+
+const onException = (e: Error, span: Span) => {
+ span.recordException(e);
+ span.setStatus({
+ code: SpanStatusCode.ERROR,
+ });
+};
+
+function isPromiseLike(obj: PromiseLike | S): obj is PromiseLike {
+ return (
+ !!obj &&
+ (typeof obj === 'object' || typeof obj === 'function') &&
+ 'then' in obj &&
+ typeof obj.then === 'function'
+ );
+}
+
+function handleFn ReturnType>(
+ span: Span,
+ fn: F,
+): ReturnType {
+ try {
+ const ret = fn(span);
+
+ // if fn is an async function attach a recordException and spanEnd callback to the promise
+ if (isPromiseLike(ret)) {
+ ret.then(
+ () => {
+ span.end();
+ },
+ e => {
+ onException(e, span);
+ span.end();
+ },
+ );
+ } else {
+ span.end();
+ }
+
+ return ret;
+ } catch (e) {
+ onException(e, span);
+ span.end();
+ throw e;
+ }
+}
+
+export function withActiveSpan ReturnType>(
+ tracer: Tracer,
+ name: string,
+ fn: F,
+ spanOptions: SpanOptions = {},
+): ReturnType {
+ return tracer.startActiveSpan(name, spanOptions, (span: Span) => {
+ return handleFn(span, fn);
+ });
+}
diff --git a/plugins/catalog-customized/CHANGELOG.md b/plugins/catalog-customized/CHANGELOG.md
index 6b573ac4d3..f74079973b 100644
--- a/plugins/catalog-customized/CHANGELOG.md
+++ b/plugins/catalog-customized/CHANGELOG.md
@@ -1,5 +1,21 @@
# @internal/plugin-catalog-customized
+## 0.0.13-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+ - @backstage/plugin-catalog@1.12.1-next.2
+
+## 0.0.13-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog@1.12.1-next.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
## 0.0.13-next.0
### Patch Changes
diff --git a/plugins/catalog-customized/package.json b/plugins/catalog-customized/package.json
index b745c43aca..695f964d1f 100644
--- a/plugins/catalog-customized/package.json
+++ b/plugins/catalog-customized/package.json
@@ -1,7 +1,7 @@
{
"name": "@internal/plugin-catalog-customized",
"description": "The internal Backstage Customizable plugin for browsing the Backstage catalog",
- "version": "0.0.13-next.0",
+ "version": "0.0.13-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-graph/CHANGELOG.md b/plugins/catalog-graph/CHANGELOG.md
index 4e04cac514..ec1ceb76d5 100644
--- a/plugins/catalog-graph/CHANGELOG.md
+++ b/plugins/catalog-graph/CHANGELOG.md
@@ -1,5 +1,27 @@
# @backstage/plugin-catalog-graph
+## 0.2.33-next.2
+
+### Patch Changes
+
+- 62dc7a2b1ad1: Added maximum depth parameter to the catalogGraphParams in CatalogGraphCard.
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## 0.2.33-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+ - @backstage/types@1.1.0
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
## 0.2.33-next.0
### Patch Changes
diff --git a/plugins/catalog-graph/package.json b/plugins/catalog-graph/package.json
index 73cdb47d07..4f815fce82 100644
--- a/plugins/catalog-graph/package.json
+++ b/plugins/catalog-graph/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-catalog-graph",
- "version": "0.2.33-next.0",
+ "version": "0.2.33-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -12,6 +12,12 @@
"backstage": {
"role": "frontend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/catalog-graph"
+ },
"scripts": {
"build": "backstage-cli package build",
"start": "backstage-cli package start",
diff --git a/plugins/catalog-graph/src/components/CatalogGraphCard/CatalogGraphCard.test.tsx b/plugins/catalog-graph/src/components/CatalogGraphCard/CatalogGraphCard.test.tsx
index adee03e298..cdd55e300f 100644
--- a/plugins/catalog-graph/src/components/CatalogGraphCard/CatalogGraphCard.test.tsx
+++ b/plugins/catalog-graph/src/components/CatalogGraphCard/CatalogGraphCard.test.tsx
@@ -133,7 +133,7 @@ describe('', () => {
expect(button).toBeInTheDocument();
expect(button.closest('a')).toHaveAttribute(
'href',
- '/catalog-graph?rootEntityRefs%5B%5D=b%3Ad%2Fc&unidirectional=true&mergeRelations=true&direction=LR',
+ '/catalog-graph?rootEntityRefs%5B%5D=b%3Ad%2Fc&maxDepth=1&unidirectional=true&mergeRelations=true&direction=LR',
);
});
@@ -157,7 +157,7 @@ describe('', () => {
expect(button).toBeInTheDocument();
expect(button.closest('a')).toHaveAttribute(
'href',
- '/catalog-graph?rootEntityRefs%5B%5D=b%3Ad%2Fc&unidirectional=true&mergeRelations=false&direction=LR',
+ '/catalog-graph?rootEntityRefs%5B%5D=b%3Ad%2Fc&maxDepth=2&unidirectional=true&mergeRelations=false&direction=LR',
);
});
diff --git a/plugins/catalog-graph/src/components/CatalogGraphCard/CatalogGraphCard.tsx b/plugins/catalog-graph/src/components/CatalogGraphCard/CatalogGraphCard.tsx
index ae4ad850a4..7976fa66bb 100644
--- a/plugins/catalog-graph/src/components/CatalogGraphCard/CatalogGraphCard.tsx
+++ b/plugins/catalog-graph/src/components/CatalogGraphCard/CatalogGraphCard.tsx
@@ -108,6 +108,7 @@ export const CatalogGraphCard = (
const catalogGraphParams = qs.stringify(
{
rootEntityRefs: [stringifyEntityRef(entity)],
+ maxDepth: maxDepth,
unidirectional,
mergeRelations,
selectedKinds: kinds,
diff --git a/plugins/catalog-import/CHANGELOG.md b/plugins/catalog-import/CHANGELOG.md
index 47b286216e..90cd7012d9 100644
--- a/plugins/catalog-import/CHANGELOG.md
+++ b/plugins/catalog-import/CHANGELOG.md
@@ -1,5 +1,29 @@
# @backstage/plugin-catalog-import
+## 0.9.11-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+ - @backstage/integration-react@1.1.16-next.1
+
+## 0.9.11-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/integration-react@1.1.16-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/plugin-catalog-common@1.0.15
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
## 0.9.11-next.0
### Patch Changes
diff --git a/plugins/catalog-import/package.json b/plugins/catalog-import/package.json
index 19d475d94e..dc31a37e17 100644
--- a/plugins/catalog-import/package.json
+++ b/plugins/catalog-import/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-import",
"description": "A Backstage plugin the helps you import entities into your catalog",
- "version": "0.9.11-next.0",
+ "version": "0.9.11-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-node/CHANGELOG.md b/plugins/catalog-node/CHANGELOG.md
index 633d39d4d5..852650f62b 100644
--- a/plugins/catalog-node/CHANGELOG.md
+++ b/plugins/catalog-node/CHANGELOG.md
@@ -1,5 +1,25 @@
# @backstage/plugin-catalog-node
+## 1.4.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+
+## 1.4.1-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+ - @backstage/plugin-catalog-common@1.0.15
+
## 1.4.1-next.0
### Patch Changes
diff --git a/plugins/catalog-node/package.json b/plugins/catalog-node/package.json
index 426f8e3297..9575fb05a2 100644
--- a/plugins/catalog-node/package.json
+++ b/plugins/catalog-node/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-node",
"description": "The plugin-catalog-node module for @backstage/plugin-catalog-backend",
- "version": "1.4.1-next.0",
+ "version": "1.4.1-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -26,6 +26,12 @@
"backstage": {
"role": "node-library"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/catalog-node"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
diff --git a/plugins/catalog-react/CHANGELOG.md b/plugins/catalog-react/CHANGELOG.md
index 6ae43f297c..9699a4a62d 100644
--- a/plugins/catalog-react/CHANGELOG.md
+++ b/plugins/catalog-react/CHANGELOG.md
@@ -1,5 +1,11 @@
# @backstage/plugin-catalog-react
+## 1.8.1-next.1
+
+### Patch Changes
+
+- aa3feedce10a: Allow specifying screen size when catalog filters are hidden in drawer
+
## 1.8.1-next.0
### Patch Changes
diff --git a/plugins/catalog-react/api-report.md b/plugins/catalog-react/api-report.md
index 9bf87778dd..b5ab8b6c7f 100644
--- a/plugins/catalog-react/api-report.md
+++ b/plugins/catalog-react/api-report.md
@@ -63,7 +63,13 @@ export const catalogApiRef: ApiRef;
// @public (undocumented)
export const CatalogFilterLayout: {
(props: { children: React_2.ReactNode }): JSX.Element;
- Filters: (props: { children: React_2.ReactNode }) => JSX.Element;
+ Filters: (props: {
+ children: React_2.ReactNode;
+ options?: {
+ drawerBreakpoint?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | number;
+ drawerAnchor?: 'left' | 'right' | 'top' | 'bottom';
+ };
+ }) => JSX.Element;
Content: (props: { children: React_2.ReactNode }) => JSX.Element;
};
diff --git a/plugins/catalog-react/package.json b/plugins/catalog-react/package.json
index 67a3409830..e9bc8d249e 100644
--- a/plugins/catalog-react/package.json
+++ b/plugins/catalog-react/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-catalog-react",
"description": "A frontend library that helps other Backstage plugins interact with the catalog",
- "version": "1.8.1-next.0",
+ "version": "1.8.1-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/catalog-react/src/components/CatalogFilterLayout/CatalogFilterLayout.tsx b/plugins/catalog-react/src/components/CatalogFilterLayout/CatalogFilterLayout.tsx
index 751eb35f1d..1a1404edf2 100644
--- a/plugins/catalog-react/src/components/CatalogFilterLayout/CatalogFilterLayout.tsx
+++ b/plugins/catalog-react/src/components/CatalogFilterLayout/CatalogFilterLayout.tsx
@@ -28,14 +28,20 @@ import FilterListIcon from '@material-ui/icons/FilterList';
import { BackstageTheme } from '@backstage/theme';
/** @public */
-export const Filters = (props: { children: React.ReactNode }) => {
- const isMidSizeScreen = useMediaQuery(theme =>
- theme.breakpoints.down('md'),
+export const Filters = (props: {
+ children: React.ReactNode;
+ options?: {
+ drawerBreakpoint?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | number;
+ drawerAnchor?: 'left' | 'right' | 'top' | 'bottom';
+ };
+}) => {
+ const isScreenSmallerThanBreakpoint = useMediaQuery(theme =>
+ theme.breakpoints.down(props.options?.drawerBreakpoint ?? 'md'),
);
const theme = useTheme();
const [filterDrawerOpen, setFilterDrawerOpen] = useState(false);
- return isMidSizeScreen ? (
+ return isScreenSmallerThanBreakpoint ? (
<>
}
+ />
+ System} />
+
+
+ ,
+ );
+
+ expect(screen.queryByText('Component')).toBeInTheDocument();
+ expect(screen.queryByText('System')).not.toBeInTheDocument();
+ });
+
+ it(`shouldn't unmount the children on entity refresh`, () => {
+ const entity = { metadata: { name: 'mock' }, kind: 'component' } as Entity;
+
+ let mountsCount = 0;
+ function Component() {
+ useEffect(() => {
+ ++mountsCount;
+ }, []);
+
+ return Component
;
+ }
+
+ const rendered = render(
+
+
+
+ }
+ />
+ System} />
+
+
+ ,
+ );
+
+ expect(screen.queryByText('Component')).toBeInTheDocument();
+ expect(screen.queryByText('System')).not.toBeInTheDocument();
+
+ expect(mountsCount).toBe(1);
+
+ rendered.rerender(
+
+
+
+ }
+ />
+ System} />
+
+
+ ,
+ );
+
+ expect(screen.queryByText('Component')).toBeInTheDocument();
+ expect(screen.queryByText('System')).not.toBeInTheDocument();
+
+ expect(mountsCount).toBe(1);
+
+ rendered.rerender(
+
+
+
+ }
+ />
+ System} />
+
+
+ ,
+ );
+
+ expect(screen.queryByText('Component')).toBeInTheDocument();
+ expect(screen.queryByText('System')).not.toBeInTheDocument();
+
+ expect(mountsCount).toBe(1);
+ });
+
it('should switch with async condition that is true', async () => {
const entity = { metadata: { name: 'mock' }, kind: 'component' } as Entity;
@@ -292,10 +457,10 @@ describe('EntitySwitch', () => {
expect(screen.queryByText('A')).not.toBeInTheDocument();
});
- it('should switch with sync condition that throws', async () => {
+ it('should switch with async condition that throws', async () => {
const entity = { metadata: { name: 'mock' }, kind: 'component' } as Entity;
- const shouldRender = () => Promise.reject();
+ const shouldRender = jest.fn().mockRejectedValue(undefined);
render(
@@ -308,7 +473,9 @@ describe('EntitySwitch', () => {
,
);
- await expect(screen.findByText('C')).resolves.toBeInTheDocument();
+ await waitFor(() => expect(shouldRender).toHaveBeenCalled());
+
+ expect(screen.getByText('C')).toBeInTheDocument();
expect(screen.queryByText('A')).not.toBeInTheDocument();
expect(screen.queryByText('B')).not.toBeInTheDocument();
});
diff --git a/plugins/catalog/src/components/EntitySwitch/EntitySwitch.tsx b/plugins/catalog/src/components/EntitySwitch/EntitySwitch.tsx
index 3cd806faa5..b12495052e 100644
--- a/plugins/catalog/src/components/EntitySwitch/EntitySwitch.tsx
+++ b/plugins/catalog/src/components/EntitySwitch/EntitySwitch.tsx
@@ -64,8 +64,9 @@ export interface EntitySwitchProps {
/** @public */
export const EntitySwitch = (props: EntitySwitchProps) => {
- const { entity, loading } = useAsyncEntity();
+ const { entity } = useAsyncEntity();
const apis = useApiHolder();
+
const results = useElementFilter(
props.children,
collection =>
@@ -76,23 +77,14 @@ export const EntitySwitch = (props: EntitySwitchProps) => {
})
.getElements()
.flatMap((element: ReactElement) => {
- // Nothing is rendered while loading
- if (loading) {
+ // If the entity is missing or there is an error, render nothing
+ if (!entity) {
return [];
}
const { if: condition, children: elementsChildren } =
element.props as EntitySwitchCase;
- // If the entity is missing or there is an error, render the default page
- if (!entity) {
- return [
- {
- if: condition === undefined,
- children: elementsChildren,
- },
- ];
- }
return [
{
if: condition?.(entity, { apis }),
@@ -100,7 +92,7 @@ export const EntitySwitch = (props: EntitySwitchProps) => {
},
];
}),
- [apis, entity, loading],
+ [apis, entity],
);
const hasAsyncCases = results.some(
diff --git a/plugins/cicd-statistics-module-gitlab/CHANGELOG.md b/plugins/cicd-statistics-module-gitlab/CHANGELOG.md
index 93124791bc..25744f9bdf 100644
--- a/plugins/cicd-statistics-module-gitlab/CHANGELOG.md
+++ b/plugins/cicd-statistics-module-gitlab/CHANGELOG.md
@@ -1,5 +1,22 @@
# @backstage/plugin-cicd-statistics-module-gitlab
+## 0.1.17-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-cicd-statistics@0.1.23-next.1
+
+## 0.1.17-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/plugin-cicd-statistics@0.1.23-next.0
+
## 0.1.17-next.0
### Patch Changes
diff --git a/plugins/cicd-statistics-module-gitlab/package.json b/plugins/cicd-statistics-module-gitlab/package.json
index 89da579bf4..39d9aadc22 100644
--- a/plugins/cicd-statistics-module-gitlab/package.json
+++ b/plugins/cicd-statistics-module-gitlab/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-cicd-statistics-module-gitlab",
"description": "CI/CD Statistics plugin module; Gitlab CICD",
- "version": "0.1.17-next.0",
+ "version": "0.1.17-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -13,6 +13,12 @@
"backstage": {
"role": "frontend-plugin-module"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/cicd-statistics-module-gitlab"
+ },
"keywords": [
"backstage",
"cicd statistics",
diff --git a/plugins/cicd-statistics/CHANGELOG.md b/plugins/cicd-statistics/CHANGELOG.md
index bdfe0cd1a9..aac48e8190 100644
--- a/plugins/cicd-statistics/CHANGELOG.md
+++ b/plugins/cicd-statistics/CHANGELOG.md
@@ -1,5 +1,12 @@
# @backstage/plugin-cicd-statistics
+## 0.1.23-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
## 0.1.23-next.0
### Patch Changes
diff --git a/plugins/cicd-statistics/package.json b/plugins/cicd-statistics/package.json
index 6bd94c67e2..d98b6d9dac 100644
--- a/plugins/cicd-statistics/package.json
+++ b/plugins/cicd-statistics/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-cicd-statistics",
"description": "A frontend plugin visualizing CI/CD pipeline statistics (build time)",
- "version": "0.1.23-next.0",
+ "version": "0.1.23-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/circleci/CHANGELOG.md b/plugins/circleci/CHANGELOG.md
index c4a429ec47..f4dce44764 100644
--- a/plugins/circleci/CHANGELOG.md
+++ b/plugins/circleci/CHANGELOG.md
@@ -1,5 +1,12 @@
# @backstage/plugin-circleci
+## 0.3.21-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
## 0.3.21-next.0
### Patch Changes
diff --git a/plugins/circleci/package.json b/plugins/circleci/package.json
index 68066ae890..50c6dd71fa 100644
--- a/plugins/circleci/package.json
+++ b/plugins/circleci/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-circleci",
"description": "A Backstage plugin that integrates towards Circle CI",
- "version": "0.3.21-next.0",
+ "version": "0.3.21-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/cloudbuild/CHANGELOG.md b/plugins/cloudbuild/CHANGELOG.md
index ebd4d6bc54..e59626fbe0 100644
--- a/plugins/cloudbuild/CHANGELOG.md
+++ b/plugins/cloudbuild/CHANGELOG.md
@@ -1,5 +1,12 @@
# @backstage/plugin-cloudbuild
+## 0.3.21-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
## 0.3.21-next.0
### Patch Changes
diff --git a/plugins/cloudbuild/package.json b/plugins/cloudbuild/package.json
index 6a487c5494..bdb4541e9b 100644
--- a/plugins/cloudbuild/package.json
+++ b/plugins/cloudbuild/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-cloudbuild",
"description": "A Backstage plugin that integrates towards Google Cloud Build",
- "version": "0.3.21-next.0",
+ "version": "0.3.21-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/code-climate/CHANGELOG.md b/plugins/code-climate/CHANGELOG.md
index f9f12eda4c..33470a2191 100644
--- a/plugins/code-climate/CHANGELOG.md
+++ b/plugins/code-climate/CHANGELOG.md
@@ -1,5 +1,24 @@
# @backstage/plugin-code-climate
+## 0.1.21-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## 0.1.21-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
## 0.1.21-next.0
### Patch Changes
diff --git a/plugins/code-climate/package.json b/plugins/code-climate/package.json
index 1c0576bbdc..ca1800b897 100644
--- a/plugins/code-climate/package.json
+++ b/plugins/code-climate/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-code-climate",
- "version": "0.1.21-next.0",
+ "version": "0.1.21-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -12,6 +12,12 @@
"backstage": {
"role": "frontend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/code-climate"
+ },
"scripts": {
"build": "backstage-cli package build",
"start": "backstage-cli package start",
diff --git a/plugins/code-coverage-backend/CHANGELOG.md b/plugins/code-coverage-backend/CHANGELOG.md
index bd17e3bc31..52eddd9afe 100644
--- a/plugins/code-coverage-backend/CHANGELOG.md
+++ b/plugins/code-coverage-backend/CHANGELOG.md
@@ -1,5 +1,25 @@
# @backstage/plugin-code-coverage-backend
+## 0.2.14-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.2
+
+## 0.2.14-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+
## 0.2.14-next.0
### Patch Changes
diff --git a/plugins/code-coverage-backend/package.json b/plugins/code-coverage-backend/package.json
index a4910c6093..67b1fc1d2f 100644
--- a/plugins/code-coverage-backend/package.json
+++ b/plugins/code-coverage-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-code-coverage-backend",
"description": "A Backstage backend plugin that helps you keep track of your code coverage",
- "version": "0.2.14-next.0",
+ "version": "0.2.14-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -13,6 +13,12 @@
"backstage": {
"role": "backend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/code-coverage-backend"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
diff --git a/plugins/code-coverage/CHANGELOG.md b/plugins/code-coverage/CHANGELOG.md
index 070777e634..fce7d9a4b2 100644
--- a/plugins/code-coverage/CHANGELOG.md
+++ b/plugins/code-coverage/CHANGELOG.md
@@ -1,5 +1,26 @@
# @backstage/plugin-code-coverage
+## 0.2.14-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## 0.2.14-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
## 0.2.14-next.0
### Patch Changes
diff --git a/plugins/code-coverage/package.json b/plugins/code-coverage/package.json
index 8fbda2ff48..ea14a18b87 100644
--- a/plugins/code-coverage/package.json
+++ b/plugins/code-coverage/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-code-coverage",
"description": "A Backstage plugin that helps you keep track of your code coverage",
- "version": "0.2.14-next.0",
+ "version": "0.2.14-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -13,6 +13,12 @@
"backstage": {
"role": "frontend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/code-coverage"
+ },
"scripts": {
"build": "backstage-cli package build",
"start": "backstage-cli package start",
diff --git a/plugins/codescene/CHANGELOG.md b/plugins/codescene/CHANGELOG.md
index ac82e96c39..3a10b0984f 100644
--- a/plugins/codescene/CHANGELOG.md
+++ b/plugins/codescene/CHANGELOG.md
@@ -1,5 +1,17 @@
# @backstage/plugin-codescene
+## 0.1.16-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/config@1.0.8
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/theme@0.4.1
+
## 0.1.16-next.0
### Patch Changes
diff --git a/plugins/codescene/package.json b/plugins/codescene/package.json
index 1bf5dedf87..4ec2a9ec4b 100644
--- a/plugins/codescene/package.json
+++ b/plugins/codescene/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-codescene",
- "version": "0.1.16-next.0",
+ "version": "0.1.16-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -12,6 +12,12 @@
"backstage": {
"role": "frontend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/codescene"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
diff --git a/plugins/config-schema/CHANGELOG.md b/plugins/config-schema/CHANGELOG.md
index 23a9d4368e..b607255110 100644
--- a/plugins/config-schema/CHANGELOG.md
+++ b/plugins/config-schema/CHANGELOG.md
@@ -1,5 +1,18 @@
# @backstage/plugin-config-schema
+## 0.1.44-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/config@1.0.8
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/theme@0.4.1
+ - @backstage/types@1.1.0
+
## 0.1.44-next.0
### Patch Changes
diff --git a/plugins/config-schema/package.json b/plugins/config-schema/package.json
index f8a83aa177..2f8d233407 100644
--- a/plugins/config-schema/package.json
+++ b/plugins/config-schema/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-config-schema",
"description": "A Backstage plugin that lets you browse the configuration schema of your app",
- "version": "0.1.44-next.0",
+ "version": "0.1.44-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -13,6 +13,12 @@
"backstage": {
"role": "frontend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/config-schema"
+ },
"scripts": {
"build": "backstage-cli package build",
"start": "backstage-cli package start",
diff --git a/plugins/cost-insights/CHANGELOG.md b/plugins/cost-insights/CHANGELOG.md
index 98a48380ee..687528e3fd 100644
--- a/plugins/cost-insights/CHANGELOG.md
+++ b/plugins/cost-insights/CHANGELOG.md
@@ -1,5 +1,12 @@
# @backstage/plugin-cost-insights
+## 0.12.10-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
## 0.12.10-next.0
### Patch Changes
diff --git a/plugins/cost-insights/package.json b/plugins/cost-insights/package.json
index b87b3db435..e626e8e173 100644
--- a/plugins/cost-insights/package.json
+++ b/plugins/cost-insights/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-cost-insights",
"description": "A Backstage plugin that helps you keep track of your cloud spend",
- "version": "0.12.10-next.0",
+ "version": "0.12.10-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/devtools-backend/CHANGELOG.md b/plugins/devtools-backend/CHANGELOG.md
index c6fc117190..d5488d6dbc 100644
--- a/plugins/devtools-backend/CHANGELOG.md
+++ b/plugins/devtools-backend/CHANGELOG.md
@@ -1,5 +1,46 @@
# @backstage/plugin-devtools-backend
+## 0.1.3-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-permission-node@0.7.11-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+ - @backstage/config-loader@1.4.0-next.1
+
+## 0.1.3-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 12a8c94eda8d: Add package repository and homepage metadata
+- 2b4f77a4e900: Add DevTools configuration to enable dependency listing to be filtered with custom prefixes. For instance, in your `app-config.yaml`:
+
+ ```yaml
+ devTools:
+ info:
+ packagePrefixes:
+ - @backstage/
+ - @roadiehq/backstage-
+ - @spotify/backstage-
+ ```
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/config-loader@1.4.0-next.1
+ - @backstage/plugin-devtools-common@0.1.3-next.0
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/plugin-permission-node@0.7.11-next.1
+ - @backstage/cli-common@0.1.12
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+ - @backstage/plugin-permission-common@0.7.7
+
## 0.1.3-next.0
### Patch Changes
diff --git a/plugins/devtools-backend/config.d.ts b/plugins/devtools-backend/config.d.ts
index 15e70afcf8..9fc7cf1762 100644
--- a/plugins/devtools-backend/config.d.ts
+++ b/plugins/devtools-backend/config.d.ts
@@ -40,5 +40,15 @@ export interface Config {
target: string;
}>;
};
+ /**
+ * Info configuration
+ */
+ info?: {
+ /**
+ * A list of package prefixes that DevTools will use for filtering all available dependencies
+ * (default is ["@backstage"])
+ */
+ packagePrefixes?: string[];
+ };
};
}
diff --git a/plugins/devtools-backend/package.json b/plugins/devtools-backend/package.json
index 239f7f5328..3b17a8ac7f 100644
--- a/plugins/devtools-backend/package.json
+++ b/plugins/devtools-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-devtools-backend",
- "version": "0.1.3-next.0",
+ "version": "0.1.3-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -12,6 +12,12 @@
"backstage": {
"role": "backend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/devtools-backend"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
diff --git a/plugins/devtools-backend/src/api/DevToolsBackendApi.ts b/plugins/devtools-backend/src/api/DevToolsBackendApi.ts
index efd0407b31..c1b1a1fa9a 100644
--- a/plugins/devtools-backend/src/api/DevToolsBackendApi.ts
+++ b/plugins/devtools-backend/src/api/DevToolsBackendApi.ts
@@ -219,7 +219,12 @@ export class DevToolsBackendApi {
const lockfilePath = paths.resolveTargetRoot('yarn.lock');
const lockfile = await Lockfile.load(lockfilePath);
- const deps = [...lockfile.keys()].filter(n => n.startsWith('@backstage/'));
+ const prefixes = ['@backstage', '@internal'].concat(
+ this.config.getOptionalStringArray('devTools.info.packagePrefixes') ?? [],
+ );
+ const deps = [...lockfile.keys()].filter(n =>
+ prefixes.some(prefix => n.startsWith(prefix)),
+ );
const infoDependencies: PackageDependency[] = [];
for (const dep of deps) {
diff --git a/plugins/devtools-backend/src/plugin.ts b/plugins/devtools-backend/src/plugin.ts
index 01e03e3609..685522557e 100644
--- a/plugins/devtools-backend/src/plugin.ts
+++ b/plugins/devtools-backend/src/plugin.ts
@@ -31,7 +31,7 @@ export const devtoolsPlugin = createBackendPlugin({
register(env) {
env.registerInit({
deps: {
- config: coreServices.config,
+ config: coreServices.rootConfig,
logger: coreServices.logger,
permissions: coreServices.permissions,
httpRouter: coreServices.httpRouter,
diff --git a/plugins/devtools-common/CHANGELOG.md b/plugins/devtools-common/CHANGELOG.md
index 737b00fb15..adf0300433 100644
--- a/plugins/devtools-common/CHANGELOG.md
+++ b/plugins/devtools-common/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-devtools-common
+## 0.1.3-next.0
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/types@1.1.0
+ - @backstage/plugin-permission-common@0.7.7
+
## 0.1.2
### Patch Changes
diff --git a/plugins/devtools-common/package.json b/plugins/devtools-common/package.json
index e3424e1b68..d098df0e23 100644
--- a/plugins/devtools-common/package.json
+++ b/plugins/devtools-common/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-devtools-common",
"description": "Common functionalities for the devtools plugin",
- "version": "0.1.2",
+ "version": "0.1.3-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -14,6 +14,12 @@
"backstage": {
"role": "common-library"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/devtools-common"
+ },
"scripts": {
"build": "backstage-cli package build",
"lint": "backstage-cli package lint",
diff --git a/plugins/devtools/CHANGELOG.md b/plugins/devtools/CHANGELOG.md
index a7793b91ab..d87d21a886 100644
--- a/plugins/devtools/CHANGELOG.md
+++ b/plugins/devtools/CHANGELOG.md
@@ -1,5 +1,19 @@
# @backstage/plugin-devtools
+## 0.1.3-next.1
+
+### Patch Changes
+
+- 48b6a04ad045: Fix readme typo
+- Updated dependencies
+ - @backstage/plugin-devtools-common@0.1.3-next.0
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/theme@0.4.1
+ - @backstage/types@1.1.0
+ - @backstage/plugin-permission-react@0.4.14
+
## 0.1.3-next.0
### Patch Changes
diff --git a/plugins/devtools/README.md b/plugins/devtools/README.md
index 09e76caaa4..cb6fbb95fd 100644
--- a/plugins/devtools/README.md
+++ b/plugins/devtools/README.md
@@ -210,7 +210,7 @@ To use the permission framework to secure the DevTools sidebar option you'll wan
```
2. Then open the `packages/app/src/components/Root/Root.tsx` file
-3. The add these imports after all the existing import statements:
+3. Then add these imports after all the existing import statements:
```ts
import { devToolsAdministerPermission } from '@backstage/plugin-devtools-common';
@@ -408,11 +408,23 @@ export const customDevToolsPage = ;
## Configuration
-The following sections outline the configuration for the DevTools plugin
+The following sections outline the configuration for the DevTools plugin.
+
+### Package Dependencies
+
+By default, only packages with names starting with `@backstage` and `@internal` will be listed on the main "Info" tab. If you would like additional packages to be listed, you can specify the package prefixes (not regular expressions) in your `app-config.yaml`. For example, to not only provide version information about backstage plugins provided by the core application (`@backstage/*` modules) but also `@roadiehq` and `@spotify` plugins, you can specify this configuration:
+
+```yaml
+devTools:
+ info:
+ packagePrefixes:
+ - @roadiehq/backstage-
+ - @spotify/backstage-
+```
### External Dependencies Configuration
-If you decide to use the External Dependencies tab then you'll need to setup the configuration for it in your `app-config.yaml`, if there is no config setup then the tab will be empty. Here's an example:
+If you decide to use the External Dependencies tab then you'll need to setup the configuration for it in your `app-config.yaml`. If there is no endpoints configured, then the tab will be empty. Here's an example:
```yaml
devTools:
diff --git a/plugins/devtools/package.json b/plugins/devtools/package.json
index 38c20ab173..a791233f17 100644
--- a/plugins/devtools/package.json
+++ b/plugins/devtools/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-devtools",
- "version": "0.1.3-next.0",
+ "version": "0.1.3-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/dynatrace/CHANGELOG.md b/plugins/dynatrace/CHANGELOG.md
index ce5ea57681..10f7e55f9f 100644
--- a/plugins/dynatrace/CHANGELOG.md
+++ b/plugins/dynatrace/CHANGELOG.md
@@ -1,5 +1,24 @@
# @backstage/plugin-dynatrace
+## 7.0.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## 7.0.1-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
## 7.0.1-next.0
### Patch Changes
diff --git a/plugins/dynatrace/package.json b/plugins/dynatrace/package.json
index 6d4b10418c..94b3716645 100644
--- a/plugins/dynatrace/package.json
+++ b/plugins/dynatrace/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-dynatrace",
- "version": "7.0.1-next.0",
+ "version": "7.0.1-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -12,6 +12,7 @@
"backstage": {
"role": "frontend-plugin"
},
+ "homepage": "https://backstage.io",
"repository": {
"type": "git",
"url": "https://github.com/backstage/backstage",
diff --git a/plugins/entity-feedback-backend/CHANGELOG.md b/plugins/entity-feedback-backend/CHANGELOG.md
index f2399b657d..fd1db9e1d8 100644
--- a/plugins/entity-feedback-backend/CHANGELOG.md
+++ b/plugins/entity-feedback-backend/CHANGELOG.md
@@ -1,5 +1,28 @@
# @backstage/plugin-entity-feedback-backend
+## 0.1.6-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+
+## 0.1.6-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-entity-feedback-common@0.1.2-next.0
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+
## 0.1.6-next.0
### Patch Changes
diff --git a/plugins/entity-feedback-backend/package.json b/plugins/entity-feedback-backend/package.json
index 36c0f85be7..28cb9110a4 100644
--- a/plugins/entity-feedback-backend/package.json
+++ b/plugins/entity-feedback-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-entity-feedback-backend",
- "version": "0.1.6-next.0",
+ "version": "0.1.6-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -12,6 +12,12 @@
"backstage": {
"role": "backend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/entity-feedback-backend"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
diff --git a/plugins/entity-feedback-common/CHANGELOG.md b/plugins/entity-feedback-common/CHANGELOG.md
index 161f990b3a..dd93a7ee36 100644
--- a/plugins/entity-feedback-common/CHANGELOG.md
+++ b/plugins/entity-feedback-common/CHANGELOG.md
@@ -1,5 +1,11 @@
# @backstage/plugin-entity-feedback-common
+## 0.1.2-next.0
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+
## 0.1.1
### Patch Changes
diff --git a/plugins/entity-feedback-common/package.json b/plugins/entity-feedback-common/package.json
index 6abb002aa4..776e33e198 100644
--- a/plugins/entity-feedback-common/package.json
+++ b/plugins/entity-feedback-common/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-entity-feedback-common",
"description": "Common functionalities for the entity-feedback plugin",
- "version": "0.1.1",
+ "version": "0.1.2-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -14,6 +14,12 @@
"backstage": {
"role": "common-library"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/entity-feedback-common"
+ },
"scripts": {
"build": "backstage-cli package build",
"lint": "backstage-cli package lint",
diff --git a/plugins/entity-feedback/CHANGELOG.md b/plugins/entity-feedback/CHANGELOG.md
index 973dd7c248..8582353e5b 100644
--- a/plugins/entity-feedback/CHANGELOG.md
+++ b/plugins/entity-feedback/CHANGELOG.md
@@ -1,5 +1,26 @@
# @backstage/plugin-entity-feedback
+## 0.2.4-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## 0.2.4-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/plugin-entity-feedback-common@0.1.2-next.0
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
## 0.2.4-next.0
### Patch Changes
diff --git a/plugins/entity-feedback/package.json b/plugins/entity-feedback/package.json
index de9eff5420..4cbdc26a85 100644
--- a/plugins/entity-feedback/package.json
+++ b/plugins/entity-feedback/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-entity-feedback",
- "version": "0.2.4-next.0",
+ "version": "0.2.4-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -12,6 +12,7 @@
"backstage": {
"role": "frontend-plugin"
},
+ "homepage": "https://backstage.io",
"repository": {
"type": "git",
"url": "https://github.com/backstage/backstage",
diff --git a/plugins/entity-validation/CHANGELOG.md b/plugins/entity-validation/CHANGELOG.md
index ecc0ba4ba5..a2607bf96f 100644
--- a/plugins/entity-validation/CHANGELOG.md
+++ b/plugins/entity-validation/CHANGELOG.md
@@ -1,5 +1,27 @@
# @backstage/plugin-entity-validation
+## 0.1.6-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## 0.1.6-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-common@1.0.15
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
## 0.1.6-next.0
### Patch Changes
diff --git a/plugins/entity-validation/package.json b/plugins/entity-validation/package.json
index 46455d3a4c..75c82a0a9b 100644
--- a/plugins/entity-validation/package.json
+++ b/plugins/entity-validation/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-entity-validation",
- "version": "0.1.6-next.0",
+ "version": "0.1.6-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -12,6 +12,7 @@
"backstage": {
"role": "frontend-plugin"
},
+ "homepage": "https://backstage.io",
"repository": {
"type": "git",
"url": "https://github.com/backstage/backstage",
diff --git a/plugins/events-backend-module-aws-sqs/CHANGELOG.md b/plugins/events-backend-module-aws-sqs/CHANGELOG.md
index 80da8cdda4..f961ceaa5c 100644
--- a/plugins/events-backend-module-aws-sqs/CHANGELOG.md
+++ b/plugins/events-backend-module-aws-sqs/CHANGELOG.md
@@ -1,5 +1,30 @@
# @backstage/plugin-events-backend-module-aws-sqs
+## 0.2.3-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-events-node@0.2.9-next.2
+
+## 0.2.3-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 12a8c94eda8d: Add package repository and homepage metadata
+- 4b82382ed8c2: Fixed invalid configuration schema. The configuration schema may be more strict as a result.
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-events-node@0.2.9-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/config@1.0.8
+ - @backstage/types@1.1.0
+
## 0.2.3-next.0
### Patch Changes
diff --git a/plugins/events-backend-module-aws-sqs/config.d.ts b/plugins/events-backend-module-aws-sqs/config.d.ts
index dfef35bf22..c2edfeae8e 100644
--- a/plugins/events-backend-module-aws-sqs/config.d.ts
+++ b/plugins/events-backend-module-aws-sqs/config.d.ts
@@ -31,9 +31,8 @@ export interface Config {
* Contains a record per topic for which an AWS SQS queue
* should be used as source of events.
*/
- topics: Record<
- string,
- {
+ topics: {
+ [name: string]: {
/**
* (Required) Queue-related configuration.
*/
@@ -69,8 +68,8 @@ export interface Config {
* Default: 1 minute.
*/
waitTimeAfterEmptyReceive: HumanDuration;
- }
- >;
+ };
+ };
};
};
};
diff --git a/plugins/events-backend-module-aws-sqs/package.json b/plugins/events-backend-module-aws-sqs/package.json
index e509058b69..5017afbcf0 100644
--- a/plugins/events-backend-module-aws-sqs/package.json
+++ b/plugins/events-backend-module-aws-sqs/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-events-backend-module-aws-sqs",
- "version": "0.2.3-next.0",
+ "version": "0.2.3-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -25,6 +25,12 @@
"backstage": {
"role": "backend-plugin-module"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/events-backend-module-aws-sqs"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
diff --git a/plugins/events-backend-module-aws-sqs/src/service/eventsModuleAwsSqsConsumingEventPublisher.test.ts b/plugins/events-backend-module-aws-sqs/src/service/eventsModuleAwsSqsConsumingEventPublisher.test.ts
index 921dc38552..849ad733de 100644
--- a/plugins/events-backend-module-aws-sqs/src/service/eventsModuleAwsSqsConsumingEventPublisher.test.ts
+++ b/plugins/events-backend-module-aws-sqs/src/service/eventsModuleAwsSqsConsumingEventPublisher.test.ts
@@ -64,7 +64,7 @@ describe('eventsModuleAwsSqsConsumingEventPublisher', () => {
await startTestBackend({
extensionPoints: [[eventsExtensionPoint, extensionPoint]],
services: [
- [coreServices.config, config],
+ [coreServices.rootConfig, config],
[coreServices.logger, getVoidLogger()],
[coreServices.scheduler, scheduler],
],
diff --git a/plugins/events-backend-module-aws-sqs/src/service/eventsModuleAwsSqsConsumingEventPublisher.ts b/plugins/events-backend-module-aws-sqs/src/service/eventsModuleAwsSqsConsumingEventPublisher.ts
index 41ae2d80d7..9045047094 100644
--- a/plugins/events-backend-module-aws-sqs/src/service/eventsModuleAwsSqsConsumingEventPublisher.ts
+++ b/plugins/events-backend-module-aws-sqs/src/service/eventsModuleAwsSqsConsumingEventPublisher.ts
@@ -33,7 +33,7 @@ export const eventsModuleAwsSqsConsumingEventPublisher = createBackendModule({
register(env) {
env.registerInit({
deps: {
- config: coreServices.config,
+ config: coreServices.rootConfig,
events: eventsExtensionPoint,
logger: coreServices.logger,
scheduler: coreServices.scheduler,
diff --git a/plugins/events-backend-module-azure/CHANGELOG.md b/plugins/events-backend-module-azure/CHANGELOG.md
index d04fb93ac8..84cffef924 100644
--- a/plugins/events-backend-module-azure/CHANGELOG.md
+++ b/plugins/events-backend-module-azure/CHANGELOG.md
@@ -1,5 +1,22 @@
# @backstage/plugin-events-backend-module-azure
+## 0.1.10-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/plugin-events-node@0.2.9-next.2
+
+## 0.1.10-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/plugin-events-node@0.2.9-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+
## 0.1.10-next.0
### Patch Changes
diff --git a/plugins/events-backend-module-azure/package.json b/plugins/events-backend-module-azure/package.json
index 59d397352b..ec6ef05036 100644
--- a/plugins/events-backend-module-azure/package.json
+++ b/plugins/events-backend-module-azure/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-events-backend-module-azure",
- "version": "0.1.10-next.0",
+ "version": "0.1.10-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -25,6 +25,12 @@
"backstage": {
"role": "backend-plugin-module"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/events-backend-module-azure"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
diff --git a/plugins/events-backend-module-bitbucket-cloud/CHANGELOG.md b/plugins/events-backend-module-bitbucket-cloud/CHANGELOG.md
index ed48748279..79ab2a2e13 100644
--- a/plugins/events-backend-module-bitbucket-cloud/CHANGELOG.md
+++ b/plugins/events-backend-module-bitbucket-cloud/CHANGELOG.md
@@ -1,5 +1,22 @@
# @backstage/plugin-events-backend-module-bitbucket-cloud
+## 0.1.10-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/plugin-events-node@0.2.9-next.2
+
+## 0.1.10-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/plugin-events-node@0.2.9-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+
## 0.1.10-next.0
### Patch Changes
diff --git a/plugins/events-backend-module-bitbucket-cloud/package.json b/plugins/events-backend-module-bitbucket-cloud/package.json
index f867348a3c..1dfac9149f 100644
--- a/plugins/events-backend-module-bitbucket-cloud/package.json
+++ b/plugins/events-backend-module-bitbucket-cloud/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-events-backend-module-bitbucket-cloud",
- "version": "0.1.10-next.0",
+ "version": "0.1.10-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -25,6 +25,12 @@
"backstage": {
"role": "backend-plugin-module"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/events-backend-module-bitbucket-cloud"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
diff --git a/plugins/events-backend-module-gerrit/CHANGELOG.md b/plugins/events-backend-module-gerrit/CHANGELOG.md
index 2d19fd081f..a6ea0c9f8b 100644
--- a/plugins/events-backend-module-gerrit/CHANGELOG.md
+++ b/plugins/events-backend-module-gerrit/CHANGELOG.md
@@ -1,5 +1,22 @@
# @backstage/plugin-events-backend-module-gerrit
+## 0.1.10-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/plugin-events-node@0.2.9-next.2
+
+## 0.1.10-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/plugin-events-node@0.2.9-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+
## 0.1.10-next.0
### Patch Changes
diff --git a/plugins/events-backend-module-gerrit/package.json b/plugins/events-backend-module-gerrit/package.json
index f7f9471dfd..d0d7baf10e 100644
--- a/plugins/events-backend-module-gerrit/package.json
+++ b/plugins/events-backend-module-gerrit/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-events-backend-module-gerrit",
- "version": "0.1.10-next.0",
+ "version": "0.1.10-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -25,6 +25,12 @@
"backstage": {
"role": "backend-plugin-module"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/events-backend-module-gerrit"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
diff --git a/plugins/events-backend-module-github/CHANGELOG.md b/plugins/events-backend-module-github/CHANGELOG.md
index dde124b8ca..29894dd946 100644
--- a/plugins/events-backend-module-github/CHANGELOG.md
+++ b/plugins/events-backend-module-github/CHANGELOG.md
@@ -1,5 +1,24 @@
# @backstage/plugin-events-backend-module-github
+## 0.1.10-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/plugin-events-node@0.2.9-next.2
+
+## 0.1.10-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/plugin-events-node@0.2.9-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/config@1.0.8
+
## 0.1.10-next.0
### Patch Changes
diff --git a/plugins/events-backend-module-github/package.json b/plugins/events-backend-module-github/package.json
index 5fd37cf134..d76a72fbb3 100644
--- a/plugins/events-backend-module-github/package.json
+++ b/plugins/events-backend-module-github/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-events-backend-module-github",
- "version": "0.1.10-next.0",
+ "version": "0.1.10-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -25,6 +25,12 @@
"backstage": {
"role": "backend-plugin-module"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/events-backend-module-github"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
diff --git a/plugins/events-backend-module-github/src/service/eventsModuleGithubWebhook.test.ts b/plugins/events-backend-module-github/src/service/eventsModuleGithubWebhook.test.ts
index b8a252aaba..f5bb07f0d6 100644
--- a/plugins/events-backend-module-github/src/service/eventsModuleGithubWebhook.test.ts
+++ b/plugins/events-backend-module-github/src/service/eventsModuleGithubWebhook.test.ts
@@ -59,7 +59,7 @@ describe('eventsModuleGithubWebhook', () => {
await startTestBackend({
extensionPoints: [[eventsExtensionPoint, extensionPoint]],
- services: [[coreServices.config, config]],
+ services: [[coreServices.rootConfig, config]],
features: [eventsModuleGithubWebhook()],
});
diff --git a/plugins/events-backend-module-github/src/service/eventsModuleGithubWebhook.ts b/plugins/events-backend-module-github/src/service/eventsModuleGithubWebhook.ts
index 7e89ceead7..b4bd666036 100644
--- a/plugins/events-backend-module-github/src/service/eventsModuleGithubWebhook.ts
+++ b/plugins/events-backend-module-github/src/service/eventsModuleGithubWebhook.ts
@@ -34,7 +34,7 @@ export const eventsModuleGithubWebhook = createBackendModule({
register(env) {
env.registerInit({
deps: {
- config: coreServices.config,
+ config: coreServices.rootConfig,
events: eventsExtensionPoint,
},
async init({ config, events }) {
diff --git a/plugins/events-backend-module-gitlab/CHANGELOG.md b/plugins/events-backend-module-gitlab/CHANGELOG.md
index 7541db2b22..d3aac0d322 100644
--- a/plugins/events-backend-module-gitlab/CHANGELOG.md
+++ b/plugins/events-backend-module-gitlab/CHANGELOG.md
@@ -1,5 +1,24 @@
# @backstage/plugin-events-backend-module-gitlab
+## 0.1.10-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/plugin-events-node@0.2.9-next.2
+
+## 0.1.10-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/plugin-events-node@0.2.9-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/config@1.0.8
+
## 0.1.10-next.0
### Patch Changes
diff --git a/plugins/events-backend-module-gitlab/package.json b/plugins/events-backend-module-gitlab/package.json
index 1734ecf5b0..f4fa7ed905 100644
--- a/plugins/events-backend-module-gitlab/package.json
+++ b/plugins/events-backend-module-gitlab/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-events-backend-module-gitlab",
- "version": "0.1.10-next.0",
+ "version": "0.1.10-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -25,6 +25,12 @@
"backstage": {
"role": "backend-plugin-module"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/events-backend-module-gitlab"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
diff --git a/plugins/events-backend-module-gitlab/src/service/eventsModuleGitlabWebhook.test.ts b/plugins/events-backend-module-gitlab/src/service/eventsModuleGitlabWebhook.test.ts
index c38233ecfd..92e803c439 100644
--- a/plugins/events-backend-module-gitlab/src/service/eventsModuleGitlabWebhook.test.ts
+++ b/plugins/events-backend-module-gitlab/src/service/eventsModuleGitlabWebhook.test.ts
@@ -54,7 +54,7 @@ describe('gitlabWebhookEventsModule', () => {
await startTestBackend({
extensionPoints: [[eventsExtensionPoint, extensionPoint]],
- services: [[coreServices.config, config]],
+ services: [[coreServices.rootConfig, config]],
features: [eventsModuleGitlabWebhook()],
});
diff --git a/plugins/events-backend-module-gitlab/src/service/eventsModuleGitlabWebhook.ts b/plugins/events-backend-module-gitlab/src/service/eventsModuleGitlabWebhook.ts
index 0933ef342a..bd596b4baf 100644
--- a/plugins/events-backend-module-gitlab/src/service/eventsModuleGitlabWebhook.ts
+++ b/plugins/events-backend-module-gitlab/src/service/eventsModuleGitlabWebhook.ts
@@ -36,7 +36,7 @@ export const eventsModuleGitlabWebhook = createBackendModule({
register(env) {
env.registerInit({
deps: {
- config: coreServices.config,
+ config: coreServices.rootConfig,
events: eventsExtensionPoint,
},
async init({ config, events }) {
diff --git a/plugins/events-backend-test-utils/CHANGELOG.md b/plugins/events-backend-test-utils/CHANGELOG.md
index 49153b8c64..ba70f001a2 100644
--- a/plugins/events-backend-test-utils/CHANGELOG.md
+++ b/plugins/events-backend-test-utils/CHANGELOG.md
@@ -1,5 +1,20 @@
# @backstage/plugin-events-backend-test-utils
+## 0.1.10-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-events-node@0.2.9-next.2
+
+## 0.1.10-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/plugin-events-node@0.2.9-next.1
+
## 0.1.10-next.0
### Patch Changes
diff --git a/plugins/events-backend-test-utils/package.json b/plugins/events-backend-test-utils/package.json
index 342bbf6483..6597998504 100644
--- a/plugins/events-backend-test-utils/package.json
+++ b/plugins/events-backend-test-utils/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-events-backend-test-utils",
"description": "The plugin-events-backend-test-utils for @backstage/plugin-events-node",
- "version": "0.1.10-next.0",
+ "version": "0.1.10-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -13,6 +13,12 @@
"backstage": {
"role": "node-library"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/events-backend-test-utils"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
diff --git a/plugins/events-backend/CHANGELOG.md b/plugins/events-backend/CHANGELOG.md
index 8dd156dbcc..e022fe0acd 100644
--- a/plugins/events-backend/CHANGELOG.md
+++ b/plugins/events-backend/CHANGELOG.md
@@ -1,5 +1,26 @@
# @backstage/plugin-events-backend
+## 0.2.9-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-events-node@0.2.9-next.2
+
+## 0.2.9-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-events-node@0.2.9-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/config@1.0.8
+
## 0.2.9-next.0
### Patch Changes
diff --git a/plugins/events-backend/package.json b/plugins/events-backend/package.json
index 591c0c2381..c1fe0e64fb 100644
--- a/plugins/events-backend/package.json
+++ b/plugins/events-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-events-backend",
- "version": "0.2.9-next.0",
+ "version": "0.2.9-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -25,6 +25,12 @@
"backstage": {
"role": "backend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/events-backend"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
diff --git a/plugins/events-backend/src/service/EventsPlugin.test.ts b/plugins/events-backend/src/service/EventsPlugin.test.ts
index 73578ae222..bce45c9ef3 100644
--- a/plugins/events-backend/src/service/EventsPlugin.test.ts
+++ b/plugins/events-backend/src/service/EventsPlugin.test.ts
@@ -71,7 +71,7 @@ describe('eventPlugin', () => {
await startTestBackend({
extensionPoints: [],
services: [
- [coreServices.config, config],
+ [coreServices.rootConfig, config],
[coreServices.httpRouter, httpRouter],
[coreServices.logger, getVoidLogger()],
],
diff --git a/plugins/events-backend/src/service/EventsPlugin.ts b/plugins/events-backend/src/service/EventsPlugin.ts
index 07f2b11731..27456b5b2a 100644
--- a/plugins/events-backend/src/service/EventsPlugin.ts
+++ b/plugins/events-backend/src/service/EventsPlugin.ts
@@ -89,7 +89,7 @@ export const eventsPlugin = createBackendPlugin({
env.registerInit({
deps: {
- config: coreServices.config,
+ config: coreServices.rootConfig,
logger: coreServices.logger,
router: coreServices.httpRouter,
},
diff --git a/plugins/events-node/CHANGELOG.md b/plugins/events-node/CHANGELOG.md
index 746e8afd4d..b155a1bb4a 100644
--- a/plugins/events-node/CHANGELOG.md
+++ b/plugins/events-node/CHANGELOG.md
@@ -1,5 +1,20 @@
# @backstage/plugin-events-node
+## 0.2.9-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+
+## 0.2.9-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.1
+
## 0.2.9-next.0
### Patch Changes
diff --git a/plugins/events-node/package.json b/plugins/events-node/package.json
index 906d2681fc..2fa55fabac 100644
--- a/plugins/events-node/package.json
+++ b/plugins/events-node/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-events-node",
"description": "The plugin-events-node module for @backstage/plugin-events-backend",
- "version": "0.2.9-next.0",
+ "version": "0.2.9-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -26,6 +26,12 @@
"backstage": {
"role": "node-library"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/events-node"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
diff --git a/plugins/example-todo-list-backend/CHANGELOG.md b/plugins/example-todo-list-backend/CHANGELOG.md
index 559688f555..8057837b57 100644
--- a/plugins/example-todo-list-backend/CHANGELOG.md
+++ b/plugins/example-todo-list-backend/CHANGELOG.md
@@ -1,5 +1,25 @@
# @internal/plugin-todo-list-backend
+## 1.0.16-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+
+## 1.0.16-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+
## 1.0.16-next.0
### Patch Changes
diff --git a/plugins/example-todo-list-backend/package.json b/plugins/example-todo-list-backend/package.json
index 8b75149cae..4dddbfcbea 100644
--- a/plugins/example-todo-list-backend/package.json
+++ b/plugins/example-todo-list-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@internal/plugin-todo-list-backend",
- "version": "1.0.16-next.0",
+ "version": "1.0.16-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -8,6 +8,12 @@
"backstage": {
"role": "backend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/plugins/example-todo-list-backend"
+ },
"publishConfig": {
"access": "public",
"main": "dist/index.cjs.js",
diff --git a/plugins/example-todo-list-common/package.json b/plugins/example-todo-list-common/package.json
index 902ea03c9a..03d39bb49f 100644
--- a/plugins/example-todo-list-common/package.json
+++ b/plugins/example-todo-list-common/package.json
@@ -13,6 +13,12 @@
"backstage": {
"role": "common-library"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/plugins/example-todo-list-common"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
diff --git a/plugins/example-todo-list/package.json b/plugins/example-todo-list/package.json
index e1cc5178fa..da11b3cf24 100644
--- a/plugins/example-todo-list/package.json
+++ b/plugins/example-todo-list/package.json
@@ -8,6 +8,12 @@
"backstage": {
"role": "frontend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/example-todo-list"
+ },
"publishConfig": {
"access": "public",
"main": "dist/index.esm.js",
diff --git a/plugins/explore-backend/CHANGELOG.md b/plugins/explore-backend/CHANGELOG.md
index dbe0a173fd..68092aca47 100644
--- a/plugins/explore-backend/CHANGELOG.md
+++ b/plugins/explore-backend/CHANGELOG.md
@@ -1,5 +1,27 @@
# @backstage/plugin-explore-backend
+## 0.0.10-next.2
+
+### Patch Changes
+
+- eda2a699f40d: Moved the config example from the "Tools as Code" section to the "Tools as Config" section of the README
+- Updated dependencies
+ - @backstage/plugin-search-backend-module-explore@0.1.4-next.2
+ - @backstage/backend-common@0.19.2-next.2
+
+## 0.0.10-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/plugin-search-backend-module-explore@0.1.4-next.1
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/config@1.0.8
+ - @backstage/types@1.1.0
+ - @backstage/plugin-explore-common@0.0.1
+ - @backstage/plugin-search-common@1.2.5
+
## 0.0.10-next.0
### Patch Changes
@@ -86,7 +108,7 @@
- ];
-
- StaticExploreToolProvider.fromData(tools)
- + StaticExploreToolProvider.fromData(env.config)
+ + StaticExploreToolProvider.fromConfig(env.config)
```
- Updated dependencies
diff --git a/plugins/explore-backend/README.md b/plugins/explore-backend/README.md
index a7a6496fe4..543e8e2fa2 100644
--- a/plugins/explore-backend/README.md
+++ b/plugins/explore-backend/README.md
@@ -39,15 +39,6 @@ export default async function createPlugin(
}
```
-#### Tools as Code
-
-Install dependencies
-
-```bash
-# From your Backstage root directory
-yarn add --cwd packages/backend @backstage/plugin-explore-backend @backstage/plugin-explore-common
-```
-
Config:
```yaml
@@ -63,6 +54,15 @@ explore:
- nerdGraph
```
+#### Tools as Code
+
+Install dependencies
+
+```bash
+# From your Backstage root directory
+yarn add --cwd packages/backend @backstage/plugin-explore-backend @backstage/plugin-explore-common
+```
+
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/explore.ts` with the following content:
diff --git a/plugins/explore-backend/package.json b/plugins/explore-backend/package.json
index fedc9b2600..f7b912f91c 100644
--- a/plugins/explore-backend/package.json
+++ b/plugins/explore-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-explore-backend",
- "version": "0.0.10-next.0",
+ "version": "0.0.10-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -12,6 +12,12 @@
"backstage": {
"role": "backend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/explore-backend"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
diff --git a/plugins/explore/CHANGELOG.md b/plugins/explore/CHANGELOG.md
index 79cc36bcd3..c757d877a2 100644
--- a/plugins/explore/CHANGELOG.md
+++ b/plugins/explore/CHANGELOG.md
@@ -1,5 +1,13 @@
# @backstage/plugin-explore
+## 0.4.7-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+ - @backstage/plugin-explore-react@0.0.30
+
## 0.4.7-next.0
### Patch Changes
diff --git a/plugins/explore/package.json b/plugins/explore/package.json
index 702bbbf2d4..c54e084802 100644
--- a/plugins/explore/package.json
+++ b/plugins/explore/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-explore",
"description": "A Backstage plugin for building an exploration page of your software ecosystem",
- "version": "0.4.7-next.0",
+ "version": "0.4.7-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/firehydrant/CHANGELOG.md b/plugins/firehydrant/CHANGELOG.md
index 761568ddf4..c027052ff1 100644
--- a/plugins/firehydrant/CHANGELOG.md
+++ b/plugins/firehydrant/CHANGELOG.md
@@ -1,5 +1,24 @@
# @backstage/plugin-firehydrant
+## 0.2.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## 0.2.5-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
## 0.2.5-next.0
### Patch Changes
diff --git a/plugins/firehydrant/package.json b/plugins/firehydrant/package.json
index 0bde3e81ed..966bb3eebf 100644
--- a/plugins/firehydrant/package.json
+++ b/plugins/firehydrant/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-firehydrant",
"description": "A Backstage plugin that integrates towards FireHydrant",
- "version": "0.2.5-next.0",
+ "version": "0.2.5-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -13,6 +13,12 @@
"backstage": {
"role": "frontend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/firehydrant"
+ },
"scripts": {
"build": "backstage-cli package build",
"start": "backstage-cli package start",
diff --git a/plugins/fossa/CHANGELOG.md b/plugins/fossa/CHANGELOG.md
index 60e7d48bde..0e7d8e4211 100644
--- a/plugins/fossa/CHANGELOG.md
+++ b/plugins/fossa/CHANGELOG.md
@@ -1,5 +1,12 @@
# @backstage/plugin-fossa
+## 0.2.53-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
## 0.2.53-next.0
### Patch Changes
diff --git a/plugins/fossa/package.json b/plugins/fossa/package.json
index b98741390d..c69d8717c4 100644
--- a/plugins/fossa/package.json
+++ b/plugins/fossa/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-fossa",
"description": "A Backstage plugin that integrates towards FOSSA",
- "version": "0.2.53-next.0",
+ "version": "0.2.53-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/gcalendar/CHANGELOG.md b/plugins/gcalendar/CHANGELOG.md
index b1db7cc767..28e754125f 100644
--- a/plugins/gcalendar/CHANGELOG.md
+++ b/plugins/gcalendar/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-gcalendar
+## 0.3.17-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/theme@0.4.1
+
## 0.3.17-next.0
### Patch Changes
diff --git a/plugins/gcalendar/package.json b/plugins/gcalendar/package.json
index c44f6d30c6..9cbd9e6a36 100644
--- a/plugins/gcalendar/package.json
+++ b/plugins/gcalendar/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-gcalendar",
- "version": "0.3.17-next.0",
+ "version": "0.3.17-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -12,6 +12,12 @@
"backstage": {
"role": "frontend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/gcalendar"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
diff --git a/plugins/git-release-manager/CHANGELOG.md b/plugins/git-release-manager/CHANGELOG.md
index e5faa988f3..50a949c70a 100644
--- a/plugins/git-release-manager/CHANGELOG.md
+++ b/plugins/git-release-manager/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-git-release-manager
+## 0.3.34-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/integration@1.5.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+
## 0.3.34-next.0
### Patch Changes
diff --git a/plugins/git-release-manager/package.json b/plugins/git-release-manager/package.json
index a407737cde..80d8adc301 100644
--- a/plugins/git-release-manager/package.json
+++ b/plugins/git-release-manager/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-git-release-manager",
"description": "A Backstage plugin that helps you manage releases in git",
- "version": "0.3.34-next.0",
+ "version": "0.3.34-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -13,6 +13,12 @@
"backstage": {
"role": "frontend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/git-release-manager"
+ },
"scripts": {
"build": "backstage-cli package build",
"start": "backstage-cli package start",
diff --git a/plugins/github-actions/CHANGELOG.md b/plugins/github-actions/CHANGELOG.md
index e266c4b33d..a984f8fba0 100644
--- a/plugins/github-actions/CHANGELOG.md
+++ b/plugins/github-actions/CHANGELOG.md
@@ -1,5 +1,26 @@
# @backstage/plugin-github-actions
+## 0.6.2-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+ - @backstage/integration-react@1.1.16-next.1
+
+## 0.6.2-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/integration-react@1.1.16-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
## 0.6.2-next.0
### Patch Changes
diff --git a/plugins/github-actions/package.json b/plugins/github-actions/package.json
index 717d8a3a89..5f7e5fbeef 100644
--- a/plugins/github-actions/package.json
+++ b/plugins/github-actions/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-github-actions",
"description": "A Backstage plugin that integrates towards GitHub Actions",
- "version": "0.6.2-next.0",
+ "version": "0.6.2-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/github-deployments/CHANGELOG.md b/plugins/github-deployments/CHANGELOG.md
index 125fda22d2..b9e1ae1348 100644
--- a/plugins/github-deployments/CHANGELOG.md
+++ b/plugins/github-deployments/CHANGELOG.md
@@ -1,5 +1,28 @@
# @backstage/plugin-github-deployments
+## 0.1.52-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+ - @backstage/integration-react@1.1.16-next.1
+
+## 0.1.52-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/integration-react@1.1.16-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
## 0.1.52-next.0
### Patch Changes
diff --git a/plugins/github-deployments/package.json b/plugins/github-deployments/package.json
index 7147f0e53c..341ce50000 100644
--- a/plugins/github-deployments/package.json
+++ b/plugins/github-deployments/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-github-deployments",
"description": "A Backstage plugin that integrates towards GitHub Deployments",
- "version": "0.1.52-next.0",
+ "version": "0.1.52-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -13,6 +13,12 @@
"backstage": {
"role": "frontend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/github-deployments"
+ },
"scripts": {
"build": "backstage-cli package build",
"start": "backstage-cli package start",
diff --git a/plugins/github-issues/CHANGELOG.md b/plugins/github-issues/CHANGELOG.md
index 1cb2542f6d..6bb63aa17e 100644
--- a/plugins/github-issues/CHANGELOG.md
+++ b/plugins/github-issues/CHANGELOG.md
@@ -1,5 +1,26 @@
# @backstage/plugin-github-issues
+## 0.2.10-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## 0.2.10-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
## 0.2.10-next.0
### Patch Changes
diff --git a/plugins/github-issues/package.json b/plugins/github-issues/package.json
index c975f3687f..9e8bf5beaf 100644
--- a/plugins/github-issues/package.json
+++ b/plugins/github-issues/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-github-issues",
- "version": "0.2.10-next.0",
+ "version": "0.2.10-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -12,6 +12,12 @@
"backstage": {
"role": "frontend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/github-issues"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
diff --git a/plugins/github-pull-requests-board/CHANGELOG.md b/plugins/github-pull-requests-board/CHANGELOG.md
index 4f27413a0c..b5ba25ef4a 100644
--- a/plugins/github-pull-requests-board/CHANGELOG.md
+++ b/plugins/github-pull-requests-board/CHANGELOG.md
@@ -1,5 +1,12 @@
# @backstage/plugin-github-pull-requests-board
+## 0.1.15-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
## 0.1.15-next.0
### Patch Changes
diff --git a/plugins/github-pull-requests-board/package.json b/plugins/github-pull-requests-board/package.json
index 614abfb617..e0c17811a5 100644
--- a/plugins/github-pull-requests-board/package.json
+++ b/plugins/github-pull-requests-board/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-github-pull-requests-board",
"description": "A Backstage plugin that allows you to see all open Pull Requests for all the repositories owned by your team",
- "version": "0.1.15-next.0",
+ "version": "0.1.15-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/gocd/CHANGELOG.md b/plugins/gocd/CHANGELOG.md
index 4f1ba08f4b..92a790fc33 100644
--- a/plugins/gocd/CHANGELOG.md
+++ b/plugins/gocd/CHANGELOG.md
@@ -1,5 +1,12 @@
# @backstage/plugin-gocd
+## 0.1.27-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
## 0.1.27-next.0
### Patch Changes
diff --git a/plugins/gocd/package.json b/plugins/gocd/package.json
index bd34adf50a..672f19ba9f 100644
--- a/plugins/gocd/package.json
+++ b/plugins/gocd/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-gocd",
"description": "A Backstage plugin that integrates towards GoCD",
- "version": "0.1.27-next.0",
+ "version": "0.1.27-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/graphql-backend/CHANGELOG.md b/plugins/graphql-backend/CHANGELOG.md
index c3aff03c42..63b5f4639a 100644
--- a/plugins/graphql-backend/CHANGELOG.md
+++ b/plugins/graphql-backend/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-graphql-backend
+## 0.1.38-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.2
+
+## 0.1.38-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/config@1.0.8
+ - @backstage/plugin-catalog-graphql@0.3.22
+
## 0.1.38-next.0
### Patch Changes
diff --git a/plugins/graphql-backend/package.json b/plugins/graphql-backend/package.json
index b672929c87..675a6cc293 100644
--- a/plugins/graphql-backend/package.json
+++ b/plugins/graphql-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-graphql-backend",
"description": "An experimental Backstage backend plugin for GraphQL",
- "version": "0.1.38-next.0",
+ "version": "0.1.38-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/graphql-voyager/CHANGELOG.md b/plugins/graphql-voyager/CHANGELOG.md
index 18b4906203..ecb16e0aa0 100644
--- a/plugins/graphql-voyager/CHANGELOG.md
+++ b/plugins/graphql-voyager/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-graphql-voyager
+## 0.1.6-next.2
+
+### Patch Changes
+
+- bb1e1c2b26cc: Fix typo in install instructions.
+
+## 0.1.6-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+
## 0.1.6-next.0
### Patch Changes
diff --git a/plugins/graphql-voyager/README.md b/plugins/graphql-voyager/README.md
index 2c903cd9e5..66ea63191b 100644
--- a/plugins/graphql-voyager/README.md
+++ b/plugins/graphql-voyager/README.md
@@ -27,7 +27,7 @@ In order to be able to navigate to the graphQL voyager page, a new route needs t
const routes = (
- }/>
+ }/>
```
### Configuration
diff --git a/plugins/graphql-voyager/package.json b/plugins/graphql-voyager/package.json
index 5bb3c253c0..bddebf7a3f 100644
--- a/plugins/graphql-voyager/package.json
+++ b/plugins/graphql-voyager/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-graphql-voyager",
"description": "Backstage plugin for GraphQL Voyager",
- "version": "0.1.6-next.0",
+ "version": "0.1.6-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -13,6 +13,12 @@
"backstage": {
"role": "frontend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/graphql-voyager"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
diff --git a/plugins/home/CHANGELOG.md b/plugins/home/CHANGELOG.md
index 9becea45ad..4746842db6 100644
--- a/plugins/home/CHANGELOG.md
+++ b/plugins/home/CHANGELOG.md
@@ -1,5 +1,13 @@
# @backstage/plugin-home
+## 0.5.5-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+ - @backstage/plugin-home-react@0.1.2-next.0
+
## 0.5.5-next.0
### Patch Changes
diff --git a/plugins/home/package.json b/plugins/home/package.json
index f9e97b2760..e717bd2c00 100644
--- a/plugins/home/package.json
+++ b/plugins/home/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-home",
"description": "A Backstage plugin that helps you build a home page",
- "version": "0.5.5-next.0",
+ "version": "0.5.5-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/ilert/CHANGELOG.md b/plugins/ilert/CHANGELOG.md
index e4c60e7ab2..7369bddf34 100644
--- a/plugins/ilert/CHANGELOG.md
+++ b/plugins/ilert/CHANGELOG.md
@@ -1,5 +1,25 @@
# @backstage/plugin-ilert
+## 0.2.10-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## 0.2.10-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
## 0.2.10-next.0
### Patch Changes
diff --git a/plugins/ilert/package.json b/plugins/ilert/package.json
index 39674cbb19..da707874cb 100644
--- a/plugins/ilert/package.json
+++ b/plugins/ilert/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-ilert",
"description": "A Backstage plugin that integrates towards iLert",
- "version": "0.2.10-next.0",
+ "version": "0.2.10-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -13,6 +13,12 @@
"backstage": {
"role": "frontend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/ilert"
+ },
"scripts": {
"build": "backstage-cli package build",
"start": "backstage-cli package start",
diff --git a/plugins/jenkins-backend/CHANGELOG.md b/plugins/jenkins-backend/CHANGELOG.md
index 305399b6ed..5dd8cf70cb 100644
--- a/plugins/jenkins-backend/CHANGELOG.md
+++ b/plugins/jenkins-backend/CHANGELOG.md
@@ -1,5 +1,31 @@
# @backstage/plugin-jenkins-backend
+## 0.2.3-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-permission-node@0.7.11-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+
+## 0.2.3-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- 4b82382ed8c2: Fixed invalid configuration schema. The configuration schema may be more strict as a result.
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-jenkins-common@0.1.18-next.0
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/plugin-permission-node@0.7.11-next.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/plugin-permission-common@0.7.7
+
## 0.2.3-next.0
### Patch Changes
diff --git a/plugins/jenkins-backend/config.d.ts b/plugins/jenkins-backend/config.d.ts
index 5b725dd801..1773ea7e75 100644
--- a/plugins/jenkins-backend/config.d.ts
+++ b/plugins/jenkins-backend/config.d.ts
@@ -42,13 +42,13 @@ export interface Config {
username: string;
/** @visibility secret */
apiKey: string;
- extraRequestHeaders?: Partial<{
+ extraRequestHeaders?: {
/** @visibility secret */
- Authorization: string;
+ Authorization?: string;
/** @visibility secret */
- authorization: string;
- [key: string]: string;
- }>;
+ authorization?: string;
+ [key: string]: string | undefined;
+ };
}[];
};
}
diff --git a/plugins/jenkins-backend/package.json b/plugins/jenkins-backend/package.json
index 7998932341..f22f47b38c 100644
--- a/plugins/jenkins-backend/package.json
+++ b/plugins/jenkins-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-jenkins-backend",
"description": "A Backstage backend plugin that integrates towards Jenkins",
- "version": "0.2.3-next.0",
+ "version": "0.2.3-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -13,6 +13,12 @@
"backstage": {
"role": "backend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/jenkins-backend"
+ },
"configSchema": "config.d.ts",
"scripts": {
"start": "backstage-cli package start",
diff --git a/plugins/jenkins-common/CHANGELOG.md b/plugins/jenkins-common/CHANGELOG.md
index 855c175aac..b7c7da027b 100644
--- a/plugins/jenkins-common/CHANGELOG.md
+++ b/plugins/jenkins-common/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-jenkins-common
+## 0.1.18-next.0
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/plugin-catalog-common@1.0.15
+ - @backstage/plugin-permission-common@0.7.7
+
## 0.1.17
### Patch Changes
diff --git a/plugins/jenkins-common/package.json b/plugins/jenkins-common/package.json
index 4a3eff8e81..6d99a808bf 100644
--- a/plugins/jenkins-common/package.json
+++ b/plugins/jenkins-common/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-jenkins-common",
- "version": "0.1.17",
+ "version": "0.1.18-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -13,6 +13,12 @@
"backstage": {
"role": "common-library"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/jenkins-common"
+ },
"scripts": {
"build": "backstage-cli package build",
"lint": "backstage-cli package lint",
diff --git a/plugins/jenkins/CHANGELOG.md b/plugins/jenkins/CHANGELOG.md
index 174f377d69..c108eaeb0b 100644
--- a/plugins/jenkins/CHANGELOG.md
+++ b/plugins/jenkins/CHANGELOG.md
@@ -1,5 +1,25 @@
# @backstage/plugin-jenkins
+## 0.8.3-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## 0.8.3-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-jenkins-common@0.1.18-next.0
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
## 0.8.3-next.0
### Patch Changes
diff --git a/plugins/jenkins/package.json b/plugins/jenkins/package.json
index 75e8c4aa01..8f0ec1aea2 100644
--- a/plugins/jenkins/package.json
+++ b/plugins/jenkins/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-jenkins",
"description": "A Backstage plugin that integrates towards Jenkins",
- "version": "0.8.3-next.0",
+ "version": "0.8.3-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/kafka-backend/CHANGELOG.md b/plugins/kafka-backend/CHANGELOG.md
index 175a3315e0..5970704e19 100644
--- a/plugins/kafka-backend/CHANGELOG.md
+++ b/plugins/kafka-backend/CHANGELOG.md
@@ -1,5 +1,25 @@
# @backstage/plugin-kafka-backend
+## 0.2.41-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+
+## 0.2.41-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+
## 0.2.41-next.0
### Patch Changes
diff --git a/plugins/kafka-backend/package.json b/plugins/kafka-backend/package.json
index e2c5eff6f1..0eab682023 100644
--- a/plugins/kafka-backend/package.json
+++ b/plugins/kafka-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-kafka-backend",
"description": "A Backstage backend plugin that integrates towards Kafka",
- "version": "0.2.41-next.0",
+ "version": "0.2.41-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/kafka-backend/src/plugin.ts b/plugins/kafka-backend/src/plugin.ts
index 2442eddbaa..0548a5f128 100644
--- a/plugins/kafka-backend/src/plugin.ts
+++ b/plugins/kafka-backend/src/plugin.ts
@@ -31,7 +31,7 @@ export const kafkaPlugin = createBackendPlugin({
register(env) {
env.registerInit({
deps: {
- config: coreServices.config,
+ config: coreServices.rootConfig,
logger: coreServices.logger,
httpRouter: coreServices.httpRouter,
},
diff --git a/plugins/kafka/CHANGELOG.md b/plugins/kafka/CHANGELOG.md
index 0f267c654a..d04153c02b 100644
--- a/plugins/kafka/CHANGELOG.md
+++ b/plugins/kafka/CHANGELOG.md
@@ -1,5 +1,25 @@
# @backstage/plugin-kafka
+## 0.3.21-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## 0.3.21-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
## 0.3.21-next.0
### Patch Changes
diff --git a/plugins/kafka/package.json b/plugins/kafka/package.json
index 68fc955734..4c04878450 100644
--- a/plugins/kafka/package.json
+++ b/plugins/kafka/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-kafka",
"description": "A Backstage plugin that integrates towards Kafka",
- "version": "0.3.21-next.0",
+ "version": "0.3.21-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -13,6 +13,12 @@
"backstage": {
"role": "frontend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/kafka"
+ },
"configSchema": "config.d.ts",
"scripts": {
"build": "backstage-cli package build",
diff --git a/plugins/kubernetes-backend/CHANGELOG.md b/plugins/kubernetes-backend/CHANGELOG.md
index dc5642ca88..1c10e43c92 100644
--- a/plugins/kubernetes-backend/CHANGELOG.md
+++ b/plugins/kubernetes-backend/CHANGELOG.md
@@ -1,5 +1,36 @@
# @backstage/plugin-kubernetes-backend
+## 0.11.3-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+ - @backstage/plugin-permission-node@0.7.11-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+
+## 0.11.3-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- bbf4e9c894b5: Fixed a bug where the proxy was not rewriting WebSocket request paths properly.
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-catalog-node@1.4.1-next.1
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/plugin-permission-node@0.7.11-next.1
+ - @backstage/integration-aws-node@0.1.5
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/plugin-kubernetes-common@0.6.5
+ - @backstage/plugin-permission-common@0.7.7
+
## 0.11.3-next.0
### Patch Changes
diff --git a/plugins/kubernetes-backend/package.json b/plugins/kubernetes-backend/package.json
index 7ba6e332fd..ab24437243 100644
--- a/plugins/kubernetes-backend/package.json
+++ b/plugins/kubernetes-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-kubernetes-backend",
"description": "A Backstage backend plugin that integrates towards Kubernetes",
- "version": "0.11.3-next.0",
+ "version": "0.11.3-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -90,9 +90,11 @@
"@backstage/cli": "workspace:^",
"@types/aws4": "^1.5.1",
"@types/http-proxy-middleware": "^0.19.3",
+ "cross-fetch": "^3.1.5",
"mock-fs": "^5.2.0",
"msw": "^1.0.0",
- "supertest": "^6.1.3"
+ "supertest": "^6.1.3",
+ "ws": "^8.13.0"
},
"files": [
"dist",
diff --git a/plugins/kubernetes-backend/src/plugin.ts b/plugins/kubernetes-backend/src/plugin.ts
index 2c98519a5e..e2523b4ecd 100644
--- a/plugins/kubernetes-backend/src/plugin.ts
+++ b/plugins/kubernetes-backend/src/plugin.ts
@@ -34,7 +34,7 @@ export const kubernetesPlugin = createBackendPlugin({
deps: {
http: coreServices.httpRouter,
logger: coreServices.logger,
- config: coreServices.config,
+ config: coreServices.rootConfig,
catalogApi: catalogServiceRef,
permissions: coreServices.permissions,
},
diff --git a/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts b/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts
index 199ef404ad..15bc8ff68e 100644
--- a/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts
+++ b/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts
@@ -13,40 +13,58 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
import 'buffer';
+
import { errorHandler, getVoidLogger } from '@backstage/backend-common';
-import { NotFoundError } from '@backstage/errors';
-import { getMockReq, getMockRes } from '@jest-mock/express';
-import type { Request } from 'express';
-import express from 'express';
-import request from 'supertest';
-import { rest } from 'msw';
-import { setupServer } from 'msw/node';
import { setupRequestMockHandlers } from '@backstage/backend-test-utils';
-import { ClusterDetails, KubernetesClustersSupplier } from '../types/types';
-import {
- APPLICATION_JSON,
- HEADER_KUBERNETES_CLUSTER,
- HEADER_KUBERNETES_AUTH,
- KubernetesProxy,
-} from './KubernetesProxy';
+import { NotFoundError } from '@backstage/errors';
import {
AuthorizeResult,
PermissionEvaluator,
} from '@backstage/plugin-permission-common';
+import { getMockReq, getMockRes } from '@jest-mock/express';
+import express from 'express';
+import Router from 'express-promise-router';
+import { Server } from 'http';
+import { rest } from 'msw';
+import { setupServer } from 'msw/node';
+import request from 'supertest';
+import { AddressInfo, WebSocket, WebSocketServer } from 'ws';
+
+import { LocalKubectlProxyClusterLocator } from '../cluster-locator/LocalKubectlProxyLocator';
import {
KubernetesAuthTranslator,
NoopKubernetesAuthTranslator,
} from '../kubernetes-auth-translator';
-import Router from 'express-promise-router';
-import { LocalKubectlProxyClusterLocator } from '../cluster-locator/LocalKubectlProxyLocator';
+import { ClusterDetails, KubernetesClustersSupplier } from '../types/types';
+import {
+ APPLICATION_JSON,
+ HEADER_KUBERNETES_AUTH,
+ HEADER_KUBERNETES_CLUSTER,
+ KubernetesProxy,
+} from './KubernetesProxy';
+import fetch from 'cross-fetch';
+
+import type { Request } from 'express';
describe('KubernetesProxy', () => {
let proxy: KubernetesProxy;
const worker = setupServer();
const logger = getVoidLogger();
+ const clusterSupplier: jest.Mocked = {
+ getClusters: jest.fn(),
+ };
+
+ const permissionApi: jest.Mocked = {
+ authorize: jest.fn(),
+ authorizeConditional: jest.fn(),
+ };
+
+ const authTranslator: jest.Mocked = {
+ decorateClusterDetailsWithAuth: jest.fn(),
+ };
+
setupRequestMockHandlers(worker);
const buildMockRequest = (clusterName: any, path: string): Request => {
@@ -76,29 +94,45 @@ describe('KubernetesProxy', () => {
return req;
};
- const clusterSupplier: jest.Mocked = {
- getClusters: jest.fn(),
- };
+ const setupProxyPromise = ({
+ proxyPath,
+ requestPath,
+ headers,
+ }: {
+ proxyPath: string;
+ requestPath: string;
+ headers?: Record;
+ }) => {
+ const app = express().use(
+ Router()
+ .use(proxyPath, proxy.createRequestHandler({ permissionApi }))
+ .use(errorHandler()),
+ );
- const permissionApi: jest.Mocked = {
- authorize: jest.fn(),
- authorizeConditional: jest.fn(),
- };
+ const requestPromise = request(app).get(proxyPath + requestPath);
- const authTranslator: jest.Mocked = {
- decorateClusterDetailsWithAuth: jest.fn(),
+ if (headers) {
+ for (const [headerName, headerValue] of Object.entries(headers)) {
+ requestPromise.set(headerName, headerValue);
+ }
+ }
+
+ // Let this request through so it reaches the express router above
+ worker.use(rest.all(requestPromise.url, (req: any) => req.passthrough()));
+
+ return requestPromise;
};
beforeEach(() => {
jest.resetAllMocks();
proxy = new KubernetesProxy({ logger, clusterSupplier, authTranslator });
+ permissionApi.authorize.mockResolvedValue([
+ { result: AuthorizeResult.ALLOW },
+ ]);
});
it('should return a ERROR_NOT_FOUND if no clusters are found', async () => {
clusterSupplier.getClusters.mockResolvedValue([]);
- permissionApi.authorize.mockReturnValue(
- Promise.resolve([{ result: AuthorizeResult.ALLOW }]),
- );
const req = buildMockRequest('test', 'api');
const { res, next } = getMockRes();
@@ -124,10 +158,6 @@ describe('KubernetesProxy', () => {
} as ClusterDetails,
]);
- permissionApi.authorize.mockReturnValue(
- Promise.resolve([{ result: AuthorizeResult.ALLOW }]),
- );
-
const req = buildMockRequest(undefined, 'api');
const { res, next } = getMockRes();
@@ -146,10 +176,6 @@ describe('KubernetesProxy', () => {
} as ClusterDetails,
]);
- permissionApi.authorize.mockReturnValue(
- Promise.resolve([{ result: AuthorizeResult.ALLOW }]),
- );
-
const req = buildMockRequest('test', 'api');
const { res, next } = getMockRes();
@@ -179,10 +205,6 @@ describe('KubernetesProxy', () => {
},
] as ClusterDetails[]);
- permissionApi.authorize.mockReturnValue(
- Promise.resolve([{ result: AuthorizeResult.ALLOW }]),
- );
-
authTranslator.decorateClusterDetailsWithAuth.mockResolvedValue({
name: 'cluster1',
url: 'https://localhost:9999',
@@ -190,19 +212,18 @@ describe('KubernetesProxy', () => {
authProvider: 'serviceAccount',
} as ClusterDetails);
- const router = Router();
- router.use('/mountpath', proxy.createRequestHandler({ permissionApi }));
- const app = express().use(router);
- const requestPromise = request(app)
- .get('/mountpath/api')
- .set(HEADER_KUBERNETES_CLUSTER, 'cluster1');
worker.use(
rest.get('https://localhost:9999/api', (_: any, res: any, ctx: any) =>
res(ctx.status(299), ctx.json(apiResponse)),
),
- rest.all(requestPromise.url, (req: any) => req.passthrough()),
);
+ const requestPromise = setupProxyPromise({
+ proxyPath: '/mountpath',
+ requestPath: '/api',
+ headers: { [HEADER_KUBERNETES_CLUSTER]: 'cluster1' },
+ });
+
const response = await requestPromise;
expect(response.status).toEqual(299);
@@ -230,10 +251,6 @@ describe('KubernetesProxy', () => {
},
] as ClusterDetails[]);
- permissionApi.authorize.mockReturnValue(
- Promise.resolve([{ result: AuthorizeResult.ALLOW }]),
- );
-
authTranslator.decorateClusterDetailsWithAuth.mockResolvedValue({
name: 'cluster1',
url: 'https://localhost:9999',
@@ -241,17 +258,17 @@ describe('KubernetesProxy', () => {
authProvider: 'serviceAccount',
} as ClusterDetails);
- const router = Router();
- router.use('/mountpath', proxy.createRequestHandler({ permissionApi }));
- const app = express().use(router);
- const requestPromise = request(app).get('/mountpath/api');
worker.use(
rest.get('https://localhost:9999/api', (_: any, res: any, ctx: any) =>
res(ctx.status(299), ctx.json(apiResponse)),
),
- rest.all(requestPromise.url, (req: any) => req.passthrough()),
);
+ const requestPromise = setupProxyPromise({
+ proxyPath: '/mountpath',
+ requestPath: '/api',
+ });
+
const response = await requestPromise;
expect(response.status).toEqual(299);
@@ -270,9 +287,7 @@ describe('KubernetesProxy', () => {
},
),
);
- permissionApi.authorize.mockResolvedValue([
- { result: AuthorizeResult.ALLOW },
- ]);
+
clusterSupplier.getClusters.mockResolvedValue([
{
name: 'cluster1',
@@ -283,14 +298,14 @@ describe('KubernetesProxy', () => {
authTranslator.decorateClusterDetailsWithAuth.mockImplementation(
async x => x,
);
- const app = express().use(
- Router().use('/mountpath', proxy.createRequestHandler({ permissionApi })),
- );
- const requestPromise = request(app)
- .get('/mountpath/api/v1/namespaces')
- .set(HEADER_KUBERNETES_CLUSTER, 'cluster1');
- worker.use(rest.all(requestPromise.url, (req: any) => req.passthrough()));
+ const requestPromise = setupProxyPromise({
+ proxyPath: '/mountpath',
+ requestPath: '/api/v1/namespaces',
+
+ headers: { [HEADER_KUBERNETES_CLUSTER]: 'cluster1' },
+ });
+
const response = await requestPromise;
expect(response.status).toEqual(200);
@@ -324,10 +339,6 @@ describe('KubernetesProxy', () => {
),
);
- permissionApi.authorize.mockReturnValue(
- Promise.resolve([{ result: AuthorizeResult.ALLOW }]),
- );
-
clusterSupplier.getClusters.mockResolvedValue([
{
name: 'cluster1',
@@ -344,15 +355,12 @@ describe('KubernetesProxy', () => {
authProvider: 'serviceAccount',
} as ClusterDetails);
- const router = Router();
- router.use('/mountpath', proxy.createRequestHandler({ permissionApi }));
- const app = express().use(router);
+ const requestPromise = setupProxyPromise({
+ proxyPath: '/mountpath',
+ requestPath: '/api/v1/namespaces',
- const requestPromise = request(app)
- .get('/mountpath/api/v1/namespaces')
- .set(HEADER_KUBERNETES_CLUSTER, 'cluster1');
-
- worker.use(rest.all(requestPromise.url, (req: any) => req.passthrough()));
+ headers: { [HEADER_KUBERNETES_CLUSTER]: 'cluster1' },
+ });
const response = await requestPromise;
@@ -381,10 +389,6 @@ describe('KubernetesProxy', () => {
}),
);
- permissionApi.authorize.mockReturnValue(
- Promise.resolve([{ result: AuthorizeResult.ALLOW }]),
- );
-
clusterSupplier.getClusters.mockResolvedValue([
{
name: 'cluster1',
@@ -400,15 +404,12 @@ describe('KubernetesProxy', () => {
authProvider: 'googleServiceAccount',
} as ClusterDetails);
- const router = Router();
- router.use('/mountpath', proxy.createRequestHandler({ permissionApi }));
- const app = express().use(router);
+ const requestPromise = setupProxyPromise({
+ proxyPath: '/mountpath',
+ requestPath: '/api/v1/namespaces',
- const requestPromise = request(app)
- .get('/mountpath/api/v1/namespaces')
- .set(HEADER_KUBERNETES_CLUSTER, 'cluster1');
-
- worker.use(rest.all(requestPromise.url, (req: any) => req.passthrough()));
+ headers: { [HEADER_KUBERNETES_CLUSTER]: 'cluster1' },
+ });
const response = await requestPromise;
@@ -442,10 +443,6 @@ describe('KubernetesProxy', () => {
}),
);
- permissionApi.authorize.mockReturnValue(
- Promise.resolve([{ result: AuthorizeResult.ALLOW }]),
- );
-
clusterSupplier.getClusters.mockResolvedValue([
{
name: 'cluster1',
@@ -461,16 +458,15 @@ describe('KubernetesProxy', () => {
authProvider: 'googleServiceAccount',
} as ClusterDetails);
- const router = Router();
- router.use('/mountpath', proxy.createRequestHandler({ permissionApi }));
- const app = express().use(router);
+ const requestPromise = setupProxyPromise({
+ proxyPath: '/mountpath',
+ requestPath: '/api/v1/namespaces',
- const requestPromise = request(app)
- .get('/mountpath/api/v1/namespaces')
- .set(HEADER_KUBERNETES_CLUSTER, 'cluster1')
- .set(HEADER_KUBERNETES_AUTH, 'tokenB');
-
- worker.use(rest.all(requestPromise.url, (req: any) => req.passthrough()));
+ headers: {
+ [HEADER_KUBERNETES_CLUSTER]: 'cluster1',
+ [HEADER_KUBERNETES_AUTH]: 'tokenB',
+ },
+ });
const response = await requestPromise;
@@ -504,10 +500,6 @@ describe('KubernetesProxy', () => {
}),
);
- permissionApi.authorize.mockReturnValue(
- Promise.resolve([{ result: AuthorizeResult.ALLOW }]),
- );
-
clusterSupplier.getClusters.mockResolvedValue([
{
name: 'cluster1',
@@ -516,16 +508,15 @@ describe('KubernetesProxy', () => {
},
] as ClusterDetails[]);
- const router = Router();
- router.use('/mountpath', proxy.createRequestHandler({ permissionApi }));
- const app = express().use(router);
+ const requestPromise = setupProxyPromise({
+ proxyPath: '/mountpath',
+ requestPath: '/api/v1/namespaces',
- const requestPromise = request(app)
- .get('/mountpath/api/v1/namespaces')
- .set(HEADER_KUBERNETES_CLUSTER, 'cluster1')
- .set(HEADER_KUBERNETES_AUTH, 'tokenB');
-
- worker.use(rest.all(requestPromise.url, (req: any) => req.passthrough()));
+ headers: {
+ [HEADER_KUBERNETES_CLUSTER]: 'cluster1',
+ [HEADER_KUBERNETES_AUTH]: 'tokenB',
+ },
+ });
const response = await requestPromise;
@@ -562,19 +553,14 @@ describe('KubernetesProxy', () => {
}),
);
- permissionApi.authorize.mockReturnValue(
- Promise.resolve([{ result: AuthorizeResult.ALLOW }]),
- );
+ const requestPromise = setupProxyPromise({
+ proxyPath: '/mountpath',
+ requestPath: '/api/v1/namespaces',
- const router = Router();
- router.use('/mountpath', proxy.createRequestHandler({ permissionApi }));
- const app = express().use(router);
-
- const requestPromise = request(app)
- .get('/mountpath/api/v1/namespaces')
- .set(HEADER_KUBERNETES_CLUSTER, 'local');
-
- worker.use(rest.all(requestPromise.url, (req: any) => req.passthrough()));
+ headers: {
+ [HEADER_KUBERNETES_CLUSTER]: 'local',
+ },
+ });
const response = await requestPromise;
@@ -608,10 +594,6 @@ describe('KubernetesProxy', () => {
}),
);
- permissionApi.authorize.mockResolvedValue([
- { result: AuthorizeResult.ALLOW },
- ]);
-
clusterSupplier.getClusters.mockResolvedValue([
{
name: 'cluster1',
@@ -625,16 +607,14 @@ describe('KubernetesProxy', () => {
Error('some internal error'),
);
- const router = Router();
- router.use('/mountpath', proxy.createRequestHandler({ permissionApi }));
- router.use(errorHandler());
- const app = express().use(router);
+ const requestPromise = setupProxyPromise({
+ proxyPath: '/mountpath',
+ requestPath: '/api/v1/namespaces',
- const requestPromise = request(app)
- .get('/mountpath/api/v1/namespaces')
- .set(HEADER_KUBERNETES_CLUSTER, 'cluster1');
-
- worker.use(rest.all(requestPromise.url, (req: any) => req.passthrough()));
+ headers: {
+ [HEADER_KUBERNETES_CLUSTER]: 'cluster1',
+ },
+ });
const response = await requestPromise;
@@ -657,9 +637,7 @@ describe('KubernetesProxy', () => {
},
),
);
- permissionApi.authorize.mockResolvedValue([
- { result: AuthorizeResult.ALLOW },
- ]);
+
clusterSupplier.getClusters.mockResolvedValue([
{
name: 'cluster1',
@@ -667,19 +645,128 @@ describe('KubernetesProxy', () => {
authProvider: '',
},
]);
+
authTranslator.decorateClusterDetailsWithAuth.mockImplementation(
async x => x,
);
- const app = express().use(
- Router().use('/mountpath', proxy.createRequestHandler({ permissionApi })),
- );
- const requestPromise = request(app)
- .get('/mountpath/api/v1/namespaces')
- .set(HEADER_KUBERNETES_CLUSTER, 'cluster1');
- worker.use(rest.all(requestPromise.url, (req: any) => req.passthrough()));
+ const requestPromise = setupProxyPromise({
+ proxyPath: '/mountpath',
+ requestPath: '/api/v1/namespaces',
+
+ headers: {
+ [HEADER_KUBERNETES_CLUSTER]: 'cluster1',
+ },
+ });
+
const response = await requestPromise;
expect(response.status).toEqual(200);
});
+
+ describe('WebSocket', () => {
+ const proxyPath = '/proxy';
+ const wsPath = '/ws';
+
+ let wsPort: number;
+ let proxyPort: number;
+ let wsEchoServer: WebSocketServer;
+ let expressServer: Server;
+
+ const eventPromiseFactory = (
+ ws: WebSocket,
+ event: 'connection' | 'open' | 'close' | 'error' | 'message',
+ ) => new Promise(resolve => ws.once(event, x => resolve(x?.toString())));
+
+ beforeAll(async () => {
+ await new Promise(resolve => {
+ expressServer = express()
+ .use(
+ Router()
+ .use(proxyPath, proxy.createRequestHandler({ permissionApi }))
+ .use(errorHandler()),
+ )
+ .listen(0, '0.0.0.0', () => {
+ proxyPort = (expressServer.address() as AddressInfo).port;
+ resolve(null);
+ });
+ });
+
+ wsEchoServer = new WebSocketServer({
+ port: 0,
+ path: wsPath,
+ });
+ wsPort = (wsEchoServer.address() as AddressInfo).port;
+
+ wsEchoServer.on('connection', (ws: WebSocket) => {
+ ws.send('connected');
+
+ ws.on('message', (message: string) => {
+ ws.send(message);
+ });
+ });
+
+ wsEchoServer.on('error', console.error);
+ });
+
+ afterAll(() => {
+ wsEchoServer.close();
+ expressServer.close();
+ });
+
+ it('should proxy websocket connections', async () => {
+ clusterSupplier.getClusters.mockResolvedValue([
+ {
+ name: 'local',
+ url: `http://localhost:${wsPort}`,
+ serviceAccountToken: '',
+ authProvider: 'serviceAccount',
+ },
+ ] as ClusterDetails[]);
+
+ authTranslator.decorateClusterDetailsWithAuth.mockResolvedValue({
+ name: 'local',
+ url: `http://localhost:${wsPort}`,
+ serviceAccountToken: '',
+ authProvider: 'serviceAccount',
+ } as ClusterDetails);
+
+ const wsProxyAddress = `ws://127.0.0.1:${proxyPort}${proxyPath}${wsPath}`;
+ const wsAddress = `ws://localhost:${wsPort}${wsPath}`;
+ console.log('Ports: ', wsProxyAddress, wsAddress);
+
+ // Let this request through so it reaches the express router above
+ worker.use(
+ rest.all(wsAddress.replace('ws', 'http'), (req: any) =>
+ req.passthrough(),
+ ),
+ rest.all(wsProxyAddress.replace('ws', 'http'), (req: any) =>
+ req.passthrough(),
+ ),
+ );
+
+ // Prepopulate the proxy so the WebSocket upgrade can happen, result doesn't actually matter
+ const result = await fetch(wsProxyAddress.replace('ws', 'http'));
+ expect(result.ok).toBeFalsy();
+
+ const webSocket = new WebSocket(wsProxyAddress);
+
+ const connectMessagePromise = eventPromiseFactory(webSocket, 'message');
+
+ await eventPromiseFactory(webSocket, 'open');
+
+ const connectMessage = await connectMessagePromise;
+ expect(connectMessage).toBe('connected');
+
+ const echoMessagePromise = eventPromiseFactory(webSocket, 'message');
+ webSocket.send('echo');
+
+ const echoMessage = await echoMessagePromise;
+ expect(echoMessage).toBe('echo');
+
+ const closePromise = eventPromiseFactory(webSocket, 'close');
+ webSocket.close();
+ await closePromise;
+ });
+ });
});
diff --git a/plugins/kubernetes-backend/src/service/KubernetesProxy.ts b/plugins/kubernetes-backend/src/service/KubernetesProxy.ts
index ec9bbb346e..742d078071 100644
--- a/plugins/kubernetes-backend/src/service/KubernetesProxy.ts
+++ b/plugins/kubernetes-backend/src/service/KubernetesProxy.ts
@@ -145,7 +145,7 @@ export class KubernetesProxy {
const cluster = await this.getClusterForRequest(req);
const url = new URL(cluster.url);
return path.replace(
- new RegExp(`^${req.baseUrl}`),
+ new RegExp(`^${originalReq.baseUrl}`),
url.pathname || '',
);
},
diff --git a/plugins/kubernetes/CHANGELOG.md b/plugins/kubernetes/CHANGELOG.md
index 600363e960..55d917ea1c 100644
--- a/plugins/kubernetes/CHANGELOG.md
+++ b/plugins/kubernetes/CHANGELOG.md
@@ -1,5 +1,12 @@
# @backstage/plugin-kubernetes
+## 0.9.4-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
## 0.9.4-next.0
### Patch Changes
diff --git a/plugins/kubernetes/package.json b/plugins/kubernetes/package.json
index 1f137a6240..ed063900ba 100644
--- a/plugins/kubernetes/package.json
+++ b/plugins/kubernetes/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-kubernetes",
"description": "A Backstage plugin that integrates towards Kubernetes",
- "version": "0.9.4-next.0",
+ "version": "0.9.4-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/lighthouse-backend/CHANGELOG.md b/plugins/lighthouse-backend/CHANGELOG.md
index afdaccb6d6..9892e72566 100644
--- a/plugins/lighthouse-backend/CHANGELOG.md
+++ b/plugins/lighthouse-backend/CHANGELOG.md
@@ -1,5 +1,31 @@
# @backstage/plugin-lighthouse-backend
+## 0.2.4-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+
+## 0.2.4-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-catalog-node@1.4.1-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/types@1.1.0
+ - @backstage/plugin-lighthouse-common@0.1.2
+
## 0.2.4-next.0
### Patch Changes
diff --git a/plugins/lighthouse-backend/package.json b/plugins/lighthouse-backend/package.json
index 2ec52540e9..8811164592 100644
--- a/plugins/lighthouse-backend/package.json
+++ b/plugins/lighthouse-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-lighthouse-backend",
"description": "Backend functionalities for lighthouse",
- "version": "0.2.4-next.0",
+ "version": "0.2.4-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/lighthouse-backend/src/plugin.ts b/plugins/lighthouse-backend/src/plugin.ts
index 7acbd45634..3d5c8dac72 100644
--- a/plugins/lighthouse-backend/src/plugin.ts
+++ b/plugins/lighthouse-backend/src/plugin.ts
@@ -34,7 +34,7 @@ export const lighthousePlugin = createBackendPlugin({
env.registerInit({
deps: {
catalogClient: catalogServiceRef,
- config: coreServices.config,
+ config: coreServices.rootConfig,
logger: coreServices.logger,
scheduler: coreServices.scheduler,
tokenManager: coreServices.tokenManager,
diff --git a/plugins/lighthouse/CHANGELOG.md b/plugins/lighthouse/CHANGELOG.md
index e45facf69f..ae5103502a 100644
--- a/plugins/lighthouse/CHANGELOG.md
+++ b/plugins/lighthouse/CHANGELOG.md
@@ -1,5 +1,12 @@
# @backstage/plugin-lighthouse
+## 0.4.6-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
## 0.4.6-next.0
### Patch Changes
diff --git a/plugins/lighthouse/package.json b/plugins/lighthouse/package.json
index 02b2e67c1a..1cdb8f84da 100644
--- a/plugins/lighthouse/package.json
+++ b/plugins/lighthouse/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-lighthouse",
"description": "A Backstage plugin that integrates towards Lighthouse",
- "version": "0.4.6-next.0",
+ "version": "0.4.6-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/linguist-backend/CHANGELOG.md b/plugins/linguist-backend/CHANGELOG.md
index 0d5e08137e..ff16c53da5 100644
--- a/plugins/linguist-backend/CHANGELOG.md
+++ b/plugins/linguist-backend/CHANGELOG.md
@@ -1,5 +1,38 @@
# @backstage/plugin-linguist-backend
+## 0.4.0-next.2
+
+### Minor Changes
+
+- d440f1dd0e72: Adds a processor to the linguist backend which can automatically add language tags to entities
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-linguist-common@0.1.1-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+
+## 0.3.2-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-linguist-common@0.1.1-next.0
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+
## 0.3.2-next.0
### Patch Changes
diff --git a/plugins/linguist-backend/README.md b/plugins/linguist-backend/README.md
index 6e2a20cf2d..7bca98191b 100644
--- a/plugins/linguist-backend/README.md
+++ b/plugins/linguist-backend/README.md
@@ -1,6 +1,6 @@
# Linguist Backend
-Welcome to the Linguist backend plugin! This plugin provides data for the Linguist frontend features.
+Welcome to the Linguist backend plugin! This plugin provides data for the Linguist frontend features. Additionally, it provides an optional entity processor which will automate adding language tags to your entities.
## Setup
@@ -144,6 +144,130 @@ return createRouter(
**Note:** This has the potential to cause a lot of processing, be very thoughtful about this before hand
+## Linguist Tags Processor
+
+The `LinguistTagsProcessor` can be added into your catalog builder as a way to incorporate the language breakdown from linguist as `metadata.tags` on your entities. Doing so enables the ability to easily filter for entities in your catalog index based on the language of the source repository.
+
+### Processor Setup
+
+Setup the linguist tag processor in `packages/backend/src/plugins/catalog.ts`.
+
+```ts
+import { LinguistTagsProcessor } from '@backstage/plugin-linguist-backend';
+// ...
+export default async function createPlugin(
+ // ...
+ builder.addProcessor(
+ LinguistTagsProcessor.fromConfig(env.config, {
+ logger: env.logger,
+ discovery: env.discovery,
+ })
+ );
+```
+
+### Processor Options
+
+The processor accepts configurations either directly as options when constructing using `fromConfig()`, or can also be configured in `app-config.yaml` with the same fields.
+
+Example linguist processor configuration:
+
+```yaml
+linguist:
+ tagsProcessor:
+ bytesThreshold: 1000
+ languageTypes: ['programming', 'markup']
+ languageMap:
+ Dockerfile: ''
+ TSX: 'react'
+ cacheTTL:
+ hours: 24
+```
+
+#### `languageMap`
+
+The `languageMap` option allows you to build a custom map of linguist languages to how you want them to show up as tags. The keys should be exact matches to languages in the [linguist dataset](https://github.com/github-linguist/linguist/blob/master/lib/linguist/languages.yml) and the values should be how they render as backstage tags. These values will be used "as is" and will not be further transformed.
+
+Keep in mind that backstage has [character requirements for tags](https://backstage.io/docs/features/software-catalog/descriptor-format#tags-optional). If your map emits an invalid tag, it will cause an error during processing and your entity will not be processed.
+
+If you map a key to `''`, it will not be emitted as a tag. This can be useful if you want to ignore some of the linguist languages.
+
+```yaml
+linguist:
+ tagsProcessor:
+ languageMap:
+ # You don't want dockerfile to show up as a tag
+ Dockerfile: ''
+ # Be more specific about what the file is
+ HCL: terraform
+ # A more casual tag for a formal name
+ Protocol Buffer: protobuf
+```
+
+#### `cacheTTL`
+
+The `cacheTTL` option allows you to determine for how long this processor will cache languages for an `entityRef` before refreshing from the linguist backend. As this processor will run continuously, this cache is supplied to limit the load done on the linguist DB and API.
+
+By default, this processor will cache languages for 30 minutes before refreshing from the linguist database.
+
+You can optionally disable the cache entirely by passing in a `cacheTTL` duration of 0 minutes.
+
+```yaml
+linguist:
+ tagsProcessor:
+ cacheTTL: { minutes: 0 }
+```
+
+#### `bytesThreshold`
+
+The `bytesThreshold` option allows you to control a number of bytes threshold which must be surpassed before a language tag will be emitted by this processor. As an example, some repositories may have short build scripts written in Bash, but you may only want the main language of the project emitted (an alternate way to control this is to use the `languageMap` to map `Shell` languages to `undefined`).
+
+```yaml
+linguist:
+ tagsProcessor:
+ # Ignore languages with less than 5000 bytes in a repo.
+ bytesThreshold: 5000
+```
+
+#### `languageTypes`
+
+The `languageTypes` option allows you to control what categories of linguist languages are automatically added as tags. By default, this will only include language tags of type `programming`, but you can pass in a custom array here to allow adding other language types.
+
+You can see the full breakdown of linguist supported languages [in their repo](https://github.com/github-linguist/linguist/blob/master/lib/linguist/languages.yml).
+
+For example, you may want to also include languages of type `data`
+
+```yaml
+linguist:
+ tagsProcessor:
+ languageTypes:
+ - programming
+ - data
+```
+
+#### `shouldProcessEntity`
+
+The `shouldProcessEntity` is a function you can pass into the processor which determines which entities should have language tags fetched from linguist and added to the entity. By default, this will only run on entities of `kind: Component`, however this function let's you fully customize which entities should be processed.
+
+As an example, you may choose to extend this to support both `Component` and `Resource` kinds along with allowing an opt-in annotation on the entity which entity authors can use.
+
+As this option is a function, it cannot be configured in `app-config.yaml`. You must pass this as an option within typescript.
+
+```ts
+LinguistLanguageTagsProcessor.fromConfig(env.config, {
+ logger: env.logger,
+ discovery: env.discovery,
+ shouldProcessEntity: (entity: Entity) => {
+ if (
+ ['Component', 'Resource'].includes(entity.kind) &&
+ entity.metadata.annotations?.['some-custom-annotation']
+ ) {
+ return true;
+ }
+ return false;
+ },
+});
+```
+
## Links
- [Frontend part of the plugin](https://github.com/backstage/backstage/tree/master/plugins/linguist)
diff --git a/plugins/linguist-backend/api-report.md b/plugins/linguist-backend/api-report.md
index cd2c9cb3f3..aac978e426 100644
--- a/plugins/linguist-backend/api-report.md
+++ b/plugins/linguist-backend/api-report.md
@@ -4,9 +4,15 @@
```ts
import { BackendFeature } from '@backstage/backend-plugin-api';
+import { CatalogProcessor } from '@backstage/plugin-catalog-node';
+import { CatalogProcessorCache } from '@backstage/plugin-catalog-node';
+import { Config } from '@backstage/config';
+import { DiscoveryService } from '@backstage/backend-plugin-api';
+import { Entity } from '@backstage/catalog-model';
import express from 'express';
import { HumanDuration } from '@backstage/types';
import { Languages } from '@backstage/plugin-linguist-common';
+import { LanguageType } from '@backstage/plugin-linguist-common';
import { Logger } from 'winston';
import { PluginDatabaseManager } from '@backstage/backend-common';
import { PluginEndpointDiscovery } from '@backstage/backend-common';
@@ -48,6 +54,38 @@ export interface LinguistPluginOptions {
useSourceLocation?: boolean;
}
+// @public
+export class LinguistTagsProcessor implements CatalogProcessor {
+ constructor(options: LinguistTagsProcessorOptions);
+ // (undocumented)
+ static fromConfig(
+ config: Config,
+ options: LinguistTagsProcessorOptions,
+ ): LinguistTagsProcessor;
+ // (undocumented)
+ getProcessorName(): string;
+ preProcessEntity(
+ entity: Entity,
+ _: any,
+ __: any,
+ ___: any,
+ cache: CatalogProcessorCache,
+ ): Promise;
+}
+
+// @public
+export interface LinguistTagsProcessorOptions {
+ bytesThreshold?: number;
+ cacheTTL?: HumanDuration;
+ // (undocumented)
+ discovery: DiscoveryService;
+ languageMap?: Record;
+ languageTypes?: LanguageType[];
+ // (undocumented)
+ logger: Logger;
+ shouldProcessEntity?: ShouldProcessEntity;
+}
+
// @public (undocumented)
export interface PluginOptions {
// (undocumented)
@@ -81,4 +119,7 @@ export interface RouterOptions {
// (undocumented)
tokenManager: TokenManager;
}
+
+// @public
+export type ShouldProcessEntity = (entity: Entity) => boolean;
```
diff --git a/plugins/linguist-backend/config.d.ts b/plugins/linguist-backend/config.d.ts
new file mode 100644
index 0000000000..e7ad487d12
--- /dev/null
+++ b/plugins/linguist-backend/config.d.ts
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2023 The 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 { HumanDuration } from '@backstage/types';
+
+export interface Config {
+ /** Configuration options for the linguist plugin */
+ linguist?: {
+ /** Options for the tags processor */
+ tagsProcessor?: {
+ /**
+ * Determines how many bytes of a language should be in a repo
+ * for it to be added as an entity tag. Defaults to 0.
+ */
+ bytesThreshold?: number;
+ /**
+ * The types of linguist languages that should be processed. Can be
+ * any of "programming", "data", "markup", "prose". Defaults to ["programming"].
+ */
+ languageTypes?: string[];
+ /**
+ * A custom mapping of linguist languages to how they should be rendered as entity tags.
+ * If a language is mapped to '' it will not be included as a tag.
+ */
+ languageMap?: {
+ [language: string]: string | undefined;
+ };
+ /**
+ * How long to cache entity languages for in memory. Used to avoid constant db hits during
+ * processing. Defaults to 30 minutes.
+ */
+ cacheTTL?: HumanDuration;
+ };
+ };
+}
diff --git a/plugins/linguist-backend/package.json b/plugins/linguist-backend/package.json
index ae92da2492..0cdd8b12c5 100644
--- a/plugins/linguist-backend/package.json
+++ b/plugins/linguist-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-linguist-backend",
- "version": "0.3.2-next.0",
+ "version": "0.4.0-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -12,6 +12,12 @@
"backstage": {
"role": "backend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/linguist-backend"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
@@ -30,6 +36,7 @@
"@backstage/config": "workspace:^",
"@backstage/errors": "workspace:^",
"@backstage/plugin-auth-node": "workspace:^",
+ "@backstage/plugin-catalog-node": "workspace:^",
"@backstage/plugin-linguist-common": "workspace:^",
"@backstage/types": "workspace:^",
"@types/express": "*",
@@ -48,11 +55,14 @@
"@backstage/backend-test-utils": "workspace:^",
"@backstage/cli": "workspace:^",
"@types/supertest": "^2.0.8",
+ "js-yaml": "^4.1.0",
"msw": "^1.0.0",
"supertest": "^6.2.4"
},
"files": [
"dist",
+ "config.d.ts",
"migrations/**/*.{js,d.ts}"
- ]
+ ],
+ "configSchema": "config.d.ts"
}
diff --git a/plugins/linguist-backend/src/api/LinguistBackendClient.test.ts b/plugins/linguist-backend/src/api/LinguistBackendClient.test.ts
index 1b0a4f4673..55c74df424 100644
--- a/plugins/linguist-backend/src/api/LinguistBackendClient.test.ts
+++ b/plugins/linguist-backend/src/api/LinguistBackendClient.test.ts
@@ -38,6 +38,9 @@ const linguistResultMock = Promise.resolve({
'/readme.md': 'Markdown',
'/no-lang': null,
},
+ alternatives: {
+ '~/alternatives.asc': ['AsciiDoc', 'Public Key'],
+ },
},
languages: {
count: 3,
diff --git a/plugins/linguist-backend/src/index.ts b/plugins/linguist-backend/src/index.ts
index 6ac1c3770a..107877551e 100644
--- a/plugins/linguist-backend/src/index.ts
+++ b/plugins/linguist-backend/src/index.ts
@@ -20,6 +20,7 @@
* @packageDocumentation
*/
+export * from './processor';
export * from './service/router';
export type { LinguistBackendApi } from './api';
export { linguistPlugin } from './plugin';
diff --git a/plugins/linguist-backend/src/processor/LinguistTagsProcessor.test.ts b/plugins/linguist-backend/src/processor/LinguistTagsProcessor.test.ts
new file mode 100644
index 0000000000..4954820792
--- /dev/null
+++ b/plugins/linguist-backend/src/processor/LinguistTagsProcessor.test.ts
@@ -0,0 +1,343 @@
+/*
+ * Copyright 2023 The 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 {
+ LinguistTagsProcessor,
+ LinguistTagsProcessorOptions,
+ sanitizeTag,
+} from './LinguistTagsProcessor';
+import { ConfigReader } from '@backstage/config';
+import { getVoidLogger } from '@backstage/backend-common';
+import { CatalogProcessorCache } from '@backstage/plugin-catalog-node';
+import { Entity, makeValidator } from '@backstage/catalog-model';
+import { DiscoveryService } from '@backstage/backend-plugin-api';
+import fetch, { Response } from 'node-fetch';
+import * as path from 'path';
+import yaml from 'js-yaml';
+import * as fs from 'fs';
+
+const { isValidTag } = makeValidator();
+
+jest.mock('node-fetch', () => jest.fn());
+const mockedFetch: jest.MockedFunction =
+ fetch as jest.MockedFunction;
+
+const discovery: DiscoveryService = {
+ getBaseUrl: jest.fn().mockResolvedValue('http://example.com/api/linguist'),
+ getExternalBaseUrl: jest.fn(),
+};
+
+let state: Record = {};
+const mockCacheGet = jest
+ .fn()
+ .mockImplementation(async (key: string) => state[key]);
+const mockCacheSet = jest.fn().mockImplementation((key: string, value: any) => {
+ state[key] = value;
+});
+const cache: CatalogProcessorCache = {
+ get: mockCacheGet,
+ set: mockCacheSet,
+};
+
+describe('sanitizeTag', () => {
+ const linguistDataSet = yaml.load(
+ fs.readFileSync(
+ path.resolve(require.resolve('linguist-js'), '../../ext/languages.yml'),
+ 'utf-8',
+ ),
+ ) as Object;
+ const languages = Object.keys(linguistDataSet);
+ test('Should clean up all linguist languages', () => {
+ const invalid = languages
+ .map(sanitizeTag)
+ .filter(lang => !isValidTag(lang));
+ expect(invalid).toStrictEqual([]);
+ // Keep a snapshot here so that as new languages are added to linguist,
+ // we can spot check them to make sure the transformer for them makes sense.
+ expect(languages.map(sanitizeTag)).toMatchSnapshot();
+ });
+});
+
+describe('LinguistTagsProcessor', () => {
+ afterEach(() => {
+ mockedFetch.mockReset();
+ mockCacheGet.mockClear();
+ mockCacheSet.mockClear();
+ state = {};
+ });
+
+ test('Should construct fromConfig', () => {
+ const config = new ConfigReader({
+ linguist: {},
+ });
+ expect(() => {
+ return LinguistTagsProcessor.fromConfig(config, {
+ logger: getVoidLogger(),
+ discovery,
+ });
+ }).not.toThrow();
+ });
+
+ test('Should assign valid language tags', async () => {
+ const processor = buildProcessor({});
+
+ mockFetchImplementation();
+ const entity = baseEntity();
+ await processor.preProcessEntity(entity, null, null, null, cache);
+ expect(mockedFetch).toHaveBeenCalledTimes(1);
+ expect(entity.metadata.tags).toStrictEqual([
+ 'c++',
+ 'asp-dot-net',
+ 'java',
+ 'common-lisp',
+ ]);
+
+ entity.metadata.tags?.forEach(tag => {
+ expect(isValidTag(tag)).toBeTruthy();
+ });
+ });
+
+ test('Should not duplicate existing tags', async () => {
+ const processor = buildProcessor({});
+
+ mockFetchImplementation();
+ const entity = baseEntity();
+ entity.metadata.tags = ['existing', 'tags', 'java'];
+
+ await processor.preProcessEntity(entity, null, null, null, cache);
+ expect(mockedFetch).toHaveBeenCalledTimes(1);
+ expect(entity.metadata.tags).toStrictEqual([
+ 'existing',
+ 'tags',
+ 'java',
+ 'c++',
+ 'asp-dot-net',
+ 'common-lisp',
+ ]);
+ });
+
+ test('Should not process Resource entities by default', async () => {
+ const processor = buildProcessor({});
+
+ mockFetchImplementation();
+ const entity = baseEntity();
+ entity.kind = 'Resource';
+
+ await processor.preProcessEntity(entity, null, null, null, cache);
+ expect(mockedFetch).toHaveBeenCalledTimes(0);
+ expect(entity.metadata.tags).toStrictEqual(undefined);
+ });
+
+ test('Can process Resource entities by overriding shouldProcessEntity', async () => {
+ const processor = buildProcessor({
+ shouldProcessEntity: (entity: Entity) => {
+ return entity.kind === 'Resource';
+ },
+ });
+
+ mockFetchImplementation();
+ const entity = baseEntity();
+ entity.kind = 'Resource';
+
+ await processor.preProcessEntity(entity, null, null, null, cache);
+ expect(mockedFetch).toHaveBeenCalledTimes(1);
+ expect(entity.metadata.tags).toStrictEqual([
+ 'c++',
+ 'asp-dot-net',
+ 'java',
+ 'common-lisp',
+ ]);
+ });
+
+ test('Can omit languages using languageMap', async () => {
+ const processor = buildProcessor({
+ languageMap: {
+ Java: '',
+ 'ASP.net': '',
+ },
+ });
+
+ mockFetchImplementation();
+ const entity = baseEntity();
+ await processor.preProcessEntity(entity, null, null, null, cache);
+ expect(mockedFetch).toHaveBeenCalledTimes(1);
+ expect(entity.metadata.tags).toStrictEqual(['c++', 'common-lisp']);
+ });
+
+ test('Can rewrite langs using languageMap', async () => {
+ const processor = buildProcessor({
+ languageMap: {
+ Java: 'notjava',
+ },
+ });
+
+ mockFetchImplementation();
+ const entity = baseEntity();
+ await processor.preProcessEntity(entity, null, null, null, cache);
+ expect(mockedFetch).toHaveBeenCalledTimes(1);
+ expect(entity.metadata.tags).toStrictEqual([
+ 'c++',
+ 'asp-dot-net',
+ 'notjava',
+ 'common-lisp',
+ ]);
+ });
+
+ test('Can omit languages less than bytesThreshold', async () => {
+ const processor = buildProcessor({
+ bytesThreshold: 5000,
+ });
+
+ mockFetchImplementation();
+ const entity = baseEntity();
+ await processor.preProcessEntity(entity, null, null, null, cache);
+ expect(mockedFetch).toHaveBeenCalledTimes(1);
+ expect(entity.metadata.tags).toStrictEqual(['java', 'common-lisp']);
+ });
+
+ test('Can include languages that arent programming', async () => {
+ const processor = buildProcessor({
+ languageTypes: ['data'],
+ });
+
+ mockFetchImplementation();
+ const entity = baseEntity();
+ await processor.preProcessEntity(entity, null, null, null, cache);
+ expect(mockedFetch).toHaveBeenCalledTimes(1);
+ expect(entity.metadata.tags).toStrictEqual(['yaml', 'json']);
+ });
+
+ test('Refetches from API when cache disabled', async () => {
+ const processor = buildProcessor({
+ cacheTTL: { minutes: 0 },
+ });
+
+ mockFetchImplementation();
+ const entity = baseEntity();
+ await processor.preProcessEntity(entity, null, null, null, cache);
+ expect(mockedFetch).toHaveBeenCalledTimes(1);
+ expect(mockCacheGet).toHaveBeenCalledTimes(0);
+ expect(mockCacheSet).toHaveBeenCalledTimes(0);
+ mockedFetch.mockClear();
+ await processor.preProcessEntity(entity, null, null, null, cache);
+ expect(mockedFetch).toHaveBeenCalledTimes(1);
+ expect(mockCacheGet).toHaveBeenCalledTimes(0);
+ expect(mockCacheSet).toHaveBeenCalledTimes(0);
+ });
+
+ test('Caches across runs with cache enabled', async () => {
+ const processor = buildProcessor({
+ cacheTTL: { minutes: 5 },
+ });
+
+ mockFetchImplementation();
+ const entity = baseEntity();
+ await processor.preProcessEntity(entity, null, null, null, cache);
+ expect(mockedFetch).toHaveBeenCalledTimes(1);
+ expect(mockCacheGet).toHaveBeenCalledTimes(1);
+ expect(mockCacheSet).toHaveBeenCalledTimes(1);
+
+ mockedFetch.mockClear();
+ mockCacheGet.mockClear();
+ mockCacheSet.mockClear();
+ await processor.preProcessEntity(entity, null, null, null, cache);
+ expect(mockedFetch).toHaveBeenCalledTimes(0);
+ expect(mockCacheGet).toHaveBeenCalledTimes(1);
+ expect(mockCacheSet).toHaveBeenCalledTimes(0);
+ });
+});
+
+function mockFetchImplementation(): void {
+ mockedFetch.mockResolvedValue({
+ json: jest.fn().mockResolvedValue({
+ languageCount: 6,
+ totalBytes: 43823,
+ processedDate: '2023-06-20T21:37:48.337Z',
+ breakdown: [
+ {
+ name: 'YAML',
+ percentage: 2.23,
+ bytes: 979,
+ type: 'data',
+ color: '#cb171e',
+ },
+ {
+ name: 'JSON',
+ percentage: 1.31,
+ bytes: 574,
+ type: 'data',
+ color: '#292929',
+ },
+ {
+ name: 'C++',
+ percentage: 5.25,
+ bytes: 2300,
+ type: 'programming',
+ color: '#f34b7d',
+ },
+ {
+ name: 'ASP.net',
+ percentage: 6.97,
+ bytes: 3053,
+ type: 'programming',
+ color: '#178600',
+ },
+ {
+ name: 'Java',
+ percentage: 12.79,
+ bytes: 5603,
+ type: 'programming',
+ color: '#b07219',
+ },
+ {
+ name: 'Common Lisp',
+ percentage: 71.46,
+ bytes: 31314,
+ type: 'programming',
+ color: '#3fb68b',
+ },
+ ],
+ }),
+ } as unknown as Response);
+}
+
+function baseEntity(): Entity {
+ return {
+ apiVersion: 'backstage.io/v1alpha1',
+ kind: 'Component',
+ metadata: {
+ name: 'foo',
+ },
+ };
+}
+
+function buildProcessor(options: Partial) {
+ const config = new ConfigReader({
+ linguist: {
+ tagsProcessor: {
+ bytesThreshold: options.bytesThreshold,
+ languageTypes: options.languageTypes,
+ languageMap: options.languageMap,
+ cacheTTL: options.cacheTTL,
+ },
+ },
+ });
+ return LinguistTagsProcessor.fromConfig(config, {
+ logger: getVoidLogger(),
+ discovery,
+ shouldProcessEntity: options.shouldProcessEntity,
+ });
+}
diff --git a/plugins/linguist-backend/src/processor/LinguistTagsProcessor.ts b/plugins/linguist-backend/src/processor/LinguistTagsProcessor.ts
new file mode 100644
index 0000000000..b27fe2c5e9
--- /dev/null
+++ b/plugins/linguist-backend/src/processor/LinguistTagsProcessor.ts
@@ -0,0 +1,269 @@
+/*
+ * Copyright 2023 The 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, stringifyEntityRef } from '@backstage/catalog-model';
+import {
+ CatalogProcessor,
+ CatalogProcessorCache,
+} from '@backstage/plugin-catalog-node';
+import { DiscoveryService } from '@backstage/backend-plugin-api';
+import { Languages, LanguageType } from '@backstage/plugin-linguist-common';
+import fetch from 'node-fetch';
+import { Logger } from 'winston';
+import { HumanDuration, durationToMilliseconds } from '@backstage/types';
+import { Config } from '@backstage/config';
+
+/**
+ * A function which given an entity, determines if it should be processed for linguist tags.
+ * @public
+ */
+export type ShouldProcessEntity = (entity: Entity) => boolean;
+
+interface CachedData {
+ [key: string]: number | string[];
+ languages: string[];
+ cachedTime: number;
+}
+
+/**
+ * The constructor options for building the LinguistTagsProcessor
+ * @public
+ */
+export interface LinguistTagsProcessorOptions {
+ logger: Logger;
+ discovery: DiscoveryService;
+ /**
+ * Optional map that gives full control over which linguist languages should be included as tags and
+ * how they should be represented. The keys should be exact matches to languages in the linguist
+ * and the values should be how they render as backstage tags. Keep in mind that backstage has character
+ * requirements for tags. If you map a key to a falsey value, it will not be emitted as a tag.
+ */
+ languageMap?: Record;
+ /**
+ * A function which determines which entities should be processed by the LinguistTagProcessor.
+ *
+ * The default is to process all entities of kind=Component
+ */
+ shouldProcessEntity?: ShouldProcessEntity;
+ /**
+ * Determines how long to cache language breakdowns for entities in the processor. Considering
+ * how often this processor runs, caching can help move some read traffic off of the linguist DB.
+ *
+ * If this caching is using up too much memory, you can disable it by setting cacheTTL to 0.
+ */
+ cacheTTL?: HumanDuration;
+ /**
+ * How many bytes must exist of a language in a repo before we consider it for adding a tag to
+ * the entity. This can be used if some repos have short utility scripts that may not be the primary
+ * language for the repo.
+ */
+ bytesThreshold?: number;
+ /**
+ * Which linguist file types to process tags for.
+ */
+ languageTypes?: LanguageType[];
+}
+
+/**
+ * This processor will fetch the language breakdown from the linguist API and
+ * add the languages to the entity as searchable tags.
+ *
+ * @public
+ * */
+export class LinguistTagsProcessor implements CatalogProcessor {
+ private logger: Logger;
+ private discovery: DiscoveryService;
+ private loggerMeta = { plugin: 'LinguistTagsProcessor' };
+ private languageMap: Record = {};
+ private shouldProcessEntity: ShouldProcessEntity = (entity: Entity) => {
+ return entity.kind === 'Component';
+ };
+ private cacheTTLMilliseconds: number;
+ private bytesThreshold = 0;
+ private languageTypes: LanguageType[] = ['programming'];
+
+ getProcessorName(): string {
+ return 'LinguistTagsProcessor';
+ }
+
+ constructor(options: LinguistTagsProcessorOptions) {
+ this.logger = options.logger;
+ this.discovery = options.discovery;
+ if (options.shouldProcessEntity) {
+ this.shouldProcessEntity = options.shouldProcessEntity;
+ }
+ this.cacheTTLMilliseconds = durationToMilliseconds(
+ options.cacheTTL || { minutes: 30 },
+ );
+ if (options.bytesThreshold) {
+ this.bytesThreshold = options.bytesThreshold;
+ }
+ if (options.languageTypes) {
+ this.languageTypes = options.languageTypes;
+ }
+ if (options.languageMap) {
+ this.languageMap = options.languageMap;
+ }
+ }
+
+ static fromConfig(
+ config: Config,
+ options: LinguistTagsProcessorOptions,
+ ): LinguistTagsProcessor {
+ const c = config.getOptionalConfig('linguist.tagsProcessor');
+ if (c) {
+ options.bytesThreshold ??= c.getOptionalNumber('bytesThreshold');
+ options.languageTypes ??= c.getOptionalStringArray(
+ 'languageTypes',
+ ) as LanguageType[];
+ options.languageMap ??= c.getOptional('languageMap');
+ options.cacheTTL ??= c.getOptional('cacheTTL');
+ }
+
+ return new LinguistTagsProcessor(options);
+ }
+
+ /**
+ * Given an entity ref, fetches the language breakdown from the Linguist backend HTTP API.
+ * @param entityRef - stringified entity ref
+ * @returns The language breakdown
+ */
+ private async getLanguagesFromLinguistAPI(
+ entityRef: string,
+ ): Promise {
+ this.logger.debug(`Fetching languages from linguist API`, {
+ ...this.loggerMeta,
+ entityRef,
+ });
+
+ const baseUrl = await this.discovery.getBaseUrl('linguist');
+ const linguistApi = new URL(`${baseUrl}/entity-languages`);
+ linguistApi.searchParams.append('entityRef', entityRef);
+ const linguistData = await fetch(linguistApi).then(
+ res => res.json() as Promise,
+ );
+ if (!linguistData || !linguistData.processedDate) {
+ return [];
+ }
+
+ return linguistData.breakdown
+ .filter(
+ b =>
+ this.languageTypes.includes(b.type) && b.bytes > this.bytesThreshold,
+ )
+ .map(b => b.name);
+ }
+
+ /**
+ * Cached wrapper around getLanguagesFromLinguistAPI
+ * @param cache - The CatalogProcessorCache
+ * @param entityRef - Stringified entity references
+ *
+ * @returns List of languages
+ */
+ private async getCachedLanguages(
+ cache: CatalogProcessorCache,
+ entityRef: string,
+ ): Promise {
+ let cachedData = (await cache.get(entityRef)) as CachedData | undefined;
+ if (!cachedData || this.isExpired(cachedData)) {
+ const languages = await this.getLanguagesFromLinguistAPI(entityRef);
+ cachedData = { languages, cachedTime: Date.now() };
+ await cache.set(entityRef, cachedData);
+ }
+ this.logger.debug(`Fetched cached languages ${cachedData.languages}`, {
+ ...this.loggerMeta,
+ entityRef,
+ });
+ return cachedData.languages;
+ }
+
+ /**
+ * Determines if cached data is expired based on TTL
+ *
+ * @param cachedData - The cached data for this entity
+ * @returns True if data is expired
+ */
+ private isExpired(cachedData: CachedData): boolean {
+ const elapsed = Date.now() - (cachedData.cachedTime || 0);
+ return elapsed > this.cacheTTLMilliseconds;
+ }
+
+ /**
+ * This pre-processor will fetch linguist data for a Component and convert the language breakdown
+ * into entity tags which will be appended to the entity.
+ *
+ * @public
+ */
+ async preProcessEntity(
+ entity: Entity,
+ _: any,
+ __: any,
+ ___: any,
+ cache: CatalogProcessorCache,
+ ): Promise {
+ if (!this.shouldProcessEntity(entity)) {
+ return entity;
+ }
+ const entityRef = stringifyEntityRef(entity);
+ this.logger.debug(`Processing ${entityRef}`, {
+ ...this.loggerMeta,
+ entityRef,
+ });
+
+ const languages =
+ this.cacheTTLMilliseconds > 0
+ ? await this.getCachedLanguages(cache, entityRef)
+ : await this.getLanguagesFromLinguistAPI(entityRef);
+
+ const tags = (entity.metadata.tags ||= []);
+ const originalTagCount = tags.length;
+
+ languages.forEach(lang => {
+ const cleanedUpLangTag =
+ lang in this.languageMap ? this.languageMap[lang] : sanitizeTag(lang);
+ if (cleanedUpLangTag && !tags.includes(cleanedUpLangTag)) {
+ tags.push(cleanedUpLangTag);
+ }
+ });
+
+ const addedCount = tags.length - originalTagCount;
+
+ this.logger.debug(`Added ${addedCount} language tags from linguist`, {
+ ...this.loggerMeta,
+ entityRef,
+ });
+
+ return entity;
+ }
+}
+
+/**
+ * Converts language tags from linguist to something acceptable by
+ * the tag requirements for backstage
+ *
+ * @param tag - A language tag from linguist
+ * @returns Cleaned up language tag
+ * @internal
+ */
+export function sanitizeTag(tag: string): string {
+ return tag
+ .toLowerCase()
+ .replace(/\.net/g, '-dot-net')
+ .replace(/[^a-z0-9:+#-]+/g, '-')
+ .replace(/-{2,}/g, '-')
+ .replace(/^-+|-+$/g, '');
+}
diff --git a/plugins/linguist-backend/src/processor/__snapshots__/LinguistTagsProcessor.test.ts.snap b/plugins/linguist-backend/src/processor/__snapshots__/LinguistTagsProcessor.test.ts.snap
new file mode 100644
index 0000000000..4eb428f61a
--- /dev/null
+++ b/plugins/linguist-backend/src/processor/__snapshots__/LinguistTagsProcessor.test.ts.snap
@@ -0,0 +1,707 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`sanitizeTag Should clean up all linguist languages 1`] = `
+[
+ "1c-enterprise",
+ "2-dimensional-array",
+ "4d",
+ "abap",
+ "abap-cds",
+ "abnf",
+ "ags-script",
+ "aidl",
+ "al",
+ "ampl",
+ "antlr",
+ "api-blueprint",
+ "apl",
+ "asl",
+ "asn-1",
+ "asp-dot-net",
+ "ats",
+ "actionscript",
+ "ada",
+ "adblock-filter-list",
+ "adobe-font-metrics",
+ "agda",
+ "alloy",
+ "alpine-abuild",
+ "altium-designer",
+ "angelscript",
+ "ant-build-system",
+ "antlers",
+ "apacheconf",
+ "apex",
+ "apollo-guidance-computer",
+ "applescript",
+ "arc",
+ "asciidoc",
+ "aspectj",
+ "assembly",
+ "astro",
+ "asymptote",
+ "augeas",
+ "autohotkey",
+ "autoit",
+ "avro-idl",
+ "awk",
+ "basic",
+ "ballerina",
+ "batchfile",
+ "beef",
+ "befunge",
+ "berry",
+ "bibtex",
+ "bicep",
+ "bikeshed",
+ "bison",
+ "bitbake",
+ "blade",
+ "blitzbasic",
+ "blitzmax",
+ "bluespec",
+ "boo",
+ "boogie",
+ "brainfuck",
+ "brighterscript",
+ "brightscript",
+ "browserslist",
+ "c",
+ "c#",
+ "c++",
+ "c-objdump",
+ "c2hs-haskell",
+ "cap-cds",
+ "cil",
+ "clips",
+ "cmake",
+ "cobol",
+ "codeowners",
+ "collada",
+ "cson",
+ "css",
+ "csv",
+ "cue",
+ "cweb",
+ "cabal-config",
+ "cadence",
+ "cairo",
+ "cameligo",
+ "cap-n-proto",
+ "cartocss",
+ "ceylon",
+ "chapel",
+ "charity",
+ "checksums",
+ "chuck",
+ "circom",
+ "cirru",
+ "clarion",
+ "clarity",
+ "classic-asp",
+ "clean",
+ "click",
+ "clojure",
+ "closure-templates",
+ "cloud-firestore-security-rules",
+ "conll-u",
+ "codeql",
+ "coffeescript",
+ "coldfusion",
+ "coldfusion-cfc",
+ "common-lisp",
+ "common-workflow-language",
+ "component-pascal",
+ "cool",
+ "coq",
+ "cpp-objdump",
+ "creole",
+ "crystal",
+ "csound",
+ "csound-document",
+ "csound-score",
+ "cuda",
+ "cue-sheet",
+ "curry",
+ "cycript",
+ "cypher",
+ "cython",
+ "d",
+ "d-objdump",
+ "d2",
+ "digital-command-language",
+ "dm",
+ "dns-zone",
+ "dtrace",
+ "dafny",
+ "darcs-patch",
+ "dart",
+ "dataweave",
+ "debian-package-control-file",
+ "denizenscript",
+ "dhall",
+ "diff",
+ "directx-3d-file",
+ "dockerfile",
+ "dogescript",
+ "dotenv",
+ "dylan",
+ "e",
+ "e-mail",
+ "ebnf",
+ "ecl",
+ "eclipse",
+ "ejs",
+ "eq",
+ "eagle",
+ "earthly",
+ "easybuild",
+ "ecere-projects",
+ "ecmarkup",
+ "editorconfig",
+ "edje-data-collection",
+ "eiffel",
+ "elixir",
+ "elm",
+ "elvish",
+ "elvish-transcript",
+ "emacs-lisp",
+ "emberscript",
+ "erlang",
+ "euphoria",
+ "f#",
+ "f",
+ "figlet-font",
+ "flux",
+ "factor",
+ "fancy",
+ "fantom",
+ "faust",
+ "fennel",
+ "filebench-wml",
+ "filterscript",
+ "fluent",
+ "formatted",
+ "forth",
+ "fortran",
+ "fortran-free-form",
+ "freebasic",
+ "freemarker",
+ "frege",
+ "futhark",
+ "g-code",
+ "gaml",
+ "gams",
+ "gap",
+ "gcc-machine-description",
+ "gdb",
+ "gdscript",
+ "gedcom",
+ "glsl",
+ "gn",
+ "gsc",
+ "game-maker-language",
+ "gemfile-lock",
+ "gemini",
+ "genero",
+ "genero-forms",
+ "genie",
+ "genshi",
+ "gentoo-ebuild",
+ "gentoo-eclass",
+ "gerber-image",
+ "gettext-catalog",
+ "gherkin",
+ "git-attributes",
+ "git-config",
+ "git-revision-list",
+ "gleam",
+ "glyph",
+ "glyph-bitmap-distribution-format",
+ "gnuplot",
+ "go",
+ "go-checksums",
+ "go-module",
+ "go-workspace",
+ "godot-resource",
+ "golo",
+ "gosu",
+ "grace",
+ "gradle",
+ "grammatical-framework",
+ "graph-modeling-language",
+ "graphql",
+ "graphviz-dot",
+ "groovy",
+ "groovy-server-pages",
+ "haproxy",
+ "hcl",
+ "hlsl",
+ "hocon",
+ "html",
+ "html+ecr",
+ "html+eex",
+ "html+erb",
+ "html+php",
+ "html+razor",
+ "http",
+ "hxml",
+ "hack",
+ "haml",
+ "handlebars",
+ "harbour",
+ "haskell",
+ "haxe",
+ "hiveql",
+ "holyc",
+ "hosts-file",
+ "hy",
+ "hyphy",
+ "idl",
+ "igor-pro",
+ "ini",
+ "irc-log",
+ "idris",
+ "ignore-list",
+ "imagej-macro",
+ "imba",
+ "inform-7",
+ "ink",
+ "inno-setup",
+ "io",
+ "ioke",
+ "isabelle",
+ "isabelle-root",
+ "j",
+ "jar-manifest",
+ "jcl",
+ "jflex",
+ "json",
+ "json-with-comments",
+ "json5",
+ "jsonld",
+ "jsoniq",
+ "janet",
+ "jasmin",
+ "java",
+ "java-properties",
+ "java-server-pages",
+ "javascript",
+ "javascript+erb",
+ "jest-snapshot",
+ "jetbrains-mps",
+ "jinja",
+ "jison",
+ "jison-lex",
+ "jolie",
+ "jsonnet",
+ "julia",
+ "jupyter-notebook",
+ "just",
+ "krl",
+ "kaitai-struct",
+ "kakounescript",
+ "kerboscript",
+ "kicad-layout",
+ "kicad-legacy-layout",
+ "kicad-schematic",
+ "kickstart",
+ "kit",
+ "kotlin",
+ "kusto",
+ "lfe",
+ "llvm",
+ "lolcode",
+ "lsl",
+ "ltspice-symbol",
+ "labview",
+ "lark",
+ "lasso",
+ "latte",
+ "lean",
+ "less",
+ "lex",
+ "ligolang",
+ "lilypond",
+ "limbo",
+ "linker-script",
+ "linux-kernel-module",
+ "liquid",
+ "literate-agda",
+ "literate-coffeescript",
+ "literate-haskell",
+ "livescript",
+ "logos",
+ "logtalk",
+ "lookml",
+ "loomscript",
+ "lua",
+ "m",
+ "m4",
+ "m4sugar",
+ "matlab",
+ "maxscript",
+ "mdx",
+ "mlir",
+ "mql4",
+ "mql5",
+ "mtml",
+ "muf",
+ "macaulay2",
+ "makefile",
+ "mako",
+ "markdown",
+ "marko",
+ "mask",
+ "mathematica",
+ "maven-pom",
+ "max",
+ "mercury",
+ "mermaid",
+ "meson",
+ "metal",
+ "microsoft-developer-studio-project",
+ "microsoft-visual-studio-solution",
+ "minid",
+ "miniyaml",
+ "mint",
+ "mirah",
+ "modelica",
+ "modula-2",
+ "modula-3",
+ "module-management-system",
+ "monkey",
+ "monkey-c",
+ "moocode",
+ "moonscript",
+ "motoko",
+ "motorola-68k-assembly",
+ "move",
+ "muse",
+ "mustache",
+ "myghty",
+ "nasl",
+ "ncl",
+ "neon",
+ "nl",
+ "npm-config",
+ "nsis",
+ "nwscript",
+ "nasal",
+ "nearley",
+ "nemerle",
+ "netlinx",
+ "netlinx+erb",
+ "netlogo",
+ "newlisp",
+ "nextflow",
+ "nginx",
+ "nim",
+ "ninja",
+ "nit",
+ "nix",
+ "nu",
+ "numpy",
+ "nunjucks",
+ "nushell",
+ "oasv2-json",
+ "oasv2-yaml",
+ "oasv3-json",
+ "oasv3-yaml",
+ "ocaml",
+ "objdump",
+ "object-data-instance-notation",
+ "objectscript",
+ "objective-c",
+ "objective-c++",
+ "objective-j",
+ "odin",
+ "omgrofl",
+ "opa",
+ "opal",
+ "open-policy-agent",
+ "openapi-specification-v2",
+ "openapi-specification-v3",
+ "opencl",
+ "openedge-abl",
+ "openqasm",
+ "openrc-runscript",
+ "openscad",
+ "openstep-property-list",
+ "opentype-feature-file",
+ "option-list",
+ "org",
+ "ox",
+ "oxygene",
+ "oz",
+ "p4",
+ "pddl",
+ "peg-js",
+ "php",
+ "plsql",
+ "plpgsql",
+ "pov-ray-sdl",
+ "pact",
+ "pan",
+ "papyrus",
+ "parrot",
+ "parrot-assembly",
+ "parrot-internal-representation",
+ "pascal",
+ "pawn",
+ "pep8",
+ "perl",
+ "pic",
+ "pickle",
+ "picolisp",
+ "piglatin",
+ "pike",
+ "plantuml",
+ "pod",
+ "pod-6",
+ "pogoscript",
+ "polar",
+ "pony",
+ "portugol",
+ "postcss",
+ "postscript",
+ "powerbuilder",
+ "powershell",
+ "prisma",
+ "processing",
+ "procfile",
+ "proguard",
+ "prolog",
+ "promela",
+ "propeller-spin",
+ "protocol-buffer",
+ "protocol-buffer-text-format",
+ "public-key",
+ "pug",
+ "puppet",
+ "pure-data",
+ "purebasic",
+ "purescript",
+ "pyret",
+ "python",
+ "python-console",
+ "python-traceback",
+ "q#",
+ "qml",
+ "qmake",
+ "qt-script",
+ "quake",
+ "r",
+ "raml",
+ "rbs",
+ "rdoc",
+ "realbasic",
+ "rexx",
+ "rmarkdown",
+ "rpc",
+ "rpgle",
+ "rpm-spec",
+ "runoff",
+ "racket",
+ "ragel",
+ "raku",
+ "rascal",
+ "raw-token-data",
+ "rescript",
+ "readline-config",
+ "reason",
+ "reasonligo",
+ "rebol",
+ "record-jar",
+ "red",
+ "redcode",
+ "redirect-rules",
+ "regular-expression",
+ "ren-py",
+ "renderscript",
+ "rich-text-format",
+ "ring",
+ "riot",
+ "robotframework",
+ "roff",
+ "roff-manpage",
+ "rouge",
+ "routeros-script",
+ "ruby",
+ "rust",
+ "sas",
+ "scss",
+ "selinux-policy",
+ "smt",
+ "sparql",
+ "sqf",
+ "sql",
+ "sqlpl",
+ "srecode-template",
+ "ssh-config",
+ "star",
+ "stl",
+ "ston",
+ "svg",
+ "swig",
+ "sage",
+ "saltstack",
+ "sass",
+ "scala",
+ "scaml",
+ "scenic",
+ "scheme",
+ "scilab",
+ "self",
+ "shaderlab",
+ "shell",
+ "shellcheck-config",
+ "shellsession",
+ "shen",
+ "sieve",
+ "simple-file-verification",
+ "singularity",
+ "slash",
+ "slice",
+ "slim",
+ "smpl",
+ "smali",
+ "smalltalk",
+ "smarty",
+ "smithy",
+ "snakemake",
+ "solidity",
+ "soong",
+ "sourcepawn",
+ "spline-font-database",
+ "squirrel",
+ "stan",
+ "standard-ml",
+ "starlark",
+ "stata",
+ "stringtemplate",
+ "stylus",
+ "subrip-text",
+ "sugarss",
+ "supercollider",
+ "svelte",
+ "sway",
+ "swift",
+ "systemverilog",
+ "ti-program",
+ "tl-verilog",
+ "tla",
+ "toml",
+ "tsql",
+ "tsv",
+ "tsx",
+ "txl",
+ "talon",
+ "tcl",
+ "tcsh",
+ "tex",
+ "tea",
+ "terra",
+ "texinfo",
+ "text",
+ "textmate-properties",
+ "textile",
+ "thrift",
+ "turing",
+ "turtle",
+ "twig",
+ "type-language",
+ "typescript",
+ "unified-parallel-c",
+ "unity3d-asset",
+ "unix-assembly",
+ "uno",
+ "unrealscript",
+ "urweb",
+ "v",
+ "vba",
+ "vbscript",
+ "vcl",
+ "vhdl",
+ "vala",
+ "valve-data-format",
+ "velocity-template-language",
+ "verilog",
+ "vim-help-file",
+ "vim-script",
+ "vim-snippet",
+ "visual-basic-dot-net",
+ "visual-basic-6-0",
+ "volt",
+ "vue",
+ "vyper",
+ "wdl",
+ "wgsl",
+ "wavefront-material",
+ "wavefront-object",
+ "web-ontology-language",
+ "webassembly",
+ "webassembly-interface-type",
+ "webidl",
+ "webvtt",
+ "wget-config",
+ "whiley",
+ "wikitext",
+ "win32-message-file",
+ "windows-registry-entries",
+ "witcher-script",
+ "wollok",
+ "world-of-warcraft-addon-data",
+ "wren",
+ "x-bitmap",
+ "x-font-directory-index",
+ "x-pixmap",
+ "x10",
+ "xc",
+ "xcompose",
+ "xml",
+ "xml-property-list",
+ "xpages",
+ "xproc",
+ "xquery",
+ "xs",
+ "xslt",
+ "xojo",
+ "xonsh",
+ "xtend",
+ "yaml",
+ "yang",
+ "yara",
+ "yasnippet",
+ "yacc",
+ "yul",
+ "zap",
+ "zil",
+ "zeek",
+ "zenscript",
+ "zephir",
+ "zig",
+ "zimpl",
+ "curl-config",
+ "desktop",
+ "dircolors",
+ "ec",
+ "edn",
+ "fish",
+ "hoon",
+ "jq",
+ "kvlang",
+ "mirc-script",
+ "mcfunction",
+ "mupad",
+ "nanorc",
+ "nesc",
+ "ooc",
+ "q",
+ "restructuredtext",
+ "robots-txt",
+ "sed",
+ "wisp",
+ "xbase",
+]
+`;
diff --git a/plugins/linguist-backend/src/processor/index.ts b/plugins/linguist-backend/src/processor/index.ts
new file mode 100644
index 0000000000..b56618b203
--- /dev/null
+++ b/plugins/linguist-backend/src/processor/index.ts
@@ -0,0 +1,20 @@
+/*
+ * Copyright 2023 The 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 type {
+ LinguistTagsProcessorOptions,
+ ShouldProcessEntity,
+} from './LinguistTagsProcessor';
+export { LinguistTagsProcessor } from './LinguistTagsProcessor';
diff --git a/plugins/linguist-common/CHANGELOG.md b/plugins/linguist-common/CHANGELOG.md
index f2b34faa84..920c5c533b 100644
--- a/plugins/linguist-common/CHANGELOG.md
+++ b/plugins/linguist-common/CHANGELOG.md
@@ -1,5 +1,17 @@
# @backstage/plugin-linguist-common
+## 0.1.1-next.1
+
+### Patch Changes
+
+- d440f1dd0e72: Exported new LanguageType type alias
+
+## 0.1.1-next.0
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+
## 0.1.0
### Minor Changes
diff --git a/plugins/linguist-common/api-report.md b/plugins/linguist-common/api-report.md
index 954bef7904..9ab81fd41d 100644
--- a/plugins/linguist-common/api-report.md
+++ b/plugins/linguist-common/api-report.md
@@ -23,7 +23,7 @@ export type Language = {
name: string;
percentage: number;
bytes: number;
- type: string;
+ type: LanguageType;
color?: `#${string}`;
};
@@ -35,6 +35,9 @@ export type Languages = {
breakdown: Language[];
};
+// @public (undocumented)
+export type LanguageType = 'programming' | 'data' | 'markup' | 'prose';
+
// @public (undocumented)
export const LINGUIST_ANNOTATION = 'backstage.io/linguist';
diff --git a/plugins/linguist-common/package.json b/plugins/linguist-common/package.json
index c13f40dee2..601146457e 100644
--- a/plugins/linguist-common/package.json
+++ b/plugins/linguist-common/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-linguist-common",
"description": "Common functionalities for the linguist plugin",
- "version": "0.1.0",
+ "version": "0.1.1-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -14,6 +14,12 @@
"backstage": {
"role": "common-library"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/linguist-common"
+ },
"scripts": {
"build": "backstage-cli package build",
"lint": "backstage-cli package lint",
diff --git a/plugins/linguist-common/src/types.ts b/plugins/linguist-common/src/types.ts
index 28a25ed059..515ca45f9c 100644
--- a/plugins/linguist-common/src/types.ts
+++ b/plugins/linguist-common/src/types.ts
@@ -28,12 +28,15 @@ export type Languages = {
breakdown: Language[];
};
+/** @public */
+export type LanguageType = 'programming' | 'data' | 'markup' | 'prose';
+
/** @public */
export type Language = {
name: string;
percentage: number;
bytes: number;
- type: string;
+ type: LanguageType;
color?: `#${string}`;
};
diff --git a/plugins/linguist/CHANGELOG.md b/plugins/linguist/CHANGELOG.md
index b1980ab7d2..3b515a2dda 100644
--- a/plugins/linguist/CHANGELOG.md
+++ b/plugins/linguist/CHANGELOG.md
@@ -1,5 +1,26 @@
# @backstage/plugin-linguist
+## 0.1.6-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-linguist-common@0.1.1-next.1
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## 0.1.6-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-linguist-common@0.1.1-next.0
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
## 0.1.6-next.0
### Patch Changes
diff --git a/plugins/linguist/package.json b/plugins/linguist/package.json
index 96d61b73f2..eadbfd7c43 100644
--- a/plugins/linguist/package.json
+++ b/plugins/linguist/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-linguist",
- "version": "0.1.6-next.0",
+ "version": "0.1.6-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/microsoft-calendar/CHANGELOG.md b/plugins/microsoft-calendar/CHANGELOG.md
index 02b1bb4b43..0cb4271d67 100644
--- a/plugins/microsoft-calendar/CHANGELOG.md
+++ b/plugins/microsoft-calendar/CHANGELOG.md
@@ -1,5 +1,17 @@
# @backstage/plugin-microsoft-calendar
+## 0.1.6-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- eea2922e749a: README update - example of apiRef definition and fixed component name
+- Updated dependencies
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/theme@0.4.1
+
## 0.1.6-next.0
### Patch Changes
diff --git a/plugins/microsoft-calendar/README.md b/plugins/microsoft-calendar/README.md
index 92421046e2..3dcf58c418 100644
--- a/plugins/microsoft-calendar/README.md
+++ b/plugins/microsoft-calendar/README.md
@@ -32,15 +32,38 @@ yarn add --cwd packages/app @backstage/plugin-microsoft-calendar
3. You can then use the provided React component `MicrosoftCalendar` in the backstage frontend where ever you want
```tsx
-import { MicrosoftCalendar } from '@backstage/plugin-microsoft-calendar';
+import { MicrosoftCalendarCard } from '@backstage/plugin-microsoft-calendar';
// ...
-
+
;
// ...
```
+If your homepage is not static JSX add `microsoftCalendarApiRef` to the App's `apis.ts`:
+
+```ts
+import {
+ MicrosoftCalendarApiClient,
+ microsoftCalendarApiRef,
+} from '@backstage/plugin-microsoft-calendar';
+import {
+ // ...
+ fetchApiRef,
+ // ...
+} from '@backstage/core-plugin-api';
+
+export const apis = [
+ // ...
+ createApiFactory({
+ api: microsoftCalendarApiRef,
+ deps: { authApi: microsoftAuthApiRef, fetchApi: fetchApiRef },
+ factory: deps => new MicrosoftCalendarApiClient(deps),
+ }),
+];
+```
+


diff --git a/plugins/microsoft-calendar/package.json b/plugins/microsoft-calendar/package.json
index 09bed7ec07..84e307ac2b 100644
--- a/plugins/microsoft-calendar/package.json
+++ b/plugins/microsoft-calendar/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-microsoft-calendar",
- "version": "0.1.6-next.0",
+ "version": "0.1.6-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -12,6 +12,12 @@
"backstage": {
"role": "frontend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/microsoft-calendar"
+ },
"author": {
"name": "Statusneo",
"email": "reach@statusneo.com",
diff --git a/plugins/newrelic-dashboard/CHANGELOG.md b/plugins/newrelic-dashboard/CHANGELOG.md
index ce1e90b993..6a43d80cc2 100644
--- a/plugins/newrelic-dashboard/CHANGELOG.md
+++ b/plugins/newrelic-dashboard/CHANGELOG.md
@@ -1,5 +1,24 @@
# @backstage/plugin-newrelic-dashboard
+## 0.2.14-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## 0.2.14-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
## 0.2.14-next.0
### Patch Changes
diff --git a/plugins/newrelic-dashboard/package.json b/plugins/newrelic-dashboard/package.json
index b134d94dbb..e5c9f53b10 100644
--- a/plugins/newrelic-dashboard/package.json
+++ b/plugins/newrelic-dashboard/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-newrelic-dashboard",
- "version": "0.2.14-next.0",
+ "version": "0.2.14-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -12,6 +12,12 @@
"backstage": {
"role": "frontend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/newrelic-dashboard"
+ },
"scripts": {
"build": "backstage-cli package build",
"start": "backstage-cli package start",
diff --git a/plugins/nomad-backend/CHANGELOG.md b/plugins/nomad-backend/CHANGELOG.md
index f85815f1de..399d250a1f 100644
--- a/plugins/nomad-backend/CHANGELOG.md
+++ b/plugins/nomad-backend/CHANGELOG.md
@@ -1,5 +1,22 @@
# @backstage/plugin-nomad-backend
+## 0.1.2-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.2
+
+## 0.1.2-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+
## 0.1.2-next.0
### Patch Changes
diff --git a/plugins/nomad-backend/package.json b/plugins/nomad-backend/package.json
index 27ee1325f1..cd987e3df8 100644
--- a/plugins/nomad-backend/package.json
+++ b/plugins/nomad-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-nomad-backend",
- "version": "0.1.2-next.0",
+ "version": "0.1.2-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -12,6 +12,12 @@
"backstage": {
"role": "backend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/nomad-backend"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
diff --git a/plugins/nomad/CHANGELOG.md b/plugins/nomad/CHANGELOG.md
index fe8796a096..f22e3fe1a5 100644
--- a/plugins/nomad/CHANGELOG.md
+++ b/plugins/nomad/CHANGELOG.md
@@ -1,5 +1,25 @@
# @backstage/plugin-nomad
+## 0.1.2-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## 0.1.2-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
## 0.1.2-next.0
### Patch Changes
diff --git a/plugins/nomad/package.json b/plugins/nomad/package.json
index c34db7374d..6b8c6211ae 100644
--- a/plugins/nomad/package.json
+++ b/plugins/nomad/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-nomad",
- "version": "0.1.2-next.0",
+ "version": "0.1.2-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -12,6 +12,12 @@
"backstage": {
"role": "frontend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/nomad"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
diff --git a/plugins/octopus-deploy/CHANGELOG.md b/plugins/octopus-deploy/CHANGELOG.md
index 52e5b5cd9b..1921f102c8 100644
--- a/plugins/octopus-deploy/CHANGELOG.md
+++ b/plugins/octopus-deploy/CHANGELOG.md
@@ -1,5 +1,24 @@
# @backstage/plugin-octopus-deploy
+## 0.2.3-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## 0.2.3-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
## 0.2.3-next.0
### Patch Changes
diff --git a/plugins/octopus-deploy/package.json b/plugins/octopus-deploy/package.json
index 8f8bf98a56..ff54b6b8b0 100644
--- a/plugins/octopus-deploy/package.json
+++ b/plugins/octopus-deploy/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-octopus-deploy",
- "version": "0.2.3-next.0",
+ "version": "0.2.3-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -12,6 +12,12 @@
"backstage": {
"role": "frontend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/octopus-deploy"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
diff --git a/plugins/org-react/CHANGELOG.md b/plugins/org-react/CHANGELOG.md
index 760d798a44..0daf3bcd0d 100644
--- a/plugins/org-react/CHANGELOG.md
+++ b/plugins/org-react/CHANGELOG.md
@@ -1,5 +1,25 @@
# @backstage/plugin-org-react
+## 0.1.10-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## 0.1.10-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
## 0.1.10-next.0
### Patch Changes
diff --git a/plugins/org-react/package.json b/plugins/org-react/package.json
index 220c237345..ab48b5b7e6 100644
--- a/plugins/org-react/package.json
+++ b/plugins/org-react/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-org-react",
- "version": "0.1.10-next.0",
+ "version": "0.1.10-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -12,6 +12,7 @@
"backstage": {
"role": "web-library"
},
+ "homepage": "https://backstage.io",
"repository": {
"type": "git",
"url": "https://github.com/backstage/backstage",
diff --git a/plugins/org/CHANGELOG.md b/plugins/org/CHANGELOG.md
index 57d83db630..fdaf76aebd 100644
--- a/plugins/org/CHANGELOG.md
+++ b/plugins/org/CHANGELOG.md
@@ -1,5 +1,24 @@
# @backstage/plugin-org
+## 0.6.11-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## 0.6.11-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
## 0.6.11-next.0
### Patch Changes
diff --git a/plugins/org/package.json b/plugins/org/package.json
index 6f09955e7d..f8d976a3a0 100644
--- a/plugins/org/package.json
+++ b/plugins/org/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-org",
"description": "A Backstage plugin that helps you create entity pages for your organization",
- "version": "0.6.11-next.0",
+ "version": "0.6.11-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -13,6 +13,7 @@
"backstage": {
"role": "frontend-plugin"
},
+ "homepage": "https://backstage.io",
"repository": {
"type": "git",
"url": "https://github.com/backstage/backstage",
diff --git a/plugins/pagerduty/CHANGELOG.md b/plugins/pagerduty/CHANGELOG.md
index 4ff94ae479..09add705bb 100644
--- a/plugins/pagerduty/CHANGELOG.md
+++ b/plugins/pagerduty/CHANGELOG.md
@@ -1,5 +1,13 @@
# @backstage/plugin-pagerduty
+## 0.6.2-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+ - @backstage/plugin-home-react@0.1.2-next.0
+
## 0.6.2-next.0
### Patch Changes
diff --git a/plugins/pagerduty/package.json b/plugins/pagerduty/package.json
index 13d56fd3f2..1ced106c06 100644
--- a/plugins/pagerduty/package.json
+++ b/plugins/pagerduty/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-pagerduty",
"description": "A Backstage plugin that integrates towards PagerDuty",
- "version": "0.6.2-next.0",
+ "version": "0.6.2-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/periskop-backend/CHANGELOG.md b/plugins/periskop-backend/CHANGELOG.md
index d2279571fd..1cfe50033f 100644
--- a/plugins/periskop-backend/CHANGELOG.md
+++ b/plugins/periskop-backend/CHANGELOG.md
@@ -1,5 +1,24 @@
# @backstage/plugin-periskop-backend
+## 0.1.19-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+
+## 0.1.19-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/config@1.0.8
+
## 0.1.19-next.0
### Patch Changes
diff --git a/plugins/periskop-backend/package.json b/plugins/periskop-backend/package.json
index 4567470c5a..70e64188dd 100644
--- a/plugins/periskop-backend/package.json
+++ b/plugins/periskop-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-periskop-backend",
- "version": "0.1.19-next.0",
+ "version": "0.1.19-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -8,6 +8,11 @@
"backstage": {
"role": "backend-plugin"
},
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/periskop-backend"
+ },
"publishConfig": {
"access": "public",
"main": "dist/index.cjs.js",
diff --git a/plugins/periskop-backend/src/plugin.ts b/plugins/periskop-backend/src/plugin.ts
index 933c864d50..2123dcbece 100644
--- a/plugins/periskop-backend/src/plugin.ts
+++ b/plugins/periskop-backend/src/plugin.ts
@@ -31,7 +31,7 @@ export const periskopPlugin = createBackendPlugin({
register(env) {
env.registerInit({
deps: {
- config: coreServices.config,
+ config: coreServices.rootConfig,
logger: coreServices.logger,
httpRouter: coreServices.httpRouter,
},
diff --git a/plugins/periskop/CHANGELOG.md b/plugins/periskop/CHANGELOG.md
index 5e9155a931..fe031696ed 100644
--- a/plugins/periskop/CHANGELOG.md
+++ b/plugins/periskop/CHANGELOG.md
@@ -1,5 +1,25 @@
# @backstage/plugin-periskop
+## 0.1.19-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## 0.1.19-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+
## 0.1.19-next.0
### Patch Changes
diff --git a/plugins/periskop/package.json b/plugins/periskop/package.json
index 1ed2e39707..4e5d87dfeb 100644
--- a/plugins/periskop/package.json
+++ b/plugins/periskop/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-periskop",
- "version": "0.1.19-next.0",
+ "version": "0.1.19-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -8,6 +8,11 @@
"backstage": {
"role": "frontend-plugin"
},
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/periskop"
+ },
"publishConfig": {
"access": "public",
"main": "dist/index.esm.js",
diff --git a/plugins/permission-backend/CHANGELOG.md b/plugins/permission-backend/CHANGELOG.md
index 58701e2f41..085dbfb074 100644
--- a/plugins/permission-backend/CHANGELOG.md
+++ b/plugins/permission-backend/CHANGELOG.md
@@ -1,5 +1,30 @@
# @backstage/plugin-permission-backend
+## 0.5.23-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-permission-node@0.7.11-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+
+## 0.5.23-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/plugin-permission-node@0.7.11-next.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/plugin-permission-common@0.7.7
+
## 0.5.23-next.0
### Patch Changes
diff --git a/plugins/permission-backend/package.json b/plugins/permission-backend/package.json
index 8c77dbba97..7e4e087927 100644
--- a/plugins/permission-backend/package.json
+++ b/plugins/permission-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-permission-backend",
- "version": "0.5.23-next.0",
+ "version": "0.5.23-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -27,6 +27,12 @@
"backstage": {
"role": "backend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/permission-backend"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
diff --git a/plugins/permission-backend/src/plugin.ts b/plugins/permission-backend/src/plugin.ts
index 5c0a9a87a0..a6b731b120 100644
--- a/plugins/permission-backend/src/plugin.ts
+++ b/plugins/permission-backend/src/plugin.ts
@@ -90,7 +90,7 @@ export const permissionPlugin = createBackendPlugin(() => ({
env.registerInit({
deps: {
http: coreServices.httpRouter,
- config: coreServices.config,
+ config: coreServices.rootConfig,
logger: coreServices.logger,
discovery: coreServices.discovery,
identity: coreServices.identity,
diff --git a/plugins/permission-node/CHANGELOG.md b/plugins/permission-node/CHANGELOG.md
index d036c17985..1fbc7fdabf 100644
--- a/plugins/permission-node/CHANGELOG.md
+++ b/plugins/permission-node/CHANGELOG.md
@@ -1,5 +1,26 @@
# @backstage/plugin-permission-node
+## 0.7.11-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+
+## 0.7.11-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/plugin-permission-common@0.7.7
+
## 0.7.11-next.0
### Patch Changes
diff --git a/plugins/permission-node/package.json b/plugins/permission-node/package.json
index 52bca6caf0..92416abb55 100644
--- a/plugins/permission-node/package.json
+++ b/plugins/permission-node/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-permission-node",
"description": "Common permission and authorization utilities for backend plugins",
- "version": "0.7.11-next.0",
+ "version": "0.7.11-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/playlist-backend/CHANGELOG.md b/plugins/playlist-backend/CHANGELOG.md
index 351805dc01..0f807e1592 100644
--- a/plugins/playlist-backend/CHANGELOG.md
+++ b/plugins/playlist-backend/CHANGELOG.md
@@ -1,5 +1,30 @@
# @backstage/plugin-playlist-backend
+## 0.3.4-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-permission-node@0.7.11-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+
+## 0.3.4-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-playlist-common@0.1.9-next.0
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/plugin-permission-node@0.7.11-next.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/plugin-permission-common@0.7.7
+
## 0.3.4-next.0
### Patch Changes
diff --git a/plugins/playlist-backend/package.json b/plugins/playlist-backend/package.json
index 9ca2c3acfe..6e4e550f5b 100644
--- a/plugins/playlist-backend/package.json
+++ b/plugins/playlist-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-playlist-backend",
- "version": "0.3.4-next.0",
+ "version": "0.3.4-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -12,6 +12,12 @@
"backstage": {
"role": "backend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/playlist-backend"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
diff --git a/plugins/playlist-common/CHANGELOG.md b/plugins/playlist-common/CHANGELOG.md
index 3d93a98c07..ed624302c5 100644
--- a/plugins/playlist-common/CHANGELOG.md
+++ b/plugins/playlist-common/CHANGELOG.md
@@ -1,5 +1,13 @@
# @backstage/plugin-playlist-common
+## 0.1.9-next.0
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/plugin-permission-common@0.7.7
+
## 0.1.8
### Patch Changes
diff --git a/plugins/playlist-common/package.json b/plugins/playlist-common/package.json
index bea2af8660..2ac82b4852 100644
--- a/plugins/playlist-common/package.json
+++ b/plugins/playlist-common/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-playlist-common",
"description": "Common functionalities for the playlist plugin",
- "version": "0.1.8",
+ "version": "0.1.9-next.0",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -14,6 +14,12 @@
"backstage": {
"role": "common-library"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/playlist-common"
+ },
"scripts": {
"build": "backstage-cli package build",
"lint": "backstage-cli package lint",
diff --git a/plugins/playlist/CHANGELOG.md b/plugins/playlist/CHANGELOG.md
index e31fe279e8..ed4956ccda 100644
--- a/plugins/playlist/CHANGELOG.md
+++ b/plugins/playlist/CHANGELOG.md
@@ -1,5 +1,31 @@
# @backstage/plugin-playlist
+## 0.1.13-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## 0.1.13-next.1
+
+### Patch Changes
+
+- d1e0588324d1: Displaying an alert popup each time the Playlist is created or deleted
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/plugin-playlist-common@0.1.9-next.0
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-common@1.0.15
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+ - @backstage/plugin-permission-common@0.7.7
+ - @backstage/plugin-permission-react@0.4.14
+ - @backstage/plugin-search-react@1.6.4-next.0
+
## 0.1.13-next.0
### Patch Changes
diff --git a/plugins/playlist/package.json b/plugins/playlist/package.json
index a4fb704fa2..e2fa6468cb 100644
--- a/plugins/playlist/package.json
+++ b/plugins/playlist/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-playlist",
- "version": "0.1.13-next.0",
+ "version": "0.1.13-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -12,6 +12,7 @@
"backstage": {
"role": "frontend-plugin"
},
+ "homepage": "https://backstage.io",
"repository": {
"type": "git",
"url": "https://github.com/backstage/backstage",
diff --git a/plugins/proxy-backend/CHANGELOG.md b/plugins/proxy-backend/CHANGELOG.md
index 9b15b97d5d..d03bd2b237 100644
--- a/plugins/proxy-backend/CHANGELOG.md
+++ b/plugins/proxy-backend/CHANGELOG.md
@@ -1,5 +1,28 @@
# @backstage/plugin-proxy-backend
+## 0.3.0-next.2
+
+### Minor Changes
+
+- 7daf65bfcfa1: Defining proxy endpoints directly under the root `proxy` configuration key is deprecated. Endpoints should now be declared under `proxy.endpoints` instead. The `skipInvalidProxies` and `reviveConsumedRequestBodies` can now also be configured through static configuration.
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+
+## 0.2.42-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 4b82382ed8c2: Fixed invalid configuration schema. The configuration schema may be more strict as a result.
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/config@1.0.8
+
## 0.2.42-next.0
### Patch Changes
diff --git a/plugins/proxy-backend/api-report.md b/plugins/proxy-backend/api-report.md
index 12d799bdf7..9c5cf5f9ef 100644
--- a/plugins/proxy-backend/api-report.md
+++ b/plugins/proxy-backend/api-report.md
@@ -13,14 +13,7 @@ import { PluginEndpointDiscovery } from '@backstage/backend-common';
export function createRouter(options: RouterOptions): Promise;
// @alpha
-export const proxyPlugin: (
- options?:
- | {
- skipInvalidProxies?: boolean | undefined;
- reviveConsumedRequestBodies?: boolean | undefined;
- }
- | undefined,
-) => BackendFeature;
+export const proxyPlugin: () => BackendFeature;
// @public (undocumented)
export interface RouterOptions {
diff --git a/plugins/proxy-backend/config.d.ts b/plugins/proxy-backend/config.d.ts
index 410ff86a2e..79e1cfcba6 100644
--- a/plugins/proxy-backend/config.d.ts
+++ b/plugins/proxy-backend/config.d.ts
@@ -15,51 +15,63 @@
*/
export interface Config {
- /**
- * A list of forwarding-proxies. Each key is a route to match,
- * below the prefix that the proxy plugin is mounted on. It must
- * start with a '/'.
- */
proxy?: {
- [key: string]:
- | string
- | {
- /**
- * Target of the proxy. Url string to be parsed with the url module.
- */
- target: string;
- /**
- * Object with extra headers to be added to target requests.
- */
- headers?: Partial<{
- /** @visibility secret */
- Authorization: string;
- /** @visibility secret */
- authorization: string;
- /** @visibility secret */
- 'X-Api-Key': string;
- /** @visibility secret */
- 'x-api-key': string;
- [key: string]: string;
- }>;
- /**
- * Changes the origin of the host header to the target URL. Default: true.
- */
- changeOrigin?: boolean;
- /**
- * Rewrite target's url path. Object-keys will be used as RegExp to match paths.
- * If pathRewrite is not specified, it is set to a single rewrite that removes the entire prefix and route.
- */
- pathRewrite?: { [regexp: string]: string };
- /**
- * Limit the forwarded HTTP methods, for example allowedMethods: ['GET'] to enforce read-only access.
- */
- allowedMethods?: string[];
- /**
- * Limit the forwarded HTTP methods. By default, only the headers that are considered safe for CORS
- * and headers that are set by the proxy will be forwarded.
- */
- allowedHeaders?: string[];
- };
+ /**
+ * Rather than failing to start up, the proxy backend will instead just warn on invalid endpoints.
+ */
+ skipInvalidProxies?: boolean;
+
+ /**
+ * Revive request bodies that have already been consumed by earlier middleware.
+ */
+ reviveConsumedRequestBodies?: boolean;
+
+ /**
+ * A list of forwarding-proxies. Each key is a route to match,
+ * below the prefix that the proxy plugin is mounted on. It must
+ * start with a '/'.
+ */
+ endpoints?: {
+ [key: string]:
+ | string
+ | {
+ /**
+ * Target of the proxy. Url string to be parsed with the url module.
+ */
+ target: string;
+ /**
+ * Object with extra headers to be added to target requests.
+ */
+ headers?: {
+ /** @visibility secret */
+ Authorization?: string;
+ /** @visibility secret */
+ authorization?: string;
+ /** @visibility secret */
+ 'X-Api-Key'?: string;
+ /** @visibility secret */
+ 'x-api-key'?: string;
+ [key: string]: string | undefined;
+ };
+ /**
+ * Changes the origin of the host header to the target URL. Default: true.
+ */
+ changeOrigin?: boolean;
+ /**
+ * Rewrite target's url path. Object-keys will be used as RegExp to match paths.
+ * If pathRewrite is not specified, it is set to a single rewrite that removes the entire prefix and route.
+ */
+ pathRewrite?: { [regexp: string]: string };
+ /**
+ * Limit the forwarded HTTP methods, for example allowedMethods: ['GET'] to enforce read-only access.
+ */
+ allowedMethods?: string[];
+ /**
+ * Limit the forwarded HTTP methods. By default, only the headers that are considered safe for CORS
+ * and headers that are set by the proxy will be forwarded.
+ */
+ allowedHeaders?: string[];
+ };
+ };
};
}
diff --git a/plugins/proxy-backend/package.json b/plugins/proxy-backend/package.json
index 7ca210520c..eb413e472c 100644
--- a/plugins/proxy-backend/package.json
+++ b/plugins/proxy-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-proxy-backend",
"description": "A Backstage backend plugin that helps you set up proxy endpoints in the backend",
- "version": "0.2.42-next.0",
+ "version": "0.3.0-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -48,7 +48,9 @@
"yup": "^0.32.9"
},
"devDependencies": {
+ "@backstage/backend-test-utils": "workspace:^",
"@backstage/cli": "workspace:^",
+ "@backstage/config-loader": "workspace:^",
"@types/http-proxy-middleware": "^0.19.3",
"@types/supertest": "^2.0.8",
"@types/uuid": "^8.0.0",
diff --git a/plugins/proxy-backend/src/plugin.ts b/plugins/proxy-backend/src/plugin.ts
index 66eeb4a7b2..e4c14b0037 100644
--- a/plugins/proxy-backend/src/plugin.ts
+++ b/plugins/proxy-backend/src/plugin.ts
@@ -26,32 +26,25 @@ import { createRouter } from './service/router';
*
* @alpha
*/
-export const proxyPlugin = createBackendPlugin(
- (options?: {
- skipInvalidProxies?: boolean;
- reviveConsumedRequestBodies?: boolean;
- }) => ({
- pluginId: 'proxy',
- register(env) {
- env.registerInit({
- deps: {
- config: coreServices.config,
- discovery: coreServices.discovery,
- logger: coreServices.logger,
- httpRouter: coreServices.httpRouter,
- },
- async init({ config, discovery, logger, httpRouter }) {
- httpRouter.use(
- await createRouter({
- config,
- discovery,
- logger: loggerToWinstonLogger(logger),
- skipInvalidProxies: options?.skipInvalidProxies,
- reviveConsumedRequestBodies: options?.reviveConsumedRequestBodies,
- }),
- );
- },
- });
- },
- }),
-);
+export const proxyPlugin = createBackendPlugin({
+ pluginId: 'proxy',
+ register(env) {
+ env.registerInit({
+ deps: {
+ config: coreServices.rootConfig,
+ discovery: coreServices.discovery,
+ logger: coreServices.logger,
+ httpRouter: coreServices.httpRouter,
+ },
+ async init({ config, discovery, logger, httpRouter }) {
+ httpRouter.use(
+ await createRouter({
+ config,
+ discovery,
+ logger: loggerToWinstonLogger(logger),
+ }),
+ );
+ },
+ });
+ },
+});
diff --git a/plugins/proxy-backend/src/service/router.config.test.ts b/plugins/proxy-backend/src/service/router.config.test.ts
index 5f90f847e4..fffdcb5142 100644
--- a/plugins/proxy-backend/src/service/router.config.test.ts
+++ b/plugins/proxy-backend/src/service/router.config.test.ts
@@ -15,7 +15,11 @@
*/
import { getVoidLogger, SingleHostDiscovery } from '@backstage/backend-common';
-import { ConfigReader } from '@backstage/config';
+import {
+ ConfigSources,
+ MutableConfigSource,
+ StaticConfigSource,
+} from '@backstage/config-loader';
import express from 'express';
import { rest } from 'msw';
import { setupServer } from 'msw/node';
@@ -56,34 +60,36 @@ describe('createRouter reloadable configuration', () => {
const logger = getVoidLogger();
// Grab the subscriber function and use mutable config data to mock a config file change
- let subscriber: () => void;
- const mutableConfigData: any = {
- backend: {
- baseUrl: 'http://localhost:7007',
- listen: {
- port: 7007,
- },
- },
- proxy: {
- '/test': {
- target: 'https://non-existing-example.com',
- pathRewrite: {
- '.*': '/',
+ const mutableConfigSource = MutableConfigSource.create({ data: {} });
+ const config = await ConfigSources.toConfig(
+ ConfigSources.merge([
+ StaticConfigSource.create({
+ data: {
+ backend: {
+ baseUrl: 'http://localhost:7007',
+ listen: {
+ port: 7007,
+ },
+ },
+ proxy: {
+ endpoints: {
+ '/test': {
+ target: 'https://non-existing-example.com',
+ pathRewrite: {
+ '.*': '/',
+ },
+ },
+ },
+ },
},
- },
- },
- };
+ }),
+ mutableConfigSource,
+ ]),
+ );
- const mockConfig = Object.assign(new ConfigReader(mutableConfigData), {
- subscribe: (s: () => void) => {
- subscriber = s;
- return { unsubscribe: () => {} };
- },
- });
-
- const discovery = SingleHostDiscovery.fromConfig(mockConfig);
+ const discovery = SingleHostDiscovery.fromConfig(config);
const router = await createRouter({
- config: mockConfig,
+ config,
logger,
discovery,
});
@@ -100,13 +106,18 @@ describe('createRouter reloadable configuration', () => {
expect(response1.status).toEqual(200);
- mutableConfigData.proxy['/test2'] = {
- target: 'https://non-existing-example.com',
- pathRewrite: {
- '.*': '/',
+ mutableConfigSource.setData({
+ proxy: {
+ endpoints: {
+ '/test2': {
+ target: 'https://non-existing-example.com',
+ pathRewrite: {
+ '.*': '/',
+ },
+ },
+ },
},
- };
- subscriber!();
+ });
const response2 = await agent.get('/test2');
diff --git a/plugins/proxy-backend/src/service/router.test.ts b/plugins/proxy-backend/src/service/router.test.ts
index 9e8c909d25..2b58e52e94 100644
--- a/plugins/proxy-backend/src/service/router.test.ts
+++ b/plugins/proxy-backend/src/service/router.test.ts
@@ -15,6 +15,7 @@
*/
import { getVoidLogger, SingleHostDiscovery } from '@backstage/backend-common';
+import { mockServices } from '@backstage/backend-test-utils';
import { ConfigReader } from '@backstage/config';
import { Request, Response } from 'express';
import * as http from 'http';
@@ -45,10 +46,12 @@ describe('createRouter', () => {
},
},
proxy: {
- '/test': {
- target: 'https://example.com',
- headers: {
- Authorization: 'Bearer supersecret',
+ endpoints: {
+ '/test': {
+ target: 'https://example.com',
+ headers: {
+ Authorization: 'Bearer supersecret',
+ },
},
},
},
@@ -68,6 +71,32 @@ describe('createRouter', () => {
expect(router).toBeDefined();
});
+ it('supports deprecated proxy configuration', async () => {
+ const router = await createRouter({
+ config: mockServices.rootConfig({
+ data: {
+ proxy: {
+ '/test': {
+ target: 'https://example.com',
+ headers: {
+ Authorization: 'Bearer supersecret',
+ },
+ },
+ },
+ },
+ }),
+ logger,
+ discovery,
+ });
+ expect(router).toBeDefined();
+ expect(mockCreateProxyMiddleware).toHaveBeenCalledWith(
+ expect.any(Function),
+ expect.objectContaining({
+ target: 'https://example.com',
+ }),
+ );
+ });
+
it('revives request bodies when set', async () => {
const router = await createRouter({
config,
@@ -112,9 +141,11 @@ describe('createRouter', () => {
},
// no target would cause the buildMiddleware to fail
proxy: {
- '/test': {
- headers: {
- Authorization: 'Bearer supersecret',
+ endpoints: {
+ '/test': {
+ headers: {
+ Authorization: 'Bearer supersecret',
+ },
},
},
},
@@ -141,9 +172,11 @@ describe('createRouter', () => {
},
// no target would cause the buildMiddleware to fail
proxy: {
- '/test': {
- headers: {
- Authorization: 'Bearer supersecret',
+ endpoints: {
+ '/test': {
+ headers: {
+ Authorization: 'Bearer supersecret',
+ },
},
},
},
diff --git a/plugins/proxy-backend/src/service/router.ts b/plugins/proxy-backend/src/service/router.ts
index 6912965659..61fddb60ed 100644
--- a/plugins/proxy-backend/src/service/router.ts
+++ b/plugins/proxy-backend/src/service/router.ts
@@ -191,6 +191,31 @@ export function buildMiddleware(
return createProxyMiddleware(filter, fullConfig);
}
+function readProxyConfig(config: Config, logger: Logger): unknown {
+ const endpoints = config.getOptionalConfig('proxy.endpoints')?.get();
+ if (endpoints) {
+ return endpoints;
+ }
+
+ const root = config.getOptionalConfig('proxy')?.get();
+ if (!root) {
+ return {};
+ }
+
+ const rootEndpoints = Object.fromEntries(
+ Object.entries(root).filter(([key]) => key.startsWith('/')),
+ );
+ if (Object.keys(rootEndpoints).length === 0) {
+ return {};
+ }
+
+ logger.warn(
+ "Configuring proxy endpoints in the root 'proxy' configuration is deprecated. Move this configuration to 'proxy.endpoints' instead.",
+ );
+
+ return rootEndpoints;
+}
+
/**
* Creates a new {@link https://expressjs.com/en/api.html#router | "express router"} that proxy each target configured under the `proxy` key of the config
* @example
@@ -215,25 +240,39 @@ export async function createRouter(
const router = Router();
let currentRouter = Router();
+ const skipInvalidProxies =
+ options.skipInvalidProxies ??
+ options.config.getOptionalBoolean('proxy.skipInvalidProxies') ??
+ false;
+ const reviveConsumedRequestBodies =
+ options.reviveConsumedRequestBodies ??
+ options.config.getOptionalBoolean('proxy.reviveConsumedRequestBodies') ??
+ false;
+ const proxyOptions = {
+ skipInvalidProxies,
+ reviveConsumedRequestBodies,
+ logger: options.logger,
+ };
+
const externalUrl = await options.discovery.getExternalBaseUrl('proxy');
const { pathname: pathPrefix } = new URL(externalUrl);
- const proxyConfig = options.config.getOptional('proxy') ?? {};
- configureMiddlewares(options, currentRouter, pathPrefix, proxyConfig);
+ const proxyConfig = readProxyConfig(options.config, options.logger);
+ configureMiddlewares(proxyOptions, currentRouter, pathPrefix, proxyConfig);
router.use((...args) => currentRouter(...args));
if (options.config.subscribe) {
let currentKey = JSON.stringify(proxyConfig);
options.config.subscribe(() => {
- const newProxyConfig = options.config.getOptional('proxy') ?? {};
+ const newProxyConfig = readProxyConfig(options.config, options.logger);
const newKey = JSON.stringify(newProxyConfig);
if (currentKey !== newKey) {
currentKey = newKey;
currentRouter = Router();
configureMiddlewares(
- options,
+ proxyOptions,
currentRouter,
pathPrefix,
newProxyConfig,
@@ -246,7 +285,11 @@ export async function createRouter(
}
function configureMiddlewares(
- options: RouterOptions,
+ options: {
+ reviveConsumedRequestBodies: boolean;
+ skipInvalidProxies: boolean;
+ logger: Logger;
+ },
router: express.Router,
pathPrefix: string,
proxyConfig: any,
diff --git a/plugins/puppetdb/CHANGELOG.md b/plugins/puppetdb/CHANGELOG.md
index dbd5fde6df..5e84652c40 100644
--- a/plugins/puppetdb/CHANGELOG.md
+++ b/plugins/puppetdb/CHANGELOG.md
@@ -1,5 +1,12 @@
# @backstage/plugin-puppetdb
+## 0.1.4-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
## 0.1.4-next.0
### Patch Changes
diff --git a/plugins/puppetdb/package.json b/plugins/puppetdb/package.json
index ef9370200e..d7c7209744 100644
--- a/plugins/puppetdb/package.json
+++ b/plugins/puppetdb/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-puppetdb",
"description": "Backstage plugin to visualize resource information and Puppet facts from PuppetDB.",
- "version": "0.1.4-next.0",
+ "version": "0.1.4-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/rollbar-backend/CHANGELOG.md b/plugins/rollbar-backend/CHANGELOG.md
index 37f7d42ec8..5b45b7806f 100644
--- a/plugins/rollbar-backend/CHANGELOG.md
+++ b/plugins/rollbar-backend/CHANGELOG.md
@@ -1,5 +1,20 @@
# @backstage/plugin-rollbar-backend
+## 0.1.45-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.2
+
+## 0.1.45-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/config@1.0.8
+
## 0.1.45-next.0
### Patch Changes
diff --git a/plugins/rollbar-backend/package.json b/plugins/rollbar-backend/package.json
index e19f4c43d0..702c90d176 100644
--- a/plugins/rollbar-backend/package.json
+++ b/plugins/rollbar-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-rollbar-backend",
"description": "A Backstage backend plugin that integrates towards Rollbar",
- "version": "0.1.45-next.0",
+ "version": "0.1.45-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/rollbar/CHANGELOG.md b/plugins/rollbar/CHANGELOG.md
index 6bacf806bc..06c1cd8ef5 100644
--- a/plugins/rollbar/CHANGELOG.md
+++ b/plugins/rollbar/CHANGELOG.md
@@ -1,5 +1,12 @@
# @backstage/plugin-rollbar
+## 0.4.21-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
## 0.4.21-next.0
### Patch Changes
diff --git a/plugins/rollbar/package.json b/plugins/rollbar/package.json
index 8c17895e48..db73661f59 100644
--- a/plugins/rollbar/package.json
+++ b/plugins/rollbar/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-rollbar",
"description": "A Backstage plugin that integrates towards Rollbar",
- "version": "0.4.21-next.0",
+ "version": "0.4.21-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/scaffolder-backend-module-confluence-to-markdown/CHANGELOG.md b/plugins/scaffolder-backend-module-confluence-to-markdown/CHANGELOG.md
index f48ac96986..09d7eb149f 100644
--- a/plugins/scaffolder-backend-module-confluence-to-markdown/CHANGELOG.md
+++ b/plugins/scaffolder-backend-module-confluence-to-markdown/CHANGELOG.md
@@ -1,5 +1,28 @@
# @backstage/plugin-scaffolder-backend-module-confluence-to-markdown
+## 0.2.1-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-node@0.1.6-next.2
+ - @backstage/backend-common@0.19.2-next.2
+
+## 0.2.1-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- 0d347efc8f18: Use `fetchContents` directly instead of a `fetchPlainAction`
+- c186c631b429: Import helpers from the node package instead of the backend package
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-scaffolder-node@0.1.6-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+
## 0.2.1-next.0
### Patch Changes
diff --git a/plugins/scaffolder-backend-module-confluence-to-markdown/package.json b/plugins/scaffolder-backend-module-confluence-to-markdown/package.json
index 9d9efdb5e1..e51ca9eeb8 100644
--- a/plugins/scaffolder-backend-module-confluence-to-markdown/package.json
+++ b/plugins/scaffolder-backend-module-confluence-to-markdown/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-scaffolder-backend-module-confluence-to-markdown",
"description": "The confluence-to-markdown module for @backstage/plugin-scaffolder-backend",
- "version": "0.2.1-next.0",
+ "version": "0.2.1-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -13,6 +13,12 @@
"backstage": {
"role": "backend-plugin-module"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/scaffolder-backend-module-confluence-to-markdown"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
@@ -28,7 +34,6 @@
"@backstage/config": "workspace:^",
"@backstage/errors": "workspace:^",
"@backstage/integration": "workspace:^",
- "@backstage/plugin-scaffolder-backend": "workspace:^",
"@backstage/plugin-scaffolder-node": "workspace:^",
"@backstage/types": "workspace:^",
"fs-extra": "10.1.0",
diff --git a/plugins/scaffolder-backend-module-confluence-to-markdown/src/actions/confluence/confluenceToMarkdown.test.ts b/plugins/scaffolder-backend-module-confluence-to-markdown/src/actions/confluence/confluenceToMarkdown.test.ts
index b3e2925265..4e4f3091f1 100644
--- a/plugins/scaffolder-backend-module-confluence-to-markdown/src/actions/confluence/confluenceToMarkdown.test.ts
+++ b/plugins/scaffolder-backend-module-confluence-to-markdown/src/actions/confluence/confluenceToMarkdown.test.ts
@@ -157,7 +157,7 @@ describe('confluence:transform:markdown', () => {
expect(logger.info).toHaveBeenCalledWith(
`Fetching the mkdocs.yml catalog from https://notreal.github.com/space/backstage/mkdocs.yml`,
);
- expect(logger.info).toHaveBeenCalledTimes(6);
+ expect(logger.info).toHaveBeenCalledTimes(5);
expect(createWriteStream).toHaveBeenCalledTimes(1);
expect(readFile).toHaveBeenCalledTimes(1);
expect(writeFile).toHaveBeenCalledTimes(1);
@@ -204,7 +204,7 @@ describe('confluence:transform:markdown', () => {
expect(logger.info).toHaveBeenCalledWith(
`Fetching the mkdocs.yml catalog from https://notreal.github.com/space/backstage/mkdocs.yml`,
);
- expect(logger.info).toHaveBeenCalledTimes(6);
+ expect(logger.info).toHaveBeenCalledTimes(5);
expect(createWriteStream).not.toHaveBeenCalled();
expect(readFile).toHaveBeenCalledTimes(1);
diff --git a/plugins/scaffolder-backend-module-confluence-to-markdown/src/actions/confluence/confluenceToMarkdown.ts b/plugins/scaffolder-backend-module-confluence-to-markdown/src/actions/confluence/confluenceToMarkdown.ts
index 9b666fd99e..71a3af11ae 100644
--- a/plugins/scaffolder-backend-module-confluence-to-markdown/src/actions/confluence/confluenceToMarkdown.ts
+++ b/plugins/scaffolder-backend-module-confluence-to-markdown/src/actions/confluence/confluenceToMarkdown.ts
@@ -13,11 +13,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
import { Config } from '@backstage/config';
import { UrlReader } from '@backstage/backend-common';
import { ScmIntegrations } from '@backstage/integration';
-import { createFetchPlainAction } from '@backstage/plugin-scaffolder-backend';
-import { createTemplateAction } from '@backstage/plugin-scaffolder-node';
+import {
+ createTemplateAction,
+ fetchContents,
+} from '@backstage/plugin-scaffolder-node';
import { InputError, ConflictError } from '@backstage/errors';
import { NodeHtmlMarkdown } from 'node-html-markdown';
import fs from 'fs-extra';
@@ -41,7 +44,6 @@ export const createConfluenceToMarkdownAction = (options: {
config: Config;
}) => {
const { config, reader, integrations } = options;
- const fetchPlainAction = createFetchPlainAction({ reader, integrations });
type Obj = {
[key: string]: string;
};
@@ -82,18 +84,18 @@ export const createConfluenceToMarkdownAction = (options: {
parsedRepoUrl.filepath.lastIndexOf('/') + 1,
);
const dirPath = ctx.workspacePath;
+ const repoFileDir = `${dirPath}/${parsedRepoUrl.filepath}`;
let productArray: string[][] = [];
ctx.logger.info(`Fetching the mkdocs.yml catalog from ${repoUrl}`);
// This grabs the files from Github
- const repoFileDir = `${dirPath}/${parsedRepoUrl.filepath}`;
- await fetchPlainAction.handler({
- ...ctx,
- input: {
- url: `https://${parsedRepoUrl.resource}/${parsedRepoUrl.owner}/${parsedRepoUrl.name}`,
- targetPath: dirPath,
- },
+ await fetchContents({
+ reader,
+ integrations,
+ baseUrl: ctx.templateInfo?.baseUrl,
+ fetchUrl: `https://${parsedRepoUrl.resource}/${parsedRepoUrl.owner}/${parsedRepoUrl.name}`,
+ outputPath: ctx.workspacePath,
});
for (const url of confluenceUrls) {
diff --git a/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md b/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md
index 390e1ae7bd..665f08bd8b 100644
--- a/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md
+++ b/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md
@@ -1,5 +1,27 @@
# @backstage/plugin-scaffolder-backend-module-cookiecutter
+## 0.2.24-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-node@0.1.6-next.2
+ - @backstage/backend-common@0.19.2-next.2
+
+## 0.2.24-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- c186c631b429: Import helpers from the node package instead of the backend package
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-scaffolder-node@0.1.6-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+
## 0.2.24-next.0
### Patch Changes
diff --git a/plugins/scaffolder-backend-module-cookiecutter/package.json b/plugins/scaffolder-backend-module-cookiecutter/package.json
index 22cb5b66a6..c995cdc3f4 100644
--- a/plugins/scaffolder-backend-module-cookiecutter/package.json
+++ b/plugins/scaffolder-backend-module-cookiecutter/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-scaffolder-backend-module-cookiecutter",
"description": "A module for the scaffolder backend that lets you template projects using cookiecutter",
- "version": "0.2.24-next.0",
+ "version": "0.2.24-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -13,6 +13,12 @@
"backstage": {
"role": "backend-plugin-module"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/scaffolder-backend-module-cookiecutter"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
@@ -27,7 +33,6 @@
"@backstage/config": "workspace:^",
"@backstage/errors": "workspace:^",
"@backstage/integration": "workspace:^",
- "@backstage/plugin-scaffolder-backend": "workspace:^",
"@backstage/plugin-scaffolder-node": "workspace:^",
"@backstage/types": "workspace:^",
"command-exists": "^1.2.9",
diff --git a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts
index 9d7f06afc8..f944b6e598 100644
--- a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts
+++ b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts
@@ -33,8 +33,8 @@ const executeShellCommand = jest.fn();
const commandExists = jest.fn();
const fetchContents = jest.fn();
-jest.mock('@backstage/plugin-scaffolder-backend', () => ({
- ...jest.requireActual('@backstage/plugin-scaffolder-backend'),
+jest.mock('@backstage/plugin-scaffolder-node', () => ({
+ ...jest.requireActual('@backstage/plugin-scaffolder-node'),
fetchContents: (...args: any[]) => fetchContents(...args),
executeShellCommand: (...args: any[]) => executeShellCommand(...args),
}));
diff --git a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.ts b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.ts
index b63a044a20..8b084e6377 100644
--- a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.ts
+++ b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.ts
@@ -27,10 +27,10 @@ import fs from 'fs-extra';
import path, { resolve as resolvePath } from 'path';
import { Writable } from 'stream';
import {
+ createTemplateAction,
fetchContents,
executeShellCommand,
-} from '@backstage/plugin-scaffolder-backend';
-import { createTemplateAction } from '@backstage/plugin-scaffolder-node';
+} from '@backstage/plugin-scaffolder-node';
export class CookiecutterRunner {
private readonly containerRunner?: ContainerRunner;
diff --git a/plugins/scaffolder-backend-module-gitlab/CHANGELOG.md b/plugins/scaffolder-backend-module-gitlab/CHANGELOG.md
index 95b481acb0..bb47bb5ad0 100644
--- a/plugins/scaffolder-backend-module-gitlab/CHANGELOG.md
+++ b/plugins/scaffolder-backend-module-gitlab/CHANGELOG.md
@@ -1,5 +1,22 @@
# @backstage/plugin-scaffolder-backend-module-gitlab
+## 0.2.3-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-node@0.1.6-next.2
+
+## 0.2.3-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-node@0.1.6-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+
## 0.2.3-next.0
### Patch Changes
diff --git a/plugins/scaffolder-backend-module-gitlab/package.json b/plugins/scaffolder-backend-module-gitlab/package.json
index 5099bb473b..5a540e7094 100644
--- a/plugins/scaffolder-backend-module-gitlab/package.json
+++ b/plugins/scaffolder-backend-module-gitlab/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-scaffolder-backend-module-gitlab",
- "version": "0.2.3-next.0",
+ "version": "0.2.3-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/scaffolder-backend-module-rails/CHANGELOG.md b/plugins/scaffolder-backend-module-rails/CHANGELOG.md
index ddf314f2bf..eea495e84e 100644
--- a/plugins/scaffolder-backend-module-rails/CHANGELOG.md
+++ b/plugins/scaffolder-backend-module-rails/CHANGELOG.md
@@ -1,5 +1,27 @@
# @backstage/plugin-scaffolder-backend-module-rails
+## 0.4.17-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-node@0.1.6-next.2
+ - @backstage/backend-common@0.19.2-next.2
+
+## 0.4.17-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- c186c631b429: Import helpers from the node package instead of the backend package
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-scaffolder-node@0.1.6-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+
## 0.4.17-next.0
### Patch Changes
diff --git a/plugins/scaffolder-backend-module-rails/package.json b/plugins/scaffolder-backend-module-rails/package.json
index d19c0a7f91..7d44215e18 100644
--- a/plugins/scaffolder-backend-module-rails/package.json
+++ b/plugins/scaffolder-backend-module-rails/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-scaffolder-backend-module-rails",
"description": "A module for the scaffolder backend that lets you template projects using Rails",
- "version": "0.4.17-next.0",
+ "version": "0.4.17-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -13,6 +13,12 @@
"backstage": {
"role": "backend-plugin-module"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/scaffolder-backend-module-rails"
+ },
"scripts": {
"build": "backstage-cli package build",
"start": "backstage-cli package start",
@@ -27,7 +33,6 @@
"@backstage/config": "workspace:^",
"@backstage/errors": "workspace:^",
"@backstage/integration": "workspace:^",
- "@backstage/plugin-scaffolder-backend": "workspace:^",
"@backstage/plugin-scaffolder-node": "workspace:^",
"@backstage/types": "workspace:^",
"command-exists": "^1.2.9",
diff --git a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.test.ts b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.test.ts
index 37d0bcac4a..2a93644f57 100644
--- a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.test.ts
+++ b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.test.ts
@@ -15,8 +15,8 @@
*/
const mockRailsTemplater = { run: jest.fn() };
-jest.mock('@backstage/plugin-scaffolder-backend', () => ({
- ...jest.requireActual('@backstage/plugin-scaffolder-backend'),
+jest.mock('@backstage/plugin-scaffolder-node', () => ({
+ ...jest.requireActual('@backstage/plugin-scaffolder-node'),
fetchContents: jest.fn(),
}));
jest.mock('./railsNewRunner', () => {
@@ -39,7 +39,7 @@ import os from 'os';
import { resolve as resolvePath } from 'path';
import { PassThrough } from 'stream';
import { createFetchRailsAction } from './index';
-import { fetchContents } from '@backstage/plugin-scaffolder-backend';
+import { fetchContents } from '@backstage/plugin-scaffolder-node';
describe('fetch:rails', () => {
const integrations = ScmIntegrations.fromConfig(
diff --git a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.ts b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.ts
index 2a8a2554a2..2b34f978e3 100644
--- a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.ts
+++ b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.ts
@@ -19,8 +19,10 @@ import { JsonObject } from '@backstage/types';
import { InputError } from '@backstage/errors';
import { ScmIntegrations } from '@backstage/integration';
import fs from 'fs-extra';
-import { fetchContents } from '@backstage/plugin-scaffolder-backend';
-import { createTemplateAction } from '@backstage/plugin-scaffolder-node';
+import {
+ createTemplateAction,
+ fetchContents,
+} from '@backstage/plugin-scaffolder-node';
import { resolve as resolvePath } from 'path';
import { RailsNewRunner } from './railsNewRunner';
diff --git a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts
index 433a1b7965..d7e7b12158 100644
--- a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts
+++ b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts
@@ -17,7 +17,7 @@
const executeShellCommand = jest.fn();
const commandExists = jest.fn();
-jest.mock('@backstage/plugin-scaffolder-backend', () => ({
+jest.mock('@backstage/plugin-scaffolder-node', () => ({
executeShellCommand: (...args: any[]) => executeShellCommand(...args),
}));
jest.mock(
diff --git a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.ts b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.ts
index 0ed02e293c..7e78c25d62 100644
--- a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.ts
+++ b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.ts
@@ -17,7 +17,7 @@
import { ContainerRunner } from '@backstage/backend-common';
import fs from 'fs-extra';
import path from 'path';
-import { executeShellCommand } from '@backstage/plugin-scaffolder-backend';
+import { executeShellCommand } from '@backstage/plugin-scaffolder-node';
import commandExists from 'command-exists';
import {
railsArgumentResolver,
diff --git a/plugins/scaffolder-backend-module-sentry/CHANGELOG.md b/plugins/scaffolder-backend-module-sentry/CHANGELOG.md
index 47c9c7ec51..d414f1cf58 100644
--- a/plugins/scaffolder-backend-module-sentry/CHANGELOG.md
+++ b/plugins/scaffolder-backend-module-sentry/CHANGELOG.md
@@ -1,5 +1,22 @@
# @backstage/plugin-scaffolder-backend-module-sentry
+## 0.1.8-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-node@0.1.6-next.2
+
+## 0.1.8-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/plugin-scaffolder-node@0.1.6-next.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+
## 0.1.8-next.0
### Patch Changes
diff --git a/plugins/scaffolder-backend-module-sentry/package.json b/plugins/scaffolder-backend-module-sentry/package.json
index db02c35513..222c7fd484 100644
--- a/plugins/scaffolder-backend-module-sentry/package.json
+++ b/plugins/scaffolder-backend-module-sentry/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-scaffolder-backend-module-sentry",
- "version": "0.1.8-next.0",
+ "version": "0.1.8-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -12,6 +12,12 @@
"backstage": {
"role": "backend-plugin-module"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/scaffolder-backend-module-sentry"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
diff --git a/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md b/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md
index eed4d1a4c0..284494c3c8 100644
--- a/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md
+++ b/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md
@@ -1,5 +1,22 @@
# @backstage/plugin-scaffolder-backend-module-yeoman
+## 0.2.21-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-scaffolder-node@0.1.6-next.2
+
+## 0.2.21-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/plugin-scaffolder-node@0.1.6-next.1
+ - @backstage/config@1.0.8
+ - @backstage/types@1.1.0
+
## 0.2.21-next.0
### Patch Changes
diff --git a/plugins/scaffolder-backend-module-yeoman/package.json b/plugins/scaffolder-backend-module-yeoman/package.json
index 4e812f801d..5b4ce071f6 100644
--- a/plugins/scaffolder-backend-module-yeoman/package.json
+++ b/plugins/scaffolder-backend-module-yeoman/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-scaffolder-backend-module-yeoman",
- "version": "0.2.21-next.0",
+ "version": "0.2.21-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -12,6 +12,12 @@
"backstage": {
"role": "backend-plugin-module"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/scaffolder-backend-module-yeoman"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
diff --git a/plugins/scaffolder-backend/CHANGELOG.md b/plugins/scaffolder-backend/CHANGELOG.md
index 477d7ebb5e..a5df5d6138 100644
--- a/plugins/scaffolder-backend/CHANGELOG.md
+++ b/plugins/scaffolder-backend/CHANGELOG.md
@@ -1,5 +1,46 @@
# @backstage/plugin-scaffolder-backend
+## 1.15.2-next.2
+
+### Patch Changes
+
+- 33c76caef72a: Added examples for the fs:delete and fs:rename actions
+- 0b1d775be05b: Adds examples to a few scaffolder actions.
+- Updated dependencies
+ - @backstage/plugin-catalog-backend@1.12.0-next.2
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/plugin-scaffolder-node@0.1.6-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+ - @backstage/plugin-permission-node@0.7.11-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+
+## 1.15.2-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- d3b31a791eb1: Deprecated `executeShellCommand`, `RunCommandOptions`, and `fetchContents` from `@backstage/plugin-scaffolder-backend`, since they are useful for Scaffolder modules (who should not be importing from the plugin package itself). You should now import these from `@backstage/plugin-scaffolder-backend-node` instead. `RunCommandOptions` was renamed in the Node package as `ExecuteShellCommandOptions`, for consistency.
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-catalog-backend@1.12.0-next.1
+ - @backstage/plugin-scaffolder-node@0.1.6-next.1
+ - @backstage/plugin-catalog-node@1.4.1-next.1
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/plugin-permission-node@0.7.11-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+ - @backstage/plugin-catalog-common@1.0.15
+ - @backstage/plugin-permission-common@0.7.7
+ - @backstage/plugin-scaffolder-common@1.3.2
+
## 1.15.2-next.0
### Patch Changes
diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md
index 1957c3b3d2..4fe961056f 100644
--- a/plugins/scaffolder-backend/api-report.md
+++ b/plugins/scaffolder-backend/api-report.md
@@ -3,8 +3,6 @@
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
-///
-
import { ActionContext as ActionContext_2 } from '@backstage/plugin-scaffolder-node';
import { CatalogApi } from '@backstage/catalog-client';
import { CatalogProcessor } from '@backstage/plugin-catalog-node';
@@ -13,7 +11,10 @@ import { Config } from '@backstage/config';
import { createPullRequest } from 'octokit-plugin-create-pull-request';
import { Duration } from 'luxon';
import { Entity } from '@backstage/catalog-model';
+import { executeShellCommand as executeShellCommand_2 } from '@backstage/plugin-scaffolder-node';
+import { ExecuteShellCommandOptions } from '@backstage/plugin-scaffolder-node';
import express from 'express';
+import { fetchContents as fetchContents_2 } from '@backstage/plugin-scaffolder-node';
import { GithubCredentialsProvider } from '@backstage/integration';
import { HumanDuration } from '@backstage/types';
import { IdentityApi } from '@backstage/plugin-auth-node';
@@ -34,7 +35,6 @@ import { RESOURCE_TYPE_SCAFFOLDER_TEMPLATE } from '@backstage/plugin-scaffolder-
import { Schema } from 'jsonschema';
import { ScmIntegrationRegistry } from '@backstage/integration';
import { ScmIntegrations } from '@backstage/integration';
-import { SpawnOptionsWithoutStdio } from 'child_process';
import { TaskSecrets as TaskSecrets_2 } from '@backstage/plugin-scaffolder-node';
import { TaskSpec } from '@backstage/plugin-scaffolder-common';
import { TaskSpecV1beta3 } from '@backstage/plugin-scaffolder-common';
@@ -43,7 +43,6 @@ import { TemplateActionOptions } from '@backstage/plugin-scaffolder-node';
import { TemplateEntityStepV1beta3 } from '@backstage/plugin-scaffolder-common';
import { TemplateParametersV1beta3 } from '@backstage/plugin-scaffolder-common';
import { UrlReader } from '@backstage/backend-common';
-import { Writable } from 'stream';
import { ZodType } from 'zod';
import { ZodTypeDef } from 'zod';
@@ -816,17 +815,11 @@ export type DatabaseTaskStoreOptions = {
database: PluginDatabaseManager | Knex;
};
-// @public
-export const executeShellCommand: (options: RunCommandOptions) => Promise;
+// @public @deprecated
+export const executeShellCommand: typeof executeShellCommand_2;
-// @public
-export function fetchContents(options: {
- reader: UrlReader;
- integrations: ScmIntegrations;
- baseUrl?: string;
- fetchUrl?: string;
- outputPath: string;
-}): Promise;
+// @public @deprecated
+export const fetchContents: typeof fetchContents_2;
// @public (undocumented)
export type OctokitWithPullRequestPluginClient = Octokit & {
@@ -876,13 +869,8 @@ export interface RouterOptions {
taskWorkers?: number;
}
-// @public (undocumented)
-export type RunCommandOptions = {
- command: string;
- args: string[];
- options?: SpawnOptionsWithoutStdio;
- logStream?: Writable;
-};
+// @public @deprecated
+export type RunCommandOptions = ExecuteShellCommandOptions;
// @public (undocumented)
export class ScaffolderEntitiesProcessor implements CatalogProcessor {
diff --git a/plugins/scaffolder-backend/package.json b/plugins/scaffolder-backend/package.json
index 0978a828bb..9376cabf17 100644
--- a/plugins/scaffolder-backend/package.json
+++ b/plugins/scaffolder-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-scaffolder-backend",
"description": "The Backstage backend plugin that helps you create new things",
- "version": "1.15.2-next.0",
+ "version": "1.15.2-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -110,7 +110,7 @@
"@types/nunjucks": "^3.1.4",
"@types/supertest": "^2.0.8",
"@types/zen-observable": "^0.8.0",
- "esbuild": "^0.18.0",
+ "esbuild": "^0.19.0",
"jest-when": "^3.1.0",
"mock-fs": "^5.1.0",
"msw": "^1.0.0",
diff --git a/plugins/scaffolder-backend/src/ScaffolderPlugin.ts b/plugins/scaffolder-backend/src/ScaffolderPlugin.ts
index 90dcc868e2..f361bfcdf9 100644
--- a/plugins/scaffolder-backend/src/ScaffolderPlugin.ts
+++ b/plugins/scaffolder-backend/src/ScaffolderPlugin.ts
@@ -80,7 +80,7 @@ export const scaffolderPlugin = createBackendPlugin(
env.registerInit({
deps: {
logger: coreServices.logger,
- config: coreServices.config,
+ config: coreServices.rootConfig,
reader: coreServices.urlReader,
permissions: coreServices.permissions,
database: coreServices.database,
diff --git a/plugins/scaffolder-backend/src/deprecated.ts b/plugins/scaffolder-backend/src/deprecated.ts
index f8358b9071..d1a0f9ad5b 100644
--- a/plugins/scaffolder-backend/src/deprecated.ts
+++ b/plugins/scaffolder-backend/src/deprecated.ts
@@ -19,6 +19,9 @@ import {
createTemplateAction as createTemplateActionNode,
TaskSecrets as TaskSecretsNode,
TemplateAction as TemplateActionNode,
+ executeShellCommand as executeShellCommandNode,
+ ExecuteShellCommandOptions as ExecuteShellCommandOptionsNode,
+ fetchContents as fetchContentsNode,
} from '@backstage/plugin-scaffolder-node';
import { JsonObject } from '@backstage/types';
@@ -47,3 +50,28 @@ export type TaskSecrets = TaskSecretsNode;
*/
export type TemplateAction =
TemplateActionNode;
+
+/**
+ * Options for {@link executeShellCommand}.
+ *
+ * @public
+ * @deprecated Use `ExecuteShellCommandOptions` from `@backstage/plugin-scaffolder-node` instead
+ */
+export type RunCommandOptions = ExecuteShellCommandOptionsNode;
+
+/**
+ * Run a command in a sub-process, normally a shell command.
+ *
+ * @public
+ * @deprecated Use `executeShellCommand` from `@backstage/plugin-scaffolder-node` instead
+ */
+export const executeShellCommand = executeShellCommandNode;
+
+/**
+ * A helper function that reads the contents of a directory from the given URL.
+ * Can be used in your own actions, and also used behind fetch:template and fetch:plain
+ *
+ * @public
+ * @deprecated Use `fetchContents` from `@backstage/plugin-scaffolder-node` instead
+ */
+export const fetchContents = fetchContentsNode;
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/fetch.examples.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/fetch.examples.test.ts
new file mode 100644
index 0000000000..161ff9d1de
--- /dev/null
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/fetch.examples.test.ts
@@ -0,0 +1,78 @@
+/*
+ * Copyright 2021 The 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 { PassThrough } from 'stream';
+import os from 'os';
+import { getVoidLogger } from '@backstage/backend-common';
+import { CatalogApi } from '@backstage/catalog-client';
+import { Entity } from '@backstage/catalog-model';
+import { createFetchCatalogEntityAction } from './fetch';
+import { examples } from './fetch.examples';
+import yaml from 'yaml';
+
+describe('catalog:fetch examples', () => {
+ const getEntityByRef = jest.fn();
+ const getEntitiesByRefs = jest.fn();
+
+ const catalogClient = {
+ getEntityByRef: getEntityByRef,
+ getEntitiesByRefs: getEntitiesByRefs,
+ };
+
+ const action = createFetchCatalogEntityAction({
+ catalogClient: catalogClient as unknown as CatalogApi,
+ });
+
+ const mockContext = {
+ workspacePath: os.tmpdir(),
+ logger: getVoidLogger(),
+ logStream: new PassThrough(),
+ output: jest.fn(),
+ createTemporaryDirectory: jest.fn(),
+ secrets: { backstageToken: 'secret' },
+ };
+ beforeEach(() => {
+ jest.resetAllMocks();
+ });
+
+ describe('fetch single entity', () => {
+ it('should return entity from catalog', async () => {
+ getEntityByRef.mockReturnValueOnce({
+ metadata: {
+ namespace: 'default',
+ name: 'name',
+ },
+ kind: 'Component',
+ } as Entity);
+
+ await action.handler({
+ ...mockContext,
+ input: yaml.parse(examples[0].example).steps[0].input,
+ });
+
+ expect(getEntityByRef).toHaveBeenCalledWith('component:default/name', {
+ token: 'secret',
+ });
+ expect(mockContext.output).toHaveBeenCalledWith('entity', {
+ metadata: {
+ namespace: 'default',
+ name: 'name',
+ },
+ kind: 'Component',
+ });
+ });
+ });
+});
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/fetch.examples.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/fetch.examples.ts
new file mode 100644
index 0000000000..6459b17a71
--- /dev/null
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/fetch.examples.ts
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2021 The 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 { TemplateExample } from '@backstage/plugin-scaffolder-node';
+import yaml from 'yaml';
+
+export const examples: TemplateExample[] = [
+ {
+ description: 'Fetch entity by reference',
+ example: yaml.stringify({
+ steps: [
+ {
+ action: 'catalog:fetch',
+ id: 'fetch',
+ name: 'Fetch catalog entity',
+ input: {
+ entityRef: 'component:default/name',
+ },
+ },
+ ],
+ }),
+ },
+ {
+ description: 'Fetch multiple entities by reference',
+ example: yaml.stringify({
+ steps: [
+ {
+ action: 'catalog:fetch',
+ id: 'fetchMultiple',
+ name: 'Fetch catalog entities',
+ input: {
+ entityRefs: ['component:default/name'],
+ },
+ },
+ ],
+ }),
+ },
+];
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/fetch.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/fetch.ts
index 437da8ae73..75c4bc94ce 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/fetch.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/fetch.ts
@@ -16,45 +16,12 @@
import { CatalogApi } from '@backstage/catalog-client';
import { createTemplateAction } from '@backstage/plugin-scaffolder-node';
-import yaml from 'yaml';
import { z } from 'zod';
import { parseEntityRef, stringifyEntityRef } from '@backstage/catalog-model';
+import { examples } from './fetch.examples';
const id = 'catalog:fetch';
-const examples = [
- {
- description: 'Fetch entity by reference',
- example: yaml.stringify({
- steps: [
- {
- action: id,
- id: 'fetch',
- name: 'Fetch catalog entity',
- input: {
- entityRef: 'component:default/name',
- },
- },
- ],
- }),
- },
- {
- description: 'Fetch multiple entities by referencse',
- example: yaml.stringify({
- steps: [
- {
- action: id,
- id: 'fetchMultiple',
- name: 'Fetch catalog entities',
- input: {
- entityRefs: ['component:default/name'],
- },
- },
- ],
- }),
- },
-];
-
/**
* Returns entity or entities from the catalog by entity reference(s).
*
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/register.examples.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/register.examples.test.ts
new file mode 100644
index 0000000000..eb5aa88c0f
--- /dev/null
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/register.examples.test.ts
@@ -0,0 +1,108 @@
+/*
+ * Copyright 2021 The 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 { PassThrough } from 'stream';
+import os from 'os';
+import { getVoidLogger } from '@backstage/backend-common';
+import { CatalogApi } from '@backstage/catalog-client';
+import { ConfigReader } from '@backstage/config';
+import { ScmIntegrations } from '@backstage/integration';
+import { createCatalogRegisterAction } from './register';
+import { Entity } from '@backstage/catalog-model';
+import { examples } from './register.examples';
+import yaml from 'yaml';
+
+describe('catalog:register', () => {
+ const integrations = ScmIntegrations.fromConfig(
+ new ConfigReader({
+ integrations: {
+ github: [{ host: 'github.com', token: 'token' }],
+ },
+ }),
+ );
+
+ const addLocation = jest.fn();
+ const catalogClient = {
+ addLocation: addLocation,
+ };
+
+ const action = createCatalogRegisterAction({
+ integrations,
+ catalogClient: catalogClient as unknown as CatalogApi,
+ });
+
+ const mockContext = {
+ workspacePath: os.tmpdir(),
+ logger: getVoidLogger(),
+ logStream: new PassThrough(),
+ output: jest.fn(),
+ createTemporaryDirectory: jest.fn(),
+ };
+ beforeEach(() => {
+ jest.resetAllMocks();
+ });
+
+ it('should register location in catalog', async () => {
+ addLocation
+ .mockResolvedValueOnce({
+ entities: [],
+ })
+ .mockResolvedValueOnce({
+ entities: [
+ {
+ metadata: {
+ namespace: 'default',
+ name: 'test',
+ },
+ kind: 'Component',
+ } as Entity,
+ ],
+ });
+ await action.handler({
+ ...mockContext,
+ input: yaml.parse(examples[0].example).steps[0].input,
+ });
+
+ expect(addLocation).toHaveBeenNthCalledWith(
+ 1,
+ {
+ type: 'url',
+ target:
+ 'http://github.com/backstage/backstage/blob/master/catalog-info.yaml',
+ },
+ {},
+ );
+ expect(addLocation).toHaveBeenNthCalledWith(
+ 2,
+ {
+ dryRun: true,
+ type: 'url',
+ target:
+ 'http://github.com/backstage/backstage/blob/master/catalog-info.yaml',
+ },
+ {},
+ );
+
+ expect(mockContext.output).toHaveBeenCalledWith(
+ 'entityRef',
+ 'component:default/test',
+ );
+ expect(mockContext.output).toHaveBeenCalledWith(
+ 'catalogInfoUrl',
+ 'http://github.com/backstage/backstage/blob/master/catalog-info.yaml',
+ );
+ });
+});
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/register.examples.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/register.examples.ts
new file mode 100644
index 0000000000..198ff52085
--- /dev/null
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/register.examples.ts
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2021 The 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 { TemplateExample } from '@backstage/plugin-scaffolder-node';
+import yaml from 'yaml';
+
+export const examples: TemplateExample[] = [
+ {
+ description: 'Register with the catalog',
+ example: yaml.stringify({
+ steps: [
+ {
+ action: 'catalog:register',
+ id: 'register-with-catalog',
+ name: 'Register with the catalog',
+ input: {
+ catalogInfoUrl:
+ 'http://github.com/backstage/backstage/blob/master/catalog-info.yaml',
+ },
+ },
+ ],
+ }),
+ },
+];
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/register.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/register.ts
index 3e35e16508..39372f484f 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/register.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/register.ts
@@ -19,29 +19,10 @@ import { ScmIntegrations } from '@backstage/integration';
import { CatalogApi } from '@backstage/catalog-client';
import { stringifyEntityRef, Entity } from '@backstage/catalog-model';
import { createTemplateAction } from '@backstage/plugin-scaffolder-node';
-import yaml from 'yaml';
+import { examples } from './register.examples';
const id = 'catalog:register';
-const examples = [
- {
- description: 'Register with the catalog',
- example: yaml.stringify({
- steps: [
- {
- action: id,
- id: 'register-with-catalog',
- name: 'Register with the catalog',
- input: {
- catalogInfoUrl:
- 'http://github.com/backstage/backstage/blob/master/catalog-info.yaml',
- },
- },
- ],
- }),
- },
-];
-
/**
* Registers entities from a catalog descriptor file in the workspace into the software catalog.
* @public
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/write.examples.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/write.examples.test.ts
new file mode 100644
index 0000000000..daa8f4f6b1
--- /dev/null
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/write.examples.test.ts
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2021 The 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 fs from 'fs-extra';
+
+jest.mock('fs-extra');
+
+const fsMock = fs as jest.Mocked;
+
+import { PassThrough } from 'stream';
+import os from 'os';
+import { getVoidLogger } from '@backstage/backend-common';
+import { createCatalogWriteAction } from './write';
+import { resolve as resolvePath } from 'path';
+import * as yaml from 'yaml';
+import { examples } from './write.examples';
+
+describe('catalog:write', () => {
+ const action = createCatalogWriteAction();
+
+ const mockContext = {
+ workspacePath: os.tmpdir(),
+ logger: getVoidLogger(),
+ logStream: new PassThrough(),
+ output: jest.fn(),
+ createTemporaryDirectory: jest.fn(),
+ };
+
+ beforeEach(() => {
+ jest.resetAllMocks();
+ });
+
+ it('should write the catalog-info.yml in the workspace', async () => {
+ const entity = {
+ apiVersion: 'backstage.io/v1alpha1',
+ kind: 'Component',
+ metadata: {
+ name: 'test',
+ annotations: {},
+ },
+ spec: {
+ type: 'service',
+ lifecycle: 'production',
+ owner: 'default/owner',
+ },
+ };
+
+ await action.handler({
+ ...mockContext,
+ input: yaml.parse(examples[0].example).steps[0].input,
+ });
+
+ expect(fsMock.writeFile).toHaveBeenCalledTimes(1);
+ expect(fsMock.writeFile).toHaveBeenCalledWith(
+ resolvePath(mockContext.workspacePath, 'catalog-info.yaml'),
+ yaml.stringify(entity),
+ );
+ });
+});
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/write.examples.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/write.examples.ts
new file mode 100644
index 0000000000..b66cff23d7
--- /dev/null
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/write.examples.ts
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2021 The 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 { TemplateExample } from '@backstage/plugin-scaffolder-node';
+import * as yaml from 'yaml';
+
+export const examples: TemplateExample[] = [
+ {
+ description: 'Write a catalog yaml file',
+ example: yaml.stringify({
+ steps: [
+ {
+ action: 'catalog:write',
+ id: 'create-catalog-info-file',
+ name: 'Create catalog file',
+ input: {
+ entity: {
+ apiVersion: 'backstage.io/v1alpha1',
+ kind: 'Component',
+ metadata: {
+ name: 'test',
+ annotations: {},
+ },
+ spec: {
+ type: 'service',
+ lifecycle: 'production',
+ owner: 'default/owner',
+ },
+ },
+ },
+ },
+ ],
+ }),
+ },
+];
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/write.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/write.ts
index 81fdc73e71..7663ad15c8 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/write.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/write.ts
@@ -19,39 +19,10 @@ import { createTemplateAction } from '@backstage/plugin-scaffolder-node';
import * as yaml from 'yaml';
import { resolveSafeChildPath } from '@backstage/backend-common';
import { z } from 'zod';
+import { examples } from './write.examples';
const id = 'catalog:write';
-const examples = [
- {
- description: 'Write a catalog yaml file',
- example: yaml.stringify({
- steps: [
- {
- action: id,
- id: 'create-catalog-info-file',
- name: 'Create catalog file',
- input: {
- entity: {
- apiVersion: 'backstage.io/v1alpha1',
- kind: 'Component',
- metadata: {
- name: 'test',
- annotations: {},
- },
- spec: {
- type: 'service',
- lifecycle: 'production',
- owner: 'default/owner',
- },
- },
- },
- },
- ],
- }),
- },
-];
-
/**
* Writes a catalog descriptor file containing the provided entity to a path in the workspace.
* @public
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/debug/log.examples.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/debug/log.examples.test.ts
new file mode 100644
index 0000000000..a7f5a1804a
--- /dev/null
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/debug/log.examples.test.ts
@@ -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 { getVoidLogger } from '@backstage/backend-common';
+import mockFs from 'mock-fs';
+import os from 'os';
+import { Writable } from 'stream';
+import { createDebugLogAction } from './log';
+import { join } from 'path';
+import yaml from 'yaml';
+import { examples } from './log.examples';
+
+describe('debug:log examples', () => {
+ const logStream = {
+ write: jest.fn(),
+ } as jest.Mocked> as jest.Mocked;
+
+ const mockTmpDir = os.tmpdir();
+ const mockContext = {
+ input: {},
+ baseUrl: 'somebase',
+ workspacePath: mockTmpDir,
+ logger: getVoidLogger(),
+ logStream,
+ output: jest.fn(),
+ createTemporaryDirectory: jest.fn().mockResolvedValue(mockTmpDir),
+ };
+
+ const action = createDebugLogAction();
+
+ beforeEach(() => {
+ mockFs({
+ [`${mockContext.workspacePath}/README.md`]: '',
+ [`${mockContext.workspacePath}/a-directory/index.md`]: '',
+ });
+ jest.resetAllMocks();
+ });
+
+ afterEach(() => {
+ mockFs.restore();
+ });
+
+ it('should log message', async () => {
+ const context = {
+ ...mockContext,
+ input: yaml.parse(examples[0].example).steps[0].input,
+ };
+
+ await action.handler(context);
+
+ expect(logStream.write).toHaveBeenCalledTimes(1);
+ expect(logStream.write).toHaveBeenCalledWith(
+ expect.stringContaining('Hello Backstage!'),
+ );
+ });
+
+ it('should log the workspace content, if active', async () => {
+ const context = {
+ ...mockContext,
+ input: yaml.parse(examples[1].example).steps[0].input,
+ };
+
+ await action.handler(context);
+
+ expect(logStream.write).toHaveBeenCalledTimes(1);
+ expect(logStream.write).toHaveBeenCalledWith(
+ expect.stringContaining('README.md'),
+ );
+ expect(logStream.write).toHaveBeenCalledWith(
+ expect.stringContaining(join('a-directory', 'index.md')),
+ );
+ });
+});
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/debug/log.examples.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/debug/log.examples.ts
new file mode 100644
index 0000000000..0e9173bfa6
--- /dev/null
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/debug/log.examples.ts
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2021 The 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 { TemplateExample } from '@backstage/plugin-scaffolder-node';
+import yaml from 'yaml';
+
+export const examples: TemplateExample[] = [
+ {
+ description: 'Write a debug message',
+ example: yaml.stringify({
+ steps: [
+ {
+ action: 'debug:log',
+ id: 'write-debug-line',
+ name: 'Write "Hello Backstage!" log line',
+ input: {
+ message: 'Hello Backstage!',
+ },
+ },
+ ],
+ }),
+ },
+ {
+ description: 'List the workspace directory',
+ example: yaml.stringify({
+ steps: [
+ {
+ action: 'debug:log',
+ id: 'write-workspace-directory',
+ name: 'List the workspace directory',
+ input: {
+ listWorkspace: true,
+ },
+ },
+ ],
+ }),
+ },
+];
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/debug/log.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/debug/log.ts
index 481eb9dfdd..524e12b5c9 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/debug/log.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/debug/log.ts
@@ -17,43 +17,10 @@
import { readdir, stat } from 'fs-extra';
import { relative, join } from 'path';
import { createTemplateAction } from '@backstage/plugin-scaffolder-node';
-import yaml from 'yaml';
+import { examples } from './log.examples';
const id = 'debug:log';
-const examples = [
- {
- description: 'Write a debug message',
- example: yaml.stringify({
- steps: [
- {
- action: id,
- id: 'write-debug-line',
- name: 'Write "Hello Backstage!" log line',
- input: {
- message: 'Hello Backstage!',
- },
- },
- ],
- }),
- },
- {
- description: 'List the workspace directory',
- example: yaml.stringify({
- steps: [
- {
- action: id,
- id: 'write-workspace-directory',
- name: 'List the workspace directory',
- input: {
- listWorkspace: true,
- },
- },
- ],
- }),
- },
-];
-
/**
* Writes a message into the log or lists all files in the workspace
*
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/debug/wait.examples.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/debug/wait.examples.test.ts
new file mode 100644
index 0000000000..595ae7c3b6
--- /dev/null
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/debug/wait.examples.test.ts
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2021 The 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 { getVoidLogger } from '@backstage/backend-common';
+import mockFs from 'mock-fs';
+import { createWaitAction } from './wait';
+import { Writable } from 'stream';
+import os from 'os';
+import { examples } from './wait.examples';
+import yaml from 'yaml';
+
+describe('debug:wait examples', () => {
+ const action = createWaitAction();
+
+ const logStream = {
+ write: jest.fn(),
+ } as jest.Mocked> as jest.Mocked;
+
+ const mockTmpDir = os.tmpdir();
+ const mockContext = {
+ input: {},
+ baseUrl: 'somebase',
+ workspacePath: mockTmpDir,
+ logger: getVoidLogger(),
+ logStream,
+ output: jest.fn(),
+ createTemporaryDirectory: jest.fn().mockResolvedValue(mockTmpDir),
+ };
+
+ beforeEach(() => {
+ jest.resetAllMocks();
+ });
+
+ afterEach(() => {
+ mockFs.restore();
+ });
+
+ it('should wait for specified period of seconds', async () => {
+ const context = {
+ ...mockContext,
+ input: yaml.parse(examples[0].example).steps[0].input,
+ };
+ const start = new Date().getTime();
+ await action.handler(context);
+ const end = new Date().getTime();
+ expect(end - start).toBeGreaterThanOrEqual(50);
+ });
+});
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/debug/wait.examples.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/debug/wait.examples.ts
new file mode 100644
index 0000000000..1cc69b1aed
--- /dev/null
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/debug/wait.examples.ts
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2021 The 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 { TemplateExample } from '@backstage/plugin-scaffolder-node';
+import yaml from 'yaml';
+
+export const examples: TemplateExample[] = [
+ {
+ description: 'Waiting for 50 milliseconds',
+ example: yaml.stringify({
+ steps: [
+ {
+ action: 'debug:wait',
+ id: 'wait-milliseconds',
+ name: 'Waiting for 50 milliseconds',
+ input: {
+ milliseconds: 50,
+ },
+ },
+ ],
+ }),
+ },
+ {
+ description: 'Waiting for 5 seconds',
+ example: yaml.stringify({
+ steps: [
+ {
+ action: 'debug:wait',
+ id: 'wait-5sec',
+ name: 'Waiting for 5 seconds',
+ input: {
+ seconds: 5,
+ },
+ },
+ ],
+ }),
+ },
+ {
+ description: 'Waiting for 1 minutes',
+ example: yaml.stringify({
+ steps: [
+ {
+ action: 'debug:wait',
+ id: 'wait-1min',
+ name: 'Waiting for 1 minutes',
+ input: {
+ minutes: 1,
+ },
+ },
+ ],
+ }),
+ },
+];
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/debug/wait.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/debug/wait.ts
index 02cab239cb..ae0af4db5a 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/debug/wait.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/debug/wait.ts
@@ -16,46 +16,13 @@
import { createTemplateAction } from '@backstage/plugin-scaffolder-node';
import { HumanDuration } from '@backstage/types';
-import yaml from 'yaml';
import { Duration } from 'luxon';
+import { examples } from './wait.examples';
const id = 'debug:wait';
const MAX_WAIT_TIME_IN_ISO = 'T00:00:30';
-const examples = [
- {
- description: 'Waiting for 5 seconds',
- example: yaml.stringify({
- steps: [
- {
- action: id,
- id: 'wait-5sec',
- name: 'Waiting for 5 seconds',
- input: {
- seconds: 5,
- },
- },
- ],
- }),
- },
- {
- description: 'Waiting for 5 minutes',
- example: yaml.stringify({
- steps: [
- {
- action: id,
- id: 'wait-5min',
- name: 'Waiting for 5 minutes',
- input: {
- minutes: 5,
- },
- },
- ],
- }),
- },
-];
-
/**
* Waits for a certain period of time.
*
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/index.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/index.ts
index 14a40f53c3..67f1bc360f 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/index.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/index.ts
@@ -17,4 +17,3 @@
export { createFetchPlainAction } from './plain';
export { createFetchPlainFileAction } from './plainFile';
export { createFetchTemplateAction } from './template';
-export { fetchContents } from './helpers';
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/plain.examples.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/plain.examples.test.ts
new file mode 100644
index 0000000000..6b308a97eb
--- /dev/null
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/plain.examples.test.ts
@@ -0,0 +1,88 @@
+/*
+ * Copyright 2021 The 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 yaml from 'yaml';
+
+import os from 'os';
+import { resolve as resolvePath } from 'path';
+import { getVoidLogger, UrlReader } from '@backstage/backend-common';
+import { ConfigReader } from '@backstage/config';
+import { ScmIntegrations } from '@backstage/integration';
+import { createFetchPlainAction } from './plain';
+import { PassThrough } from 'stream';
+import { fetchContents } from '@backstage/plugin-scaffolder-node';
+import { examples } from './plain.examples';
+
+jest.mock('@backstage/plugin-scaffolder-node', () => ({
+ ...jest.requireActual('@backstage/plugin-scaffolder-node'),
+ fetchContents: jest.fn(),
+}));
+
+describe('fetch:plain examples', () => {
+ const integrations = ScmIntegrations.fromConfig(
+ new ConfigReader({
+ integrations: {
+ github: [{ host: 'github.com', token: 'token' }],
+ },
+ }),
+ );
+ const reader: UrlReader = {
+ readUrl: jest.fn(),
+ readTree: jest.fn(),
+ search: jest.fn(),
+ };
+
+ beforeEach(() => {
+ jest.resetAllMocks();
+ });
+
+ const action = createFetchPlainAction({ integrations, reader });
+ const mockContext = {
+ workspacePath: os.tmpdir(),
+ logger: getVoidLogger(),
+ logStream: new PassThrough(),
+ output: jest.fn(),
+ createTemporaryDirectory: jest.fn(),
+ };
+
+ it('should fetch plain', async () => {
+ await action.handler({
+ ...mockContext,
+ input: yaml.parse(examples[0].example).steps[0].input,
+ });
+ expect(fetchContents).toHaveBeenCalledWith(
+ expect.objectContaining({
+ outputPath: resolvePath(mockContext.workspacePath),
+ fetchUrl:
+ 'https://github.com/backstage/community/tree/main/backstage-community-sessions/assets',
+ }),
+ );
+ });
+
+ it('should fetch plain to a specified directory', async () => {
+ await action.handler({
+ ...mockContext,
+ input: yaml.parse(examples[1].example).steps[0].input,
+ });
+ expect(fetchContents).toHaveBeenCalledWith(
+ expect.objectContaining({
+ outputPath: resolvePath(mockContext.workspacePath, 'fetched-data'),
+ fetchUrl:
+ 'https://github.com/backstage/community/tree/main/backstage-community-sessions/assets',
+ }),
+ );
+ });
+});
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/plain.examples.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/plain.examples.ts
new file mode 100644
index 0000000000..4937b72991
--- /dev/null
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/plain.examples.ts
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2021 The 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 { TemplateExample } from '@backstage/plugin-scaffolder-node';
+import yaml from 'yaml';
+
+export const examples: TemplateExample[] = [
+ {
+ description: 'Downloads content and places it in the workspace.',
+ example: yaml.stringify({
+ steps: [
+ {
+ action: 'fetch:plain',
+ id: 'fetch-plain',
+ name: 'Fetch plain',
+ input: {
+ url: 'https://github.com/backstage/community/tree/main/backstage-community-sessions/assets',
+ },
+ },
+ ],
+ }),
+ },
+ {
+ description:
+ 'Optionally, if you would prefer the data to be downloaded to a subdirectory in the workspace you may specify the ‘targetPath’ input option.',
+ example: yaml.stringify({
+ steps: [
+ {
+ action: 'fetch:plain',
+ id: 'fetch-plain',
+ name: 'Fetch plain',
+ input: {
+ url: 'https://github.com/backstage/community/tree/main/backstage-community-sessions/assets',
+ targetPath: 'fetched-data',
+ },
+ },
+ ],
+ }),
+ },
+];
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/plain.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/plain.test.ts
index ed37a39a98..249941096d 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/plain.test.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/plain.test.ts
@@ -14,16 +14,19 @@
* limitations under the License.
*/
-jest.mock('./helpers');
+jest.mock('@backstage/plugin-scaffolder-node', () => {
+ const actual = jest.requireActual('@backstage/plugin-scaffolder-node');
+ return { ...actual, fetchContents: jest.fn() };
+});
import os from 'os';
import { resolve as resolvePath } from 'path';
import { getVoidLogger, UrlReader } from '@backstage/backend-common';
import { ConfigReader } from '@backstage/config';
import { ScmIntegrations } from '@backstage/integration';
+import { fetchContents } from '@backstage/plugin-scaffolder-node';
import { createFetchPlainAction } from './plain';
import { PassThrough } from 'stream';
-import { fetchContents } from './helpers';
describe('fetch:plain', () => {
const integrations = ScmIntegrations.fromConfig(
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/plain.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/plain.ts
index c10f696bb9..57f3d1121b 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/plain.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/plain.ts
@@ -16,8 +16,14 @@
import { UrlReader, resolveSafeChildPath } from '@backstage/backend-common';
import { ScmIntegrations } from '@backstage/integration';
-import { fetchContents } from './helpers';
-import { createTemplateAction } from '@backstage/plugin-scaffolder-node';
+import { examples } from './plain.examples';
+
+import {
+ createTemplateAction,
+ fetchContents,
+} from '@backstage/plugin-scaffolder-node';
+
+export const ACTION_ID = 'fetch:plain';
/**
* Downloads content and places it in the workspace, or optionally
@@ -31,7 +37,8 @@ export function createFetchPlainAction(options: {
const { reader, integrations } = options;
return createTemplateAction<{ url: string; targetPath?: string }>({
- id: 'fetch:plain',
+ id: ACTION_ID,
+ examples,
description:
'Downloads content and places it in the workspace, or optionally in a subdirectory specified by the `targetPath` input option.',
schema: {
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/plainFile.examples.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/plainFile.examples.test.ts
new file mode 100644
index 0000000000..2ee17c29fe
--- /dev/null
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/plainFile.examples.test.ts
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2021 The 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.
+ */
+
+jest.mock('@backstage/plugin-scaffolder-node', () => {
+ const actual = jest.requireActual('@backstage/plugin-scaffolder-node');
+ return { ...actual, fetchFile: jest.fn() };
+});
+
+import yaml from 'yaml';
+import os from 'os';
+import { resolve as resolvePath } from 'path';
+import { getVoidLogger, UrlReader } from '@backstage/backend-common';
+import { ConfigReader } from '@backstage/config';
+import { ScmIntegrations } from '@backstage/integration';
+import { createFetchPlainFileAction } from './plainFile';
+import { PassThrough } from 'stream';
+import { fetchFile } from '@backstage/plugin-scaffolder-node';
+import { examples } from './plainFile.examples';
+
+describe('fetch:plain:file examples', () => {
+ const integrations = ScmIntegrations.fromConfig(
+ new ConfigReader({
+ integrations: {
+ github: [{ host: 'github.com', token: 'token' }],
+ },
+ }),
+ );
+ const reader: UrlReader = {
+ readUrl: jest.fn(),
+ readTree: jest.fn(),
+ search: jest.fn(),
+ };
+
+ beforeEach(() => {
+ jest.resetAllMocks();
+ });
+
+ const action = createFetchPlainFileAction({ integrations, reader });
+ const mockContext = {
+ workspacePath: os.tmpdir(),
+ logger: getVoidLogger(),
+ logStream: new PassThrough(),
+ output: jest.fn(),
+ createTemporaryDirectory: jest.fn(),
+ };
+
+ it('should fetch plain', async () => {
+ await action.handler({
+ ...mockContext,
+ input: yaml.parse(examples[0].example).steps[0].input,
+ });
+ expect(fetchFile).toHaveBeenCalledWith(
+ expect.objectContaining({
+ outputPath: resolvePath(mockContext.workspacePath, 'target-path'),
+ fetchUrl:
+ 'https://github.com/backstage/community/tree/main/backstage-community-sessions/assets/Backstage%20Community%20Sessions.png',
+ }),
+ );
+ });
+});
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/plainFile.examples.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/plainFile.examples.ts
new file mode 100644
index 0000000000..bf71068bf1
--- /dev/null
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/plainFile.examples.ts
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2021 The 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 { TemplateExample } from '@backstage/plugin-scaffolder-node';
+import yaml from 'yaml';
+
+export const examples: TemplateExample[] = [
+ {
+ description: 'Downloads a file and places it in the workspace.',
+ example: yaml.stringify({
+ steps: [
+ {
+ action: 'fetch:plain:file',
+ id: 'fetch-plain-file',
+ name: 'Fetch plain file',
+ input: {
+ url: 'https://github.com/backstage/community/tree/main/backstage-community-sessions/assets/Backstage%20Community%20Sessions.png',
+ targetPath: 'target-path',
+ },
+ },
+ ],
+ }),
+ },
+];
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/plainFile.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/plainFile.test.ts
index 5d9e99fc7d..084b08d640 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/plainFile.test.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/plainFile.test.ts
@@ -14,16 +14,19 @@
* limitations under the License.
*/
-jest.mock('./helpers');
+jest.mock('@backstage/plugin-scaffolder-node', () => {
+ const actual = jest.requireActual('@backstage/plugin-scaffolder-node');
+ return { ...actual, fetchFile: jest.fn() };
+});
import os from 'os';
import { resolve as resolvePath } from 'path';
import { getVoidLogger, UrlReader } from '@backstage/backend-common';
import { ConfigReader } from '@backstage/config';
import { ScmIntegrations } from '@backstage/integration';
+import { fetchFile } from '@backstage/plugin-scaffolder-node';
import { createFetchPlainFileAction } from './plainFile';
import { PassThrough } from 'stream';
-import { fetchFile } from './helpers';
describe('fetch:plain:file', () => {
const integrations = ScmIntegrations.fromConfig(
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/plainFile.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/plainFile.ts
index 7b33ad93b4..0a791a31a4 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/plainFile.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/plainFile.ts
@@ -16,8 +16,11 @@
import { UrlReader, resolveSafeChildPath } from '@backstage/backend-common';
import { ScmIntegrations } from '@backstage/integration';
-import { fetchFile } from './helpers';
-import { createTemplateAction } from '@backstage/plugin-scaffolder-node';
+import { examples } from './plainFile.examples';
+import {
+ createTemplateAction,
+ fetchFile,
+} from '@backstage/plugin-scaffolder-node';
/**
* Downloads content and places it in the workspace, or optionally
@@ -33,6 +36,7 @@ export function createFetchPlainFileAction(options: {
return createTemplateAction<{ url: string; targetPath: string }>({
id: 'fetch:plain:file',
description: 'Downloads single file and places it in the workspace.',
+ examples,
schema: {
input: {
type: 'object',
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.examples.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.examples.test.ts
new file mode 100644
index 0000000000..43bed5a048
--- /dev/null
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.examples.test.ts
@@ -0,0 +1,231 @@
+/*
+ * Copyright 2021 The 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 os from 'os';
+import { join as joinPath, sep as pathSep } from 'path';
+import fs from 'fs-extra';
+import mockFs from 'mock-fs';
+import {
+ getVoidLogger,
+ resolvePackagePath,
+ UrlReader,
+} from '@backstage/backend-common';
+import { ScmIntegrations } from '@backstage/integration';
+import { PassThrough } from 'stream';
+import { createFetchTemplateAction } from './template';
+import {
+ ActionContext,
+ TemplateAction,
+ fetchContents,
+} from '@backstage/plugin-scaffolder-node';
+import { examples } from './template.examples';
+import yaml from 'yaml';
+
+jest.mock('@backstage/plugin-scaffolder-node', () => ({
+ ...jest.requireActual('@backstage/plugin-scaffolder-node'),
+ fetchContents: jest.fn(),
+}));
+
+type FetchTemplateInput = ReturnType<
+ typeof createFetchTemplateAction
+> extends TemplateAction
+ ? U
+ : never;
+
+const realFiles = Object.fromEntries(
+ [
+ resolvePackagePath(
+ '@backstage/plugin-scaffolder-backend',
+ 'assets',
+ 'nunjucks.js.txt',
+ ),
+ ].map(k => [k, mockFs.load(k)]),
+);
+
+const aBinaryFile = fs.readFileSync(
+ resolvePackagePath(
+ '@backstage/plugin-scaffolder-backend',
+ 'fixtures/test-nested-template/public/react-logo192.png',
+ ),
+);
+
+const mockFetchContents = fetchContents as jest.MockedFunction<
+ typeof fetchContents
+>;
+
+describe('fetch:template examples', () => {
+ let action: TemplateAction;
+
+ const workspacePath = os.tmpdir();
+ const createTemporaryDirectory: jest.MockedFunction<
+ ActionContext['createTemporaryDirectory']
+ > = jest.fn(() =>
+ Promise.resolve(
+ joinPath(workspacePath, `${createTemporaryDirectory.mock.calls.length}`),
+ ),
+ );
+
+ const logger = getVoidLogger();
+
+ const mockContext = (input: any) => ({
+ templateInfo: {
+ baseUrl: 'base-url',
+ entityRef: 'template:default/test-template',
+ },
+ input: input,
+ output: jest.fn(),
+ logStream: new PassThrough(),
+ logger,
+ workspacePath,
+ createTemporaryDirectory,
+ });
+
+ beforeEach(() => {
+ mockFs({
+ ...realFiles,
+ });
+
+ action = createFetchTemplateAction({
+ reader: Symbol('UrlReader') as unknown as UrlReader,
+ integrations: Symbol('Integrations') as unknown as ScmIntegrations,
+ });
+ });
+
+ afterEach(() => {
+ mockFs.restore();
+ });
+
+ describe('handler', () => {
+ describe('with valid input', () => {
+ let context: ActionContext;
+
+ beforeEach(async () => {
+ context = mockContext(yaml.parse(examples[0].example).steps[0].input);
+
+ mockFetchContents.mockImplementation(({ outputPath }) => {
+ mockFs({
+ ...realFiles,
+ [outputPath]: {
+ 'an-executable.sh': mockFs.file({
+ content: '#!/usr/bin/env bash',
+ mode: parseInt('100755', 8),
+ }),
+ 'empty-dir-${{ values.count }}': {},
+ 'static.txt': 'static content',
+ '${{ values.name }}.txt': 'static content',
+ subdir: {
+ 'templated-content.txt':
+ '${{ values.name }}: ${{ values.count }}',
+ },
+ '.${{ values.name }}': '${{ values.itemList | dump }}',
+ 'a-binary-file.png': aBinaryFile,
+ symlink: mockFs.symlink({
+ path: 'a-binary-file.png',
+ }),
+ brokenSymlink: mockFs.symlink({
+ path: './not-a-real-file.txt',
+ }),
+ },
+ });
+
+ return Promise.resolve();
+ });
+
+ await action.handler(context);
+ });
+
+ it('uses fetchContents to retrieve the template content', () => {
+ expect(mockFetchContents).toHaveBeenCalledWith(
+ expect.objectContaining({
+ baseUrl: context.templateInfo?.baseUrl,
+ fetchUrl: context.input.url,
+ }),
+ );
+ });
+
+ it('copies files with no templating in names or content successfully', async () => {
+ await expect(
+ fs.readFile(`${workspacePath}/target/static.txt`, 'utf-8'),
+ ).resolves.toEqual('static content');
+ });
+
+ it('copies files with templated names successfully', async () => {
+ await expect(
+ fs.readFile(`${workspacePath}/target/test-project.txt`, 'utf-8'),
+ ).resolves.toEqual('static content');
+ });
+
+ it('copies files with templated content successfully', async () => {
+ await expect(
+ fs.readFile(
+ `${workspacePath}/target/subdir/templated-content.txt`,
+ 'utf-8',
+ ),
+ ).resolves.toEqual('test-project: 1234');
+ });
+
+ it('processes dotfiles', async () => {
+ await expect(
+ fs.readFile(`${workspacePath}/target/.test-project`, 'utf-8'),
+ ).resolves.toEqual('["first","second","third"]');
+ });
+
+ it('copies empty directories', async () => {
+ await expect(
+ fs.readdir(`${workspacePath}/target/empty-dir-1234`, 'utf-8'),
+ ).resolves.toEqual([]);
+ });
+
+ it('copies binary files as-is without processing them', async () => {
+ await expect(
+ fs.readFile(`${workspacePath}/target/a-binary-file.png`),
+ ).resolves.toEqual(aBinaryFile);
+ });
+
+ it('copies files and maintains the original file permissions', async () => {
+ await expect(
+ fs
+ .stat(`${workspacePath}/target/an-executable.sh`)
+ .then(fObj => fObj.mode),
+ ).resolves.toEqual(parseInt('100755', 8));
+ });
+
+ it('copies file symlinks as-is without processing them', async () => {
+ await expect(
+ fs
+ .lstat(`${workspacePath}/target/symlink`)
+ .then(i => i.isSymbolicLink()),
+ ).resolves.toBe(true);
+
+ await expect(
+ fs.realpath(`${workspacePath}/target/symlink`),
+ ).resolves.toBe(joinPath(workspacePath, 'target', 'a-binary-file.png'));
+ });
+
+ it('copies broken symlinks as-is without processing them', async () => {
+ await expect(
+ fs
+ .lstat(`${workspacePath}/target/brokenSymlink`)
+ .then(i => i.isSymbolicLink()),
+ ).resolves.toBe(true);
+
+ await expect(
+ fs.readlink(`${workspacePath}/target/brokenSymlink`),
+ ).resolves.toEqual(`.${pathSep}not-a-real-file.txt`);
+ });
+ });
+ });
+});
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.examples.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.examples.ts
new file mode 100644
index 0000000000..4c4628e715
--- /dev/null
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.examples.ts
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2021 The 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 { TemplateExample } from '@backstage/plugin-scaffolder-node';
+import yaml from 'yaml';
+
+export const examples: TemplateExample[] = [
+ {
+ description:
+ 'Downloads a skelaton directory that lives alongside the template file and fill it out with values.',
+ example: yaml.stringify({
+ steps: [
+ {
+ action: 'fetch:template',
+ id: 'fetch-template',
+ name: 'Fetch template',
+ input: {
+ url: './skeleton',
+ targetPath: './target',
+ values: {
+ name: 'test-project',
+ count: 1234,
+ itemList: ['first', 'second', 'third'],
+ showDummyFile: false,
+ },
+ },
+ },
+ ],
+ }),
+ },
+];
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.test.ts
index 15548ffea7..95f8c7b954 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.test.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.test.ts
@@ -14,6 +14,11 @@
* limitations under the License.
*/
+jest.mock('@backstage/plugin-scaffolder-node', () => {
+ const actual = jest.requireActual('@backstage/plugin-scaffolder-node');
+ return { ...actual, fetchContents: jest.fn() };
+});
+
import os from 'os';
import { join as joinPath, sep as pathSep } from 'path';
import fs from 'fs-extra';
@@ -25,17 +30,13 @@ import {
} from '@backstage/backend-common';
import { ScmIntegrations } from '@backstage/integration';
import { PassThrough } from 'stream';
-import { fetchContents } from './helpers';
import { createFetchTemplateAction } from './template';
import {
+ fetchContents,
ActionContext,
TemplateAction,
} from '@backstage/plugin-scaffolder-node';
-jest.mock('./helpers', () => ({
- fetchContents: jest.fn(),
-}));
-
type FetchTemplateInput = ReturnType<
typeof createFetchTemplateAction
> extends TemplateAction
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.ts
index be7b47521c..1116d4dd5d 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.ts
@@ -18,8 +18,10 @@ import { extname } from 'path';
import { resolveSafeChildPath, UrlReader } from '@backstage/backend-common';
import { InputError } from '@backstage/errors';
import { ScmIntegrations } from '@backstage/integration';
-import { fetchContents } from './helpers';
-import { createTemplateAction } from '@backstage/plugin-scaffolder-node';
+import {
+ createTemplateAction,
+ fetchContents,
+} from '@backstage/plugin-scaffolder-node';
import globby from 'globby';
import fs from 'fs-extra';
import { isBinaryFile } from 'isbinaryfile';
@@ -29,6 +31,7 @@ import {
TemplateGlobal,
} from '../../../../lib/templating/SecureTemplater';
import { createDefaultFilters } from '../../../../lib/templating/filters';
+import { examples } from './template.examples';
/**
* Downloads a skeleton, templates variables into file and directory names and content.
@@ -70,6 +73,7 @@ export function createFetchTemplateAction(options: {
id: 'fetch:template',
description:
'Downloads a skeleton, templates variables into file and directory names and content, and places the result in the workspace, or optionally in a subdirectory specified by the `targetPath` input option.',
+ examples,
schema: {
input: {
type: 'object',
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/filesystem/delete.examples.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/filesystem/delete.examples.test.ts
new file mode 100644
index 0000000000..10994e3824
--- /dev/null
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/filesystem/delete.examples.test.ts
@@ -0,0 +1,79 @@
+/*
+ * Copyright 2021 The 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 { createFilesystemDeleteAction } from './delete';
+import { getVoidLogger } from '@backstage/backend-common';
+import { PassThrough } from 'stream';
+import { resolve as resolvePath } from 'path';
+import * as os from 'os';
+import mockFs from 'mock-fs';
+import fs from 'fs-extra';
+import yaml from 'yaml';
+import { examples } from './delete.examples';
+
+const root = os.platform() === 'win32' ? 'C:\\rootDir' : '/rootDir';
+const workspacePath = resolvePath(root, 'my-workspace');
+
+describe('fs:delete examples', () => {
+ const action = createFilesystemDeleteAction();
+
+ const files: string[] = yaml.parse(examples[0].example).steps[0].input.files;
+
+ const mockContext = {
+ input: {
+ files: files,
+ },
+ workspacePath,
+ logger: getVoidLogger(),
+ logStream: new PassThrough(),
+ output: jest.fn(),
+ createTemporaryDirectory: jest.fn(),
+ };
+
+ beforeEach(() => {
+ jest.restoreAllMocks();
+
+ mockFs({
+ [workspacePath]: {
+ [files[0]]: 'hello',
+ [files[1]]: 'world',
+ 'a-folder': {
+ 'unit-test-in-a-folder.js2': 'content',
+ },
+ },
+ });
+ });
+
+ afterEach(() => {
+ mockFs.restore();
+ });
+
+ it('should call fs.rm with the correct values', async () => {
+ files.forEach(file => {
+ const filePath = resolvePath(workspacePath, file);
+ const fileExists = fs.existsSync(filePath);
+ expect(fileExists).toBe(true);
+ });
+
+ await action.handler(mockContext);
+
+ files.forEach(file => {
+ const filePath = resolvePath(workspacePath, file);
+ const fileExists = fs.existsSync(filePath);
+ expect(fileExists).toBe(false);
+ });
+ });
+});
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/filesystem/delete.examples.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/filesystem/delete.examples.ts
new file mode 100644
index 0000000000..8aea076b9d
--- /dev/null
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/filesystem/delete.examples.ts
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2021 The 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 { TemplateExample } from '@backstage/plugin-scaffolder-node';
+import * as yaml from 'yaml';
+
+export const examples: TemplateExample[] = [
+ {
+ description: 'Delete specified files',
+ example: yaml.stringify({
+ steps: [
+ {
+ action: 'fs:delete',
+ id: 'deleteFiles',
+ name: 'Delete files',
+ input: {
+ files: ['file1.txt', 'file2.txt'],
+ },
+ },
+ ],
+ }),
+ },
+];
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/filesystem/delete.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/filesystem/delete.ts
index 2f955c16ff..5787d245ab 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/filesystem/delete.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/filesystem/delete.ts
@@ -18,6 +18,7 @@ import { createTemplateAction } from '@backstage/plugin-scaffolder-node';
import { InputError } from '@backstage/errors';
import { resolveSafeChildPath } from '@backstage/backend-common';
import fs from 'fs-extra';
+import { examples } from './delete.examples';
/**
* Creates new action that enables deletion of files and directories in the workspace.
@@ -27,6 +28,7 @@ export const createFilesystemDeleteAction = () => {
return createTemplateAction<{ files: string[] }>({
id: 'fs:delete',
description: 'Deletes files and directories from the workspace',
+ examples,
schema: {
input: {
required: ['files'],
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/filesystem/rename.examples.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/filesystem/rename.examples.test.ts
new file mode 100644
index 0000000000..c4c27cc68e
--- /dev/null
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/filesystem/rename.examples.test.ts
@@ -0,0 +1,104 @@
+/*
+ * Copyright 2021 The 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 * as os from 'os';
+import mockFs from 'mock-fs';
+import { resolve as resolvePath } from 'path';
+import { createFilesystemRenameAction } from './rename';
+import { getVoidLogger } from '@backstage/backend-common';
+import { PassThrough } from 'stream';
+import fs from 'fs-extra';
+import yaml from 'yaml';
+import { examples } from './rename.examples';
+
+const root = os.platform() === 'win32' ? 'C:\\rootDir' : '/rootDir';
+const workspacePath = resolvePath(root, 'my-workspace');
+
+describe('fs:rename examples', () => {
+ const action = createFilesystemRenameAction();
+ const files: { from: string; to: string }[] = yaml.parse(examples[0].example)
+ .steps[0].input.files;
+
+ const mockContext = {
+ input: {
+ files: files,
+ },
+ workspacePath,
+ logger: getVoidLogger(),
+ logStream: new PassThrough(),
+ output: jest.fn(),
+ createTemporaryDirectory: jest.fn(),
+ };
+
+ beforeEach(() => {
+ jest.restoreAllMocks();
+
+ mockFs({
+ [workspacePath]: {
+ [files[0].from]: 'hello',
+ [files[1].from]: 'world',
+ [files[2].from]: '!!!',
+ 'file3Renamed.txt': 'I will be overwritten :(',
+ 'a-folder': {
+ 'file.md': 'content',
+ },
+ },
+ });
+ });
+
+ afterEach(() => {
+ mockFs.restore();
+ });
+
+ it('should call fs.move with the correct values', async () => {
+ mockContext.input.files.forEach(file => {
+ const filePath = resolvePath(workspacePath, file.from);
+ const fileExists = fs.existsSync(filePath);
+ expect(fileExists).toBe(true);
+ });
+
+ await action.handler(mockContext);
+
+ mockContext.input.files.forEach(file => {
+ const filePath = resolvePath(workspacePath, file.from);
+ const fileExists = fs.existsSync(filePath);
+ expect(fileExists).toBe(false);
+ });
+ });
+
+ it('should override when requested', async () => {
+ const sourceFile = files[2].from;
+ const destFile = files[2].to;
+ const sourceFilePath = resolvePath(workspacePath, sourceFile);
+ const destFilePath = resolvePath(workspacePath, destFile);
+
+ const sourceBeforeContent = fs.readFileSync(sourceFilePath, 'utf-8');
+ const destBeforeContent = fs.readFileSync(destFilePath, 'utf-8');
+
+ expect(sourceBeforeContent).not.toEqual(destBeforeContent);
+
+ await action.handler({
+ ...mockContext,
+ input: {
+ files,
+ },
+ });
+
+ const destAfterContent = fs.readFileSync(destFilePath, 'utf-8');
+
+ expect(sourceBeforeContent).toEqual(destAfterContent);
+ });
+});
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/filesystem/rename.examples.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/filesystem/rename.examples.ts
new file mode 100644
index 0000000000..59d7483a10
--- /dev/null
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/filesystem/rename.examples.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 { TemplateExample } from '@backstage/plugin-scaffolder-node';
+import * as yaml from 'yaml';
+
+export const examples: TemplateExample[] = [
+ {
+ description: 'Rename specified files ',
+ example: yaml.stringify({
+ steps: [
+ {
+ action: 'fs:rename',
+ id: 'renameFiles',
+ name: 'Rename files',
+ input: {
+ files: [
+ { from: 'file1.txt', to: 'file1Renamed.txt' },
+ { from: 'file2.txt', to: 'file2Renamed.txt' },
+ { from: 'file3.txt', to: 'file3Renamed.txt', overwrite: true },
+ ],
+ },
+ },
+ ],
+ }),
+ },
+];
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/filesystem/rename.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/filesystem/rename.ts
index c29ba221c4..5d9d666d15 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/filesystem/rename.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/filesystem/rename.ts
@@ -18,6 +18,7 @@ import { createTemplateAction } from '@backstage/plugin-scaffolder-node';
import { resolveSafeChildPath } from '@backstage/backend-common';
import { InputError } from '@backstage/errors';
import fs from 'fs-extra';
+import { examples } from './rename.examples';
/**
* Creates a new action that allows renames of files and directories in the workspace.
@@ -33,6 +34,7 @@ export const createFilesystemRenameAction = () => {
}>({
id: 'fs:rename',
description: 'Renames files and directories within the workspace',
+ examples,
schema: {
input: {
required: ['files'],
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/helpers.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/helpers.ts
index f51ab47f16..5ac92128ca 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/helpers.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/helpers.ts
@@ -17,61 +17,9 @@
import { Git } from '@backstage/backend-common';
import { Config } from '@backstage/config';
import { assertError } from '@backstage/errors';
-import { spawn, SpawnOptionsWithoutStdio } from 'child_process';
import { Octokit } from 'octokit';
-import { PassThrough, Writable } from 'stream';
import { Logger } from 'winston';
-/** @public */
-export type RunCommandOptions = {
- /** command to run */
- command: string;
- /** arguments to pass the command */
- args: string[];
- /** options to pass to spawn */
- options?: SpawnOptionsWithoutStdio;
- /** stream to capture stdout and stderr output */
- logStream?: Writable;
-};
-
-/**
- * Run a command in a sub-process, normally a shell command.
- *
- * @public
- */
-export const executeShellCommand = async (options: RunCommandOptions) => {
- const {
- command,
- args,
- options: spawnOptions,
- logStream = new PassThrough(),
- } = options;
- await new Promise((resolve, reject) => {
- const process = spawn(command, args, spawnOptions);
-
- process.stdout.on('data', stream => {
- logStream.write(stream);
- });
-
- process.stderr.on('data', stream => {
- logStream.write(stream);
- });
-
- process.on('error', error => {
- return reject(error);
- });
-
- process.on('close', code => {
- if (code !== 0) {
- return reject(
- new Error(`Command ${command} failed, exit code: ${code}`),
- );
- }
- return resolve();
- });
- });
-};
-
export async function initRepoAndPush({
dir,
remoteUrl,
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/index.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/index.ts
index 7846ff96fc..7ab98482ff 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/index.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/index.ts
@@ -21,6 +21,3 @@ export * from './fetch';
export * from './filesystem';
export * from './publish';
export * from './github';
-
-export { executeShellCommand } from './helpers';
-export type { RunCommandOptions } from './helpers';
diff --git a/plugins/scaffolder-node/CHANGELOG.md b/plugins/scaffolder-node/CHANGELOG.md
index fb0a3f0823..607836b141 100644
--- a/plugins/scaffolder-node/CHANGELOG.md
+++ b/plugins/scaffolder-node/CHANGELOG.md
@@ -1,5 +1,29 @@
# @backstage/plugin-scaffolder-node
+## 0.1.6-next.2
+
+### Patch Changes
+
+- 0b1d775be05b: Export `TemplateExample` from the `createTemplateAction` type.
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+
+## 0.1.6-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- d3b31a791eb1: Deprecated `executeShellCommand`, `RunCommandOptions`, and `fetchContents` from `@backstage/plugin-scaffolder-backend`, since they are useful for Scaffolder modules (who should not be importing from the plugin package itself). You should now import these from `@backstage/plugin-scaffolder-backend-node` instead. `RunCommandOptions` was renamed in the Node package as `ExecuteShellCommandOptions`, for consistency.
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+ - @backstage/plugin-scaffolder-common@1.3.2
+
## 0.1.6-next.0
### Patch Changes
diff --git a/plugins/scaffolder-node/api-report.md b/plugins/scaffolder-node/api-report.md
index 46aba960d8..52e729fcb7 100644
--- a/plugins/scaffolder-node/api-report.md
+++ b/plugins/scaffolder-node/api-report.md
@@ -9,7 +9,10 @@ import { ExtensionPoint } from '@backstage/backend-plugin-api';
import { JsonObject } from '@backstage/types';
import { Logger } from 'winston';
import { Schema } from 'jsonschema';
+import { ScmIntegrations } from '@backstage/integration';
+import { SpawnOptionsWithoutStdio } from 'child_process';
import { TemplateInfo } from '@backstage/plugin-scaffolder-common';
+import { UrlReader } from '@backstage/backend-common';
import { UserEntity } from '@backstage/catalog-model';
import { Writable } from 'stream';
import { z } from 'zod';
@@ -67,6 +70,37 @@ export const createTemplateAction: <
>,
) => TemplateAction;
+// @public
+export function executeShellCommand(
+ options: ExecuteShellCommandOptions,
+): Promise;
+
+// @public
+export type ExecuteShellCommandOptions = {
+ command: string;
+ args: string[];
+ options?: SpawnOptionsWithoutStdio;
+ logStream?: Writable;
+};
+
+// @public
+export function fetchContents(options: {
+ reader: UrlReader;
+ integrations: ScmIntegrations;
+ baseUrl?: string;
+ fetchUrl?: string;
+ outputPath: string;
+}): Promise;
+
+// @public
+export function fetchFile(options: {
+ reader: UrlReader;
+ integrations: ScmIntegrations;
+ baseUrl?: string;
+ fetchUrl?: string;
+ outputPath: string;
+}): Promise;
+
// @alpha
export interface ScaffolderActionsExtensionPoint {
// (undocumented)
@@ -109,10 +143,7 @@ export type TemplateActionOptions<
> = {
id: string;
description?: string;
- examples?: {
- description: string;
- example: string;
- }[];
+ examples?: TemplateExample[];
supportsDryRun?: boolean;
schema?: {
input?: TInputSchema;
@@ -120,4 +151,10 @@ export type TemplateActionOptions<
};
handler: (ctx: ActionContext) => Promise;
};
+
+// @public (undocumented)
+export type TemplateExample = {
+ description: string;
+ example: string;
+};
```
diff --git a/plugins/scaffolder-node/package.json b/plugins/scaffolder-node/package.json
index 856bac50b2..7f78352323 100644
--- a/plugins/scaffolder-node/package.json
+++ b/plugins/scaffolder-node/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-scaffolder-node",
"description": "The plugin-scaffolder-node module for @backstage/plugin-scaffolder-backend",
- "version": "0.1.6-next.0",
+ "version": "0.1.6-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -14,6 +14,12 @@
"backstage": {
"role": "node-library"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/scaffolder-node"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build --experimental-type-build",
@@ -24,17 +30,22 @@
"postpack": "backstage-cli package postpack"
},
"dependencies": {
+ "@backstage/backend-common": "workspace:^",
"@backstage/backend-plugin-api": "workspace:^",
"@backstage/catalog-model": "workspace:^",
+ "@backstage/errors": "workspace:^",
+ "@backstage/integration": "workspace:^",
"@backstage/plugin-scaffolder-common": "workspace:^",
"@backstage/types": "workspace:^",
+ "fs-extra": "10.1.0",
"jsonschema": "^1.2.6",
"winston": "^3.2.1",
"zod": "^3.21.4",
"zod-to-json-schema": "^3.20.4"
},
"devDependencies": {
- "@backstage/cli": "workspace:^"
+ "@backstage/cli": "workspace:^",
+ "@backstage/config": "workspace:^"
},
"files": [
"alpha",
diff --git a/plugins/scaffolder-node/src/actions/createTemplateAction.ts b/plugins/scaffolder-node/src/actions/createTemplateAction.ts
index a667f91744..38aba32778 100644
--- a/plugins/scaffolder-node/src/actions/createTemplateAction.ts
+++ b/plugins/scaffolder-node/src/actions/createTemplateAction.ts
@@ -20,6 +20,12 @@ import { Schema } from 'jsonschema';
import zodToJsonSchema from 'zod-to-json-schema';
import { JsonObject } from '@backstage/types';
+/** @public */
+export type TemplateExample = {
+ description: string;
+ example: string;
+};
+
/** @public */
export type TemplateActionOptions<
TActionInput extends JsonObject = {},
@@ -29,7 +35,7 @@ export type TemplateActionOptions<
> = {
id: string;
description?: string;
- examples?: { description: string; example: string }[];
+ examples?: TemplateExample[];
supportsDryRun?: boolean;
schema?: {
input?: TInputSchema;
diff --git a/plugins/scaffolder-node/src/actions/executeShellCommand.ts b/plugins/scaffolder-node/src/actions/executeShellCommand.ts
new file mode 100644
index 0000000000..ce54989589
--- /dev/null
+++ b/plugins/scaffolder-node/src/actions/executeShellCommand.ts
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2021 The 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 { spawn, SpawnOptionsWithoutStdio } from 'child_process';
+import { PassThrough, Writable } from 'stream';
+
+/**
+ * Options for {@link executeShellCommand}.
+ *
+ * @public
+ */
+export type ExecuteShellCommandOptions = {
+ /** command to run */
+ command: string;
+ /** arguments to pass the command */
+ args: string[];
+ /** options to pass to spawn */
+ options?: SpawnOptionsWithoutStdio;
+ /** stream to capture stdout and stderr output */
+ logStream?: Writable;
+};
+
+/**
+ * Run a command in a sub-process, normally a shell command.
+ *
+ * @public
+ */
+export async function executeShellCommand(
+ options: ExecuteShellCommandOptions,
+): Promise {
+ const {
+ command,
+ args,
+ options: spawnOptions,
+ logStream = new PassThrough(),
+ } = options;
+
+ await new Promise((resolve, reject) => {
+ const process = spawn(command, args, spawnOptions);
+
+ process.stdout.on('data', stream => {
+ logStream.write(stream);
+ });
+
+ process.stderr.on('data', stream => {
+ logStream.write(stream);
+ });
+
+ process.on('error', error => {
+ return reject(error);
+ });
+
+ process.on('close', code => {
+ if (code !== 0) {
+ return reject(
+ new Error(`Command ${command} failed, exit code: ${code}`),
+ );
+ }
+ return resolve();
+ });
+ });
+}
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/helpers.test.ts b/plugins/scaffolder-node/src/actions/fetch.test.ts
similarity index 98%
rename from plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/helpers.test.ts
rename to plugins/scaffolder-node/src/actions/fetch.test.ts
index 3c4a677d4d..55b949fca7 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/helpers.test.ts
+++ b/plugins/scaffolder-node/src/actions/fetch.test.ts
@@ -21,10 +21,10 @@ import { resolve as resolvePath } from 'path';
import { UrlReader } from '@backstage/backend-common';
import { ConfigReader } from '@backstage/config';
import { ScmIntegrations } from '@backstage/integration';
-import { fetchContents, fetchFile } from './helpers';
+import { fetchContents, fetchFile } from './fetch';
import os from 'os';
-describe('fetchContent helper', () => {
+describe('fetchContents helper', () => {
beforeEach(() => {
jest.clearAllMocks();
});
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/helpers.ts b/plugins/scaffolder-node/src/actions/fetch.ts
similarity index 99%
rename from plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/helpers.ts
rename to plugins/scaffolder-node/src/actions/fetch.ts
index 301c9991c4..66bbc0a842 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/helpers.ts
+++ b/plugins/scaffolder-node/src/actions/fetch.ts
@@ -54,6 +54,8 @@ export async function fetchContents(options: {
/**
* A helper function that reads the content of a single file from the given URL.
* Can be used in your own actions, and also used behind `fetch:plain:file`
+ *
+ * @public
*/
export async function fetchFile(options: {
reader: UrlReader;
diff --git a/plugins/scaffolder-node/src/actions/index.ts b/plugins/scaffolder-node/src/actions/index.ts
index e4af098356..47af320ccb 100644
--- a/plugins/scaffolder-node/src/actions/index.ts
+++ b/plugins/scaffolder-node/src/actions/index.ts
@@ -17,5 +17,11 @@
export {
createTemplateAction,
type TemplateActionOptions,
+ type TemplateExample,
} from './createTemplateAction';
+export {
+ executeShellCommand,
+ type ExecuteShellCommandOptions,
+} from './executeShellCommand';
+export { fetchContents, fetchFile } from './fetch';
export { type ActionContext, type TemplateAction } from './types';
diff --git a/plugins/scaffolder-react/CHANGELOG.md b/plugins/scaffolder-react/CHANGELOG.md
index e4762983c7..68e1db12ca 100644
--- a/plugins/scaffolder-react/CHANGELOG.md
+++ b/plugins/scaffolder-react/CHANGELOG.md
@@ -1,5 +1,12 @@
# @backstage/plugin-scaffolder-react
+## 1.5.2-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
## 1.5.2-next.0
### Patch Changes
diff --git a/plugins/scaffolder-react/package.json b/plugins/scaffolder-react/package.json
index ddf27cc83d..448199d709 100644
--- a/plugins/scaffolder-react/package.json
+++ b/plugins/scaffolder-react/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-scaffolder-react",
"description": "A frontend library that helps other Backstage plugins interact with the Scaffolder",
- "version": "1.5.2-next.0",
+ "version": "1.5.2-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/scaffolder/CHANGELOG.md b/plugins/scaffolder/CHANGELOG.md
index 2d1a68c3ff..2f9d1341e4 100644
--- a/plugins/scaffolder/CHANGELOG.md
+++ b/plugins/scaffolder/CHANGELOG.md
@@ -1,5 +1,36 @@
# @backstage/plugin-scaffolder
+## 1.14.2-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+ - @backstage/plugin-scaffolder-react@1.5.2-next.1
+ - @backstage/integration-react@1.1.16-next.1
+
+## 1.14.2-next.1
+
+### Patch Changes
+
+- 8a0490fb669e: Fix the get entities query in the `MyGroupsPicker` to query the `kind=Group` entities.
+- Updated dependencies
+ - @backstage/integration-react@1.1.16-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/theme@0.4.1
+ - @backstage/types@1.1.0
+ - @backstage/plugin-catalog-common@1.0.15
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+ - @backstage/plugin-permission-react@0.4.14
+ - @backstage/plugin-scaffolder-common@1.3.2
+ - @backstage/plugin-scaffolder-react@1.5.2-next.0
+
## 1.14.2-next.0
### Patch Changes
diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json
index 08a3004e08..4291016fb8 100644
--- a/plugins/scaffolder/package.json
+++ b/plugins/scaffolder/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-scaffolder",
"description": "The Backstage plugin that helps you create new things",
- "version": "1.14.2-next.0",
+ "version": "1.14.2-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/scaffolder/src/components/fields/MyGroupsPicker/MyGroupsPicker.test.tsx b/plugins/scaffolder/src/components/fields/MyGroupsPicker/MyGroupsPicker.test.tsx
index 0bdfe5f153..099d6fa6ed 100644
--- a/plugins/scaffolder/src/components/fields/MyGroupsPicker/MyGroupsPicker.test.tsx
+++ b/plugins/scaffolder/src/components/fields/MyGroupsPicker/MyGroupsPicker.test.tsx
@@ -129,7 +129,7 @@ describe('', () => {
expect(catalogApi.getEntities).toHaveBeenCalledWith({
filter: {
- type: 'Group',
+ kind: 'Group',
'relations.hasMember': ['user:default/bob'],
},
});
@@ -201,8 +201,8 @@ describe('', () => {
// Simulate user input
const inputField = getByRole('combobox');
- userEvent.click(inputField);
- userEvent.type(inputField, 'group');
+ await userEvent.click(inputField);
+ await userEvent.type(inputField, 'group');
// Wait for the dropdown elements to appear
await waitFor(() => {
@@ -257,8 +257,8 @@ describe('', () => {
);
const inputField = getByRole('combobox');
- userEvent.click(inputField);
- userEvent.type(inputField, 'group');
+ await userEvent.click(inputField);
+ await userEvent.type(inputField, 'group');
await waitFor(() => {
expect(
@@ -267,7 +267,7 @@ describe('', () => {
});
const option = getByRole('option', { name: 'My First Group' });
- userEvent.click(option);
+ await userEvent.click(option);
await waitFor(() => {
expect(onChange).toHaveBeenCalledTimes(1);
diff --git a/plugins/scaffolder/src/components/fields/MyGroupsPicker/MyGroupsPicker.tsx b/plugins/scaffolder/src/components/fields/MyGroupsPicker/MyGroupsPicker.tsx
index 28bc2b93fa..fefdd4230c 100644
--- a/plugins/scaffolder/src/components/fields/MyGroupsPicker/MyGroupsPicker.tsx
+++ b/plugins/scaffolder/src/components/fields/MyGroupsPicker/MyGroupsPicker.tsx
@@ -62,7 +62,7 @@ export const MyGroupsPicker = (props: MyGroupsPickerProps) => {
const { items } = await catalogApi.getEntities({
filter: {
- type: 'Group',
+ kind: 'Group',
['relations.hasMember']: [userEntityRef],
},
});
diff --git a/plugins/search-backend-module-catalog/CHANGELOG.md b/plugins/search-backend-module-catalog/CHANGELOG.md
index a01a5a41a1..f9b716d456 100644
--- a/plugins/search-backend-module-catalog/CHANGELOG.md
+++ b/plugins/search-backend-module-catalog/CHANGELOG.md
@@ -1,5 +1,35 @@
# @backstage/plugin-search-backend-module-catalog
+## 0.1.4-next.2
+
+### Patch Changes
+
+- 29f77f923c71: Ensure that all services are dependency injected into the module instead of taken from options
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+ - @backstage/plugin-search-backend-node@1.2.4-next.2
+
+## 0.1.4-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-search-backend-node@1.2.4-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/plugin-catalog-common@1.0.15
+ - @backstage/plugin-permission-common@0.7.7
+ - @backstage/plugin-search-common@1.2.5
+
## 0.1.4-next.0
### Patch Changes
diff --git a/plugins/search-backend-module-catalog/alpha-api-report.md b/plugins/search-backend-module-catalog/alpha-api-report.md
index 70fae9ef93..7c6e91b6a1 100644
--- a/plugins/search-backend-module-catalog/alpha-api-report.md
+++ b/plugins/search-backend-module-catalog/alpha-api-report.md
@@ -15,7 +15,7 @@ export const searchModuleCatalogCollator: (
// @alpha
export type SearchModuleCatalogCollatorOptions = Omit<
DefaultCatalogCollatorFactoryOptions,
- 'discovery' | 'tokenManager'
+ 'discovery' | 'tokenManager' | 'catalogClient'
> & {
schedule?: TaskScheduleDefinition;
};
diff --git a/plugins/search-backend-module-catalog/package.json b/plugins/search-backend-module-catalog/package.json
index a552ba7600..f279ec399d 100644
--- a/plugins/search-backend-module-catalog/package.json
+++ b/plugins/search-backend-module-catalog/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-search-backend-module-catalog",
"description": "A module for the search backend that exports catalog modules",
- "version": "0.1.4-next.0",
+ "version": "0.1.4-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -26,6 +26,12 @@
"backstage": {
"role": "backend-plugin-module"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/search-backend-module-catalog"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
@@ -43,6 +49,7 @@
"@backstage/catalog-model": "workspace:^",
"@backstage/config": "workspace:^",
"@backstage/plugin-catalog-common": "workspace:^",
+ "@backstage/plugin-catalog-node": "workspace:^",
"@backstage/plugin-permission-common": "workspace:^",
"@backstage/plugin-search-backend-node": "workspace:^",
"@backstage/plugin-search-common": "workspace:^"
diff --git a/plugins/search-backend-module-catalog/src/alpha.ts b/plugins/search-backend-module-catalog/src/alpha.ts
index c633dc71b2..cfd8c13539 100644
--- a/plugins/search-backend-module-catalog/src/alpha.ts
+++ b/plugins/search-backend-module-catalog/src/alpha.ts
@@ -30,6 +30,7 @@ import {
DefaultCatalogCollatorFactory,
DefaultCatalogCollatorFactoryOptions,
} from '@backstage/plugin-search-backend-module-catalog';
+import { catalogServiceRef } from '@backstage/plugin-catalog-node/alpha';
/**
* @alpha
@@ -37,14 +38,15 @@ import {
*/
export type SearchModuleCatalogCollatorOptions = Omit<
DefaultCatalogCollatorFactoryOptions,
- 'discovery' | 'tokenManager'
+ 'discovery' | 'tokenManager' | 'catalogClient'
> & {
schedule?: TaskScheduleDefinition;
};
/**
- * @alpha
* Search backend module for the Catalog index.
+ *
+ * @alpha
*/
export const searchModuleCatalogCollator = createBackendModule(
(options?: SearchModuleCatalogCollatorOptions) => ({
@@ -53,11 +55,12 @@ export const searchModuleCatalogCollator = createBackendModule(
register(env) {
env.registerInit({
deps: {
- config: coreServices.config,
+ config: coreServices.rootConfig,
discovery: coreServices.discovery,
tokenManager: coreServices.tokenManager,
scheduler: coreServices.scheduler,
indexRegistry: searchIndexRegistryExtensionPoint,
+ catalog: catalogServiceRef,
},
async init({
config,
@@ -65,6 +68,7 @@ export const searchModuleCatalogCollator = createBackendModule(
tokenManager,
scheduler,
indexRegistry,
+ catalog,
}) {
const defaultSchedule = {
frequency: { minutes: 10 },
@@ -80,6 +84,7 @@ export const searchModuleCatalogCollator = createBackendModule(
...options,
discovery,
tokenManager,
+ catalogClient: catalog,
}),
});
},
diff --git a/plugins/search-backend-module-elasticsearch/CHANGELOG.md b/plugins/search-backend-module-elasticsearch/CHANGELOG.md
index 268f563330..c8ff1e32ad 100644
--- a/plugins/search-backend-module-elasticsearch/CHANGELOG.md
+++ b/plugins/search-backend-module-elasticsearch/CHANGELOG.md
@@ -1,5 +1,28 @@
# @backstage/plugin-search-backend-module-elasticsearch
+## 1.3.3-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-search-backend-node@1.2.4-next.2
+
+## 1.3.3-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-search-backend-node@1.2.4-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/integration-aws-node@0.1.5
+ - @backstage/config@1.0.8
+ - @backstage/plugin-search-common@1.2.5
+
## 1.3.3-next.0
### Patch Changes
diff --git a/plugins/search-backend-module-elasticsearch/package.json b/plugins/search-backend-module-elasticsearch/package.json
index d7831f70de..9c68cfdaa0 100644
--- a/plugins/search-backend-module-elasticsearch/package.json
+++ b/plugins/search-backend-module-elasticsearch/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-search-backend-module-elasticsearch",
"description": "A module for the search backend that implements search using ElasticSearch",
- "version": "1.3.3-next.0",
+ "version": "1.3.3-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -26,6 +26,12 @@
"backstage": {
"role": "backend-plugin-module"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/search-backend-module-elasticsearch"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
diff --git a/plugins/search-backend-module-elasticsearch/src/alpha.ts b/plugins/search-backend-module-elasticsearch/src/alpha.ts
index 538124f004..7e1b95279a 100644
--- a/plugins/search-backend-module-elasticsearch/src/alpha.ts
+++ b/plugins/search-backend-module-elasticsearch/src/alpha.ts
@@ -48,7 +48,7 @@ export const searchModuleElasticsearchEngine = createBackendModule(
deps: {
searchEngineRegistry: searchEngineRegistryExtensionPoint,
logger: coreServices.logger,
- config: coreServices.config,
+ config: coreServices.rootConfig,
},
async init({ searchEngineRegistry, logger, config }) {
const searchEngine = await ElasticSearchSearchEngine.fromConfig({
diff --git a/plugins/search-backend-module-explore/CHANGELOG.md b/plugins/search-backend-module-explore/CHANGELOG.md
index a7c34b950e..4d954aea2f 100644
--- a/plugins/search-backend-module-explore/CHANGELOG.md
+++ b/plugins/search-backend-module-explore/CHANGELOG.md
@@ -1,5 +1,31 @@
# @backstage/plugin-search-backend-module-explore
+## 0.1.4-next.2
+
+### Patch Changes
+
+- 29f77f923c71: Ensure that all services are dependency injected into the module instead of taken from options
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-search-backend-node@1.2.4-next.2
+
+## 0.1.4-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-search-backend-node@1.2.4-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/config@1.0.8
+ - @backstage/plugin-explore-common@0.0.1
+ - @backstage/plugin-search-common@1.2.5
+
## 0.1.4-next.0
### Patch Changes
diff --git a/plugins/search-backend-module-explore/alpha-api-report.md b/plugins/search-backend-module-explore/alpha-api-report.md
index cf32b59dd3..7b0f2658d6 100644
--- a/plugins/search-backend-module-explore/alpha-api-report.md
+++ b/plugins/search-backend-module-explore/alpha-api-report.md
@@ -5,7 +5,6 @@
```ts
import { BackendFeature } from '@backstage/backend-plugin-api';
import { TaskScheduleDefinition } from '@backstage/backend-tasks';
-import { ToolDocumentCollatorFactoryOptions } from '@backstage/plugin-search-backend-module-explore';
// @alpha
export const searchModuleExploreCollator: (
@@ -13,10 +12,7 @@ export const searchModuleExploreCollator: (
) => BackendFeature;
// @alpha
-export type SearchModuleExploreCollatorOptions = Omit<
- ToolDocumentCollatorFactoryOptions,
- 'logger' | 'discovery'
-> & {
+export type SearchModuleExploreCollatorOptions = {
schedule?: TaskScheduleDefinition;
};
diff --git a/plugins/search-backend-module-explore/package.json b/plugins/search-backend-module-explore/package.json
index abf7d1a49f..e8f3835b39 100644
--- a/plugins/search-backend-module-explore/package.json
+++ b/plugins/search-backend-module-explore/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-search-backend-module-explore",
"description": "A module for the search backend that exports explore modules",
- "version": "0.1.4-next.0",
+ "version": "0.1.4-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -26,6 +26,12 @@
"backstage": {
"role": "backend-plugin-module"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/search-backend-module-explore"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
diff --git a/plugins/search-backend-module-explore/src/alpha.ts b/plugins/search-backend-module-explore/src/alpha.ts
index f13c3c2406..fadbcda3a5 100644
--- a/plugins/search-backend-module-explore/src/alpha.ts
+++ b/plugins/search-backend-module-explore/src/alpha.ts
@@ -27,25 +27,21 @@ import { TaskScheduleDefinition } from '@backstage/backend-tasks';
import { loggerToWinstonLogger } from '@backstage/backend-common';
import { searchIndexRegistryExtensionPoint } from '@backstage/plugin-search-backend-node/alpha';
-import {
- ToolDocumentCollatorFactory,
- ToolDocumentCollatorFactoryOptions,
-} from '@backstage/plugin-search-backend-module-explore';
+import { ToolDocumentCollatorFactory } from '@backstage/plugin-search-backend-module-explore';
/**
- * @alpha
* Options for {@link searchModuleExploreCollator}.
+ *
+ * @alpha
*/
-export type SearchModuleExploreCollatorOptions = Omit<
- ToolDocumentCollatorFactoryOptions,
- 'logger' | 'discovery'
-> & {
+export type SearchModuleExploreCollatorOptions = {
schedule?: TaskScheduleDefinition;
};
/**
- * @alpha
* Search backend module for the Explore index.
+ *
+ * @alpha
*/
export const searchModuleExploreCollator = createBackendModule(
(options?: SearchModuleExploreCollatorOptions) => ({
@@ -54,13 +50,21 @@ export const searchModuleExploreCollator = createBackendModule(
register(env) {
env.registerInit({
deps: {
- config: coreServices.config,
+ config: coreServices.rootConfig,
logger: coreServices.logger,
discovery: coreServices.discovery,
scheduler: coreServices.scheduler,
+ tokenManager: coreServices.tokenManager,
indexRegistry: searchIndexRegistryExtensionPoint,
},
- async init({ config, logger, discovery, scheduler, indexRegistry }) {
+ async init({
+ config,
+ logger,
+ discovery,
+ scheduler,
+ indexRegistry,
+ tokenManager,
+ }) {
const defaultSchedule = {
frequency: { minutes: 10 },
timeout: { minutes: 15 },
@@ -72,9 +76,9 @@ export const searchModuleExploreCollator = createBackendModule(
options?.schedule ?? defaultSchedule,
),
factory: ToolDocumentCollatorFactory.fromConfig(config, {
- ...options,
discovery,
logger: loggerToWinstonLogger(logger),
+ tokenManager,
}),
});
},
diff --git a/plugins/search-backend-module-pg/CHANGELOG.md b/plugins/search-backend-module-pg/CHANGELOG.md
index 25f4090f11..9bd8664ff7 100644
--- a/plugins/search-backend-module-pg/CHANGELOG.md
+++ b/plugins/search-backend-module-pg/CHANGELOG.md
@@ -1,5 +1,27 @@
# @backstage/plugin-search-backend-module-pg
+## 0.5.9-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-search-backend-node@1.2.4-next.2
+
+## 0.5.9-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-search-backend-node@1.2.4-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/config@1.0.8
+ - @backstage/plugin-search-common@1.2.5
+
## 0.5.9-next.0
### Patch Changes
diff --git a/plugins/search-backend-module-pg/package.json b/plugins/search-backend-module-pg/package.json
index 5a1d5de17b..875af316b2 100644
--- a/plugins/search-backend-module-pg/package.json
+++ b/plugins/search-backend-module-pg/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-search-backend-module-pg",
"description": "A module for the search backend that implements search using PostgreSQL",
- "version": "0.5.9-next.0",
+ "version": "0.5.9-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -26,6 +26,12 @@
"backstage": {
"role": "backend-plugin-module"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/search-backend-module-pg"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
diff --git a/plugins/search-backend-module-pg/src/alpha.ts b/plugins/search-backend-module-pg/src/alpha.ts
index e3e0087957..71d62e7927 100644
--- a/plugins/search-backend-module-pg/src/alpha.ts
+++ b/plugins/search-backend-module-pg/src/alpha.ts
@@ -32,7 +32,7 @@ export const searchModulePostgresEngine = createBackendModule({
deps: {
searchEngineRegistry: searchEngineRegistryExtensionPoint,
database: coreServices.database,
- config: coreServices.config,
+ config: coreServices.rootConfig,
},
async init({ searchEngineRegistry, database, config }) {
searchEngineRegistry.setSearchEngine(
diff --git a/plugins/search-backend-module-techdocs/CHANGELOG.md b/plugins/search-backend-module-techdocs/CHANGELOG.md
index 6dad3cc182..f456f03030 100644
--- a/plugins/search-backend-module-techdocs/CHANGELOG.md
+++ b/plugins/search-backend-module-techdocs/CHANGELOG.md
@@ -1,5 +1,37 @@
# @backstage/plugin-search-backend-module-techdocs
+## 0.1.4-next.2
+
+### Patch Changes
+
+- 29f77f923c71: Ensure that all services are dependency injected into the module instead of taken from options
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+ - @backstage/plugin-search-backend-node@1.2.4-next.2
+ - @backstage/plugin-techdocs-node@1.7.4-next.2
+
+## 0.1.4-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-search-backend-node@1.2.4-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/plugin-techdocs-node@1.7.4-next.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/plugin-catalog-common@1.0.15
+ - @backstage/plugin-permission-common@0.7.7
+ - @backstage/plugin-search-common@1.2.5
+
## 0.1.4-next.0
### Patch Changes
diff --git a/plugins/search-backend-module-techdocs/alpha-api-report.md b/plugins/search-backend-module-techdocs/alpha-api-report.md
index 71ce09b744..0eac010b4c 100644
--- a/plugins/search-backend-module-techdocs/alpha-api-report.md
+++ b/plugins/search-backend-module-techdocs/alpha-api-report.md
@@ -15,7 +15,7 @@ export const searchModuleTechDocsCollator: (
// @alpha
export type SearchModuleTechDocsCollatorOptions = Omit<
TechDocsCollatorFactoryOptions,
- 'logger' | 'discovery' | 'tokenManager'
+ 'logger' | 'discovery' | 'tokenManager' | 'catalogClient'
> & {
schedule?: TaskScheduleDefinition;
};
diff --git a/plugins/search-backend-module-techdocs/package.json b/plugins/search-backend-module-techdocs/package.json
index 44115b5cf1..1ee329075d 100644
--- a/plugins/search-backend-module-techdocs/package.json
+++ b/plugins/search-backend-module-techdocs/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-search-backend-module-techdocs",
"description": "A module for the search backend that exports techdocs modules",
- "version": "0.1.4-next.0",
+ "version": "0.1.4-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -26,6 +26,12 @@
"backstage": {
"role": "backend-plugin-module"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/search-backend-module-techdocs"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
@@ -43,6 +49,7 @@
"@backstage/catalog-model": "workspace:^",
"@backstage/config": "workspace:^",
"@backstage/plugin-catalog-common": "workspace:^",
+ "@backstage/plugin-catalog-node": "workspace:^",
"@backstage/plugin-permission-common": "workspace:^",
"@backstage/plugin-search-backend-node": "workspace:^",
"@backstage/plugin-search-common": "workspace:^",
diff --git a/plugins/search-backend-module-techdocs/src/alpha.ts b/plugins/search-backend-module-techdocs/src/alpha.ts
index 1432cc88fb..5d82b6804f 100644
--- a/plugins/search-backend-module-techdocs/src/alpha.ts
+++ b/plugins/search-backend-module-techdocs/src/alpha.ts
@@ -26,6 +26,7 @@ import {
import { TaskScheduleDefinition } from '@backstage/backend-tasks';
import { loggerToWinstonLogger } from '@backstage/backend-common';
import { searchIndexRegistryExtensionPoint } from '@backstage/plugin-search-backend-node/alpha';
+import { catalogServiceRef } from '@backstage/plugin-catalog-node/alpha';
import {
DefaultTechDocsCollatorFactory,
@@ -38,7 +39,7 @@ import {
*/
export type SearchModuleTechDocsCollatorOptions = Omit<
TechDocsCollatorFactoryOptions,
- 'logger' | 'discovery' | 'tokenManager'
+ 'logger' | 'discovery' | 'tokenManager' | 'catalogClient'
> & {
schedule?: TaskScheduleDefinition;
};
@@ -54,11 +55,12 @@ export const searchModuleTechDocsCollator = createBackendModule(
register(env) {
env.registerInit({
deps: {
- config: coreServices.config,
+ config: coreServices.rootConfig,
logger: coreServices.logger,
discovery: coreServices.discovery,
tokenManager: coreServices.tokenManager,
scheduler: coreServices.scheduler,
+ catalog: catalogServiceRef,
indexRegistry: searchIndexRegistryExtensionPoint,
},
async init({
@@ -67,6 +69,7 @@ export const searchModuleTechDocsCollator = createBackendModule(
discovery,
tokenManager,
scheduler,
+ catalog,
indexRegistry,
}) {
const defaultSchedule = {
@@ -84,6 +87,7 @@ export const searchModuleTechDocsCollator = createBackendModule(
discovery,
tokenManager,
logger: loggerToWinstonLogger(logger),
+ catalogClient: catalog,
}),
});
},
diff --git a/plugins/search-backend-node/CHANGELOG.md b/plugins/search-backend-node/CHANGELOG.md
index ad3d44f026..2733e5b22d 100644
--- a/plugins/search-backend-node/CHANGELOG.md
+++ b/plugins/search-backend-node/CHANGELOG.md
@@ -1,5 +1,28 @@
# @backstage/plugin-search-backend-node
+## 1.2.4-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+
+## 1.2.4-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/plugin-permission-common@0.7.7
+ - @backstage/plugin-search-common@1.2.5
+
## 1.2.4-next.0
### Patch Changes
diff --git a/plugins/search-backend-node/package.json b/plugins/search-backend-node/package.json
index 445ba72f0d..845b9bddd1 100644
--- a/plugins/search-backend-node/package.json
+++ b/plugins/search-backend-node/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-search-backend-node",
"description": "A library for Backstage backend plugins that want to interact with the search backend plugin",
- "version": "1.2.4-next.0",
+ "version": "1.2.4-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -26,6 +26,12 @@
"backstage": {
"role": "node-library"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/search-backend-node"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
diff --git a/plugins/search-backend/CHANGELOG.md b/plugins/search-backend/CHANGELOG.md
index 26bf5db1f2..52fd4963ce 100644
--- a/plugins/search-backend/CHANGELOG.md
+++ b/plugins/search-backend/CHANGELOG.md
@@ -1,5 +1,36 @@
# @backstage/plugin-search-backend
+## 1.4.0-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-permission-node@0.7.11-next.2
+ - @backstage/plugin-search-backend-node@1.2.4-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+
+## 1.4.0-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- 12a8c94eda8d: Add package repository and homepage metadata
+- 951ab6c9db58: Add missing `configSchema` to package.json
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/backend-openapi-utils@0.0.3-next.1
+ - @backstage/plugin-search-backend-node@1.2.4-next.1
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/plugin-permission-node@0.7.11-next.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+ - @backstage/plugin-permission-common@0.7.7
+ - @backstage/plugin-search-common@1.2.5
+
## 1.4.0-next.0
### Minor Changes
diff --git a/plugins/search-backend/package.json b/plugins/search-backend/package.json
index 9ad4f55f40..c2357f2a0b 100644
--- a/plugins/search-backend/package.json
+++ b/plugins/search-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-search-backend",
"description": "The Backstage backend plugin that provides your backstage app with search",
- "version": "1.4.0-next.0",
+ "version": "1.4.0-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -26,6 +26,12 @@
"backstage": {
"role": "backend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/search-backend"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
@@ -66,5 +72,6 @@
"files": [
"dist",
"config.d.ts"
- ]
+ ],
+ "configSchema": "config.d.ts"
}
diff --git a/plugins/search-backend/src/alpha.ts b/plugins/search-backend/src/alpha.ts
index 0c14852875..59394ab7a6 100644
--- a/plugins/search-backend/src/alpha.ts
+++ b/plugins/search-backend/src/alpha.ts
@@ -93,7 +93,7 @@ export const searchPlugin = createBackendPlugin({
env.registerInit({
deps: {
logger: coreServices.logger,
- config: coreServices.config,
+ config: coreServices.rootConfig,
permissions: coreServices.permissions,
http: coreServices.httpRouter,
searchIndexService: searchIndexServiceRef,
diff --git a/plugins/search/CHANGELOG.md b/plugins/search/CHANGELOG.md
index cbc0187d23..73650ae636 100644
--- a/plugins/search/CHANGELOG.md
+++ b/plugins/search/CHANGELOG.md
@@ -1,5 +1,12 @@
# @backstage/plugin-search
+## 1.3.4-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
## 1.3.4-next.0
### Patch Changes
diff --git a/plugins/search/package.json b/plugins/search/package.json
index 7a8d7dffab..5d935d57b8 100644
--- a/plugins/search/package.json
+++ b/plugins/search/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-search",
"description": "The Backstage plugin that provides your backstage app with search",
- "version": "1.3.4-next.0",
+ "version": "1.3.4-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/sentry/CHANGELOG.md b/plugins/sentry/CHANGELOG.md
index f4bac35016..1ca911f366 100644
--- a/plugins/sentry/CHANGELOG.md
+++ b/plugins/sentry/CHANGELOG.md
@@ -1,5 +1,12 @@
# @backstage/plugin-sentry
+## 0.5.6-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
## 0.5.6-next.0
### Patch Changes
diff --git a/plugins/sentry/package.json b/plugins/sentry/package.json
index c0bc4c1246..3c700575b0 100644
--- a/plugins/sentry/package.json
+++ b/plugins/sentry/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-sentry",
"description": "A Backstage plugin that integrates towards Sentry",
- "version": "0.5.6-next.0",
+ "version": "0.5.6-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/shortcuts/CHANGELOG.md b/plugins/shortcuts/CHANGELOG.md
index 1082d7d53e..af94df1ac4 100644
--- a/plugins/shortcuts/CHANGELOG.md
+++ b/plugins/shortcuts/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-shortcuts
+## 0.3.13-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+ - @backstage/types@1.1.0
+
## 0.3.13-next.0
### Patch Changes
diff --git a/plugins/shortcuts/package.json b/plugins/shortcuts/package.json
index 5572036823..dfd05422ac 100644
--- a/plugins/shortcuts/package.json
+++ b/plugins/shortcuts/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-shortcuts",
"description": "A Backstage plugin that provides a shortcuts feature to the sidebar",
- "version": "0.3.13-next.0",
+ "version": "0.3.13-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -13,6 +13,12 @@
"backstage": {
"role": "frontend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/shortcuts"
+ },
"scripts": {
"build": "backstage-cli package build",
"start": "backstage-cli package start",
diff --git a/plugins/sonarqube-backend/CHANGELOG.md b/plugins/sonarqube-backend/CHANGELOG.md
index 23010b6a79..95388cda61 100644
--- a/plugins/sonarqube-backend/CHANGELOG.md
+++ b/plugins/sonarqube-backend/CHANGELOG.md
@@ -1,5 +1,22 @@
# @backstage/plugin-sonarqube-backend
+## 0.2.2-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.2
+
+## 0.2.2-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+
## 0.2.2-next.0
### Patch Changes
diff --git a/plugins/sonarqube-backend/package.json b/plugins/sonarqube-backend/package.json
index 79762943fd..0473d2c165 100644
--- a/plugins/sonarqube-backend/package.json
+++ b/plugins/sonarqube-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-sonarqube-backend",
- "version": "0.2.2-next.0",
+ "version": "0.2.2-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -12,6 +12,12 @@
"backstage": {
"role": "backend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/sonarqube-backend"
+ },
"scripts": {
"start": "backstage-cli package start",
"build": "backstage-cli package build",
diff --git a/plugins/sonarqube/CHANGELOG.md b/plugins/sonarqube/CHANGELOG.md
index 51128ed9f5..531ada7eda 100644
--- a/plugins/sonarqube/CHANGELOG.md
+++ b/plugins/sonarqube/CHANGELOG.md
@@ -1,5 +1,25 @@
# @backstage/plugin-sonarqube
+## 0.7.2-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## 0.7.2-next.1
+
+### Patch Changes
+
+- b2ccddefbdc6: Remove sonarQube card disable class
+- Updated dependencies
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+ - @backstage/plugin-sonarqube-react@0.1.7
+
## 0.7.2-next.0
### Patch Changes
diff --git a/plugins/sonarqube/package.json b/plugins/sonarqube/package.json
index dda7ad59ea..e892f2d5e3 100644
--- a/plugins/sonarqube/package.json
+++ b/plugins/sonarqube/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-sonarqube",
"description": "",
- "version": "0.7.2-next.0",
+ "version": "0.7.2-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/sonarqube/src/components/SonarQubeCard/SonarQubeCard.tsx b/plugins/sonarqube/src/components/SonarQubeCard/SonarQubeCard.tsx
index 7ad4717bd2..46a22b9284 100644
--- a/plugins/sonarqube/src/components/SonarQubeCard/SonarQubeCard.tsx
+++ b/plugins/sonarqube/src/components/SonarQubeCard/SonarQubeCard.tsx
@@ -68,9 +68,6 @@ const useStyles = makeStyles(theme => ({
lastAnalyzed: {
color: theme.palette.text.secondary,
},
- disabled: {
- backgroundColor: theme.palette.background.default,
- },
}));
/** @public */
@@ -163,9 +160,6 @@ export const SonarQubeCard = (props: {
action: classes.action,
},
}}
- className={
- !loading && (!projectTitle || !value) ? classes.disabled : undefined
- }
>
{loading && }
diff --git a/plugins/splunk-on-call/CHANGELOG.md b/plugins/splunk-on-call/CHANGELOG.md
index 3d6ec3088f..427d54ef33 100644
--- a/plugins/splunk-on-call/CHANGELOG.md
+++ b/plugins/splunk-on-call/CHANGELOG.md
@@ -1,5 +1,12 @@
# @backstage/plugin-splunk-on-call
+## 0.4.10-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
## 0.4.10-next.0
### Patch Changes
diff --git a/plugins/splunk-on-call/package.json b/plugins/splunk-on-call/package.json
index fb39c0da1a..181e5d2565 100644
--- a/plugins/splunk-on-call/package.json
+++ b/plugins/splunk-on-call/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-splunk-on-call",
"description": "A Backstage plugin that integrates towards Splunk On-Call",
- "version": "0.4.10-next.0",
+ "version": "0.4.10-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/stack-overflow-backend/CHANGELOG.md b/plugins/stack-overflow-backend/CHANGELOG.md
index 3e3716580e..dd3d187afe 100644
--- a/plugins/stack-overflow-backend/CHANGELOG.md
+++ b/plugins/stack-overflow-backend/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-stack-overflow-backend
+## 0.2.4-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.2
+
+## 0.2.4-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/config@1.0.8
+ - @backstage/plugin-search-common@1.2.5
+
## 0.2.4-next.0
### Patch Changes
diff --git a/plugins/stack-overflow-backend/package.json b/plugins/stack-overflow-backend/package.json
index 3ad42aa525..88f9d7fb18 100644
--- a/plugins/stack-overflow-backend/package.json
+++ b/plugins/stack-overflow-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-stack-overflow-backend",
- "version": "0.2.4-next.0",
+ "version": "0.2.4-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/stack-overflow/CHANGELOG.md b/plugins/stack-overflow/CHANGELOG.md
index 0a45b1eb07..c6fc25e2b9 100644
--- a/plugins/stack-overflow/CHANGELOG.md
+++ b/plugins/stack-overflow/CHANGELOG.md
@@ -1,5 +1,19 @@
# @backstage/plugin-stack-overflow
+## 0.1.19-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/config@1.0.8
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-home-react@0.1.2-next.0
+ - @backstage/plugin-search-common@1.2.5
+ - @backstage/plugin-search-react@1.6.4-next.0
+
## 0.1.19-next.0
### Patch Changes
diff --git a/plugins/stack-overflow/package.json b/plugins/stack-overflow/package.json
index 768e8f2b54..3a6efe8d99 100644
--- a/plugins/stack-overflow/package.json
+++ b/plugins/stack-overflow/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-stack-overflow",
- "version": "0.1.19-next.0",
+ "version": "0.1.19-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -12,6 +12,12 @@
"backstage": {
"role": "frontend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/stack-overflow"
+ },
"scripts": {
"build": "backstage-cli package build",
"start": "backstage-cli package start",
diff --git a/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md b/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md
index 4b07de0d02..e41eaa1898 100644
--- a/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md
+++ b/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md
@@ -1,5 +1,24 @@
# @backstage/plugin-tech-insights-backend-module-jsonfc
+## 0.1.32-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-tech-insights-node@0.4.6-next.2
+
+## 0.1.32-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-tech-insights-node@0.4.6-next.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/plugin-tech-insights-common@0.2.11
+
## 0.1.32-next.0
### Patch Changes
diff --git a/plugins/tech-insights-backend-module-jsonfc/package.json b/plugins/tech-insights-backend-module-jsonfc/package.json
index 3784d3d1f5..ca3849773a 100644
--- a/plugins/tech-insights-backend-module-jsonfc/package.json
+++ b/plugins/tech-insights-backend-module-jsonfc/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-tech-insights-backend-module-jsonfc",
- "version": "0.1.32-next.0",
+ "version": "0.1.32-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/tech-insights-backend/CHANGELOG.md b/plugins/tech-insights-backend/CHANGELOG.md
index 4d2b8b5630..f6a96bdb5e 100644
--- a/plugins/tech-insights-backend/CHANGELOG.md
+++ b/plugins/tech-insights-backend/CHANGELOG.md
@@ -1,5 +1,29 @@
# @backstage/plugin-tech-insights-backend
+## 0.5.14-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-tech-insights-node@0.4.6-next.2
+
+## 0.5.14-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/plugin-tech-insights-node@0.4.6-next.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+ - @backstage/plugin-tech-insights-common@0.2.11
+
## 0.5.14-next.0
### Patch Changes
diff --git a/plugins/tech-insights-backend/package.json b/plugins/tech-insights-backend/package.json
index 944d1f2cc5..af66228d4e 100644
--- a/plugins/tech-insights-backend/package.json
+++ b/plugins/tech-insights-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-tech-insights-backend",
- "version": "0.5.14-next.0",
+ "version": "0.5.14-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/tech-insights-node/CHANGELOG.md b/plugins/tech-insights-node/CHANGELOG.md
index 8eb1287bd5..ec3195f9ea 100644
--- a/plugins/tech-insights-node/CHANGELOG.md
+++ b/plugins/tech-insights-node/CHANGELOG.md
@@ -1,5 +1,24 @@
# @backstage/plugin-tech-insights-node
+## 0.4.6-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+
+## 0.4.6-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/config@1.0.8
+ - @backstage/types@1.1.0
+ - @backstage/plugin-tech-insights-common@0.2.11
+
## 0.4.6-next.0
### Patch Changes
diff --git a/plugins/tech-insights-node/package.json b/plugins/tech-insights-node/package.json
index 87d8ebb6ee..9499f65a83 100644
--- a/plugins/tech-insights-node/package.json
+++ b/plugins/tech-insights-node/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-tech-insights-node",
- "version": "0.4.6-next.0",
+ "version": "0.4.6-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/tech-insights/CHANGELOG.md b/plugins/tech-insights/CHANGELOG.md
index 079e53c767..5be97e85af 100644
--- a/plugins/tech-insights/CHANGELOG.md
+++ b/plugins/tech-insights/CHANGELOG.md
@@ -1,5 +1,27 @@
# @backstage/plugin-tech-insights
+## 0.3.13-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
+## 0.3.13-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/catalog-model@1.4.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/theme@0.4.1
+ - @backstage/types@1.1.0
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+ - @backstage/plugin-tech-insights-common@0.2.11
+
## 0.3.13-next.0
### Patch Changes
diff --git a/plugins/tech-insights/package.json b/plugins/tech-insights/package.json
index 4721e0dd30..d3318c46fd 100644
--- a/plugins/tech-insights/package.json
+++ b/plugins/tech-insights/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-tech-insights",
- "version": "0.3.13-next.0",
+ "version": "0.3.13-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -12,6 +12,7 @@
"backstage": {
"role": "frontend-plugin"
},
+ "homepage": "https://backstage.io",
"repository": {
"type": "git",
"url": "https://github.com/backstage/backstage",
diff --git a/plugins/techdocs-addons-test-utils/CHANGELOG.md b/plugins/techdocs-addons-test-utils/CHANGELOG.md
index 4998c21869..12af94f42a 100644
--- a/plugins/techdocs-addons-test-utils/CHANGELOG.md
+++ b/plugins/techdocs-addons-test-utils/CHANGELOG.md
@@ -1,5 +1,30 @@
# @backstage/plugin-techdocs-addons-test-utils
+## 1.0.17-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog@1.12.1-next.2
+ - @backstage/plugin-techdocs@1.6.6-next.2
+ - @backstage/integration-react@1.1.16-next.1
+
+## 1.0.17-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/integration-react@1.1.16-next.1
+ - @backstage/plugin-catalog@1.12.1-next.1
+ - @backstage/plugin-techdocs@1.6.6-next.1
+ - @backstage/core-app-api@1.9.1-next.0
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/test-utils@1.4.2-next.0
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-search-react@1.6.4-next.0
+ - @backstage/plugin-techdocs-react@1.1.9-next.0
+
## 1.0.17-next.0
### Patch Changes
diff --git a/plugins/techdocs-addons-test-utils/package.json b/plugins/techdocs-addons-test-utils/package.json
index ff14fb2187..e9cf034e07 100644
--- a/plugins/techdocs-addons-test-utils/package.json
+++ b/plugins/techdocs-addons-test-utils/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-techdocs-addons-test-utils",
- "version": "1.0.17-next.0",
+ "version": "1.0.17-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/techdocs-backend/CHANGELOG.md b/plugins/techdocs-backend/CHANGELOG.md
index 24c9a12c2b..3dbae8c0a3 100644
--- a/plugins/techdocs-backend/CHANGELOG.md
+++ b/plugins/techdocs-backend/CHANGELOG.md
@@ -1,5 +1,34 @@
# @backstage/plugin-techdocs-backend
+## 1.6.5-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-search-backend-module-techdocs@0.1.4-next.2
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-techdocs-node@1.7.4-next.2
+
+## 1.6.5-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- Updated dependencies
+ - @backstage/plugin-search-backend-module-techdocs@0.1.4-next.1
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/plugin-techdocs-node@1.7.4-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/plugin-catalog-common@1.0.15
+ - @backstage/plugin-permission-common@0.7.7
+ - @backstage/plugin-search-common@1.2.5
+
## 1.6.5-next.0
### Patch Changes
diff --git a/plugins/techdocs-backend/package.json b/plugins/techdocs-backend/package.json
index f3718e7a7d..561d3a81fb 100644
--- a/plugins/techdocs-backend/package.json
+++ b/plugins/techdocs-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-techdocs-backend",
"description": "The Backstage backend plugin that renders technical documentation for your components",
- "version": "1.6.5-next.0",
+ "version": "1.6.5-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/techdocs-backend/src/plugin.ts b/plugins/techdocs-backend/src/plugin.ts
index 134de2bba6..745370b67a 100644
--- a/plugins/techdocs-backend/src/plugin.ts
+++ b/plugins/techdocs-backend/src/plugin.ts
@@ -41,7 +41,7 @@ export const techdocsPlugin = createBackendPlugin({
register(env) {
env.registerInit({
deps: {
- config: coreServices.config,
+ config: coreServices.rootConfig,
logger: coreServices.logger,
urlReader: coreServices.urlReader,
http: coreServices.httpRouter,
diff --git a/plugins/techdocs-module-addons-contrib/CHANGELOG.md b/plugins/techdocs-module-addons-contrib/CHANGELOG.md
index b04e012a5f..8af1e616bc 100644
--- a/plugins/techdocs-module-addons-contrib/CHANGELOG.md
+++ b/plugins/techdocs-module-addons-contrib/CHANGELOG.md
@@ -1,5 +1,17 @@
# @backstage/plugin-techdocs-module-addons-contrib
+## 1.0.16-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/integration-react@1.1.16-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-techdocs-react@1.1.9-next.0
+
## 1.0.16-next.0
### Patch Changes
diff --git a/plugins/techdocs-module-addons-contrib/package.json b/plugins/techdocs-module-addons-contrib/package.json
index 79ac81c021..da388e9044 100644
--- a/plugins/techdocs-module-addons-contrib/package.json
+++ b/plugins/techdocs-module-addons-contrib/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-techdocs-module-addons-contrib",
"description": "Plugin module for contributed TechDocs Addons",
- "version": "1.0.16-next.0",
+ "version": "1.0.16-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/techdocs-node/CHANGELOG.md b/plugins/techdocs-node/CHANGELOG.md
index 7cafbe692c..4d5dbcf11e 100644
--- a/plugins/techdocs-node/CHANGELOG.md
+++ b/plugins/techdocs-node/CHANGELOG.md
@@ -1,5 +1,25 @@
# @backstage/plugin-techdocs-node
+## 1.7.4-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.2
+
+## 1.7.4-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/integration-aws-node@0.1.5
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+ - @backstage/plugin-search-common@1.2.5
+
## 1.7.4-next.0
### Patch Changes
diff --git a/plugins/techdocs-node/package.json b/plugins/techdocs-node/package.json
index 6efbc99547..a255d5fea1 100644
--- a/plugins/techdocs-node/package.json
+++ b/plugins/techdocs-node/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-techdocs-node",
"description": "Common node.js functionalities for TechDocs, to be shared between techdocs-backend plugin and techdocs-cli",
- "version": "1.7.4-next.0",
+ "version": "1.7.4-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"publishConfig": {
diff --git a/plugins/techdocs/CHANGELOG.md b/plugins/techdocs/CHANGELOG.md
index fbf8b4cbdc..3dcc35d072 100644
--- a/plugins/techdocs/CHANGELOG.md
+++ b/plugins/techdocs/CHANGELOG.md
@@ -1,5 +1,31 @@
# @backstage/plugin-techdocs
+## 1.6.6-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+ - @backstage/integration-react@1.1.16-next.1
+
+## 1.6.6-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/integration-react@1.1.16-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/theme@0.4.1
+ - @backstage/plugin-catalog-react@1.8.1-next.0
+ - @backstage/plugin-search-common@1.2.5
+ - @backstage/plugin-search-react@1.6.4-next.0
+ - @backstage/plugin-techdocs-react@1.1.9-next.0
+
## 1.6.6-next.0
### Patch Changes
diff --git a/plugins/techdocs/package.json b/plugins/techdocs/package.json
index 2892e2d983..c4f09c9f17 100644
--- a/plugins/techdocs/package.json
+++ b/plugins/techdocs/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-techdocs",
"description": "The Backstage plugin that renders technical documentation for your components",
- "version": "1.6.6-next.0",
+ "version": "1.6.6-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/todo-backend/CHANGELOG.md b/plugins/todo-backend/CHANGELOG.md
index 3cdec47720..9d2a85b2c4 100644
--- a/plugins/todo-backend/CHANGELOG.md
+++ b/plugins/todo-backend/CHANGELOG.md
@@ -1,5 +1,30 @@
# @backstage/plugin-todo-backend
+## 0.2.0-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-catalog-node@1.4.1-next.2
+
+## 0.2.0-next.1
+
+### Patch Changes
+
+- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config`
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/backend-openapi-utils@0.0.3-next.1
+ - @backstage/plugin-catalog-node@1.4.1-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/integration@1.5.1
+ - @backstage/catalog-client@1.4.3
+ - @backstage/catalog-model@1.4.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+
## 0.2.0-next.0
### Minor Changes
diff --git a/plugins/todo-backend/package.json b/plugins/todo-backend/package.json
index 1257ce5303..4c864ea379 100644
--- a/plugins/todo-backend/package.json
+++ b/plugins/todo-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-todo-backend",
"description": "A Backstage backend plugin that lets you browse TODO comments in your source code",
- "version": "0.2.0-next.0",
+ "version": "0.2.0-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts
index 276d176efb..2ce1771ecb 100644
--- a/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts
+++ b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts
@@ -183,7 +183,7 @@ export const todoReaderServiceRef = createServiceRef({
service,
deps: {
reader: coreServices.urlReader,
- config: coreServices.config,
+ config: coreServices.rootConfig,
logger: coreServices.logger,
},
factory: async ({ reader, config, logger }) => {
diff --git a/plugins/todo/CHANGELOG.md b/plugins/todo/CHANGELOG.md
index 9a7758da72..7d1570ae20 100644
--- a/plugins/todo/CHANGELOG.md
+++ b/plugins/todo/CHANGELOG.md
@@ -1,5 +1,12 @@
# @backstage/plugin-todo
+## 0.2.23-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
## 0.2.23-next.0
### Patch Changes
diff --git a/plugins/todo/package.json b/plugins/todo/package.json
index fa18bf94bb..51a37bffe5 100644
--- a/plugins/todo/package.json
+++ b/plugins/todo/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-todo",
"description": "A Backstage plugin that lets you browse TODO comments in your source code",
- "version": "0.2.23-next.0",
+ "version": "0.2.23-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/user-settings-backend/CHANGELOG.md b/plugins/user-settings-backend/CHANGELOG.md
index c54bb63337..869280ceb9 100644
--- a/plugins/user-settings-backend/CHANGELOG.md
+++ b/plugins/user-settings-backend/CHANGELOG.md
@@ -1,5 +1,27 @@
# @backstage/plugin-user-settings-backend
+## 0.1.12-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-plugin-api@0.6.0-next.2
+ - @backstage/backend-common@0.19.2-next.2
+ - @backstage/plugin-auth-node@0.2.17-next.2
+
+## 0.1.12-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/plugin-auth-node@0.2.17-next.1
+ - @backstage/backend-plugin-api@0.6.0-next.1
+ - @backstage/catalog-model@1.4.1
+ - @backstage/errors@1.2.1
+ - @backstage/types@1.1.0
+
## 0.1.12-next.0
### Patch Changes
diff --git a/plugins/user-settings-backend/package.json b/plugins/user-settings-backend/package.json
index 8b93f7f723..f2eca3e6d4 100644
--- a/plugins/user-settings-backend/package.json
+++ b/plugins/user-settings-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-user-settings-backend",
"description": "The Backstage backend plugin to manage user settings",
- "version": "0.1.12-next.0",
+ "version": "0.1.12-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -14,6 +14,7 @@
"types": "dist/index.d.ts",
"alphaTypes": "dist/index.alpha.d.ts"
},
+ "homepage": "https://backstage.io",
"repository": {
"type": "git",
"url": "https://github.com/backstage/backstage",
diff --git a/plugins/user-settings/CHANGELOG.md b/plugins/user-settings/CHANGELOG.md
index 026ea410f9..c015344dad 100644
--- a/plugins/user-settings/CHANGELOG.md
+++ b/plugins/user-settings/CHANGELOG.md
@@ -1,5 +1,12 @@
# @backstage/plugin-user-settings
+## 0.7.6-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
## 0.7.6-next.0
### Patch Changes
diff --git a/plugins/user-settings/package.json b/plugins/user-settings/package.json
index 57a6d89be0..6a5bc24770 100644
--- a/plugins/user-settings/package.json
+++ b/plugins/user-settings/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-user-settings",
"description": "A Backstage plugin that provides a settings page",
- "version": "0.7.6-next.0",
+ "version": "0.7.6-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/vault-backend/CHANGELOG.md b/plugins/vault-backend/CHANGELOG.md
index 682d521970..d28b252b31 100644
--- a/plugins/vault-backend/CHANGELOG.md
+++ b/plugins/vault-backend/CHANGELOG.md
@@ -1,5 +1,23 @@
# @backstage/plugin-vault-backend
+## 0.3.4-next.2
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-tasks@0.5.5-next.2
+ - @backstage/backend-common@0.19.2-next.2
+
+## 0.3.4-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.19.2-next.1
+ - @backstage/backend-tasks@0.5.5-next.1
+ - @backstage/config@1.0.8
+ - @backstage/errors@1.2.1
+
## 0.3.4-next.0
### Patch Changes
diff --git a/plugins/vault-backend/package.json b/plugins/vault-backend/package.json
index 36cfcbee1d..c40eabf3c7 100644
--- a/plugins/vault-backend/package.json
+++ b/plugins/vault-backend/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-vault-backend",
"description": "A Backstage backend plugin that integrates towards Vault",
- "version": "0.3.4-next.0",
+ "version": "0.3.4-next.2",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/vault/CHANGELOG.md b/plugins/vault/CHANGELOG.md
index d6ba597c0d..351fe4b168 100644
--- a/plugins/vault/CHANGELOG.md
+++ b/plugins/vault/CHANGELOG.md
@@ -1,5 +1,12 @@
# @backstage/plugin-vault
+## 0.1.15-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-react@1.8.1-next.1
+
## 0.1.15-next.0
### Patch Changes
diff --git a/plugins/vault/package.json b/plugins/vault/package.json
index 7d77495527..e0c147c041 100644
--- a/plugins/vault/package.json
+++ b/plugins/vault/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-vault",
"description": "A Backstage plugin that integrates towards Vault",
- "version": "0.1.15-next.0",
+ "version": "0.1.15-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
diff --git a/plugins/xcmetrics/CHANGELOG.md b/plugins/xcmetrics/CHANGELOG.md
index 501758e40c..5fafa11c11 100644
--- a/plugins/xcmetrics/CHANGELOG.md
+++ b/plugins/xcmetrics/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-xcmetrics
+## 0.2.41-next.1
+
+### Patch Changes
+
+- 12a8c94eda8d: Add package repository and homepage metadata
+- Updated dependencies
+ - @backstage/core-components@0.13.4-next.0
+ - @backstage/core-plugin-api@1.5.3
+ - @backstage/errors@1.2.1
+ - @backstage/theme@0.4.1
+
## 0.2.41-next.0
### Patch Changes
diff --git a/plugins/xcmetrics/package.json b/plugins/xcmetrics/package.json
index 57ab0ad3f2..54320e6f7f 100644
--- a/plugins/xcmetrics/package.json
+++ b/plugins/xcmetrics/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-xcmetrics",
"description": "A Backstage plugin that shows XCode build metrics for your components",
- "version": "0.2.41-next.0",
+ "version": "0.2.41-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -13,6 +13,12 @@
"backstage": {
"role": "frontend-plugin"
},
+ "homepage": "https://backstage.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/backstage/backstage",
+ "directory": "plugins/xcmetrics"
+ },
"scripts": {
"build": "backstage-cli package build",
"start": "backstage-cli package start",
diff --git a/yarn.lock b/yarn.lock
index b7d49886f5..da96b34e39 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -102,16 +102,16 @@ __metadata:
linkType: hard
"@apollo/client@npm:^3.0.0":
- version: 3.7.17
- resolution: "@apollo/client@npm:3.7.17"
+ version: 3.8.0
+ resolution: "@apollo/client@npm:3.8.0"
dependencies:
"@graphql-typed-document-node/core": ^3.1.1
- "@wry/context": ^0.7.0
- "@wry/equality": ^0.5.0
- "@wry/trie": ^0.4.0
+ "@wry/context": ^0.7.3
+ "@wry/equality": ^0.5.6
+ "@wry/trie": ^0.4.3
graphql-tag: ^2.12.6
hoist-non-react-statics: ^3.3.2
- optimism: ^0.16.2
+ optimism: ^0.17.5
prop-types: ^15.7.2
response-iterator: ^0.2.6
symbol-observable: ^4.0.0
@@ -133,7 +133,7 @@ __metadata:
optional: true
subscriptions-transport-ws:
optional: true
- checksum: d25e955f3c409885185405ca5876cb74538becafa202257a27483c07d7faa9ce83b34d4cab4b7fd9ad217f80d768e651881292c406dbbca221c91013917890d7
+ checksum: bf1fb4fa82ece6c7c274c0d6b196854fb19c0634b48692deed40fea491b25b385883101521860365b6af609bd0e84e32b1d82955a43e50ae920e971c7707d556
languageName: node
linkType: hard
@@ -199,8 +199,8 @@ __metadata:
linkType: hard
"@apollo/server@npm:^4.0.0":
- version: 4.8.1
- resolution: "@apollo/server@npm:4.8.1"
+ version: 4.9.1
+ resolution: "@apollo/server@npm:4.9.1"
dependencies:
"@apollo/cache-control-types": ^1.0.3
"@apollo/server-gateway-interface": ^1.1.1
@@ -230,7 +230,7 @@ __metadata:
whatwg-mimetype: ^3.0.0
peerDependencies:
graphql: ^16.6.0
- checksum: b59c60b23b90aed9e2f74de1d16f4ac7582f16e2f98d830c85e1339525867786ab17a9295aadf53cdcfdfd0540f81273706e013aae9148ebc3e55e86c820b21c
+ checksum: d5299acfc8f0519adb5aed59e067880bdfd2528353711be07c935d0038ef95e06eecfc58af473011d215c92659f1858ae06c26fe9f70f865383d8e5457e17be5
languageName: node
linkType: hard
@@ -569,517 +569,457 @@ __metadata:
languageName: node
linkType: hard
-"@aws-sdk/chunked-blob-reader-native@npm:3.310.0":
- version: 3.310.0
- resolution: "@aws-sdk/chunked-blob-reader-native@npm:3.310.0"
- dependencies:
- "@aws-sdk/util-base64": 3.310.0
- tslib: ^2.5.0
- checksum: 8b9b88edcaa28b58277a06e95c1b01f1eb2bfba3d994031664957340ae2bc857f1575ec999e8dbd085242b52719228ebff05af1cc0228b1f9296646f4b2095cb
- languageName: node
- linkType: hard
-
-"@aws-sdk/chunked-blob-reader@npm:3.310.0":
- version: 3.310.0
- resolution: "@aws-sdk/chunked-blob-reader@npm:3.310.0"
- dependencies:
- tslib: ^2.5.0
- checksum: 4969fe05c6cea38d0a8dc3ec8e37cbd82a0a5b6f8c32ad6c7d02f0800bc3641e96356f47981c88b645b4dc2bdcb73d03d7ec67ac38d277dde8337b61688f815b
- languageName: node
- linkType: hard
-
-"@aws-sdk/client-cognito-identity@npm:3.370.0":
- version: 3.370.0
- resolution: "@aws-sdk/client-cognito-identity@npm:3.370.0"
+"@aws-sdk/client-cognito-identity@npm:3.387.0":
+ version: 3.387.0
+ resolution: "@aws-sdk/client-cognito-identity@npm:3.387.0"
dependencies:
"@aws-crypto/sha256-browser": 3.0.0
"@aws-crypto/sha256-js": 3.0.0
- "@aws-sdk/client-sts": 3.370.0
- "@aws-sdk/credential-provider-node": 3.370.0
- "@aws-sdk/middleware-host-header": 3.370.0
- "@aws-sdk/middleware-logger": 3.370.0
- "@aws-sdk/middleware-recursion-detection": 3.370.0
- "@aws-sdk/middleware-signing": 3.370.0
- "@aws-sdk/middleware-user-agent": 3.370.0
- "@aws-sdk/types": 3.370.0
- "@aws-sdk/util-endpoints": 3.370.0
- "@aws-sdk/util-user-agent-browser": 3.370.0
- "@aws-sdk/util-user-agent-node": 3.370.0
- "@smithy/config-resolver": ^1.0.1
- "@smithy/fetch-http-handler": ^1.0.1
- "@smithy/hash-node": ^1.0.1
- "@smithy/invalid-dependency": ^1.0.1
- "@smithy/middleware-content-length": ^1.0.1
- "@smithy/middleware-endpoint": ^1.0.2
- "@smithy/middleware-retry": ^1.0.3
- "@smithy/middleware-serde": ^1.0.1
- "@smithy/middleware-stack": ^1.0.1
- "@smithy/node-config-provider": ^1.0.1
- "@smithy/node-http-handler": ^1.0.2
- "@smithy/protocol-http": ^1.1.0
- "@smithy/smithy-client": ^1.0.3
- "@smithy/types": ^1.1.0
- "@smithy/url-parser": ^1.0.1
- "@smithy/util-base64": ^1.0.1
- "@smithy/util-body-length-browser": ^1.0.1
- "@smithy/util-body-length-node": ^1.0.1
- "@smithy/util-defaults-mode-browser": ^1.0.1
- "@smithy/util-defaults-mode-node": ^1.0.1
- "@smithy/util-retry": ^1.0.3
- "@smithy/util-utf8": ^1.0.1
+ "@aws-sdk/client-sts": 3.387.0
+ "@aws-sdk/credential-provider-node": 3.387.0
+ "@aws-sdk/middleware-host-header": 3.387.0
+ "@aws-sdk/middleware-logger": 3.387.0
+ "@aws-sdk/middleware-recursion-detection": 3.387.0
+ "@aws-sdk/middleware-signing": 3.387.0
+ "@aws-sdk/middleware-user-agent": 3.387.0
+ "@aws-sdk/types": 3.387.0
+ "@aws-sdk/util-endpoints": 3.387.0
+ "@aws-sdk/util-user-agent-browser": 3.387.0
+ "@aws-sdk/util-user-agent-node": 3.387.0
+ "@smithy/config-resolver": ^2.0.2
+ "@smithy/fetch-http-handler": ^2.0.2
+ "@smithy/hash-node": ^2.0.2
+ "@smithy/invalid-dependency": ^2.0.2
+ "@smithy/middleware-content-length": ^2.0.2
+ "@smithy/middleware-endpoint": ^2.0.2
+ "@smithy/middleware-retry": ^2.0.2
+ "@smithy/middleware-serde": ^2.0.2
+ "@smithy/middleware-stack": ^2.0.0
+ "@smithy/node-config-provider": ^2.0.2
+ "@smithy/node-http-handler": ^2.0.2
+ "@smithy/protocol-http": ^2.0.2
+ "@smithy/smithy-client": ^2.0.2
+ "@smithy/types": ^2.1.0
+ "@smithy/url-parser": ^2.0.2
+ "@smithy/util-base64": ^2.0.0
+ "@smithy/util-body-length-browser": ^2.0.0
+ "@smithy/util-body-length-node": ^2.0.0
+ "@smithy/util-defaults-mode-browser": ^2.0.2
+ "@smithy/util-defaults-mode-node": ^2.0.2
+ "@smithy/util-retry": ^2.0.0
+ "@smithy/util-utf8": ^2.0.0
tslib: ^2.5.0
- checksum: e13eb18f70ce89ea1d2a111ad74892bbf5ca57a926d97a8787e6fa71e502eed94660cc2e364223151a4c6d019a4d30fd7f21da093f39893e6719ee481fdaf47a
+ checksum: 88be8e754b0f65bef93cf00f87336aa66b6e7d52d78f6bef132716f528f908318628f87316d0feae2d4a8fcf0ba2d2362ecae4bdea193eb8f14ed43eaa2deee1
languageName: node
linkType: hard
"@aws-sdk/client-eks@npm:^3.350.0":
- version: 3.370.0
- resolution: "@aws-sdk/client-eks@npm:3.370.0"
+ version: 3.387.0
+ resolution: "@aws-sdk/client-eks@npm:3.387.0"
dependencies:
"@aws-crypto/sha256-browser": 3.0.0
"@aws-crypto/sha256-js": 3.0.0
- "@aws-sdk/client-sts": 3.370.0
- "@aws-sdk/credential-provider-node": 3.370.0
- "@aws-sdk/middleware-host-header": 3.370.0
- "@aws-sdk/middleware-logger": 3.370.0
- "@aws-sdk/middleware-recursion-detection": 3.370.0
- "@aws-sdk/middleware-signing": 3.370.0
- "@aws-sdk/middleware-user-agent": 3.370.0
- "@aws-sdk/types": 3.370.0
- "@aws-sdk/util-endpoints": 3.370.0
- "@aws-sdk/util-user-agent-browser": 3.370.0
- "@aws-sdk/util-user-agent-node": 3.370.0
- "@smithy/config-resolver": ^1.0.1
- "@smithy/fetch-http-handler": ^1.0.1
- "@smithy/hash-node": ^1.0.1
- "@smithy/invalid-dependency": ^1.0.1
- "@smithy/middleware-content-length": ^1.0.1
- "@smithy/middleware-endpoint": ^1.0.2
- "@smithy/middleware-retry": ^1.0.3
- "@smithy/middleware-serde": ^1.0.1
- "@smithy/middleware-stack": ^1.0.1
- "@smithy/node-config-provider": ^1.0.1
- "@smithy/node-http-handler": ^1.0.2
- "@smithy/protocol-http": ^1.1.0
- "@smithy/smithy-client": ^1.0.3
- "@smithy/types": ^1.1.0
- "@smithy/url-parser": ^1.0.1
- "@smithy/util-base64": ^1.0.1
- "@smithy/util-body-length-browser": ^1.0.1
- "@smithy/util-body-length-node": ^1.0.1
- "@smithy/util-defaults-mode-browser": ^1.0.1
- "@smithy/util-defaults-mode-node": ^1.0.1
- "@smithy/util-retry": ^1.0.3
- "@smithy/util-utf8": ^1.0.1
- "@smithy/util-waiter": ^1.0.1
+ "@aws-sdk/client-sts": 3.387.0
+ "@aws-sdk/credential-provider-node": 3.387.0
+ "@aws-sdk/middleware-host-header": 3.387.0
+ "@aws-sdk/middleware-logger": 3.387.0
+ "@aws-sdk/middleware-recursion-detection": 3.387.0
+ "@aws-sdk/middleware-signing": 3.387.0
+ "@aws-sdk/middleware-user-agent": 3.387.0
+ "@aws-sdk/types": 3.387.0
+ "@aws-sdk/util-endpoints": 3.387.0
+ "@aws-sdk/util-user-agent-browser": 3.387.0
+ "@aws-sdk/util-user-agent-node": 3.387.0
+ "@smithy/config-resolver": ^2.0.2
+ "@smithy/fetch-http-handler": ^2.0.2
+ "@smithy/hash-node": ^2.0.2
+ "@smithy/invalid-dependency": ^2.0.2
+ "@smithy/middleware-content-length": ^2.0.2
+ "@smithy/middleware-endpoint": ^2.0.2
+ "@smithy/middleware-retry": ^2.0.2
+ "@smithy/middleware-serde": ^2.0.2
+ "@smithy/middleware-stack": ^2.0.0
+ "@smithy/node-config-provider": ^2.0.2
+ "@smithy/node-http-handler": ^2.0.2
+ "@smithy/protocol-http": ^2.0.2
+ "@smithy/smithy-client": ^2.0.2
+ "@smithy/types": ^2.1.0
+ "@smithy/url-parser": ^2.0.2
+ "@smithy/util-base64": ^2.0.0
+ "@smithy/util-body-length-browser": ^2.0.0
+ "@smithy/util-body-length-node": ^2.0.0
+ "@smithy/util-defaults-mode-browser": ^2.0.2
+ "@smithy/util-defaults-mode-node": ^2.0.2
+ "@smithy/util-retry": ^2.0.0
+ "@smithy/util-utf8": ^2.0.0
+ "@smithy/util-waiter": ^2.0.2
tslib: ^2.5.0
uuid: ^8.3.2
- checksum: 4b34fe5155161da1b0102e49d62720e8ad067effe188af8aeb9a755d05eae55f52edb8279c19ad18851513d526050f08c239d4a609ea482c5352223b71785e54
+ checksum: f4a8a64d7c7bfef23c4fb610156a4b80c14728870bf67346ee052082f136f02776aba89600adc79dae803d1e96c351f16a0dc4a0ddbe9df09a198644966d4fc3
languageName: node
linkType: hard
"@aws-sdk/client-organizations@npm:^3.350.0":
- version: 3.370.0
- resolution: "@aws-sdk/client-organizations@npm:3.370.0"
+ version: 3.387.0
+ resolution: "@aws-sdk/client-organizations@npm:3.387.0"
dependencies:
"@aws-crypto/sha256-browser": 3.0.0
"@aws-crypto/sha256-js": 3.0.0
- "@aws-sdk/client-sts": 3.370.0
- "@aws-sdk/credential-provider-node": 3.370.0
- "@aws-sdk/middleware-host-header": 3.370.0
- "@aws-sdk/middleware-logger": 3.370.0
- "@aws-sdk/middleware-recursion-detection": 3.370.0
- "@aws-sdk/middleware-signing": 3.370.0
- "@aws-sdk/middleware-user-agent": 3.370.0
- "@aws-sdk/types": 3.370.0
- "@aws-sdk/util-endpoints": 3.370.0
- "@aws-sdk/util-user-agent-browser": 3.370.0
- "@aws-sdk/util-user-agent-node": 3.370.0
- "@smithy/config-resolver": ^1.0.1
- "@smithy/fetch-http-handler": ^1.0.1
- "@smithy/hash-node": ^1.0.1
- "@smithy/invalid-dependency": ^1.0.1
- "@smithy/middleware-content-length": ^1.0.1
- "@smithy/middleware-endpoint": ^1.0.2
- "@smithy/middleware-retry": ^1.0.3
- "@smithy/middleware-serde": ^1.0.1
- "@smithy/middleware-stack": ^1.0.1
- "@smithy/node-config-provider": ^1.0.1
- "@smithy/node-http-handler": ^1.0.2
- "@smithy/protocol-http": ^1.1.0
- "@smithy/smithy-client": ^1.0.3
- "@smithy/types": ^1.1.0
- "@smithy/url-parser": ^1.0.1
- "@smithy/util-base64": ^1.0.1
- "@smithy/util-body-length-browser": ^1.0.1
- "@smithy/util-body-length-node": ^1.0.1
- "@smithy/util-defaults-mode-browser": ^1.0.1
- "@smithy/util-defaults-mode-node": ^1.0.1
- "@smithy/util-retry": ^1.0.3
- "@smithy/util-utf8": ^1.0.1
+ "@aws-sdk/client-sts": 3.387.0
+ "@aws-sdk/credential-provider-node": 3.387.0
+ "@aws-sdk/middleware-host-header": 3.387.0
+ "@aws-sdk/middleware-logger": 3.387.0
+ "@aws-sdk/middleware-recursion-detection": 3.387.0
+ "@aws-sdk/middleware-signing": 3.387.0
+ "@aws-sdk/middleware-user-agent": 3.387.0
+ "@aws-sdk/types": 3.387.0
+ "@aws-sdk/util-endpoints": 3.387.0
+ "@aws-sdk/util-user-agent-browser": 3.387.0
+ "@aws-sdk/util-user-agent-node": 3.387.0
+ "@smithy/config-resolver": ^2.0.2
+ "@smithy/fetch-http-handler": ^2.0.2
+ "@smithy/hash-node": ^2.0.2
+ "@smithy/invalid-dependency": ^2.0.2
+ "@smithy/middleware-content-length": ^2.0.2
+ "@smithy/middleware-endpoint": ^2.0.2
+ "@smithy/middleware-retry": ^2.0.2
+ "@smithy/middleware-serde": ^2.0.2
+ "@smithy/middleware-stack": ^2.0.0
+ "@smithy/node-config-provider": ^2.0.2
+ "@smithy/node-http-handler": ^2.0.2
+ "@smithy/protocol-http": ^2.0.2
+ "@smithy/smithy-client": ^2.0.2
+ "@smithy/types": ^2.1.0
+ "@smithy/url-parser": ^2.0.2
+ "@smithy/util-base64": ^2.0.0
+ "@smithy/util-body-length-browser": ^2.0.0
+ "@smithy/util-body-length-node": ^2.0.0
+ "@smithy/util-defaults-mode-browser": ^2.0.2
+ "@smithy/util-defaults-mode-node": ^2.0.2
+ "@smithy/util-retry": ^2.0.0
+ "@smithy/util-utf8": ^2.0.0
tslib: ^2.5.0
- checksum: 738b259771e83c52abdcc2b2511521f91777262b7e14b1aceb78d8dae7179e2a17648733fe7a40358ad6040ee03f1f251a977a54197b09d4d9f0b6b40052e8d7
+ checksum: 095de70f230113d1b035a25c93074e6953a06b99deb0bf39928c661e05710c7678defbdbb58dbb6919e6f4633fbc9a26a684b07821ba69e244e14733ba978eaa
languageName: node
linkType: hard
"@aws-sdk/client-s3@npm:^3.350.0":
- version: 3.370.0
- resolution: "@aws-sdk/client-s3@npm:3.370.0"
+ version: 3.387.0
+ resolution: "@aws-sdk/client-s3@npm:3.387.0"
dependencies:
"@aws-crypto/sha1-browser": 3.0.0
"@aws-crypto/sha256-browser": 3.0.0
"@aws-crypto/sha256-js": 3.0.0
- "@aws-sdk/client-sts": 3.370.0
- "@aws-sdk/credential-provider-node": 3.370.0
- "@aws-sdk/hash-blob-browser": 3.370.0
- "@aws-sdk/hash-stream-node": 3.370.0
- "@aws-sdk/md5-js": 3.370.0
- "@aws-sdk/middleware-bucket-endpoint": 3.370.0
- "@aws-sdk/middleware-expect-continue": 3.370.0
- "@aws-sdk/middleware-flexible-checksums": 3.370.0
- "@aws-sdk/middleware-host-header": 3.370.0
- "@aws-sdk/middleware-location-constraint": 3.370.0
- "@aws-sdk/middleware-logger": 3.370.0
- "@aws-sdk/middleware-recursion-detection": 3.370.0
- "@aws-sdk/middleware-sdk-s3": 3.370.0
- "@aws-sdk/middleware-signing": 3.370.0
- "@aws-sdk/middleware-ssec": 3.370.0
- "@aws-sdk/middleware-user-agent": 3.370.0
- "@aws-sdk/signature-v4-multi-region": 3.370.0
- "@aws-sdk/types": 3.370.0
- "@aws-sdk/util-endpoints": 3.370.0
- "@aws-sdk/util-user-agent-browser": 3.370.0
- "@aws-sdk/util-user-agent-node": 3.370.0
+ "@aws-sdk/client-sts": 3.387.0
+ "@aws-sdk/credential-provider-node": 3.387.0
+ "@aws-sdk/middleware-bucket-endpoint": 3.387.0
+ "@aws-sdk/middleware-expect-continue": 3.387.0
+ "@aws-sdk/middleware-flexible-checksums": 3.387.0
+ "@aws-sdk/middleware-host-header": 3.387.0
+ "@aws-sdk/middleware-location-constraint": 3.387.0
+ "@aws-sdk/middleware-logger": 3.387.0
+ "@aws-sdk/middleware-recursion-detection": 3.387.0
+ "@aws-sdk/middleware-sdk-s3": 3.387.0
+ "@aws-sdk/middleware-signing": 3.387.0
+ "@aws-sdk/middleware-ssec": 3.387.0
+ "@aws-sdk/middleware-user-agent": 3.387.0
+ "@aws-sdk/signature-v4-multi-region": 3.387.0
+ "@aws-sdk/types": 3.387.0
+ "@aws-sdk/util-endpoints": 3.387.0
+ "@aws-sdk/util-user-agent-browser": 3.387.0
+ "@aws-sdk/util-user-agent-node": 3.387.0
"@aws-sdk/xml-builder": 3.310.0
- "@smithy/config-resolver": ^1.0.1
- "@smithy/eventstream-serde-browser": ^1.0.1
- "@smithy/eventstream-serde-config-resolver": ^1.0.1
- "@smithy/eventstream-serde-node": ^1.0.1
- "@smithy/fetch-http-handler": ^1.0.1
- "@smithy/hash-node": ^1.0.1
- "@smithy/invalid-dependency": ^1.0.1
- "@smithy/middleware-content-length": ^1.0.1
- "@smithy/middleware-endpoint": ^1.0.2
- "@smithy/middleware-retry": ^1.0.3
- "@smithy/middleware-serde": ^1.0.1
- "@smithy/middleware-stack": ^1.0.1
- "@smithy/node-config-provider": ^1.0.1
- "@smithy/node-http-handler": ^1.0.2
- "@smithy/protocol-http": ^1.1.0
- "@smithy/smithy-client": ^1.0.3
- "@smithy/types": ^1.1.0
- "@smithy/url-parser": ^1.0.1
- "@smithy/util-base64": ^1.0.1
- "@smithy/util-body-length-browser": ^1.0.1
- "@smithy/util-body-length-node": ^1.0.1
- "@smithy/util-defaults-mode-browser": ^1.0.1
- "@smithy/util-defaults-mode-node": ^1.0.1
- "@smithy/util-retry": ^1.0.3
- "@smithy/util-stream": ^1.0.1
- "@smithy/util-utf8": ^1.0.1
- "@smithy/util-waiter": ^1.0.1
+ "@smithy/config-resolver": ^2.0.2
+ "@smithy/eventstream-serde-browser": ^2.0.2
+ "@smithy/eventstream-serde-config-resolver": ^2.0.2
+ "@smithy/eventstream-serde-node": ^2.0.2
+ "@smithy/fetch-http-handler": ^2.0.2
+ "@smithy/hash-blob-browser": ^2.0.2
+ "@smithy/hash-node": ^2.0.2
+ "@smithy/hash-stream-node": ^2.0.2
+ "@smithy/invalid-dependency": ^2.0.2
+ "@smithy/md5-js": ^2.0.2
+ "@smithy/middleware-content-length": ^2.0.2
+ "@smithy/middleware-endpoint": ^2.0.2
+ "@smithy/middleware-retry": ^2.0.2
+ "@smithy/middleware-serde": ^2.0.2
+ "@smithy/middleware-stack": ^2.0.0
+ "@smithy/node-config-provider": ^2.0.2
+ "@smithy/node-http-handler": ^2.0.2
+ "@smithy/protocol-http": ^2.0.2
+ "@smithy/smithy-client": ^2.0.2
+ "@smithy/types": ^2.1.0
+ "@smithy/url-parser": ^2.0.2
+ "@smithy/util-base64": ^2.0.0
+ "@smithy/util-body-length-browser": ^2.0.0
+ "@smithy/util-body-length-node": ^2.0.0
+ "@smithy/util-defaults-mode-browser": ^2.0.2
+ "@smithy/util-defaults-mode-node": ^2.0.2
+ "@smithy/util-retry": ^2.0.0
+ "@smithy/util-stream": ^2.0.2
+ "@smithy/util-utf8": ^2.0.0
+ "@smithy/util-waiter": ^2.0.2
fast-xml-parser: 4.2.5
tslib: ^2.5.0
- checksum: 6e395a519a46c1351597b7104e510c8a6f17b7d531eb9a1bf0a706ba69c6c383a9f02b2309d9eb712ead8454e6c1a3906ce65202b7cf353c0385879162875c7b
+ checksum: cc0600dfc971b203bb737850613ab986811b36014f4f42e8cebca71d05baf7ef3d618687ae43c50694b1341f339a44671813187dff6910d24130418d755dd265
languageName: node
linkType: hard
"@aws-sdk/client-sqs@npm:^3.350.0":
- version: 3.370.0
- resolution: "@aws-sdk/client-sqs@npm:3.370.0"
+ version: 3.387.0
+ resolution: "@aws-sdk/client-sqs@npm:3.387.0"
dependencies:
"@aws-crypto/sha256-browser": 3.0.0
"@aws-crypto/sha256-js": 3.0.0
- "@aws-sdk/client-sts": 3.370.0
- "@aws-sdk/credential-provider-node": 3.370.0
- "@aws-sdk/middleware-host-header": 3.370.0
- "@aws-sdk/middleware-logger": 3.370.0
- "@aws-sdk/middleware-recursion-detection": 3.370.0
- "@aws-sdk/middleware-sdk-sqs": 3.370.0
- "@aws-sdk/middleware-signing": 3.370.0
- "@aws-sdk/middleware-user-agent": 3.370.0
- "@aws-sdk/types": 3.370.0
- "@aws-sdk/util-endpoints": 3.370.0
- "@aws-sdk/util-user-agent-browser": 3.370.0
- "@aws-sdk/util-user-agent-node": 3.370.0
- "@smithy/config-resolver": ^1.0.1
- "@smithy/fetch-http-handler": ^1.0.1
- "@smithy/hash-node": ^1.0.1
- "@smithy/invalid-dependency": ^1.0.1
- "@smithy/md5-js": ^1.0.1
- "@smithy/middleware-content-length": ^1.0.1
- "@smithy/middleware-endpoint": ^1.0.2
- "@smithy/middleware-retry": ^1.0.3
- "@smithy/middleware-serde": ^1.0.1
- "@smithy/middleware-stack": ^1.0.1
- "@smithy/node-config-provider": ^1.0.1
- "@smithy/node-http-handler": ^1.0.2
- "@smithy/protocol-http": ^1.1.0
- "@smithy/smithy-client": ^1.0.3
- "@smithy/types": ^1.1.0
- "@smithy/url-parser": ^1.0.1
- "@smithy/util-base64": ^1.0.1
- "@smithy/util-body-length-browser": ^1.0.1
- "@smithy/util-body-length-node": ^1.0.1
- "@smithy/util-defaults-mode-browser": ^1.0.1
- "@smithy/util-defaults-mode-node": ^1.0.1
- "@smithy/util-retry": ^1.0.3
- "@smithy/util-utf8": ^1.0.1
+ "@aws-sdk/client-sts": 3.387.0
+ "@aws-sdk/credential-provider-node": 3.387.0
+ "@aws-sdk/middleware-host-header": 3.387.0
+ "@aws-sdk/middleware-logger": 3.387.0
+ "@aws-sdk/middleware-recursion-detection": 3.387.0
+ "@aws-sdk/middleware-sdk-sqs": 3.387.0
+ "@aws-sdk/middleware-signing": 3.387.0
+ "@aws-sdk/middleware-user-agent": 3.387.0
+ "@aws-sdk/types": 3.387.0
+ "@aws-sdk/util-endpoints": 3.387.0
+ "@aws-sdk/util-user-agent-browser": 3.387.0
+ "@aws-sdk/util-user-agent-node": 3.387.0
+ "@smithy/config-resolver": ^2.0.2
+ "@smithy/fetch-http-handler": ^2.0.2
+ "@smithy/hash-node": ^2.0.2
+ "@smithy/invalid-dependency": ^2.0.2
+ "@smithy/md5-js": ^2.0.2
+ "@smithy/middleware-content-length": ^2.0.2
+ "@smithy/middleware-endpoint": ^2.0.2
+ "@smithy/middleware-retry": ^2.0.2
+ "@smithy/middleware-serde": ^2.0.2
+ "@smithy/middleware-stack": ^2.0.0
+ "@smithy/node-config-provider": ^2.0.2
+ "@smithy/node-http-handler": ^2.0.2
+ "@smithy/protocol-http": ^2.0.2
+ "@smithy/smithy-client": ^2.0.2
+ "@smithy/types": ^2.1.0
+ "@smithy/url-parser": ^2.0.2
+ "@smithy/util-base64": ^2.0.0
+ "@smithy/util-body-length-browser": ^2.0.0
+ "@smithy/util-body-length-node": ^2.0.0
+ "@smithy/util-defaults-mode-browser": ^2.0.2
+ "@smithy/util-defaults-mode-node": ^2.0.2
+ "@smithy/util-retry": ^2.0.0
+ "@smithy/util-utf8": ^2.0.0
fast-xml-parser: 4.2.5
tslib: ^2.5.0
- checksum: 3029a13464fcf3d7a913e9bbe5e98733f733489a1a7d69256b3189e07ce016cbf350b06368636e75426f10f60b8e14aac29678fed6ca77e378954f3cd0c24b4a
+ checksum: 3382ad67ec9679b73a571e0389db1ae80f21fa28beb3a13e3107ce72021705f37c3aacb06b3a3cfb4bc751de0453a443e30f315d5b2cb319abcd3454158c3518
languageName: node
linkType: hard
-"@aws-sdk/client-sso-oidc@npm:3.370.0":
- version: 3.370.0
- resolution: "@aws-sdk/client-sso-oidc@npm:3.370.0"
+"@aws-sdk/client-sso@npm:3.387.0":
+ version: 3.387.0
+ resolution: "@aws-sdk/client-sso@npm:3.387.0"
dependencies:
"@aws-crypto/sha256-browser": 3.0.0
"@aws-crypto/sha256-js": 3.0.0
- "@aws-sdk/middleware-host-header": 3.370.0
- "@aws-sdk/middleware-logger": 3.370.0
- "@aws-sdk/middleware-recursion-detection": 3.370.0
- "@aws-sdk/middleware-user-agent": 3.370.0
- "@aws-sdk/types": 3.370.0
- "@aws-sdk/util-endpoints": 3.370.0
- "@aws-sdk/util-user-agent-browser": 3.370.0
- "@aws-sdk/util-user-agent-node": 3.370.0
- "@smithy/config-resolver": ^1.0.1
- "@smithy/fetch-http-handler": ^1.0.1
- "@smithy/hash-node": ^1.0.1
- "@smithy/invalid-dependency": ^1.0.1
- "@smithy/middleware-content-length": ^1.0.1
- "@smithy/middleware-endpoint": ^1.0.2
- "@smithy/middleware-retry": ^1.0.3
- "@smithy/middleware-serde": ^1.0.1
- "@smithy/middleware-stack": ^1.0.1
- "@smithy/node-config-provider": ^1.0.1
- "@smithy/node-http-handler": ^1.0.2
- "@smithy/protocol-http": ^1.1.0
- "@smithy/smithy-client": ^1.0.3
- "@smithy/types": ^1.1.0
- "@smithy/url-parser": ^1.0.1
- "@smithy/util-base64": ^1.0.1
- "@smithy/util-body-length-browser": ^1.0.1
- "@smithy/util-body-length-node": ^1.0.1
- "@smithy/util-defaults-mode-browser": ^1.0.1
- "@smithy/util-defaults-mode-node": ^1.0.1
- "@smithy/util-retry": ^1.0.3
- "@smithy/util-utf8": ^1.0.1
+ "@aws-sdk/middleware-host-header": 3.387.0
+ "@aws-sdk/middleware-logger": 3.387.0
+ "@aws-sdk/middleware-recursion-detection": 3.387.0
+ "@aws-sdk/middleware-user-agent": 3.387.0
+ "@aws-sdk/types": 3.387.0
+ "@aws-sdk/util-endpoints": 3.387.0
+ "@aws-sdk/util-user-agent-browser": 3.387.0
+ "@aws-sdk/util-user-agent-node": 3.387.0
+ "@smithy/config-resolver": ^2.0.2
+ "@smithy/fetch-http-handler": ^2.0.2
+ "@smithy/hash-node": ^2.0.2
+ "@smithy/invalid-dependency": ^2.0.2
+ "@smithy/middleware-content-length": ^2.0.2
+ "@smithy/middleware-endpoint": ^2.0.2
+ "@smithy/middleware-retry": ^2.0.2
+ "@smithy/middleware-serde": ^2.0.2
+ "@smithy/middleware-stack": ^2.0.0
+ "@smithy/node-config-provider": ^2.0.2
+ "@smithy/node-http-handler": ^2.0.2
+ "@smithy/protocol-http": ^2.0.2
+ "@smithy/smithy-client": ^2.0.2
+ "@smithy/types": ^2.1.0
+ "@smithy/url-parser": ^2.0.2
+ "@smithy/util-base64": ^2.0.0
+ "@smithy/util-body-length-browser": ^2.0.0
+ "@smithy/util-body-length-node": ^2.0.0
+ "@smithy/util-defaults-mode-browser": ^2.0.2
+ "@smithy/util-defaults-mode-node": ^2.0.2
+ "@smithy/util-retry": ^2.0.0
+ "@smithy/util-utf8": ^2.0.0
tslib: ^2.5.0
- checksum: a94d58fdef83615fa63ecde638a3ece82c2eaf05d7309a4ab336e0c6bebf8501aad123efbbf0714db4710208897594e13bfe1e450a657aa4bd82fbea338c0946
+ checksum: ca4750675bc39e7201b4b611cd642cb5f37413138a09670499c00ea637509aab0bd54a7b96e6b4a2bec810f12c9c87d0519fc6cad0a7f8a86ecad4bf8047a7ac
languageName: node
linkType: hard
-"@aws-sdk/client-sso@npm:3.370.0":
- version: 3.370.0
- resolution: "@aws-sdk/client-sso@npm:3.370.0"
+"@aws-sdk/client-sts@npm:3.387.0, @aws-sdk/client-sts@npm:^3.350.0":
+ version: 3.387.0
+ resolution: "@aws-sdk/client-sts@npm:3.387.0"
dependencies:
"@aws-crypto/sha256-browser": 3.0.0
"@aws-crypto/sha256-js": 3.0.0
- "@aws-sdk/middleware-host-header": 3.370.0
- "@aws-sdk/middleware-logger": 3.370.0
- "@aws-sdk/middleware-recursion-detection": 3.370.0
- "@aws-sdk/middleware-user-agent": 3.370.0
- "@aws-sdk/types": 3.370.0
- "@aws-sdk/util-endpoints": 3.370.0
- "@aws-sdk/util-user-agent-browser": 3.370.0
- "@aws-sdk/util-user-agent-node": 3.370.0
- "@smithy/config-resolver": ^1.0.1
- "@smithy/fetch-http-handler": ^1.0.1
- "@smithy/hash-node": ^1.0.1
- "@smithy/invalid-dependency": ^1.0.1
- "@smithy/middleware-content-length": ^1.0.1
- "@smithy/middleware-endpoint": ^1.0.2
- "@smithy/middleware-retry": ^1.0.3
- "@smithy/middleware-serde": ^1.0.1
- "@smithy/middleware-stack": ^1.0.1
- "@smithy/node-config-provider": ^1.0.1
- "@smithy/node-http-handler": ^1.0.2
- "@smithy/protocol-http": ^1.1.0
- "@smithy/smithy-client": ^1.0.3
- "@smithy/types": ^1.1.0
- "@smithy/url-parser": ^1.0.1
- "@smithy/util-base64": ^1.0.1
- "@smithy/util-body-length-browser": ^1.0.1
- "@smithy/util-body-length-node": ^1.0.1
- "@smithy/util-defaults-mode-browser": ^1.0.1
- "@smithy/util-defaults-mode-node": ^1.0.1
- "@smithy/util-retry": ^1.0.3
- "@smithy/util-utf8": ^1.0.1
- tslib: ^2.5.0
- checksum: e6797cac371b7da2b01885f0a4bcb81033af2246bb45ca6454d76b223ab23a824667479e9e7a77fe3d99164fb009a970ff6498d9d13ef57587ef1652f0f7f036
- languageName: node
- linkType: hard
-
-"@aws-sdk/client-sts@npm:3.370.0, @aws-sdk/client-sts@npm:^3.350.0":
- version: 3.370.0
- resolution: "@aws-sdk/client-sts@npm:3.370.0"
- dependencies:
- "@aws-crypto/sha256-browser": 3.0.0
- "@aws-crypto/sha256-js": 3.0.0
- "@aws-sdk/credential-provider-node": 3.370.0
- "@aws-sdk/middleware-host-header": 3.370.0
- "@aws-sdk/middleware-logger": 3.370.0
- "@aws-sdk/middleware-recursion-detection": 3.370.0
- "@aws-sdk/middleware-sdk-sts": 3.370.0
- "@aws-sdk/middleware-signing": 3.370.0
- "@aws-sdk/middleware-user-agent": 3.370.0
- "@aws-sdk/types": 3.370.0
- "@aws-sdk/util-endpoints": 3.370.0
- "@aws-sdk/util-user-agent-browser": 3.370.0
- "@aws-sdk/util-user-agent-node": 3.370.0
- "@smithy/config-resolver": ^1.0.1
- "@smithy/fetch-http-handler": ^1.0.1
- "@smithy/hash-node": ^1.0.1
- "@smithy/invalid-dependency": ^1.0.1
- "@smithy/middleware-content-length": ^1.0.1
- "@smithy/middleware-endpoint": ^1.0.2
- "@smithy/middleware-retry": ^1.0.3
- "@smithy/middleware-serde": ^1.0.1
- "@smithy/middleware-stack": ^1.0.1
- "@smithy/node-config-provider": ^1.0.1
- "@smithy/node-http-handler": ^1.0.2
- "@smithy/protocol-http": ^1.1.0
- "@smithy/smithy-client": ^1.0.3
- "@smithy/types": ^1.1.0
- "@smithy/url-parser": ^1.0.1
- "@smithy/util-base64": ^1.0.1
- "@smithy/util-body-length-browser": ^1.0.1
- "@smithy/util-body-length-node": ^1.0.1
- "@smithy/util-defaults-mode-browser": ^1.0.1
- "@smithy/util-defaults-mode-node": ^1.0.1
- "@smithy/util-retry": ^1.0.3
- "@smithy/util-utf8": ^1.0.1
+ "@aws-sdk/credential-provider-node": 3.387.0
+ "@aws-sdk/middleware-host-header": 3.387.0
+ "@aws-sdk/middleware-logger": 3.387.0
+ "@aws-sdk/middleware-recursion-detection": 3.387.0
+ "@aws-sdk/middleware-sdk-sts": 3.387.0
+ "@aws-sdk/middleware-signing": 3.387.0
+ "@aws-sdk/middleware-user-agent": 3.387.0
+ "@aws-sdk/types": 3.387.0
+ "@aws-sdk/util-endpoints": 3.387.0
+ "@aws-sdk/util-user-agent-browser": 3.387.0
+ "@aws-sdk/util-user-agent-node": 3.387.0
+ "@smithy/config-resolver": ^2.0.2
+ "@smithy/fetch-http-handler": ^2.0.2
+ "@smithy/hash-node": ^2.0.2
+ "@smithy/invalid-dependency": ^2.0.2
+ "@smithy/middleware-content-length": ^2.0.2
+ "@smithy/middleware-endpoint": ^2.0.2
+ "@smithy/middleware-retry": ^2.0.2
+ "@smithy/middleware-serde": ^2.0.2
+ "@smithy/middleware-stack": ^2.0.0
+ "@smithy/node-config-provider": ^2.0.2
+ "@smithy/node-http-handler": ^2.0.2
+ "@smithy/protocol-http": ^2.0.2
+ "@smithy/smithy-client": ^2.0.2
+ "@smithy/types": ^2.1.0
+ "@smithy/url-parser": ^2.0.2
+ "@smithy/util-base64": ^2.0.0
+ "@smithy/util-body-length-browser": ^2.0.0
+ "@smithy/util-body-length-node": ^2.0.0
+ "@smithy/util-defaults-mode-browser": ^2.0.2
+ "@smithy/util-defaults-mode-node": ^2.0.2
+ "@smithy/util-retry": ^2.0.0
+ "@smithy/util-utf8": ^2.0.0
fast-xml-parser: 4.2.5
tslib: ^2.5.0
- checksum: 55ce8a7a8a8a44cffdbfca10ac2e4d389a4a13e81a4558ef401c3174727296c47375cec5898023e082285aaf5804d62f5d887da53e343f24aec8d8b5bc4ea29b
+ checksum: 6f3a0a36c7d2881b438e64a2b6cb11f809c4bc406af27fb692d5d3a7cebb93fc5b26f235ee5a4f3eea620b0c07d015ce11e2d8f32c79b3ea01221fe8548c2421
languageName: node
linkType: hard
-"@aws-sdk/credential-provider-cognito-identity@npm:3.370.0":
- version: 3.370.0
- resolution: "@aws-sdk/credential-provider-cognito-identity@npm:3.370.0"
+"@aws-sdk/credential-provider-cognito-identity@npm:3.387.0":
+ version: 3.387.0
+ resolution: "@aws-sdk/credential-provider-cognito-identity@npm:3.387.0"
dependencies:
- "@aws-sdk/client-cognito-identity": 3.370.0
- "@aws-sdk/types": 3.370.0
- "@smithy/property-provider": ^1.0.1
- "@smithy/types": ^1.1.0
+ "@aws-sdk/client-cognito-identity": 3.387.0
+ "@aws-sdk/types": 3.387.0
+ "@smithy/property-provider": ^2.0.0
+ "@smithy/types": ^2.1.0
tslib: ^2.5.0
- checksum: 3ee862b115b3549bebeff65b6d02e26154f22dc2f9efde8e805c7305537a9cd4b9af7f3a8cb3f7f325c2ae211cb687ca4a9e345990c13319e4e3fad0b33f0503
+ checksum: 126a72f6b6515237aa128c22fe6b0fbdfefbfb39950da8686187f567fdbaa6cb18d41437b67e80bd66e4f5d2eae0018587585700e0950c2a639e04092f31445e
languageName: node
linkType: hard
-"@aws-sdk/credential-provider-env@npm:3.370.0":
- version: 3.370.0
- resolution: "@aws-sdk/credential-provider-env@npm:3.370.0"
+"@aws-sdk/credential-provider-env@npm:3.387.0":
+ version: 3.387.0
+ resolution: "@aws-sdk/credential-provider-env@npm:3.387.0"
dependencies:
- "@aws-sdk/types": 3.370.0
- "@smithy/property-provider": ^1.0.1
- "@smithy/types": ^1.1.0
+ "@aws-sdk/types": 3.387.0
+ "@smithy/property-provider": ^2.0.0
+ "@smithy/types": ^2.1.0
tslib: ^2.5.0
- checksum: 0295278ca333b8548c417d164569df737a5c587d7d39c35e9d0c9b55022a3d8caa3de04dd242135069cb3570cd9f52a2c1012fcaef4a13f49e91cec6aa0ed9b6
+ checksum: 7cfa4c87224a8632741d8fd1c25384a59413581b94eb79e1547a4f9b3542c2b27559c097a09f747f4b1617a3c382795f17aebc290b5e35a8a5fae1f93736449f
languageName: node
linkType: hard
-"@aws-sdk/credential-provider-ini@npm:3.370.0":
- version: 3.370.0
- resolution: "@aws-sdk/credential-provider-ini@npm:3.370.0"
+"@aws-sdk/credential-provider-ini@npm:3.387.0":
+ version: 3.387.0
+ resolution: "@aws-sdk/credential-provider-ini@npm:3.387.0"
dependencies:
- "@aws-sdk/credential-provider-env": 3.370.0
- "@aws-sdk/credential-provider-process": 3.370.0
- "@aws-sdk/credential-provider-sso": 3.370.0
- "@aws-sdk/credential-provider-web-identity": 3.370.0
- "@aws-sdk/types": 3.370.0
- "@smithy/credential-provider-imds": ^1.0.1
- "@smithy/property-provider": ^1.0.1
- "@smithy/shared-ini-file-loader": ^1.0.1
- "@smithy/types": ^1.1.0
+ "@aws-sdk/credential-provider-env": 3.387.0
+ "@aws-sdk/credential-provider-process": 3.387.0
+ "@aws-sdk/credential-provider-sso": 3.387.0
+ "@aws-sdk/credential-provider-web-identity": 3.387.0
+ "@aws-sdk/types": 3.387.0
+ "@smithy/credential-provider-imds": ^2.0.0
+ "@smithy/property-provider": ^2.0.0
+ "@smithy/shared-ini-file-loader": ^2.0.0
+ "@smithy/types": ^2.1.0
tslib: ^2.5.0
- checksum: 8d8d0d386eb521047ac515fe8bb99faad0b5613dfd1e1824ebc0b427f68d420a68c97ba5b1b5e64a16e3edda3633d76d2f632acdf2c8b37ff39148c8e50c7200
+ checksum: 40e69ca6081d24016b0a56fab6cca9b6cd2d5ca2cf17ab2e3e99a99e351d78d86d38f5e424a6c26355d099c6e060e24c56ff3064b6b1fbc2cad9c89b1dd655c4
languageName: node
linkType: hard
-"@aws-sdk/credential-provider-node@npm:3.370.0, @aws-sdk/credential-provider-node@npm:^3.350.0":
- version: 3.370.0
- resolution: "@aws-sdk/credential-provider-node@npm:3.370.0"
+"@aws-sdk/credential-provider-node@npm:3.387.0, @aws-sdk/credential-provider-node@npm:^3.350.0":
+ version: 3.387.0
+ resolution: "@aws-sdk/credential-provider-node@npm:3.387.0"
dependencies:
- "@aws-sdk/credential-provider-env": 3.370.0
- "@aws-sdk/credential-provider-ini": 3.370.0
- "@aws-sdk/credential-provider-process": 3.370.0
- "@aws-sdk/credential-provider-sso": 3.370.0
- "@aws-sdk/credential-provider-web-identity": 3.370.0
- "@aws-sdk/types": 3.370.0
- "@smithy/credential-provider-imds": ^1.0.1
- "@smithy/property-provider": ^1.0.1
- "@smithy/shared-ini-file-loader": ^1.0.1
- "@smithy/types": ^1.1.0
+ "@aws-sdk/credential-provider-env": 3.387.0
+ "@aws-sdk/credential-provider-ini": 3.387.0
+ "@aws-sdk/credential-provider-process": 3.387.0
+ "@aws-sdk/credential-provider-sso": 3.387.0
+ "@aws-sdk/credential-provider-web-identity": 3.387.0
+ "@aws-sdk/types": 3.387.0
+ "@smithy/credential-provider-imds": ^2.0.0
+ "@smithy/property-provider": ^2.0.0
+ "@smithy/shared-ini-file-loader": ^2.0.0
+ "@smithy/types": ^2.1.0
tslib: ^2.5.0
- checksum: 564422e77d791fcc307f2954ebf2e7a17273dff63812ed8528196f3f38163db726a71cc1c22d2e6de287727d3506764dab8c9c99de7fe3426d6cec0bf4d4f0ab
+ checksum: cdc3f29c6be304e39cb42f8b53227f607e8bb10d0fae542614d76b322e1a75718d70a4726d97cb24d6e3da51245b837dcb07cfaf34eb8600d290267c8987a06a
languageName: node
linkType: hard
-"@aws-sdk/credential-provider-process@npm:3.370.0":
- version: 3.370.0
- resolution: "@aws-sdk/credential-provider-process@npm:3.370.0"
+"@aws-sdk/credential-provider-process@npm:3.387.0":
+ version: 3.387.0
+ resolution: "@aws-sdk/credential-provider-process@npm:3.387.0"
dependencies:
- "@aws-sdk/types": 3.370.0
- "@smithy/property-provider": ^1.0.1
- "@smithy/shared-ini-file-loader": ^1.0.1
- "@smithy/types": ^1.1.0
+ "@aws-sdk/types": 3.387.0
+ "@smithy/property-provider": ^2.0.0
+ "@smithy/shared-ini-file-loader": ^2.0.0
+ "@smithy/types": ^2.1.0
tslib: ^2.5.0
- checksum: 286080cfdb0a433a619cafb29316cc4259022de5369a5a2eefd638a8b025626eb730a6d676bdff4ef0fb905c44fe4a1d4c856f62318553f62b425eea406229de
+ checksum: 90b5c902b659dd6d39b6e81503fa4587ed5bb7c4b6a7ecb648561e8ca7a82c621b0b65496855cba3e68d63e1c432e26d40c89c0194e5952f31b52cbd20bca8ae
languageName: node
linkType: hard
-"@aws-sdk/credential-provider-sso@npm:3.370.0":
- version: 3.370.0
- resolution: "@aws-sdk/credential-provider-sso@npm:3.370.0"
+"@aws-sdk/credential-provider-sso@npm:3.387.0":
+ version: 3.387.0
+ resolution: "@aws-sdk/credential-provider-sso@npm:3.387.0"
dependencies:
- "@aws-sdk/client-sso": 3.370.0
- "@aws-sdk/token-providers": 3.370.0
- "@aws-sdk/types": 3.370.0
- "@smithy/property-provider": ^1.0.1
- "@smithy/shared-ini-file-loader": ^1.0.1
- "@smithy/types": ^1.1.0
+ "@aws-sdk/client-sso": 3.387.0
+ "@aws-sdk/token-providers": 3.387.0
+ "@aws-sdk/types": 3.387.0
+ "@smithy/property-provider": ^2.0.0
+ "@smithy/shared-ini-file-loader": ^2.0.0
+ "@smithy/types": ^2.1.0
tslib: ^2.5.0
- checksum: a5ef52fd213f567ba7aaa243bf4494a4df272522de4db952f0f9a0b1c148920fc49aff43321ec11b08ddd62e34c2686b0d50ae3a20c229e680d392b3c194b0f5
+ checksum: 740d16079be50a43a23b59c10d44fabca3da67ee251f2b6975d7b58909554c66e0c8a40f6e9457d85f2997a63cf435bcbf82e53d9d2f7c7005f243dbe5305fff
languageName: node
linkType: hard
-"@aws-sdk/credential-provider-web-identity@npm:3.370.0":
- version: 3.370.0
- resolution: "@aws-sdk/credential-provider-web-identity@npm:3.370.0"
+"@aws-sdk/credential-provider-web-identity@npm:3.387.0":
+ version: 3.387.0
+ resolution: "@aws-sdk/credential-provider-web-identity@npm:3.387.0"
dependencies:
- "@aws-sdk/types": 3.370.0
- "@smithy/property-provider": ^1.0.1
- "@smithy/types": ^1.1.0
+ "@aws-sdk/types": 3.387.0
+ "@smithy/property-provider": ^2.0.0
+ "@smithy/types": ^2.1.0
tslib: ^2.5.0
- checksum: 3e9ce1c7749e60302f966a64635a11dece3da47ece8da6e4eae0c784bdf481bee48a0b1085014b11b812ee608fe99fb20548203bfa8d2f43f709b39b1a484f9b
+ checksum: 47cf13e4275ee948750c78c147fe70a64698197ed86bc38c29269e745001775cf4261e763e6dd37235ed50adc5638add08b3c04d6bb9af1cf1ef7c79f0cd336b
languageName: node
linkType: hard
"@aws-sdk/credential-providers@npm:^3.350.0":
- version: 3.370.0
- resolution: "@aws-sdk/credential-providers@npm:3.370.0"
+ version: 3.387.0
+ resolution: "@aws-sdk/credential-providers@npm:3.387.0"
dependencies:
- "@aws-sdk/client-cognito-identity": 3.370.0
- "@aws-sdk/client-sso": 3.370.0
- "@aws-sdk/client-sts": 3.370.0
- "@aws-sdk/credential-provider-cognito-identity": 3.370.0
- "@aws-sdk/credential-provider-env": 3.370.0
- "@aws-sdk/credential-provider-ini": 3.370.0
- "@aws-sdk/credential-provider-node": 3.370.0
- "@aws-sdk/credential-provider-process": 3.370.0
- "@aws-sdk/credential-provider-sso": 3.370.0
- "@aws-sdk/credential-provider-web-identity": 3.370.0
- "@aws-sdk/types": 3.370.0
- "@smithy/credential-provider-imds": ^1.0.1
- "@smithy/property-provider": ^1.0.1
- "@smithy/types": ^1.1.0
+ "@aws-sdk/client-cognito-identity": 3.387.0
+ "@aws-sdk/client-sso": 3.387.0
+ "@aws-sdk/client-sts": 3.387.0
+ "@aws-sdk/credential-provider-cognito-identity": 3.387.0
+ "@aws-sdk/credential-provider-env": 3.387.0
+ "@aws-sdk/credential-provider-ini": 3.387.0
+ "@aws-sdk/credential-provider-node": 3.387.0
+ "@aws-sdk/credential-provider-process": 3.387.0
+ "@aws-sdk/credential-provider-sso": 3.387.0
+ "@aws-sdk/credential-provider-web-identity": 3.387.0
+ "@aws-sdk/types": 3.387.0
+ "@smithy/credential-provider-imds": ^2.0.0
+ "@smithy/property-provider": ^2.0.0
+ "@smithy/types": ^2.1.0
tslib: ^2.5.0
- checksum: 7eb60bda6bb4fe22c487aa19469858ba593c49fdad9cc8c2447307cdfdd883fd87743a398007f62ddf7e354eff8dfa716ef614adaaee2712f1a9866f478c32de
+ checksum: 761260e185f932cddc523d3e1491497cf3ff147496af354aed2ddd43da5a86218dbc2eccec00a71c166070dd24261795c2eb227ab986761478bd138ccb3fa9af
languageName: node
linkType: hard
@@ -1095,29 +1035,6 @@ __metadata:
languageName: node
linkType: hard
-"@aws-sdk/hash-blob-browser@npm:3.370.0":
- version: 3.370.0
- resolution: "@aws-sdk/hash-blob-browser@npm:3.370.0"
- dependencies:
- "@aws-sdk/chunked-blob-reader": 3.310.0
- "@aws-sdk/chunked-blob-reader-native": 3.310.0
- "@aws-sdk/types": 3.370.0
- tslib: ^2.5.0
- checksum: 51d24225d299c238032aa6e29cf2c13b876231cf8fef40dcf9ef1ea05b1fb873cf7de76eba13ce63b2324e156c85e2795ba0e66abc2570745b9ec92586185f4b
- languageName: node
- linkType: hard
-
-"@aws-sdk/hash-stream-node@npm:3.370.0":
- version: 3.370.0
- resolution: "@aws-sdk/hash-stream-node@npm:3.370.0"
- dependencies:
- "@aws-sdk/types": 3.370.0
- "@aws-sdk/util-utf8": 3.310.0
- tslib: ^2.5.0
- checksum: 97add2caadb15f5b6cbc551801dc672ba6e3664667c9be53c794cca9a1be827df932ac40148bae0e7586b6f7bebb2483257501d3c9e946dd1ba7fbb31a29de33
- languageName: node
- linkType: hard
-
"@aws-sdk/is-array-buffer@npm:3.310.0":
version: 3.310.0
resolution: "@aws-sdk/is-array-buffer@npm:3.310.0"
@@ -1128,44 +1045,33 @@ __metadata:
linkType: hard
"@aws-sdk/lib-storage@npm:^3.350.0":
- version: 3.370.0
- resolution: "@aws-sdk/lib-storage@npm:3.370.0"
+ version: 3.387.0
+ resolution: "@aws-sdk/lib-storage@npm:3.387.0"
dependencies:
- "@smithy/abort-controller": ^1.0.1
- "@smithy/middleware-endpoint": ^1.0.2
- "@smithy/smithy-client": ^1.0.3
+ "@smithy/abort-controller": ^2.0.1
+ "@smithy/middleware-endpoint": ^2.0.2
+ "@smithy/smithy-client": ^2.0.2
buffer: 5.6.0
events: 3.3.0
stream-browserify: 3.0.0
tslib: ^2.5.0
peerDependencies:
"@aws-sdk/client-s3": ^3.0.0
- checksum: a45fc04b33ad462b8d9ca8f0233c10b49eb91ace24cf8a53a359d96b6266a4eef2bc713bbbacb4799703c339756a9d39cb17bfaa44f607aa99df22c688c0748b
+ checksum: aa753c2e6f9db051fe893ab2352a3c7c84ca53089ba837b972e1ae5911af71bb978002ea07ed59f673b3773fe3d1fbd2ce2fff251b671f672655cfbf9b48626e
languageName: node
linkType: hard
-"@aws-sdk/md5-js@npm:3.370.0":
- version: 3.370.0
- resolution: "@aws-sdk/md5-js@npm:3.370.0"
+"@aws-sdk/middleware-bucket-endpoint@npm:3.387.0":
+ version: 3.387.0
+ resolution: "@aws-sdk/middleware-bucket-endpoint@npm:3.387.0"
dependencies:
- "@aws-sdk/types": 3.370.0
- "@aws-sdk/util-utf8": 3.310.0
- tslib: ^2.5.0
- checksum: 1a0ae6590d3b860ea380e1299dc6debc533ab39a055aa204c1be08cbdead0e5eaac8ac8deb1b9332f00d7177d874b73ba03de5dcf012b2b4cd5ad96ae36bd7b5
- languageName: node
- linkType: hard
-
-"@aws-sdk/middleware-bucket-endpoint@npm:3.370.0":
- version: 3.370.0
- resolution: "@aws-sdk/middleware-bucket-endpoint@npm:3.370.0"
- dependencies:
- "@aws-sdk/types": 3.370.0
+ "@aws-sdk/types": 3.387.0
"@aws-sdk/util-arn-parser": 3.310.0
- "@smithy/protocol-http": ^1.1.0
- "@smithy/types": ^1.1.0
- "@smithy/util-config-provider": ^1.0.1
+ "@smithy/protocol-http": ^2.0.2
+ "@smithy/types": ^2.1.0
+ "@smithy/util-config-provider": ^2.0.0
tslib: ^2.5.0
- checksum: b8ed893397dec1dc5373b9920d70ddb30ba8a3651aa45805b9a47cafacff98d65927dfe754e9f5fcdc0c8d8d4ef7f171bc9fa4968d248d71429d61c2d822e493
+ checksum: 61b134bb6ba13d8007f1e8bd9a9c4ab4041c66fa184deaf7a0796297c218f14eb175f957038577909ac94e16fdf97d115f698a2d629ce1d4122593fba86f192e
languageName: node
linkType: hard
@@ -1182,115 +1088,115 @@ __metadata:
languageName: node
linkType: hard
-"@aws-sdk/middleware-expect-continue@npm:3.370.0":
- version: 3.370.0
- resolution: "@aws-sdk/middleware-expect-continue@npm:3.370.0"
+"@aws-sdk/middleware-expect-continue@npm:3.387.0":
+ version: 3.387.0
+ resolution: "@aws-sdk/middleware-expect-continue@npm:3.387.0"
dependencies:
- "@aws-sdk/types": 3.370.0
- "@smithy/protocol-http": ^1.1.0
- "@smithy/types": ^1.1.0
+ "@aws-sdk/types": 3.387.0
+ "@smithy/protocol-http": ^2.0.2
+ "@smithy/types": ^2.1.0
tslib: ^2.5.0
- checksum: 5524c43c62a371875eff73304600213dbf296ad18879f5d9462b7199e4cd01cdbb87b8d2cf0c4f412ef3cfd95a51cc722c9b87f58ff91fd6daeb5ffc1d0082e4
+ checksum: 48644c0809702b9b82c9d43bad3a3919868295914550d5c0ce72dbefa39dd24daf4aa02b7a431e1856e7bff3c3bff93ea1d06936f7a20213c1ddbea14cf6b1ad
languageName: node
linkType: hard
-"@aws-sdk/middleware-flexible-checksums@npm:3.370.0":
- version: 3.370.0
- resolution: "@aws-sdk/middleware-flexible-checksums@npm:3.370.0"
+"@aws-sdk/middleware-flexible-checksums@npm:3.387.0":
+ version: 3.387.0
+ resolution: "@aws-sdk/middleware-flexible-checksums@npm:3.387.0"
dependencies:
"@aws-crypto/crc32": 3.0.0
"@aws-crypto/crc32c": 3.0.0
- "@aws-sdk/types": 3.370.0
- "@smithy/is-array-buffer": ^1.0.1
- "@smithy/protocol-http": ^1.1.0
- "@smithy/types": ^1.1.0
- "@smithy/util-utf8": ^1.0.1
+ "@aws-sdk/types": 3.387.0
+ "@smithy/is-array-buffer": ^2.0.0
+ "@smithy/protocol-http": ^2.0.2
+ "@smithy/types": ^2.1.0
+ "@smithy/util-utf8": ^2.0.0
tslib: ^2.5.0
- checksum: b8af3c7beda3baa8290735f98f97476108304fb96d522fb27a0d449d4e82262c0cc66d59f36688067ad073714653cf88050a73acfa5d6ba5f3e90f645778bced
+ checksum: 056a4558750f3c6bf676154778de813bbed2897d5a79efbe142ea6f99643fdf98b4367f602bb61a3cecd5e22ea2b680b842a0cfc5cf8f828d936626d8d4126ea
languageName: node
linkType: hard
-"@aws-sdk/middleware-host-header@npm:3.370.0":
- version: 3.370.0
- resolution: "@aws-sdk/middleware-host-header@npm:3.370.0"
+"@aws-sdk/middleware-host-header@npm:3.387.0":
+ version: 3.387.0
+ resolution: "@aws-sdk/middleware-host-header@npm:3.387.0"
dependencies:
- "@aws-sdk/types": 3.370.0
- "@smithy/protocol-http": ^1.1.0
- "@smithy/types": ^1.1.0
+ "@aws-sdk/types": 3.387.0
+ "@smithy/protocol-http": ^2.0.2
+ "@smithy/types": ^2.1.0
tslib: ^2.5.0
- checksum: 2a7d3f3a0ab75d3c09a9cecc3e545706df2ba561851cde0992a41d00bad2695e5d5f29ff388037a11fb52770b3b9b2a98166cab5c4d1a2fa438ecea32e14604b
+ checksum: 91fdffa0051d1c426533170b1770c174abffc822b6e8e0cf0b850536a32c9fdea3241279494e2511232a46260b2320546bb9a59b2d4ee05a72f3cedabe6fa1a1
languageName: node
linkType: hard
-"@aws-sdk/middleware-location-constraint@npm:3.370.0":
- version: 3.370.0
- resolution: "@aws-sdk/middleware-location-constraint@npm:3.370.0"
+"@aws-sdk/middleware-location-constraint@npm:3.387.0":
+ version: 3.387.0
+ resolution: "@aws-sdk/middleware-location-constraint@npm:3.387.0"
dependencies:
- "@aws-sdk/types": 3.370.0
- "@smithy/types": ^1.1.0
+ "@aws-sdk/types": 3.387.0
+ "@smithy/types": ^2.1.0
tslib: ^2.5.0
- checksum: d3156144dd2bdba620a164d139e6466f79261ec2ad93c7014200d1e7fea21d0aedfcec83e69cf31ce806c42aca4ae07155245901e71d8273ec02f1fd6b75032a
+ checksum: 4027555e3c0ba089711a93ce0ca0ab4527052ff67fe7d390b59d305f238109b9f4aec63ac1e51b6e5a88026c2417967dc7091178061d096fbb3ee23ca2947555
languageName: node
linkType: hard
-"@aws-sdk/middleware-logger@npm:3.370.0":
- version: 3.370.0
- resolution: "@aws-sdk/middleware-logger@npm:3.370.0"
+"@aws-sdk/middleware-logger@npm:3.387.0":
+ version: 3.387.0
+ resolution: "@aws-sdk/middleware-logger@npm:3.387.0"
dependencies:
- "@aws-sdk/types": 3.370.0
- "@smithy/types": ^1.1.0
+ "@aws-sdk/types": 3.387.0
+ "@smithy/types": ^2.1.0
tslib: ^2.5.0
- checksum: f3c4062247d2a0064f82e412f027c2cd950d512d9e4a14d603a925ae97cd527e304439e854fb0b2de1f84b429ace317edaa09a8ee9319efec8df47aa3abbb65b
+ checksum: 75812390856559eaf9e8259f3d335c97268783d2e175dbd4568271e8f321a7a34754fcfcff0f70726a751c0418f6787ddbd7f1ebb3b644530e743edb5da63c2b
languageName: node
linkType: hard
-"@aws-sdk/middleware-recursion-detection@npm:3.370.0":
- version: 3.370.0
- resolution: "@aws-sdk/middleware-recursion-detection@npm:3.370.0"
+"@aws-sdk/middleware-recursion-detection@npm:3.387.0":
+ version: 3.387.0
+ resolution: "@aws-sdk/middleware-recursion-detection@npm:3.387.0"
dependencies:
- "@aws-sdk/types": 3.370.0
- "@smithy/protocol-http": ^1.1.0
- "@smithy/types": ^1.1.0
+ "@aws-sdk/types": 3.387.0
+ "@smithy/protocol-http": ^2.0.2
+ "@smithy/types": ^2.1.0
tslib: ^2.5.0
- checksum: ee259519548171ef3381f9bd48568d8052a7980cfe1a8070d72b44af0522a55baa0e440db5c1460123dc48fb217251a31aea236beda7220af60ebbe2375c96a0
+ checksum: dd6ed9eb8969181f3adf5820f66db38ab544fda03f44bec87e6efdb194f01184094dc2d3ce150e9f045a75decb99e37a9a1dc8b37a78f8722caae8367c9db8d9
languageName: node
linkType: hard
-"@aws-sdk/middleware-sdk-s3@npm:3.370.0":
- version: 3.370.0
- resolution: "@aws-sdk/middleware-sdk-s3@npm:3.370.0"
+"@aws-sdk/middleware-sdk-s3@npm:3.387.0":
+ version: 3.387.0
+ resolution: "@aws-sdk/middleware-sdk-s3@npm:3.387.0"
dependencies:
- "@aws-sdk/types": 3.370.0
+ "@aws-sdk/types": 3.387.0
"@aws-sdk/util-arn-parser": 3.310.0
- "@smithy/protocol-http": ^1.1.0
- "@smithy/types": ^1.1.0
+ "@smithy/protocol-http": ^2.0.2
+ "@smithy/types": ^2.1.0
tslib: ^2.5.0
- checksum: 23da26ca2df37b33c8201aec5cfa86f888abe9b14a23a6815d648d964efa5d99e38b036ecf8adac818ad1db8097da2f345c78d7c7fe6dcc323e5043e38d8cd24
+ checksum: 674ebd73ed89f8375b5a7f15135a65e61736b8bc58f076504a050e9cb679da867ba256e6dc8c46b2a403c3a2fbed0667e40bb3b40bf79bc54a669650f09d97ac
languageName: node
linkType: hard
-"@aws-sdk/middleware-sdk-sqs@npm:3.370.0":
- version: 3.370.0
- resolution: "@aws-sdk/middleware-sdk-sqs@npm:3.370.0"
+"@aws-sdk/middleware-sdk-sqs@npm:3.387.0":
+ version: 3.387.0
+ resolution: "@aws-sdk/middleware-sdk-sqs@npm:3.387.0"
dependencies:
- "@aws-sdk/types": 3.370.0
- "@smithy/types": ^1.1.0
- "@smithy/util-hex-encoding": ^1.0.1
- "@smithy/util-utf8": ^1.0.1
+ "@aws-sdk/types": 3.387.0
+ "@smithy/types": ^2.1.0
+ "@smithy/util-hex-encoding": ^2.0.0
+ "@smithy/util-utf8": ^2.0.0
tslib: ^2.5.0
- checksum: 980c38781355f4481251bf88692926d1c819c4cf59cf76bca8ea6d4dbea4677034c8c6c84f0435f218ae5c289a2450aa048cc6861b4552a2a0e0ae1f81f806bc
+ checksum: fa734414df1c597c8fbcdff5131cfb240682a99d6d2302096040a05ff64742383f6812e8e41a7b1d32421b5556a138fd9241bced7eb35a29bcbca5376bb793b1
languageName: node
linkType: hard
-"@aws-sdk/middleware-sdk-sts@npm:3.370.0":
- version: 3.370.0
- resolution: "@aws-sdk/middleware-sdk-sts@npm:3.370.0"
+"@aws-sdk/middleware-sdk-sts@npm:3.387.0":
+ version: 3.387.0
+ resolution: "@aws-sdk/middleware-sdk-sts@npm:3.387.0"
dependencies:
- "@aws-sdk/middleware-signing": 3.370.0
- "@aws-sdk/types": 3.370.0
- "@smithy/types": ^1.1.0
+ "@aws-sdk/middleware-signing": 3.387.0
+ "@aws-sdk/types": 3.387.0
+ "@smithy/types": ^2.1.0
tslib: ^2.5.0
- checksum: 14877966d56518895d55b30af45ff695b835ced56e46986b3aea12b3f8df953741a18ad24fcd567eae7a4b0c4c501fe4c0a20c01d6604d0e67c2be6435b15037
+ checksum: b9d5e4af2e10f980ef19add7eccd7f04eb5e42987c238acb17093b1d4239ae3430fb25e1c34ef915cd3420a2e93d59cf6570c1f9275bf5345733b1b030876cb5
languageName: node
linkType: hard
@@ -1304,42 +1210,42 @@ __metadata:
languageName: node
linkType: hard
-"@aws-sdk/middleware-signing@npm:3.370.0":
- version: 3.370.0
- resolution: "@aws-sdk/middleware-signing@npm:3.370.0"
+"@aws-sdk/middleware-signing@npm:3.387.0":
+ version: 3.387.0
+ resolution: "@aws-sdk/middleware-signing@npm:3.387.0"
dependencies:
- "@aws-sdk/types": 3.370.0
- "@smithy/property-provider": ^1.0.1
- "@smithy/protocol-http": ^1.1.0
- "@smithy/signature-v4": ^1.0.1
- "@smithy/types": ^1.1.0
- "@smithy/util-middleware": ^1.0.1
+ "@aws-sdk/types": 3.387.0
+ "@smithy/property-provider": ^2.0.0
+ "@smithy/protocol-http": ^2.0.2
+ "@smithy/signature-v4": ^2.0.0
+ "@smithy/types": ^2.1.0
+ "@smithy/util-middleware": ^2.0.0
tslib: ^2.5.0
- checksum: f8581ad377a8eea2345b2881adfe0c4fc35a9825ca0b55facbac5f89e088acd8e231d87ae632dd249df71f8b0113046b7cdd8a0b82c69195faf799813da14e91
+ checksum: 3553748d92a64232df572f2b56d122943db9520d31b224f263ecce5711368de9d8bddc51facde9bf8a7d1075c3c381a96e65d4ad8d7f14f097d8f7e484c712e4
languageName: node
linkType: hard
-"@aws-sdk/middleware-ssec@npm:3.370.0":
- version: 3.370.0
- resolution: "@aws-sdk/middleware-ssec@npm:3.370.0"
+"@aws-sdk/middleware-ssec@npm:3.387.0":
+ version: 3.387.0
+ resolution: "@aws-sdk/middleware-ssec@npm:3.387.0"
dependencies:
- "@aws-sdk/types": 3.370.0
- "@smithy/types": ^1.1.0
+ "@aws-sdk/types": 3.387.0
+ "@smithy/types": ^2.1.0
tslib: ^2.5.0
- checksum: a5714a7b1d0d54976dc507a30f872a50d7eb0dfa11fc8f37dec16f4e69ea8ae53d4eb9722a05cfb5b8a34c6f5ac26c4e30555349122a60f67ac2d4f95b711aea
+ checksum: 362b2c5faf5a606734d72104071a6a5aaaab7ecb8eb36507f1db32e22f842898fa589916b59e239f8cbbccdbf4743c978ad2fab2e434d14f3397f71086df31f4
languageName: node
linkType: hard
-"@aws-sdk/middleware-user-agent@npm:3.370.0":
- version: 3.370.0
- resolution: "@aws-sdk/middleware-user-agent@npm:3.370.0"
+"@aws-sdk/middleware-user-agent@npm:3.387.0":
+ version: 3.387.0
+ resolution: "@aws-sdk/middleware-user-agent@npm:3.387.0"
dependencies:
- "@aws-sdk/types": 3.370.0
- "@aws-sdk/util-endpoints": 3.370.0
- "@smithy/protocol-http": ^1.1.0
- "@smithy/types": ^1.1.0
+ "@aws-sdk/types": 3.387.0
+ "@aws-sdk/util-endpoints": 3.387.0
+ "@smithy/protocol-http": ^2.0.2
+ "@smithy/types": ^2.1.0
tslib: ^2.5.0
- checksum: c4366db10a7eece54c9f5429352329e7ea31c91a2c05b5b484304fb2e69f07d297e04c387c22ddc11759945e2adc97e6541302391ad8faa5a3aae8e6a1605589
+ checksum: 54cb1ddbd743bf70a28c1eebd6d1bc0adfad79b2bff0553737d238de01a83e11c9130c38526d4236457fa124d6024fd0c09607d796808dfe43821c75387d8fba
languageName: node
linkType: hard
@@ -1387,21 +1293,21 @@ __metadata:
languageName: node
linkType: hard
-"@aws-sdk/signature-v4-multi-region@npm:3.370.0":
- version: 3.370.0
- resolution: "@aws-sdk/signature-v4-multi-region@npm:3.370.0"
+"@aws-sdk/signature-v4-multi-region@npm:3.387.0":
+ version: 3.387.0
+ resolution: "@aws-sdk/signature-v4-multi-region@npm:3.387.0"
dependencies:
- "@aws-sdk/types": 3.370.0
- "@smithy/protocol-http": ^1.1.0
- "@smithy/signature-v4": ^1.0.1
- "@smithy/types": ^1.1.0
+ "@aws-sdk/types": 3.387.0
+ "@smithy/protocol-http": ^2.0.2
+ "@smithy/signature-v4": ^2.0.0
+ "@smithy/types": ^2.1.0
tslib: ^2.5.0
peerDependencies:
"@aws-sdk/signature-v4-crt": ^3.118.0
peerDependenciesMeta:
"@aws-sdk/signature-v4-crt":
optional: true
- checksum: 0c8ce6a70edbe8fac38e613b8e2df84baf7bfa17c9f585b9434cbdad1d7132e538a4127ea27be5071ccec7ca2ad056962e346f390e58cf349271087fa960939c
+ checksum: a520eb8a564edd12169addef6c449c236e6c86a657f7e1cda0331eff8adfa925e1ff4a201f4adbedd6f078fe5ceb89f933a268e5c4b61c92ff60ae47132ff5ae
languageName: node
linkType: hard
@@ -1421,21 +1327,20 @@ __metadata:
languageName: node
linkType: hard
-"@aws-sdk/token-providers@npm:3.370.0":
- version: 3.370.0
- resolution: "@aws-sdk/token-providers@npm:3.370.0"
+"@aws-sdk/token-providers@npm:3.387.0":
+ version: 3.387.0
+ resolution: "@aws-sdk/token-providers@npm:3.387.0"
dependencies:
- "@aws-sdk/client-sso-oidc": 3.370.0
- "@aws-sdk/types": 3.370.0
- "@smithy/property-provider": ^1.0.1
- "@smithy/shared-ini-file-loader": ^1.0.1
- "@smithy/types": ^1.1.0
+ "@aws-sdk/types": 3.387.0
+ "@smithy/property-provider": ^2.0.0
+ "@smithy/shared-ini-file-loader": ^2.0.0
+ "@smithy/types": ^2.1.0
tslib: ^2.5.0
- checksum: 7126c5bdc86d8a0cefbf92649927747928fd1af76ca943ec8e9c558d99c7550535b694149601c16b096ff429178e7bea51ac2ffc121a24637ddc8b03976759ed
+ checksum: dffbaa98da3bd30fdedab88093d3ae94b4fdad1dd12b30fd5dbf7cfb01d1e219e3f5abe403ca71514bfa1f92818dde97a6d9c9d2cda35f2cbd43882750017bc2
languageName: node
linkType: hard
-"@aws-sdk/types@npm:3.370.0, @aws-sdk/types@npm:^3.222.0, @aws-sdk/types@npm:^3.347.0":
+"@aws-sdk/types@npm:3.370.0":
version: 3.370.0
resolution: "@aws-sdk/types@npm:3.370.0"
dependencies:
@@ -1445,6 +1350,16 @@ __metadata:
languageName: node
linkType: hard
+"@aws-sdk/types@npm:3.387.0, @aws-sdk/types@npm:^3.222.0, @aws-sdk/types@npm:^3.347.0":
+ version: 3.387.0
+ resolution: "@aws-sdk/types@npm:3.387.0"
+ dependencies:
+ "@smithy/types": ^2.1.0
+ tslib: ^2.5.0
+ checksum: 39c5c3eea4cd8705c0c9dafa187ac6e14585a1bb6d162bbda8dc3ea5522020302ccd3ff7c8b425225c625d2b83ae6e6f6b71f621da790830a8a55ed5643197ec
+ languageName: node
+ linkType: hard
+
"@aws-sdk/url-parser@npm:3.370.0":
version: 3.370.0
resolution: "@aws-sdk/url-parser@npm:3.370.0"
@@ -1465,16 +1380,6 @@ __metadata:
languageName: node
linkType: hard
-"@aws-sdk/util-base64@npm:3.310.0":
- version: 3.310.0
- resolution: "@aws-sdk/util-base64@npm:3.310.0"
- dependencies:
- "@aws-sdk/util-buffer-from": 3.310.0
- tslib: ^2.5.0
- checksum: 3c9f7c818401fe8332d2ce438c0660cc9be7db9a5eef68d7fafa30ddcc44b0af3ba9ea58092f0e2b2537a18ec0942ce3c8f12090d3e3b9568b6a94a0713e9de7
- languageName: node
- linkType: hard
-
"@aws-sdk/util-buffer-from@npm:3.310.0":
version: 3.310.0
resolution: "@aws-sdk/util-buffer-from@npm:3.310.0"
@@ -1485,13 +1390,13 @@ __metadata:
languageName: node
linkType: hard
-"@aws-sdk/util-endpoints@npm:3.370.0":
- version: 3.370.0
- resolution: "@aws-sdk/util-endpoints@npm:3.370.0"
+"@aws-sdk/util-endpoints@npm:3.387.0":
+ version: 3.387.0
+ resolution: "@aws-sdk/util-endpoints@npm:3.387.0"
dependencies:
- "@aws-sdk/types": 3.370.0
+ "@aws-sdk/types": 3.387.0
tslib: ^2.5.0
- checksum: d351ad2fdc92bec16d0d925dbcfc3f38baed12a7984d70bf02ee2dfe4c3fd1a85f53e515f9751f31d1345fe0bdebd62be7cd08e405a31354db92312f0cc6282c
+ checksum: 15c3250f096ca4ed7a832294cc3b609e62004f8888781cbd5ee907bd325bb5b999867aa7c8fdd5b806e92424f2561f5dd8ae3ebbb876044289d36163180fa2a5
languageName: node
linkType: hard
@@ -1543,32 +1448,32 @@ __metadata:
languageName: node
linkType: hard
-"@aws-sdk/util-user-agent-browser@npm:3.370.0":
- version: 3.370.0
- resolution: "@aws-sdk/util-user-agent-browser@npm:3.370.0"
+"@aws-sdk/util-user-agent-browser@npm:3.387.0":
+ version: 3.387.0
+ resolution: "@aws-sdk/util-user-agent-browser@npm:3.387.0"
dependencies:
- "@aws-sdk/types": 3.370.0
- "@smithy/types": ^1.1.0
+ "@aws-sdk/types": 3.387.0
+ "@smithy/types": ^2.1.0
bowser: ^2.11.0
tslib: ^2.5.0
- checksum: 3a549b1337490aaeacc21c3bff0e7459f51e764c6c9a69aafeb7950f54e118d2eeb64b652afb97e2f0aa6777df1e65fced2b96bfcdd98aacc753acfce7847b59
+ checksum: a7ab9c2d98c4e00f7ac8aab8f08e8f0472d026573c0790aa6036557de0dae5c6e89a3989e00937725badbefcfdfd4fa5e5a996e5e11a043a3d594b5956cfae2c
languageName: node
linkType: hard
-"@aws-sdk/util-user-agent-node@npm:3.370.0":
- version: 3.370.0
- resolution: "@aws-sdk/util-user-agent-node@npm:3.370.0"
+"@aws-sdk/util-user-agent-node@npm:3.387.0":
+ version: 3.387.0
+ resolution: "@aws-sdk/util-user-agent-node@npm:3.387.0"
dependencies:
- "@aws-sdk/types": 3.370.0
- "@smithy/node-config-provider": ^1.0.1
- "@smithy/types": ^1.1.0
+ "@aws-sdk/types": 3.387.0
+ "@smithy/node-config-provider": ^2.0.2
+ "@smithy/types": ^2.1.0
tslib: ^2.5.0
peerDependencies:
aws-crt: ">=1.0.0"
peerDependenciesMeta:
aws-crt:
optional: true
- checksum: 83b1f2c7f25f44b6bd3aed8e7b9fe3a68e077f3b8b3832648a38eb5985b95d0e5ac469242e1d21aa37e29a6c8b4f9cb2a1d60ea1b6e4a76c32225e58f98da504
+ checksum: abe3cf2d058ff0a907780ee2100b0d5805d7878c434115cda645d2fe0a57226dd7cf86c2d795ef75d8062914d89c8d71752789b355317586417b92482e05c98f
languageName: node
linkType: hard
@@ -1840,8 +1745,8 @@ __metadata:
linkType: hard
"@azure/storage-blob@npm:^12.5.0":
- version: 12.14.0
- resolution: "@azure/storage-blob@npm:12.14.0"
+ version: 12.15.0
+ resolution: "@azure/storage-blob@npm:12.15.0"
dependencies:
"@azure/abort-controller": ^1.0.0
"@azure/core-http": ^3.0.0
@@ -1851,7 +1756,7 @@ __metadata:
"@azure/logger": ^1.0.0
events: ^3.0.0
tslib: ^2.2.0
- checksum: d087afd09a68342f7dcc655bf8861ffbcf84caddbfeee9ad226491a5b890fe0721a51d7221d0fc514b205a50ac153982803d89958640d2237a431b5f6b47dd6c
+ checksum: fe5399e7107685f1e81bd782fbd10e11c6aec01141c63f24f138a985aa709da96e83fc5dd3295408b0609981b2fb71d2304935056692e4cf3833635157799769
languageName: node
linkType: hard
@@ -3345,6 +3250,7 @@ __metadata:
"@backstage/backend-test-utils": "workspace:^"
"@backstage/cli": "workspace:^"
"@backstage/cli-common": "workspace:^"
+ "@backstage/cli-node": "workspace:^"
"@backstage/config": "workspace:^"
"@backstage/config-loader": "workspace:^"
"@backstage/errors": "workspace:^"
@@ -3372,6 +3278,7 @@ __metadata:
logform: ^2.3.2
minimatch: ^5.0.0
minimist: ^1.2.5
+ mock-fs: ^5.2.0
morgan: ^1.10.0
node-forge: ^1.3.1
selfsigned: ^2.0.0
@@ -3713,7 +3620,7 @@ __metadata:
css-loader: ^6.5.1
del: ^7.0.0
diff: ^5.0.0
- esbuild: ^0.18.0
+ esbuild: ^0.19.0
esbuild-loader: ^2.18.0
eslint: ^8.6.0
eslint-config-prettier: ^8.3.0
@@ -4637,6 +4544,7 @@ __metadata:
"@backstage/cli": "workspace:^"
"@backstage/config": "workspace:^"
"@backstage/config-loader": "workspace:^"
+ "@backstage/plugin-app-node": "workspace:^"
"@backstage/types": "workspace:^"
"@types/express": ^4.17.6
"@types/supertest": ^2.0.8
@@ -4657,6 +4565,17 @@ __metadata:
languageName: unknown
linkType: soft
+"@backstage/plugin-app-node@workspace:^, @backstage/plugin-app-node@workspace:plugins/app-node":
+ version: 0.0.0-use.local
+ resolution: "@backstage/plugin-app-node@workspace:plugins/app-node"
+ dependencies:
+ "@backstage/backend-plugin-api": "workspace:^"
+ "@backstage/cli": "workspace:^"
+ "@types/express": ^4.17.6
+ express: ^4.17.1
+ languageName: unknown
+ linkType: soft
+
"@backstage/plugin-auth-backend@workspace:^, @backstage/plugin-auth-backend@workspace:plugins/auth-backend":
version: 0.0.0-use.local
resolution: "@backstage/plugin-auth-backend@workspace:plugins/auth-backend"
@@ -5160,6 +5079,23 @@ __metadata:
languageName: unknown
linkType: soft
+"@backstage/plugin-catalog-backend-module-gcp@workspace:plugins/catalog-backend-module-gcp":
+ version: 0.0.0-use.local
+ resolution: "@backstage/plugin-catalog-backend-module-gcp@workspace:plugins/catalog-backend-module-gcp"
+ dependencies:
+ "@backstage/backend-common": "workspace:^"
+ "@backstage/backend-plugin-api": "workspace:^"
+ "@backstage/backend-tasks": "workspace:^"
+ "@backstage/backend-test-utils": "workspace:^"
+ "@backstage/cli": "workspace:^"
+ "@backstage/config": "workspace:^"
+ "@backstage/plugin-catalog-node": "workspace:^"
+ "@backstage/plugin-kubernetes-common": "workspace:^"
+ "@google-cloud/container": ^4.15.0
+ winston: ^3.2.1
+ languageName: unknown
+ linkType: soft
+
"@backstage/plugin-catalog-backend-module-gerrit@workspace:plugins/catalog-backend-module-gerrit":
version: 0.0.0-use.local
resolution: "@backstage/plugin-catalog-backend-module-gerrit@workspace:plugins/catalog-backend-module-gerrit"
@@ -7317,6 +7253,7 @@ __metadata:
"@types/luxon": ^3.0.0
compression: ^1.7.4
cors: ^2.8.5
+ cross-fetch: ^3.1.5
express: ^4.17.1
express-promise-router: ^4.1.0
fs-extra: 10.1.0
@@ -7331,6 +7268,7 @@ __metadata:
stream-buffers: ^3.0.2
supertest: ^6.1.3
winston: ^3.2.1
+ ws: ^8.13.0
yn: ^4.0.0
languageName: unknown
linkType: soft
@@ -7464,6 +7402,7 @@ __metadata:
"@backstage/config": "workspace:^"
"@backstage/errors": "workspace:^"
"@backstage/plugin-auth-node": "workspace:^"
+ "@backstage/plugin-catalog-node": "workspace:^"
"@backstage/plugin-linguist-common": "workspace:^"
"@backstage/types": "workspace:^"
"@types/express": "*"
@@ -7471,6 +7410,7 @@ __metadata:
express: ^4.18.1
express-promise-router: ^4.1.0
fs-extra: ^10.0.0
+ js-yaml: ^4.1.0
knex: ^2.0.0
linguist-js: ^2.5.3
luxon: ^2.0.2
@@ -8037,8 +7977,10 @@ __metadata:
dependencies:
"@backstage/backend-common": "workspace:^"
"@backstage/backend-plugin-api": "workspace:^"
+ "@backstage/backend-test-utils": "workspace:^"
"@backstage/cli": "workspace:^"
"@backstage/config": "workspace:^"
+ "@backstage/config-loader": "workspace:^"
"@types/express": ^4.17.6
"@types/http-proxy-middleware": ^0.19.3
"@types/supertest": ^2.0.8
@@ -8159,7 +8101,6 @@ __metadata:
"@backstage/config": "workspace:^"
"@backstage/errors": "workspace:^"
"@backstage/integration": "workspace:^"
- "@backstage/plugin-scaffolder-backend": "workspace:^"
"@backstage/plugin-scaffolder-node": "workspace:^"
"@backstage/types": "workspace:^"
fs-extra: 10.1.0
@@ -8181,7 +8122,6 @@ __metadata:
"@backstage/config": "workspace:^"
"@backstage/errors": "workspace:^"
"@backstage/integration": "workspace:^"
- "@backstage/plugin-scaffolder-backend": "workspace:^"
"@backstage/plugin-scaffolder-node": "workspace:^"
"@backstage/types": "workspace:^"
"@types/command-exists": ^1.2.0
@@ -8221,7 +8161,6 @@ __metadata:
"@backstage/config": "workspace:^"
"@backstage/errors": "workspace:^"
"@backstage/integration": "workspace:^"
- "@backstage/plugin-scaffolder-backend": "workspace:^"
"@backstage/plugin-scaffolder-node": "workspace:^"
"@backstage/types": "workspace:^"
"@types/command-exists": ^1.2.0
@@ -8300,7 +8239,7 @@ __metadata:
command-exists: ^1.2.9
compression: ^1.7.4
cors: ^2.8.5
- esbuild: ^0.18.0
+ esbuild: ^0.19.0
express: ^4.17.1
express-promise-router: ^4.1.0
fs-extra: 10.1.0
@@ -8350,11 +8289,16 @@ __metadata:
version: 0.0.0-use.local
resolution: "@backstage/plugin-scaffolder-node@workspace:plugins/scaffolder-node"
dependencies:
+ "@backstage/backend-common": "workspace:^"
"@backstage/backend-plugin-api": "workspace:^"
"@backstage/catalog-model": "workspace:^"
"@backstage/cli": "workspace:^"
+ "@backstage/config": "workspace:^"
+ "@backstage/errors": "workspace:^"
+ "@backstage/integration": "workspace:^"
"@backstage/plugin-scaffolder-common": "workspace:^"
"@backstage/types": "workspace:^"
+ fs-extra: 10.1.0
jsonschema: ^1.2.6
winston: ^3.2.1
zod: ^3.21.4
@@ -8501,6 +8445,7 @@ __metadata:
"@backstage/cli": "workspace:^"
"@backstage/config": "workspace:^"
"@backstage/plugin-catalog-common": "workspace:^"
+ "@backstage/plugin-catalog-node": "workspace:^"
"@backstage/plugin-permission-common": "workspace:^"
"@backstage/plugin-search-backend-node": "workspace:^"
"@backstage/plugin-search-common": "workspace:^"
@@ -8581,6 +8526,7 @@ __metadata:
"@backstage/cli": "workspace:^"
"@backstage/config": "workspace:^"
"@backstage/plugin-catalog-common": "workspace:^"
+ "@backstage/plugin-catalog-node": "workspace:^"
"@backstage/plugin-permission-common": "workspace:^"
"@backstage/plugin-search-backend-node": "workspace:^"
"@backstage/plugin-search-common": "workspace:^"
@@ -9664,7 +9610,7 @@ __metadata:
languageName: unknown
linkType: soft
-"@backstage/theme@^0.4.0, @backstage/theme@^0.4.1, @backstage/theme@workspace:^, @backstage/theme@workspace:packages/theme":
+"@backstage/theme@^0.4.1, @backstage/theme@workspace:^, @backstage/theme@workspace:packages/theme":
version: 0.0.0-use.local
resolution: "@backstage/theme@workspace:packages/theme"
dependencies:
@@ -10071,13 +10017,13 @@ __metadata:
linkType: hard
"@codemirror/view@npm:^6.0.0":
- version: 6.15.3
- resolution: "@codemirror/view@npm:6.15.3"
+ version: 6.16.0
+ resolution: "@codemirror/view@npm:6.16.0"
dependencies:
"@codemirror/state": ^6.1.4
style-mod: ^4.0.0
w3c-keyname: ^2.2.4
- checksum: 048949b1b493a962904a7f77661a939f7c1893a7381022756a135f5dd8daf667f498be1b81da9c37c0e8de85b078ad987c2f75318385c520ed83c95da6313e95
+ checksum: 54d412b5159716c8a1a9c46fa04ff083e68a663cb887e6e2a4ca86fe9c3930d5255200fe84c65620e0a442f62dc2c13df277bcd1d4eef2e11e3c4e124fcf9d38
languageName: node
linkType: hard
@@ -10418,9 +10364,9 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/android-arm64@npm:0.18.16":
- version: 0.18.16
- resolution: "@esbuild/android-arm64@npm:0.18.16"
+"@esbuild/android-arm64@npm:0.19.0":
+ version: 0.19.0
+ resolution: "@esbuild/android-arm64@npm:0.19.0"
conditions: os=android & cpu=arm64
languageName: node
linkType: hard
@@ -10439,9 +10385,9 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/android-arm@npm:0.18.16":
- version: 0.18.16
- resolution: "@esbuild/android-arm@npm:0.18.16"
+"@esbuild/android-arm@npm:0.19.0":
+ version: 0.19.0
+ resolution: "@esbuild/android-arm@npm:0.19.0"
conditions: os=android & cpu=arm
languageName: node
linkType: hard
@@ -10453,9 +10399,9 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/android-x64@npm:0.18.16":
- version: 0.18.16
- resolution: "@esbuild/android-x64@npm:0.18.16"
+"@esbuild/android-x64@npm:0.19.0":
+ version: 0.19.0
+ resolution: "@esbuild/android-x64@npm:0.19.0"
conditions: os=android & cpu=x64
languageName: node
linkType: hard
@@ -10467,9 +10413,9 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/darwin-arm64@npm:0.18.16":
- version: 0.18.16
- resolution: "@esbuild/darwin-arm64@npm:0.18.16"
+"@esbuild/darwin-arm64@npm:0.19.0":
+ version: 0.19.0
+ resolution: "@esbuild/darwin-arm64@npm:0.19.0"
conditions: os=darwin & cpu=arm64
languageName: node
linkType: hard
@@ -10481,9 +10427,9 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/darwin-x64@npm:0.18.16":
- version: 0.18.16
- resolution: "@esbuild/darwin-x64@npm:0.18.16"
+"@esbuild/darwin-x64@npm:0.19.0":
+ version: 0.19.0
+ resolution: "@esbuild/darwin-x64@npm:0.19.0"
conditions: os=darwin & cpu=x64
languageName: node
linkType: hard
@@ -10495,9 +10441,9 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/freebsd-arm64@npm:0.18.16":
- version: 0.18.16
- resolution: "@esbuild/freebsd-arm64@npm:0.18.16"
+"@esbuild/freebsd-arm64@npm:0.19.0":
+ version: 0.19.0
+ resolution: "@esbuild/freebsd-arm64@npm:0.19.0"
conditions: os=freebsd & cpu=arm64
languageName: node
linkType: hard
@@ -10509,9 +10455,9 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/freebsd-x64@npm:0.18.16":
- version: 0.18.16
- resolution: "@esbuild/freebsd-x64@npm:0.18.16"
+"@esbuild/freebsd-x64@npm:0.19.0":
+ version: 0.19.0
+ resolution: "@esbuild/freebsd-x64@npm:0.19.0"
conditions: os=freebsd & cpu=x64
languageName: node
linkType: hard
@@ -10523,9 +10469,9 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/linux-arm64@npm:0.18.16":
- version: 0.18.16
- resolution: "@esbuild/linux-arm64@npm:0.18.16"
+"@esbuild/linux-arm64@npm:0.19.0":
+ version: 0.19.0
+ resolution: "@esbuild/linux-arm64@npm:0.19.0"
conditions: os=linux & cpu=arm64
languageName: node
linkType: hard
@@ -10537,9 +10483,9 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/linux-arm@npm:0.18.16":
- version: 0.18.16
- resolution: "@esbuild/linux-arm@npm:0.18.16"
+"@esbuild/linux-arm@npm:0.19.0":
+ version: 0.19.0
+ resolution: "@esbuild/linux-arm@npm:0.19.0"
conditions: os=linux & cpu=arm
languageName: node
linkType: hard
@@ -10551,9 +10497,9 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/linux-ia32@npm:0.18.16":
- version: 0.18.16
- resolution: "@esbuild/linux-ia32@npm:0.18.16"
+"@esbuild/linux-ia32@npm:0.19.0":
+ version: 0.19.0
+ resolution: "@esbuild/linux-ia32@npm:0.19.0"
conditions: os=linux & cpu=ia32
languageName: node
linkType: hard
@@ -10572,9 +10518,9 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/linux-loong64@npm:0.18.16":
- version: 0.18.16
- resolution: "@esbuild/linux-loong64@npm:0.18.16"
+"@esbuild/linux-loong64@npm:0.19.0":
+ version: 0.19.0
+ resolution: "@esbuild/linux-loong64@npm:0.19.0"
conditions: os=linux & cpu=loong64
languageName: node
linkType: hard
@@ -10586,9 +10532,9 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/linux-mips64el@npm:0.18.16":
- version: 0.18.16
- resolution: "@esbuild/linux-mips64el@npm:0.18.16"
+"@esbuild/linux-mips64el@npm:0.19.0":
+ version: 0.19.0
+ resolution: "@esbuild/linux-mips64el@npm:0.19.0"
conditions: os=linux & cpu=mips64el
languageName: node
linkType: hard
@@ -10600,9 +10546,9 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/linux-ppc64@npm:0.18.16":
- version: 0.18.16
- resolution: "@esbuild/linux-ppc64@npm:0.18.16"
+"@esbuild/linux-ppc64@npm:0.19.0":
+ version: 0.19.0
+ resolution: "@esbuild/linux-ppc64@npm:0.19.0"
conditions: os=linux & cpu=ppc64
languageName: node
linkType: hard
@@ -10614,9 +10560,9 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/linux-riscv64@npm:0.18.16":
- version: 0.18.16
- resolution: "@esbuild/linux-riscv64@npm:0.18.16"
+"@esbuild/linux-riscv64@npm:0.19.0":
+ version: 0.19.0
+ resolution: "@esbuild/linux-riscv64@npm:0.19.0"
conditions: os=linux & cpu=riscv64
languageName: node
linkType: hard
@@ -10628,9 +10574,9 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/linux-s390x@npm:0.18.16":
- version: 0.18.16
- resolution: "@esbuild/linux-s390x@npm:0.18.16"
+"@esbuild/linux-s390x@npm:0.19.0":
+ version: 0.19.0
+ resolution: "@esbuild/linux-s390x@npm:0.19.0"
conditions: os=linux & cpu=s390x
languageName: node
linkType: hard
@@ -10642,9 +10588,9 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/linux-x64@npm:0.18.16":
- version: 0.18.16
- resolution: "@esbuild/linux-x64@npm:0.18.16"
+"@esbuild/linux-x64@npm:0.19.0":
+ version: 0.19.0
+ resolution: "@esbuild/linux-x64@npm:0.19.0"
conditions: os=linux & cpu=x64
languageName: node
linkType: hard
@@ -10656,9 +10602,9 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/netbsd-x64@npm:0.18.16":
- version: 0.18.16
- resolution: "@esbuild/netbsd-x64@npm:0.18.16"
+"@esbuild/netbsd-x64@npm:0.19.0":
+ version: 0.19.0
+ resolution: "@esbuild/netbsd-x64@npm:0.19.0"
conditions: os=netbsd & cpu=x64
languageName: node
linkType: hard
@@ -10670,9 +10616,9 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/openbsd-x64@npm:0.18.16":
- version: 0.18.16
- resolution: "@esbuild/openbsd-x64@npm:0.18.16"
+"@esbuild/openbsd-x64@npm:0.19.0":
+ version: 0.19.0
+ resolution: "@esbuild/openbsd-x64@npm:0.19.0"
conditions: os=openbsd & cpu=x64
languageName: node
linkType: hard
@@ -10684,9 +10630,9 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/sunos-x64@npm:0.18.16":
- version: 0.18.16
- resolution: "@esbuild/sunos-x64@npm:0.18.16"
+"@esbuild/sunos-x64@npm:0.19.0":
+ version: 0.19.0
+ resolution: "@esbuild/sunos-x64@npm:0.19.0"
conditions: os=sunos & cpu=x64
languageName: node
linkType: hard
@@ -10698,9 +10644,9 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/win32-arm64@npm:0.18.16":
- version: 0.18.16
- resolution: "@esbuild/win32-arm64@npm:0.18.16"
+"@esbuild/win32-arm64@npm:0.19.0":
+ version: 0.19.0
+ resolution: "@esbuild/win32-arm64@npm:0.19.0"
conditions: os=win32 & cpu=arm64
languageName: node
linkType: hard
@@ -10712,9 +10658,9 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/win32-ia32@npm:0.18.16":
- version: 0.18.16
- resolution: "@esbuild/win32-ia32@npm:0.18.16"
+"@esbuild/win32-ia32@npm:0.19.0":
+ version: 0.19.0
+ resolution: "@esbuild/win32-ia32@npm:0.19.0"
conditions: os=win32 & cpu=ia32
languageName: node
linkType: hard
@@ -10726,9 +10672,9 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/win32-x64@npm:0.18.16":
- version: 0.18.16
- resolution: "@esbuild/win32-x64@npm:0.18.16"
+"@esbuild/win32-x64@npm:0.19.0":
+ version: 0.19.0
+ resolution: "@esbuild/win32-x64@npm:0.19.0"
conditions: os=win32 & cpu=x64
languageName: node
linkType: hard
@@ -10744,16 +10690,16 @@ __metadata:
languageName: node
linkType: hard
-"@eslint-community/regexpp@npm:^4.4.0":
- version: 4.5.0
- resolution: "@eslint-community/regexpp@npm:4.5.0"
- checksum: 99c01335947dbd7f2129e954413067e217ccaa4e219fe0917b7d2bd96135789384b8fedbfb8eb09584d5130b27a7b876a7150ab7376f51b3a0c377d5ce026a10
+"@eslint-community/regexpp@npm:^4.6.1":
+ version: 4.6.2
+ resolution: "@eslint-community/regexpp@npm:4.6.2"
+ checksum: a3c341377b46b54fa228f455771b901d1a2717f95d47dcdf40199df30abc000ba020f747f114f08560d119e979d882a94cf46cfc51744544d54b00319c0f2724
languageName: node
linkType: hard
-"@eslint/eslintrc@npm:^2.1.0":
- version: 2.1.0
- resolution: "@eslint/eslintrc@npm:2.1.0"
+"@eslint/eslintrc@npm:^2.1.1":
+ version: 2.1.1
+ resolution: "@eslint/eslintrc@npm:2.1.1"
dependencies:
ajv: ^6.12.4
debug: ^4.3.2
@@ -10764,14 +10710,14 @@ __metadata:
js-yaml: ^4.1.0
minimatch: ^3.1.2
strip-json-comments: ^3.1.1
- checksum: d5ed0adbe23f6571d8c9bb0ca6edf7618dc6aed4046aa56df7139f65ae7b578874e0d9c796df784c25bda648ceb754b6320277d828c8b004876d7443b8dc018c
+ checksum: bf909ea183d27238c257a82d4ffdec38ca94b906b4b8dfae02ecbe7ecc9e5a8182ef5e469c808bb8cb4fea4750f43ac4ca7c4b4a167b6cd7e3aaacd386b2bd25
languageName: node
linkType: hard
-"@eslint/js@npm:8.44.0":
- version: 8.44.0
- resolution: "@eslint/js@npm:8.44.0"
- checksum: fc539583226a28f5677356e9f00d2789c34253f076643d2e32888250e509a4e13aafe0880cb2425139051de0f3a48d25bfc5afa96b7304f203b706c17340e3cf
+"@eslint/js@npm:^8.46.0":
+ version: 8.46.0
+ resolution: "@eslint/js@npm:8.46.0"
+ checksum: 7aed479832302882faf5bec37e9d068f270f84c19b3fb529646a7c1b031e73a312f730569c78806492bc09cfce3d7651dfab4ce09a56cbb06bc6469449e56377
languageName: node
linkType: hard
@@ -10915,24 +10861,24 @@ __metadata:
languageName: node
linkType: hard
-"@google-cloud/container@npm:^4.0.0":
- version: 4.13.0
- resolution: "@google-cloud/container@npm:4.13.0"
+"@google-cloud/container@npm:^4.0.0, @google-cloud/container@npm:^4.15.0":
+ version: 4.16.0
+ resolution: "@google-cloud/container@npm:4.16.0"
dependencies:
google-gax: ^3.5.8
- checksum: 21e57e8c69e2df8cf6899541dc405f9a6c05d999289cf211c2bb8dc6e33bf7ef36ff255cfde75c6448dd335fb5b707e77f5df49bee561decbd5ed398c58db6f6
+ checksum: 324d31a45e21ce8e4734a861d5abc5a3ed8f5d0a4825db37ea4a8d6ae6658b395f5e70a29b02fe8964cbf9bd6a00387652b55a670113b941394a9dc54d34ec52
languageName: node
linkType: hard
"@google-cloud/firestore@npm:^6.0.0":
- version: 6.6.1
- resolution: "@google-cloud/firestore@npm:6.6.1"
+ version: 6.7.0
+ resolution: "@google-cloud/firestore@npm:6.7.0"
dependencies:
fast-deep-equal: ^3.1.1
functional-red-black-tree: ^1.0.1
google-gax: ^3.5.7
protobufjs: ^7.0.0
- checksum: 9f3838e07d74da34ba4cf322efd3f82e3b8f5b330ae01c0e51d717aacafe2a84caa2869989bbff87fe020086f5b8591baaaf8c643dc93c20fd3f6f2adfd67a24
+ checksum: 8464d4d866adcbd80cd528230408f7161a402df7b74d4036b2f81c1f9b83051057364e1c8264477b7a46ce03c2b8fa0d28799f6ccd77d905274a71ca93b2593f
languageName: node
linkType: hard
@@ -10961,8 +10907,8 @@ __metadata:
linkType: hard
"@google-cloud/storage@npm:^6.0.0":
- version: 6.11.0
- resolution: "@google-cloud/storage@npm:6.11.0"
+ version: 6.12.0
+ resolution: "@google-cloud/storage@npm:6.12.0"
dependencies:
"@google-cloud/paginator": ^3.0.7
"@google-cloud/projectify": ^3.0.0
@@ -10973,6 +10919,7 @@ __metadata:
duplexify: ^4.0.0
ent: ^2.2.0
extend: ^3.0.2
+ fast-xml-parser: ^4.2.2
gaxios: ^5.0.0
google-auth-library: ^8.0.1
mime: ^3.0.0
@@ -10981,7 +10928,7 @@ __metadata:
retry-request: ^5.0.0
teeny-request: ^8.0.0
uuid: ^8.0.0
- checksum: 4183c0ad3b271e0c22b3aa01e9942590ae64b984efa142a787b96379baaf4c05a2ebdbb6015c8ea189951df251d57f4f35c6a28b920922828cc89d3e4147d1a1
+ checksum: cfe44e3f4d1bacd8eeefa7885d261f421c4ff84e82abe50200b5b77e28322baf9cb67497872b9868b25b43b14197b1a155d5eb7b70afb39d3476fa4bdead3338
languageName: node
linkType: hard
@@ -13127,16 +13074,16 @@ __metadata:
languageName: node
linkType: hard
-"@nestjs/axios@npm:0.0.8":
- version: 0.0.8
- resolution: "@nestjs/axios@npm:0.0.8"
+"@nestjs/axios@npm:0.1.0":
+ version: 0.1.0
+ resolution: "@nestjs/axios@npm:0.1.0"
dependencies:
axios: 0.27.2
peerDependencies:
- "@nestjs/common": ^7.0.0 || ^8.0.0
+ "@nestjs/common": ^7.0.0 || ^8.0.0 || ^9.0.0
reflect-metadata: ^0.1.12
rxjs: ^6.0.0 || ^7.0.0
- checksum: bc6b18c6e8bcfab1e8e9371a089cbba293a7b1df6d5de7fa15bb80db1966e6f62ba62d2b30c7378674f7d2272a1a1d0c694e1192c767c269c0aae04b7bdfea9b
+ checksum: 72929b25caacb85517bae962b13d865a31aa3984aa9e55305e0a2306e54338fe51a7eb38ca38cab0fe8b4116fb35219bd02c8b0c4cac70e7b5aeb84d03a1db3f
languageName: node
linkType: hard
@@ -13868,10 +13815,10 @@ __metadata:
linkType: hard
"@openapitools/openapi-generator-cli@npm:^2.4.26":
- version: 2.6.0
- resolution: "@openapitools/openapi-generator-cli@npm:2.6.0"
+ version: 2.7.0
+ resolution: "@openapitools/openapi-generator-cli@npm:2.7.0"
dependencies:
- "@nestjs/axios": 0.0.8
+ "@nestjs/axios": 0.1.0
"@nestjs/common": 9.3.11
"@nestjs/core": 9.3.11
"@nuxtjs/opencollective": 0.3.2
@@ -13889,20 +13836,20 @@ __metadata:
tslib: 2.0.3
bin:
openapi-generator-cli: main.js
- checksum: d60711b0fc018f4834faa28be8990a6d019d87be9cd8c8f7f1a2f5dfb863044b1f80bc0841caceffa76f6eec3e756291e3b8e81a00d42ca883974703b616097f
+ checksum: 92ca36779b43fe1e4868cd89bde4cb96918868aa62c8a69a9e199711d8e7093bab67f484d266fcbf37ca4ad87e4e91ea5759fb322c7999a299f5bfdc179065b8
languageName: node
linkType: hard
"@opensearch-project/opensearch@npm:^2.2.1":
- version: 2.2.1
- resolution: "@opensearch-project/opensearch@npm:2.2.1"
+ version: 2.3.1
+ resolution: "@opensearch-project/opensearch@npm:2.3.1"
dependencies:
aws4: ^1.11.0
debug: ^4.3.1
hpagent: ^1.2.0
ms: ^2.1.3
secure-json-parse: ^2.4.0
- checksum: ec75081574dbd036d8a72383a1a3bd99ed70a149a80960beb53052dcf8a7e2c4715a10b92fe7f6c2391ff681a3f27d9b3361f06bdbee7b88ddf869df57c2fe71
+ checksum: 70324153eb9d74c005d5517a997f7027b829387af482956593a23b80c24ba8c9f9cdff40fec3d72e7066f3f16070b543c2d6f59f578e1be898784b49f9f6720f
languageName: node
linkType: hard
@@ -14396,14 +14343,14 @@ __metadata:
linkType: hard
"@roadiehq/backstage-plugin-travis-ci@npm:^2.0.5":
- version: 2.1.12
- resolution: "@roadiehq/backstage-plugin-travis-ci@npm:2.1.12"
+ version: 2.1.13
+ resolution: "@roadiehq/backstage-plugin-travis-ci@npm:2.1.13"
dependencies:
- "@backstage/catalog-model": ^1.4.0
- "@backstage/core-components": ^0.13.2
- "@backstage/core-plugin-api": ^1.5.2
- "@backstage/plugin-catalog-react": ^1.7.0
- "@backstage/theme": ^0.4.0
+ "@backstage/catalog-model": ^1.4.1
+ "@backstage/core-components": ^0.13.3
+ "@backstage/core-plugin-api": ^1.5.3
+ "@backstage/plugin-catalog-react": ^1.8.0
+ "@backstage/theme": ^0.4.1
"@material-ui/core": ^4.11.3
"@material-ui/icons": ^4.11.2
"@material-ui/lab": 4.0.0-alpha.57
@@ -14417,7 +14364,7 @@ __metadata:
react-dom: ^16.13.1 || ^17.0.0
react-router: 6.0.0-beta.0 || ^6.3.0
react-router-dom: 6.0.0-beta.0 || ^6.3.0
- checksum: e4e5b91323104ea7fe6608333960d92f7670fc1f6372c5942ca35cbaeb48f542dc7162f7e7a81f859a353124e6b94e0be776f43e690c8f9fa66f66986dca97f6
+ checksum: c8ddeadcc5edec0b25276b65ddf7971943939eb2c82d363919c748b8a740ed53c2642bda6cb509d7fc8c02f002166abf8fc4cb7a2cfa83577e1139c5ba31841b
languageName: node
linkType: hard
@@ -14707,321 +14654,363 @@ __metadata:
languageName: node
linkType: hard
-"@smithy/abort-controller@npm:^1.0.1, @smithy/abort-controller@npm:^1.0.2":
- version: 1.0.2
- resolution: "@smithy/abort-controller@npm:1.0.2"
+"@smithy/abort-controller@npm:^2.0.1, @smithy/abort-controller@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "@smithy/abort-controller@npm:2.0.2"
dependencies:
- "@smithy/types": ^1.1.1
+ "@smithy/types": ^2.1.0
tslib: ^2.5.0
- checksum: 5d0c5b04636c1e27c812b3ac0f780602ff28ed60dbd5b9d39e9caa6f2e982b340efd3fea4d7e7b282451d1469ef6f9d5086e79a0945a078db2db7672dd174f49
+ checksum: 68a331dc59decd842b2eecae3ff8705340d9504048a0e5af31286e9505e2473f81d96bfb2dd395161529adee5413bf6aaed7e264debd0862113325c85e0771da
languageName: node
linkType: hard
-"@smithy/config-resolver@npm:^1.0.1, @smithy/config-resolver@npm:^1.0.2":
- version: 1.0.2
- resolution: "@smithy/config-resolver@npm:1.0.2"
+"@smithy/chunked-blob-reader-native@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "@smithy/chunked-blob-reader-native@npm:2.0.0"
dependencies:
- "@smithy/types": ^1.1.1
- "@smithy/util-config-provider": ^1.0.2
- "@smithy/util-middleware": ^1.0.2
+ "@smithy/util-base64": ^2.0.0
tslib: ^2.5.0
- checksum: 23efcb59d682b7ab05ec920c92d9e7fcecc58b9ab204a4de504da18ef0687c051b27acf9bcfc91969a160ea137d6f2f2091b4f3e31c659327784f95240ec0d13
+ checksum: 5f656dbc4913ab8312b6e687938f534a2ed28e749335560c21a6975f691630ede80afc4a81007078692da4eaa91839ae0a6e65dc39f3faf4423538f5d9bef37b
languageName: node
linkType: hard
-"@smithy/credential-provider-imds@npm:^1.0.1, @smithy/credential-provider-imds@npm:^1.0.2":
- version: 1.0.2
- resolution: "@smithy/credential-provider-imds@npm:1.0.2"
+"@smithy/chunked-blob-reader@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "@smithy/chunked-blob-reader@npm:2.0.0"
dependencies:
- "@smithy/node-config-provider": ^1.0.2
- "@smithy/property-provider": ^1.0.2
- "@smithy/types": ^1.1.1
- "@smithy/url-parser": ^1.0.2
tslib: ^2.5.0
- checksum: 91b57891b68fd1e83b40d8bde72cbc38247982ba6eaaf32a80bdcccb1e30b42799ac7d8b50da55796ae873a95891b567298d5da41e1059150e240d075a82ee03
+ checksum: a47e5298f0b28e25eaa5825ea9737718f0e2b7cf0f03a49cca186eb5544dd20ac91a2d92069f9805e40e5f3ab34d32f8091853518672fdbca009411179dbeb2a
languageName: node
linkType: hard
-"@smithy/eventstream-codec@npm:^1.0.2":
- version: 1.0.2
- resolution: "@smithy/eventstream-codec@npm:1.0.2"
+"@smithy/config-resolver@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "@smithy/config-resolver@npm:2.0.2"
+ dependencies:
+ "@smithy/types": ^2.1.0
+ "@smithy/util-config-provider": ^2.0.0
+ "@smithy/util-middleware": ^2.0.0
+ tslib: ^2.5.0
+ checksum: deb7ecab3d3f2ce57304d99605e55739c94356105c8106c8ca9bb5c0fc329e2b4153788a12bb8600187c51645b9a5be799571c8e380cc4458d110c37f127c75b
+ languageName: node
+ linkType: hard
+
+"@smithy/credential-provider-imds@npm:^2.0.0, @smithy/credential-provider-imds@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "@smithy/credential-provider-imds@npm:2.0.2"
+ dependencies:
+ "@smithy/node-config-provider": ^2.0.2
+ "@smithy/property-provider": ^2.0.2
+ "@smithy/types": ^2.1.0
+ "@smithy/url-parser": ^2.0.2
+ tslib: ^2.5.0
+ checksum: 519fd53a74e7fdb4a5e39bf4d0554983231919d80e2b9e324976a14ec41d4e0e4de6c9272af10820c220810ba30a9803a901c677b9994b8893aded10e1b36505
+ languageName: node
+ linkType: hard
+
+"@smithy/eventstream-codec@npm:^2.0.1, @smithy/eventstream-codec@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "@smithy/eventstream-codec@npm:2.0.2"
dependencies:
"@aws-crypto/crc32": 3.0.0
- "@smithy/types": ^1.1.1
- "@smithy/util-hex-encoding": ^1.0.2
+ "@smithy/types": ^2.1.0
+ "@smithy/util-hex-encoding": ^2.0.0
tslib: ^2.5.0
- checksum: 64e2f6e5b03595815a2b968938459db3df31498b2befa657b5acc55242c57da56825431465bac271344cecf68d1f31a54ed3477ebd7d775ad3791d7e48a2bc62
+ checksum: aa9136264c1f9a3bc8b9bc175d28b10d0ce72377593b4ed32d11b1753723a88e6305991ab0c6822d986f31edb914355df6bec8fb65ffe1f66c2ce6dab0768668
languageName: node
linkType: hard
-"@smithy/eventstream-serde-browser@npm:^1.0.1":
- version: 1.0.2
- resolution: "@smithy/eventstream-serde-browser@npm:1.0.2"
+"@smithy/eventstream-serde-browser@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "@smithy/eventstream-serde-browser@npm:2.0.2"
dependencies:
- "@smithy/eventstream-serde-universal": ^1.0.2
- "@smithy/types": ^1.1.1
+ "@smithy/eventstream-serde-universal": ^2.0.2
+ "@smithy/types": ^2.1.0
tslib: ^2.5.0
- checksum: d2ece075bcd5ba64788f74078217504b31cddabbb84e7dd5ed17b358f9f184e5ae840d36460251f06d84da7c8be4d70b87e1386418857466a7d0600145e2012d
+ checksum: b21c97d9e02fe3ba9110cbea35f674b3746c36eafde2874e878fcea03f7c1d1f34f38797df38b8b04dcc19576aa9f568e3e241f79aac696169941c4f44132d08
languageName: node
linkType: hard
-"@smithy/eventstream-serde-config-resolver@npm:^1.0.1":
- version: 1.0.2
- resolution: "@smithy/eventstream-serde-config-resolver@npm:1.0.2"
+"@smithy/eventstream-serde-config-resolver@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "@smithy/eventstream-serde-config-resolver@npm:2.0.2"
dependencies:
- "@smithy/types": ^1.1.1
+ "@smithy/types": ^2.1.0
tslib: ^2.5.0
- checksum: ff6eeec4439eafe8fb4d1ded405b14a67f79b74af18091bd218392f8450f7b9565c419b82291a0032e1da067a28b74551995b18110422169dc86e01e0581d2dc
+ checksum: 707e6e39e2ccb832db06f82bbf96c655548052458bf3f8b8b00e32461747b1fab1be9ec60a5ddbff8770e48b2cd153277bc81b203765d66b78fc2f76252ce8b9
languageName: node
linkType: hard
-"@smithy/eventstream-serde-node@npm:^1.0.1":
- version: 1.0.2
- resolution: "@smithy/eventstream-serde-node@npm:1.0.2"
+"@smithy/eventstream-serde-node@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "@smithy/eventstream-serde-node@npm:2.0.2"
dependencies:
- "@smithy/eventstream-serde-universal": ^1.0.2
- "@smithy/types": ^1.1.1
+ "@smithy/eventstream-serde-universal": ^2.0.2
+ "@smithy/types": ^2.1.0
tslib: ^2.5.0
- checksum: 32b562735eaa59e7000d71887f9f6fc6c9986c595477619eae58830e8d720f4bdb8496d91f939bba6e933dda03ba2dde4fc03c67d090025c4b289c5851d7e8c1
+ checksum: dfda607f0d76098616341c1e6f3012242c58f1d3211a464631f4d337f7113bce7f0380fe5cdf5b6e4e391beb54562d1a96494ca8d2af847f1f13264f362365aa
languageName: node
linkType: hard
-"@smithy/eventstream-serde-universal@npm:^1.0.2":
- version: 1.0.2
- resolution: "@smithy/eventstream-serde-universal@npm:1.0.2"
+"@smithy/eventstream-serde-universal@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "@smithy/eventstream-serde-universal@npm:2.0.2"
dependencies:
- "@smithy/eventstream-codec": ^1.0.2
- "@smithy/types": ^1.1.1
+ "@smithy/eventstream-codec": ^2.0.2
+ "@smithy/types": ^2.1.0
tslib: ^2.5.0
- checksum: 24a40513b9384ecadb78618d672cc013d06d43c743e60cf7e397fa4e0ad7ce19e34281ddcf9527a3343409f21659f8a3bab26963cb47fc3557726cd40580973c
+ checksum: 887d03832126054fdfd6426ee3153eec54ecfcddeb04c63c69f6f1fcc23e0b8af737dce7c8ae07ca456f1e0be63614498280b77ff5c919793a0633b1d7d11a2c
languageName: node
linkType: hard
-"@smithy/fetch-http-handler@npm:^1.0.1, @smithy/fetch-http-handler@npm:^1.0.2":
- version: 1.0.2
- resolution: "@smithy/fetch-http-handler@npm:1.0.2"
+"@smithy/fetch-http-handler@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "@smithy/fetch-http-handler@npm:2.0.2"
dependencies:
- "@smithy/protocol-http": ^1.1.1
- "@smithy/querystring-builder": ^1.0.2
- "@smithy/types": ^1.1.1
- "@smithy/util-base64": ^1.0.2
+ "@smithy/protocol-http": ^2.0.2
+ "@smithy/querystring-builder": ^2.0.2
+ "@smithy/types": ^2.1.0
+ "@smithy/util-base64": ^2.0.0
tslib: ^2.5.0
- checksum: 62965f69ebcb7a7a67576d4ac909873080d0da33796f15ecf7b265e7f35e0d43e6d3cdf5edb53b9a51f97a88ee90777dd8a7a84ac8dd914cd3d4bcb1c6611506
+ checksum: 2c7c97c02bc347b420c51a052b97884e70cfbed25475e68d5a1e8f46b1b0873d727c4989b4a71aaa5e5e1ba055c423f989f5b01bf105176580acc9d5cc80eb72
languageName: node
linkType: hard
-"@smithy/hash-node@npm:^1.0.1":
- version: 1.0.2
- resolution: "@smithy/hash-node@npm:1.0.2"
+"@smithy/hash-blob-browser@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "@smithy/hash-blob-browser@npm:2.0.2"
dependencies:
- "@smithy/types": ^1.1.1
- "@smithy/util-buffer-from": ^1.0.2
- "@smithy/util-utf8": ^1.0.2
+ "@smithy/chunked-blob-reader": ^2.0.0
+ "@smithy/chunked-blob-reader-native": ^2.0.0
+ "@smithy/types": ^2.1.0
tslib: ^2.5.0
- checksum: 018ef3271c60e7c8df07c4b5f77b52010a8a6be53e9da3f7e361cda48a6df6f5a52870a7721110338725e83b88d5ef120c2312334b6618f3dfdf80d4e0725cab
+ checksum: add61e1fbdcaf5b019bb8ad4d1dbb70cbc59c65f039cab2ac9fc4617333ce7a3aa356d51b737732560d23db29f7afbd5c1addb4db738ec21dfa2cad5dd82ca05
languageName: node
linkType: hard
-"@smithy/invalid-dependency@npm:^1.0.1":
- version: 1.0.2
- resolution: "@smithy/invalid-dependency@npm:1.0.2"
+"@smithy/hash-node@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "@smithy/hash-node@npm:2.0.2"
dependencies:
- "@smithy/types": ^1.1.1
+ "@smithy/types": ^2.1.0
+ "@smithy/util-buffer-from": ^2.0.0
+ "@smithy/util-utf8": ^2.0.0
tslib: ^2.5.0
- checksum: 51d4bfc25854789a312d87c9bfe1a919e8d7a96052d4010f411c0cb532673a8a3fff92f2d0cf18ccbd05f618f36bfc7fab61159878559ffdd7096de2bd749916
+ checksum: 2917822fcc965596755a284cbae8376adb0d1ebc5998ae8a5682e4385f29eaac4408b24e560eced4b7fb8a279fa4453277dc3853114724d4e4c62ce935863fa9
languageName: node
linkType: hard
-"@smithy/is-array-buffer@npm:^1.0.1, @smithy/is-array-buffer@npm:^1.0.2":
- version: 1.0.2
- resolution: "@smithy/is-array-buffer@npm:1.0.2"
+"@smithy/hash-stream-node@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "@smithy/hash-stream-node@npm:2.0.2"
dependencies:
+ "@smithy/types": ^2.1.0
+ "@smithy/util-utf8": ^2.0.0
tslib: ^2.5.0
- checksum: 811b100b809bc1730ed33231ae22afbce5ccc8d2d5db5c8e86b52db718d738283337a43f777397d1308c24243d0be3e3d862684e9be1dbdfb547a8d8399f0911
+ checksum: b588608e200978a09633591e5f155bb63890d0f96776eaf94bfbf8df7223bf6a83e8f1a0b256fd7ee286b7b2ca53f1f7124e2d436d5e21ddf10aeb52e7ab528d
languageName: node
linkType: hard
-"@smithy/md5-js@npm:^1.0.1":
- version: 1.0.2
- resolution: "@smithy/md5-js@npm:1.0.2"
+"@smithy/invalid-dependency@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "@smithy/invalid-dependency@npm:2.0.2"
dependencies:
- "@smithy/types": ^1.1.1
- "@smithy/util-utf8": ^1.0.2
+ "@smithy/types": ^2.1.0
tslib: ^2.5.0
- checksum: 61913e2a6db50eeba87b1fc23a977d8266c4d19d4c52193ac4b2263eab4fed58c25b23baab514cab104aabdbe6437518f2e2f68146e400c7a760a881552f2da5
+ checksum: c31f5d8555729ac34a0e56f350061ee127a6869c6fbe5e30c303e8b273aa52370d7e3a9ec603448cf2e986740a4c67e5285a350d738896e2ad4f7312cb3ed943
languageName: node
linkType: hard
-"@smithy/middleware-content-length@npm:^1.0.1":
- version: 1.0.2
- resolution: "@smithy/middleware-content-length@npm:1.0.2"
+"@smithy/is-array-buffer@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "@smithy/is-array-buffer@npm:2.0.0"
dependencies:
- "@smithy/protocol-http": ^1.1.1
- "@smithy/types": ^1.1.1
tslib: ^2.5.0
- checksum: 4b00aa741179152cbdc2aa1229077d0a39196f7ce916a11d121cfa160af380651e031f6a8e59193061bbca0baf5fff5f6010b1a998a6c0b03f228fa862625a8a
+ checksum: 6d101cf509a7818667f42d297894f88f86ef41d3cc9d02eae38bbe5e69b16edf83b8e67eb691964d859a16a4e39db1aad323d83f6ae55ae4512a14ff6406c02d
languageName: node
linkType: hard
-"@smithy/middleware-endpoint@npm:^1.0.2":
- version: 1.0.3
- resolution: "@smithy/middleware-endpoint@npm:1.0.3"
+"@smithy/md5-js@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "@smithy/md5-js@npm:2.0.2"
dependencies:
- "@smithy/middleware-serde": ^1.0.2
- "@smithy/types": ^1.1.1
- "@smithy/url-parser": ^1.0.2
- "@smithy/util-middleware": ^1.0.2
+ "@smithy/types": ^2.1.0
+ "@smithy/util-utf8": ^2.0.0
tslib: ^2.5.0
- checksum: 8081b515955632828cdf6955368e46b5288f996fd6697dacf1d44eced488033f8f9d7a10e036fcebabc7f4e72dfcd69ab8ac76b4c17082b9b8326431441ef1a7
+ checksum: 889056925d17f424f23540b25c237c7ad4e9b7b8a7817a0172cf0a648da5ab9c709593790629955365c93504787c534b2156aa8d056ea27fe81a88106126268b
languageName: node
linkType: hard
-"@smithy/middleware-retry@npm:^1.0.3":
- version: 1.0.4
- resolution: "@smithy/middleware-retry@npm:1.0.4"
+"@smithy/middleware-content-length@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "@smithy/middleware-content-length@npm:2.0.2"
dependencies:
- "@smithy/protocol-http": ^1.1.1
- "@smithy/service-error-classification": ^1.0.3
- "@smithy/types": ^1.1.1
- "@smithy/util-middleware": ^1.0.2
- "@smithy/util-retry": ^1.0.4
+ "@smithy/protocol-http": ^2.0.2
+ "@smithy/types": ^2.1.0
+ tslib: ^2.5.0
+ checksum: d4a28b967629eab3ee2265ad34e6f45b8006e247e51fdce53604431de58a7840a304ff530475b160d50dc9fb47b1c4c91e51e340003c57b9aaa8483686540336
+ languageName: node
+ linkType: hard
+
+"@smithy/middleware-endpoint@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "@smithy/middleware-endpoint@npm:2.0.2"
+ dependencies:
+ "@smithy/middleware-serde": ^2.0.2
+ "@smithy/types": ^2.1.0
+ "@smithy/url-parser": ^2.0.2
+ "@smithy/util-middleware": ^2.0.0
+ tslib: ^2.5.0
+ checksum: 2a1ba8fa8fe0aef2bdd87c6fc7d3567b4b03e63ad8b46531130042c226b627d438f163caad81295b7dcb506536fd0700fb0ddc20bfc894c7be589b8c891fa799
+ languageName: node
+ linkType: hard
+
+"@smithy/middleware-retry@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "@smithy/middleware-retry@npm:2.0.2"
+ dependencies:
+ "@smithy/protocol-http": ^2.0.2
+ "@smithy/service-error-classification": ^2.0.0
+ "@smithy/types": ^2.1.0
+ "@smithy/util-middleware": ^2.0.0
+ "@smithy/util-retry": ^2.0.0
tslib: ^2.5.0
uuid: ^8.3.2
- checksum: 3ca5c4abe3cbfba1201a7777c0f41ae9df0985a1f155bab647cd88d86c8101f4de0bc118164a14d4ac8bd41d120d0c0f1b327b3512c341aeb06f60b0a32dc89d
+ checksum: c88134fe739b9b038117b388b10e29e53407af3bd6f61fbfdc2600b45b6415bb2e75ee4ce9b0423376d11472d0fb96ba6300c23a1c0ddf8a5d3806f8b7d3c088
languageName: node
linkType: hard
-"@smithy/middleware-serde@npm:^1.0.1, @smithy/middleware-serde@npm:^1.0.2":
- version: 1.0.2
- resolution: "@smithy/middleware-serde@npm:1.0.2"
+"@smithy/middleware-serde@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "@smithy/middleware-serde@npm:2.0.2"
dependencies:
- "@smithy/types": ^1.1.1
+ "@smithy/types": ^2.1.0
tslib: ^2.5.0
- checksum: 563045c0ad6fd37548197a3844716e61bf969f4a7b3fbb6c6f0129d4745a0c373029acf069d142a59f1d22778e90f86869cd4ef3f9b297b04a23ef042c6c9c55
+ checksum: 6d343eceeff45c08142ff0567885b910f6d77e7ec95396f8fc4b0fc259284c8d430bd8412ef36c5c45905ee631c660524e38450bda86400b06f3272f4504b08f
languageName: node
linkType: hard
-"@smithy/middleware-stack@npm:^1.0.1, @smithy/middleware-stack@npm:^1.0.2":
- version: 1.0.2
- resolution: "@smithy/middleware-stack@npm:1.0.2"
+"@smithy/middleware-stack@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "@smithy/middleware-stack@npm:2.0.0"
dependencies:
tslib: ^2.5.0
- checksum: 34794d1e6d8b5fd9be70d5d0137f09d8ec88942d054575e35dbf6407f2040c3d0d667d26ff01132c4c42933785127d12b6406a1802af65a779e44cbf38fc9fe2
+ checksum: dd23dff4da44964e936c5ae465de9416bb8dd67da2ae72ffe450156ad52e82475836ed5c18d82cef7edeca421b33d363889549e34482008eeb9ca0bb97f061f2
languageName: node
linkType: hard
-"@smithy/node-config-provider@npm:^1.0.1, @smithy/node-config-provider@npm:^1.0.2":
- version: 1.0.2
- resolution: "@smithy/node-config-provider@npm:1.0.2"
+"@smithy/node-config-provider@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "@smithy/node-config-provider@npm:2.0.2"
dependencies:
- "@smithy/property-provider": ^1.0.2
- "@smithy/shared-ini-file-loader": ^1.0.2
- "@smithy/types": ^1.1.1
+ "@smithy/property-provider": ^2.0.2
+ "@smithy/shared-ini-file-loader": ^2.0.2
+ "@smithy/types": ^2.1.0
tslib: ^2.5.0
- checksum: 593bd5adf0177851a191849e68760f7ebde943db2613898ecda468b31c47442e5fd380fdd95fe95f912bd15fe48a28dbde3f352b49a8108fc34c630d7eb50843
+ checksum: 6cf3953dfd08f337b5ef41fa6808b083ceb06624e2de4996bfbb7d4326a8deefe73e47d6bb00ca81a2d2dc9b662d3eaaa3d1698262f2256d1a7c71290663ca12
languageName: node
linkType: hard
-"@smithy/node-http-handler@npm:^1.0.2, @smithy/node-http-handler@npm:^1.0.3":
- version: 1.0.3
- resolution: "@smithy/node-http-handler@npm:1.0.3"
+"@smithy/node-http-handler@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "@smithy/node-http-handler@npm:2.0.2"
dependencies:
- "@smithy/abort-controller": ^1.0.2
- "@smithy/protocol-http": ^1.1.1
- "@smithy/querystring-builder": ^1.0.2
- "@smithy/types": ^1.1.1
+ "@smithy/abort-controller": ^2.0.2
+ "@smithy/protocol-http": ^2.0.2
+ "@smithy/querystring-builder": ^2.0.2
+ "@smithy/types": ^2.1.0
tslib: ^2.5.0
- checksum: 727e1391ccc409b3ed7d7a697bfcd29e4e9fbc81404665719c47c8143832ef8f65ea9f8f5d783ea1930fd56a0d45eaaa6a7a8db76da785ba73f0fd29276fbe11
+ checksum: 1c5e0189d2f68bfc4c50c107182eb34b34024de3213a552cab2088c01bea8707c51c7cbbd7cf61290cf8b71e13ec2d715e51b7647edc9f5d27ab8779011e2a4d
languageName: node
linkType: hard
-"@smithy/property-provider@npm:^1.0.1, @smithy/property-provider@npm:^1.0.2":
- version: 1.0.2
- resolution: "@smithy/property-provider@npm:1.0.2"
+"@smithy/property-provider@npm:^2.0.0, @smithy/property-provider@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "@smithy/property-provider@npm:2.0.2"
dependencies:
- "@smithy/types": ^1.1.1
+ "@smithy/types": ^2.1.0
tslib: ^2.5.0
- checksum: 55d09de3dab2e5858b45f981c67ec1cf4e8fc28a758b9830fd0c5e04ca6e9d69f31e92c80fa4fba5d8eed4a60b4f95528d41f9a6c63e2ff0aad726d3c3b83636
+ checksum: e18df64d5ec92b2c7876dc1e7a596dc80066e13d49fcad6d8caac50394e8b3f3b15aa1f517429a85cdfefc218ee3d72028613454c706638352732ab1ae0f7418
languageName: node
linkType: hard
-"@smithy/protocol-http@npm:^1.1.0, @smithy/protocol-http@npm:^1.1.1":
- version: 1.1.1
- resolution: "@smithy/protocol-http@npm:1.1.1"
+"@smithy/protocol-http@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "@smithy/protocol-http@npm:2.0.2"
dependencies:
- "@smithy/types": ^1.1.1
+ "@smithy/types": ^2.1.0
tslib: ^2.5.0
- checksum: 6320e8b010d05a123efef19401b3e2fc0d03efa99082ad0d5fd41a3209a05332acb4b5ee21dcfd4764b6576019884602bd09ede0f7508540baf7ddb1f7eb49f5
+ checksum: 61202d08d4433a4406a56e1e77863b89a60431a39984b38fec04a18276973857524b18d60c394236f3b664a08ec1996d837c295798e44f02ba93aca5336e9432
languageName: node
linkType: hard
-"@smithy/querystring-builder@npm:^1.0.2":
- version: 1.0.2
- resolution: "@smithy/querystring-builder@npm:1.0.2"
+"@smithy/querystring-builder@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "@smithy/querystring-builder@npm:2.0.2"
dependencies:
- "@smithy/types": ^1.1.1
- "@smithy/util-uri-escape": ^1.0.2
+ "@smithy/types": ^2.1.0
+ "@smithy/util-uri-escape": ^2.0.0
tslib: ^2.5.0
- checksum: c0e6807a5b6c8438295ff8ebc11d9e2a28fe1434405688055a9dd4f4d354e49e14a4e459419af23f74aab0a281d58b70d29ae6777a42504a89d6f089b110ee52
+ checksum: cdda228f0ac049aed302dcd19c47309a81eeb4d4c360189a399bc70bd6283ba218c87cfdee43e33c406cbe452d7979a389de9150b06de5221dfe4a6f69e53c1b
languageName: node
linkType: hard
-"@smithy/querystring-parser@npm:^1.0.2":
- version: 1.0.2
- resolution: "@smithy/querystring-parser@npm:1.0.2"
+"@smithy/querystring-parser@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "@smithy/querystring-parser@npm:2.0.2"
dependencies:
- "@smithy/types": ^1.1.1
+ "@smithy/types": ^2.1.0
tslib: ^2.5.0
- checksum: 348672b1bc4193de23055421756c47619de5a2dea496dcf85a7744e9a8d5b26a4573dd731f9be936f7b1ba564676ecdf6d166638f9961bff497a2c554c97f01c
+ checksum: 0a571dbf7876096823071583e4b8506d9ce4fc1ff2af9fac07987bdf9a6e0dfee1598280cf411a6709cf535e2904eeab385bb2186bb6fe3aa987bae84620256c
languageName: node
linkType: hard
-"@smithy/service-error-classification@npm:^1.0.3":
- version: 1.0.3
- resolution: "@smithy/service-error-classification@npm:1.0.3"
- checksum: adf840de7865606946a68f55ae4f35e03d96422be4df886309300944243510baf1bd84ef0786bcd8184094e97fafdff66a52b8ba669267391a8d8856093edde0
+"@smithy/service-error-classification@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "@smithy/service-error-classification@npm:2.0.0"
+ checksum: f6f9b869dca8e74871c428e1277dd3700f67b0ca61de69fc838ac55187bbc602193a7d1073113ea6916892babf3f8fe4938b182fc902ce0a415928799a7e3f9a
languageName: node
linkType: hard
-"@smithy/shared-ini-file-loader@npm:^1.0.1, @smithy/shared-ini-file-loader@npm:^1.0.2":
- version: 1.0.2
- resolution: "@smithy/shared-ini-file-loader@npm:1.0.2"
+"@smithy/shared-ini-file-loader@npm:^2.0.0, @smithy/shared-ini-file-loader@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "@smithy/shared-ini-file-loader@npm:2.0.2"
dependencies:
- "@smithy/types": ^1.1.1
+ "@smithy/types": ^2.1.0
tslib: ^2.5.0
- checksum: c9ba908a48c12a06bcbb872e2e0581805507efc9beffcdbad39baa09b22da63bbcbf538a95d099666869e080ad5556bfe2fab6d4e977a71163595f3f9c1d7edc
+ checksum: 5a7100b1db34d0a479dcbc2d649840dcf37fb2be4d5798ba7bef58186b636d867c3c555796f1372bcfc5554705a3f267e13008705451f44cd03a2c5a87c5c89e
languageName: node
linkType: hard
-"@smithy/signature-v4@npm:^1.0.1":
- version: 1.0.2
- resolution: "@smithy/signature-v4@npm:1.0.2"
+"@smithy/signature-v4@npm:^2.0.0":
+ version: 2.0.1
+ resolution: "@smithy/signature-v4@npm:2.0.1"
dependencies:
- "@smithy/eventstream-codec": ^1.0.2
- "@smithy/is-array-buffer": ^1.0.2
- "@smithy/types": ^1.1.1
- "@smithy/util-hex-encoding": ^1.0.2
- "@smithy/util-middleware": ^1.0.2
- "@smithy/util-uri-escape": ^1.0.2
- "@smithy/util-utf8": ^1.0.2
+ "@smithy/eventstream-codec": ^2.0.1
+ "@smithy/is-array-buffer": ^2.0.0
+ "@smithy/types": ^2.0.2
+ "@smithy/util-hex-encoding": ^2.0.0
+ "@smithy/util-middleware": ^2.0.0
+ "@smithy/util-uri-escape": ^2.0.0
+ "@smithy/util-utf8": ^2.0.0
tslib: ^2.5.0
- checksum: 3e3072ef956adbb9fe633f2e7c28fc9aaeddb7551c25a1af94214fd5e93617c2b0ede440c1cb61ee6268c502ce0418cf124fb21cb654605292a956ec3061d54a
+ checksum: 2c4bc499251dfbdbea0359fc5196002ac805df7f6f87d7cba36164d8fcd16a749a3c1a52259569134628511dc496724d5e76744c1c39fee3a3f42c5fbfe3749b
languageName: node
linkType: hard
-"@smithy/smithy-client@npm:^1.0.3":
- version: 1.0.4
- resolution: "@smithy/smithy-client@npm:1.0.4"
+"@smithy/smithy-client@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "@smithy/smithy-client@npm:2.0.2"
dependencies:
- "@smithy/middleware-stack": ^1.0.2
- "@smithy/types": ^1.1.1
- "@smithy/util-stream": ^1.0.2
+ "@smithy/middleware-stack": ^2.0.0
+ "@smithy/types": ^2.1.0
+ "@smithy/util-stream": ^2.0.2
tslib: ^2.5.0
- checksum: 468aa2f28b6addb82861a543a2c1639dcfd40e49d3344237bd56c2d061af5e2bc88972297a2b86de7bf31d7ee49589a4e5a577518ef747e2c7458ae20f7c3322
+ checksum: 999b814ece054dfcc4808e5e3bdf6d24f5bc1a16b375bccad95ba9f0ff709a68f4c6437d1378b8b1ef870ce75e4cd2e55df4143394890e9759cec69fd078062d
languageName: node
linkType: hard
-"@smithy/types@npm:^1.1.0, @smithy/types@npm:^1.1.1":
+"@smithy/types@npm:^1.1.0":
version: 1.1.1
resolution: "@smithy/types@npm:1.1.1"
dependencies:
@@ -15030,161 +15019,170 @@ __metadata:
languageName: node
linkType: hard
-"@smithy/url-parser@npm:^1.0.1, @smithy/url-parser@npm:^1.0.2":
- version: 1.0.2
- resolution: "@smithy/url-parser@npm:1.0.2"
+"@smithy/types@npm:^2.0.2, @smithy/types@npm:^2.1.0":
+ version: 2.1.0
+ resolution: "@smithy/types@npm:2.1.0"
dependencies:
- "@smithy/querystring-parser": ^1.0.2
- "@smithy/types": ^1.1.1
tslib: ^2.5.0
- checksum: 1844b23a30afb689bc9ec21238d9e6cc428e152201f8f30f252f6211ee8b74760d6568e42125b75bc4d110b15476eac22c204c7e36f6970d04e8afa5bc83ec1d
+ checksum: 15c61c1b6520ef21257b64e4be7c8334c1206db8f21c9fb301838b5e09699996060c4361e51d2c63ee972f8678df68a8a60e2dd18216ae70751393d9d4188c5a
languageName: node
linkType: hard
-"@smithy/util-base64@npm:^1.0.1, @smithy/util-base64@npm:^1.0.2":
- version: 1.0.2
- resolution: "@smithy/util-base64@npm:1.0.2"
+"@smithy/url-parser@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "@smithy/url-parser@npm:2.0.2"
dependencies:
- "@smithy/util-buffer-from": ^1.0.2
+ "@smithy/querystring-parser": ^2.0.2
+ "@smithy/types": ^2.1.0
tslib: ^2.5.0
- checksum: 618d2952fbbc2cabcc6234c9aad612417a2a6f2fcac556a81b75f59d651e5daea7b2c1b44894b30611a425f32045a2dbe0623ebf57654e2068486d0d5a4b6ac7
+ checksum: 3a977e6a2c8d6d01e29d8925ef351d2cbc0951029d774490e3362d681fd18d97622afd2e99cea158f3e851cf423dc8dde5f6aee639cdf77f31e80150a732478b
languageName: node
linkType: hard
-"@smithy/util-body-length-browser@npm:^1.0.1":
- version: 1.0.2
- resolution: "@smithy/util-body-length-browser@npm:1.0.2"
+"@smithy/util-base64@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "@smithy/util-base64@npm:2.0.0"
dependencies:
+ "@smithy/util-buffer-from": ^2.0.0
tslib: ^2.5.0
- checksum: 3b0eacc3761625aaf5c384da8487a38663325385826ca9ac0fee17b7dff879a2cb3564a03d146e0b66ba6c503e1a07f159a9cccd4d7711b7063516acbfadb496
+ checksum: 52124a684dfac853288acd2a0ffff02559c21bf7faaa3db58a914e4acb4b1f7925fd48593e7545db87f8f962250824d1249dc8be645ecbd2c1dd1728cfe1069b
languageName: node
linkType: hard
-"@smithy/util-body-length-node@npm:^1.0.1":
- version: 1.0.2
- resolution: "@smithy/util-body-length-node@npm:1.0.2"
+"@smithy/util-body-length-browser@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "@smithy/util-body-length-browser@npm:2.0.0"
dependencies:
tslib: ^2.5.0
- checksum: 472371dc0a44a72333111758b8e60428cdca088cfe8a87c98413c81c4083e8988ae9d27f20fa2b0a8aed7fc26c0fec8e13c271494772c619f65f1a9f4e665eb3
+ checksum: 4bccdd857bd24c9dcb6e9f2d5be03d59415f9a94d660ec7b3efb45e9aa04017f34c387368f176f24233a071af3b7a2b5f8236a2f5a83bfc884d24dfcc341e836
languageName: node
linkType: hard
-"@smithy/util-buffer-from@npm:^1.0.2":
- version: 1.0.2
- resolution: "@smithy/util-buffer-from@npm:1.0.2"
+"@smithy/util-body-length-node@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "@smithy/util-body-length-node@npm:2.0.0"
dependencies:
- "@smithy/is-array-buffer": ^1.0.2
tslib: ^2.5.0
- checksum: ca4308ebc54f372777fc53b2782c752ebfdfe3934b1c4da935c78bb2f4f921d2071056edc644704ba894d363f85cc52fc07095d93eb6cbba510ba19a767be265
+ checksum: 47ded0cc99f880eda353700e10d6131289683164d4ef98a24a2d79449d33f3bbf70c1ce0a66fc457e0c8d14be9fb2a3430fa09302bbc3daa5d23129e11fff478
languageName: node
linkType: hard
-"@smithy/util-config-provider@npm:^1.0.1, @smithy/util-config-provider@npm:^1.0.2":
- version: 1.0.2
- resolution: "@smithy/util-config-provider@npm:1.0.2"
+"@smithy/util-buffer-from@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "@smithy/util-buffer-from@npm:2.0.0"
dependencies:
+ "@smithy/is-array-buffer": ^2.0.0
tslib: ^2.5.0
- checksum: 625c100b8af62cb08c167ebd23f77250e62b012e085ec8db8f06e3539fc516c340e14b480a09012192595121a58276dfc4370529237a58393185f3782ed0244a
+ checksum: d33cbf3e488d23390c88705ddae71b08de7a87b6453e38b508cd37a22a02e8b5be9f0cd46c1347b496c3977a815a7399b18840544ecdc4cce8cf3dcd0f5bb009
languageName: node
linkType: hard
-"@smithy/util-defaults-mode-browser@npm:^1.0.1":
- version: 1.0.2
- resolution: "@smithy/util-defaults-mode-browser@npm:1.0.2"
+"@smithy/util-config-provider@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "@smithy/util-config-provider@npm:2.0.0"
dependencies:
- "@smithy/property-provider": ^1.0.2
- "@smithy/types": ^1.1.1
+ tslib: ^2.5.0
+ checksum: cdc34db5b42658a7c98652ddb2e35b31e0d76f22a051d71724927999a53467fb38fe6dcf228585544bc168cbd54ded3913e14cbc33c947d3c8a45ca518a9b7b0
+ languageName: node
+ linkType: hard
+
+"@smithy/util-defaults-mode-browser@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "@smithy/util-defaults-mode-browser@npm:2.0.2"
+ dependencies:
+ "@smithy/property-provider": ^2.0.2
+ "@smithy/types": ^2.1.0
bowser: ^2.11.0
tslib: ^2.5.0
- checksum: ca03c9f596f9a26d392c289de7af7c7e7bdb12648b0339074bcbaddd762e58cb0cf127b8ed24e269bff004465702986b90d5151c502b418a615449171432024b
+ checksum: 0e4d70040268757120aec9b6207256d091772075e21dc1778c29d33d002c12e4825a192a2424ca3099d79ceb9ce8e6e77a627b680e12a657a171ca9ed84818e7
languageName: node
linkType: hard
-"@smithy/util-defaults-mode-node@npm:^1.0.1":
- version: 1.0.2
- resolution: "@smithy/util-defaults-mode-node@npm:1.0.2"
+"@smithy/util-defaults-mode-node@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "@smithy/util-defaults-mode-node@npm:2.0.2"
dependencies:
- "@smithy/config-resolver": ^1.0.2
- "@smithy/credential-provider-imds": ^1.0.2
- "@smithy/node-config-provider": ^1.0.2
- "@smithy/property-provider": ^1.0.2
- "@smithy/types": ^1.1.1
+ "@smithy/config-resolver": ^2.0.2
+ "@smithy/credential-provider-imds": ^2.0.2
+ "@smithy/node-config-provider": ^2.0.2
+ "@smithy/property-provider": ^2.0.2
+ "@smithy/types": ^2.1.0
tslib: ^2.5.0
- checksum: 805977758a5cabe3b8a4ee69f29cf6861356096239a60269eac6b83a4d11eddba030b0a5bcdb64add3d1301f611b21ed7d773e354cac8ff08b9d85ba47960252
+ checksum: 25b8988bad21b7fb45c715e303b57bee4e865644f3c3282aa36f81ce71000e94289c84bccdd820556a8625d5d6bfa4ce70eb0f02bd74e9bb117ed713fabeba5d
languageName: node
linkType: hard
-"@smithy/util-hex-encoding@npm:^1.0.1, @smithy/util-hex-encoding@npm:^1.0.2":
- version: 1.0.2
- resolution: "@smithy/util-hex-encoding@npm:1.0.2"
+"@smithy/util-hex-encoding@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "@smithy/util-hex-encoding@npm:2.0.0"
dependencies:
tslib: ^2.5.0
- checksum: c70bfccb41ac702b514a2bc3d6f897a616efa5aba880a6c7a7501ea874bea3c2213868cb2c494c19f6a5190f3f9e4f7d73d9ab87addbd243435e287dc892dc30
+ checksum: 884373e089d909e3c9805bdb78f367d1f3612e4e1e6d8f0263cc82a8b9689eddc0bc80b8b58aa711bd5b48d9cb124f9996906c172e951c9dac78984459e831cf
languageName: node
linkType: hard
-"@smithy/util-middleware@npm:^1.0.1, @smithy/util-middleware@npm:^1.0.2":
- version: 1.0.2
- resolution: "@smithy/util-middleware@npm:1.0.2"
+"@smithy/util-middleware@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "@smithy/util-middleware@npm:2.0.0"
dependencies:
tslib: ^2.5.0
- checksum: 899aca62efab92ac1b55e801b2bb1a3e5eb1b74f52387abe40f902ec2e5f3afd36e2942f392ff1a562e69dd0de901b9aa20c55e4af2ff0e37e20c14b20940852
+ checksum: 10401734a10e0c48ed684f20b7a34c40ed85f2e906e61adb6295963d035f2a93b524e80149a252a259a4bca3626773bf89c5eaa2423fd565358c6b4eb9b6d4e0
languageName: node
linkType: hard
-"@smithy/util-retry@npm:^1.0.3, @smithy/util-retry@npm:^1.0.4":
- version: 1.0.4
- resolution: "@smithy/util-retry@npm:1.0.4"
+"@smithy/util-retry@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "@smithy/util-retry@npm:2.0.0"
dependencies:
- "@smithy/service-error-classification": ^1.0.3
+ "@smithy/service-error-classification": ^2.0.0
tslib: ^2.5.0
- checksum: b9a7e464d67b141a175f126b2a0fc5c91de387eb483b432db4769cee43bbbb546e4142711f293c3a04c82b6d56b676b7a2f7f7150e2c736a10d8e5df1ed63c04
+ checksum: d5bfe5e81f41dffce6ba5aaf784f08247602d00f883c10c0de9e34a7f04f5369d7ac43901dd75eecc3864882b7390ad40885d07b3dcb35a366411b639482e673
languageName: node
linkType: hard
-"@smithy/util-stream@npm:^1.0.1, @smithy/util-stream@npm:^1.0.2":
- version: 1.0.2
- resolution: "@smithy/util-stream@npm:1.0.2"
+"@smithy/util-stream@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "@smithy/util-stream@npm:2.0.2"
dependencies:
- "@smithy/fetch-http-handler": ^1.0.2
- "@smithy/node-http-handler": ^1.0.3
- "@smithy/types": ^1.1.1
- "@smithy/util-base64": ^1.0.2
- "@smithy/util-buffer-from": ^1.0.2
- "@smithy/util-hex-encoding": ^1.0.2
- "@smithy/util-utf8": ^1.0.2
+ "@smithy/fetch-http-handler": ^2.0.2
+ "@smithy/node-http-handler": ^2.0.2
+ "@smithy/types": ^2.1.0
+ "@smithy/util-base64": ^2.0.0
+ "@smithy/util-buffer-from": ^2.0.0
+ "@smithy/util-hex-encoding": ^2.0.0
+ "@smithy/util-utf8": ^2.0.0
tslib: ^2.5.0
- checksum: ebea6886766da812434d4ca39ee201302096451441d577eb5efeb44ce3437f3828df435676a5e453f8eb535e19224bc3d21c2d3e6632a5eef68d932a37343476
+ checksum: 32115fa35437370671dcedf14714ab32b94ceb598baffe1d8afa7c574084b4cf0826f15fd3a76bc1450010512d2d067cbe62fe8c6ce4ee640fb0270768a8d87c
languageName: node
linkType: hard
-"@smithy/util-uri-escape@npm:^1.0.2":
- version: 1.0.2
- resolution: "@smithy/util-uri-escape@npm:1.0.2"
+"@smithy/util-uri-escape@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "@smithy/util-uri-escape@npm:2.0.0"
dependencies:
tslib: ^2.5.0
- checksum: 6df9fb3aed8fc386c1b7ccb2b52268c2e67f3620a85fa42d35f964ae2c492b6395841a751a0ab4068825c7fd54a84933014571d6fbc12e9e1a711d0be3f2c747
+ checksum: d201cee524ece997c406902463b5ea0b72599994f7b3ac1d923d5645497e9ef93126d146016f13dd4afafe33b9a3e92faf4e023cf0af510b270c1b9ce3d78da8
languageName: node
linkType: hard
-"@smithy/util-utf8@npm:^1.0.1, @smithy/util-utf8@npm:^1.0.2":
- version: 1.0.2
- resolution: "@smithy/util-utf8@npm:1.0.2"
+"@smithy/util-utf8@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "@smithy/util-utf8@npm:2.0.0"
dependencies:
- "@smithy/util-buffer-from": ^1.0.2
+ "@smithy/util-buffer-from": ^2.0.0
tslib: ^2.5.0
- checksum: 64add10ac1bbeb0c96a1ba8b05886ae86cee589fd4cccb25276849748fed7035c54e64d40107f22a57ca9b4f9324afe4baf0007c67536d520c1b8378e1e6ec55
+ checksum: bc8cda84f85b513380a61352635b306ae50d3b92974454db32835b39bbaa38150332b89346098ba9dea2e0002e2963fcbdd622bc9b3eec7b7ea8fa3f8c7ce737
languageName: node
linkType: hard
-"@smithy/util-waiter@npm:^1.0.1":
- version: 1.0.2
- resolution: "@smithy/util-waiter@npm:1.0.2"
+"@smithy/util-waiter@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "@smithy/util-waiter@npm:2.0.2"
dependencies:
- "@smithy/abort-controller": ^1.0.2
- "@smithy/types": ^1.1.1
+ "@smithy/abort-controller": ^2.0.2
+ "@smithy/types": ^2.1.0
tslib: ^2.5.0
- checksum: 07b5284b2d10c4ddcfd61ce7bc2585f3ba401cf42dffa799317eb1895e9b061c54efd328e204c8e1881888018cd198889bccc86c6a707485fdec3738ed5b4aeb
+ checksum: a0d23641fb724684b299d5131d82578f1c11cdcde9d55af309e00a0f75b19792016207eb1effb58da21eeafcac6cd5ed7ea4632c2c2e2e5eb423aa40f2e50fdf
languageName: node
linkType: hard
@@ -15279,7 +15277,7 @@ __metadata:
languageName: node
linkType: hard
-"@stoplight/json@npm:^3.17.0, @stoplight/json@npm:^3.17.1":
+"@stoplight/json@npm:^3.17.0, @stoplight/json@npm:^3.17.1, @stoplight/json@npm:~3.21.0":
version: 3.21.0
resolution: "@stoplight/json@npm:3.21.0"
dependencies:
@@ -15293,20 +15291,6 @@ __metadata:
languageName: node
linkType: hard
-"@stoplight/json@npm:~3.20.1":
- version: 3.20.3
- resolution: "@stoplight/json@npm:3.20.3"
- dependencies:
- "@stoplight/ordered-object-literal": ^1.0.3
- "@stoplight/path": ^1.3.2
- "@stoplight/types": ^13.6.0
- jsonc-parser: ~2.2.1
- lodash: ^4.17.21
- safe-stable-stringify: ^1.1
- checksum: 52a4251deca0be91c98172287def5cb004ff2ab801c3b7bb24f02abe14ad0890ee453588f235401fa048c5fefe1a750d7f68857f681d57afb62dd5310f50d71a
- languageName: node
- linkType: hard
-
"@stoplight/ordered-object-literal@npm:^1.0.1, @stoplight/ordered-object-literal@npm:^1.0.3":
version: 1.0.4
resolution: "@stoplight/ordered-object-literal@npm:1.0.4"
@@ -15322,11 +15306,11 @@ __metadata:
linkType: hard
"@stoplight/spectral-core@npm:^1.15.1, @stoplight/spectral-core@npm:^1.18.0, @stoplight/spectral-core@npm:^1.7.0, @stoplight/spectral-core@npm:^1.8.0, @stoplight/spectral-core@npm:^1.8.1":
- version: 1.18.0
- resolution: "@stoplight/spectral-core@npm:1.18.0"
+ version: 1.18.3
+ resolution: "@stoplight/spectral-core@npm:1.18.3"
dependencies:
"@stoplight/better-ajv-errors": 1.0.3
- "@stoplight/json": ~3.20.1
+ "@stoplight/json": ~3.21.0
"@stoplight/path": 1.3.2
"@stoplight/spectral-parsers": ^1.0.0
"@stoplight/spectral-ref-resolver": ^1.0.0
@@ -15346,7 +15330,7 @@ __metadata:
pony-cause: ^1.0.0
simple-eval: 1.0.0
tslib: ^2.3.0
- checksum: 76ff9e2349c035fa2b98556c8bd67bb531f2b9c29e19e33484270d62f30900d36ceb51ef0075255479cc5071b45bcb7249088f568fff9d44cd159b5ee8f07cec
+ checksum: 321d868a6c1e3d5f009d87d02651b423b5b6f5ef75a2ad1937b52b8ddc6e83dc3fe9618b00d7d92407e2eb3380b8409dc6ce98a8628d50ebd60d15dc8c15a7b8
languageName: node
linkType: hard
@@ -15363,8 +15347,8 @@ __metadata:
linkType: hard
"@stoplight/spectral-formatters@npm:^1.1.0":
- version: 1.1.0
- resolution: "@stoplight/spectral-formatters@npm:1.1.0"
+ version: 1.2.0
+ resolution: "@stoplight/spectral-formatters@npm:1.2.0"
dependencies:
"@stoplight/path": ^1.3.2
"@stoplight/spectral-core": ^1.15.1
@@ -15376,7 +15360,7 @@ __metadata:
strip-ansi: 6.0
text-table: ^0.2.0
tslib: ^2.5.0
- checksum: a72d9ecb423af1f911b654f48ae04c19f0707e8eb8542de57090299dbff19e58a1dff8f229614056fbf2b2f44636423cd9c980189c4cceb58961d84925d9ae7b
+ checksum: e84cc06ed33348f532f513b64d7179e2e261d6b87e45be66169088bf8d4c0fbc8fcda92adcde0d3f88f03eb5f31fbf9b2c853cdd49d4d1ae809d9a76920adb16
languageName: node
linkType: hard
@@ -15400,14 +15384,14 @@ __metadata:
linkType: hard
"@stoplight/spectral-parsers@npm:^1.0.0, @stoplight/spectral-parsers@npm:^1.0.2":
- version: 1.0.2
- resolution: "@stoplight/spectral-parsers@npm:1.0.2"
+ version: 1.0.3
+ resolution: "@stoplight/spectral-parsers@npm:1.0.3"
dependencies:
- "@stoplight/json": ~3.20.1
+ "@stoplight/json": ~3.21.0
"@stoplight/types": ^13.6.0
"@stoplight/yaml": ~4.2.3
tslib: ^2.3.1
- checksum: 89bc5c77ebeedca0abf9ffa9e074beed57d47b71814f23a1d65c03469aa6ea923007b42e7cb18ca7bcc4ff9fd399d604d32a41aa4c4c57a9cc3bebb4b24c3e34
+ checksum: e1120e9ffc3db7f50573db08768c1206f5adc5fc503e77d3696e86e0765ce247c3c513ed12e53318b6aef0de33fc730aa78ccd542142d17d6bae01e23cba5879
languageName: node
linkType: hard
@@ -15472,12 +15456,12 @@ __metadata:
linkType: hard
"@stoplight/types@npm:^12.3.0 || ^13.0.0, @stoplight/types@npm:^13.0.0, @stoplight/types@npm:^13.14.0, @stoplight/types@npm:^13.15.0, @stoplight/types@npm:^13.6.0":
- version: 13.15.0
- resolution: "@stoplight/types@npm:13.15.0"
+ version: 13.18.0
+ resolution: "@stoplight/types@npm:13.18.0"
dependencies:
"@types/json-schema": ^7.0.4
utility-types: ^3.10.0
- checksum: 839f0bbedb791bd6792ef22b6a821ca504b14b705927f7c510c4cdcc591eddc8818c82b8857129501aa809d6f369b82e4487bfe18dfc5ce00e28317ecad2df9a
+ checksum: 17f464b6986fcb07719584cbb55c59e1c8d72d6d000ed64b13cae92acbdc069e5a725b4d14c4a2998eb701a0289e6ce3aee151e4200698df906ba058747e210f
languageName: node
linkType: hard
@@ -16059,90 +16043,90 @@ __metadata:
languageName: node
linkType: hard
-"@swc/core-darwin-arm64@npm:1.3.68":
- version: 1.3.68
- resolution: "@swc/core-darwin-arm64@npm:1.3.68"
+"@swc/core-darwin-arm64@npm:1.3.74":
+ version: 1.3.74
+ resolution: "@swc/core-darwin-arm64@npm:1.3.74"
conditions: os=darwin & cpu=arm64
languageName: node
linkType: hard
-"@swc/core-darwin-x64@npm:1.3.68":
- version: 1.3.68
- resolution: "@swc/core-darwin-x64@npm:1.3.68"
+"@swc/core-darwin-x64@npm:1.3.74":
+ version: 1.3.74
+ resolution: "@swc/core-darwin-x64@npm:1.3.74"
conditions: os=darwin & cpu=x64
languageName: node
linkType: hard
-"@swc/core-linux-arm-gnueabihf@npm:1.3.68":
- version: 1.3.68
- resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.68"
+"@swc/core-linux-arm-gnueabihf@npm:1.3.74":
+ version: 1.3.74
+ resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.74"
conditions: os=linux & cpu=arm
languageName: node
linkType: hard
-"@swc/core-linux-arm64-gnu@npm:1.3.68":
- version: 1.3.68
- resolution: "@swc/core-linux-arm64-gnu@npm:1.3.68"
+"@swc/core-linux-arm64-gnu@npm:1.3.74":
+ version: 1.3.74
+ resolution: "@swc/core-linux-arm64-gnu@npm:1.3.74"
conditions: os=linux & cpu=arm64 & libc=glibc
languageName: node
linkType: hard
-"@swc/core-linux-arm64-musl@npm:1.3.68":
- version: 1.3.68
- resolution: "@swc/core-linux-arm64-musl@npm:1.3.68"
+"@swc/core-linux-arm64-musl@npm:1.3.74":
+ version: 1.3.74
+ resolution: "@swc/core-linux-arm64-musl@npm:1.3.74"
conditions: os=linux & cpu=arm64 & libc=musl
languageName: node
linkType: hard
-"@swc/core-linux-x64-gnu@npm:1.3.68":
- version: 1.3.68
- resolution: "@swc/core-linux-x64-gnu@npm:1.3.68"
+"@swc/core-linux-x64-gnu@npm:1.3.74":
+ version: 1.3.74
+ resolution: "@swc/core-linux-x64-gnu@npm:1.3.74"
conditions: os=linux & cpu=x64 & libc=glibc
languageName: node
linkType: hard
-"@swc/core-linux-x64-musl@npm:1.3.68":
- version: 1.3.68
- resolution: "@swc/core-linux-x64-musl@npm:1.3.68"
+"@swc/core-linux-x64-musl@npm:1.3.74":
+ version: 1.3.74
+ resolution: "@swc/core-linux-x64-musl@npm:1.3.74"
conditions: os=linux & cpu=x64 & libc=musl
languageName: node
linkType: hard
-"@swc/core-win32-arm64-msvc@npm:1.3.68":
- version: 1.3.68
- resolution: "@swc/core-win32-arm64-msvc@npm:1.3.68"
+"@swc/core-win32-arm64-msvc@npm:1.3.74":
+ version: 1.3.74
+ resolution: "@swc/core-win32-arm64-msvc@npm:1.3.74"
conditions: os=win32 & cpu=arm64
languageName: node
linkType: hard
-"@swc/core-win32-ia32-msvc@npm:1.3.68":
- version: 1.3.68
- resolution: "@swc/core-win32-ia32-msvc@npm:1.3.68"
+"@swc/core-win32-ia32-msvc@npm:1.3.74":
+ version: 1.3.74
+ resolution: "@swc/core-win32-ia32-msvc@npm:1.3.74"
conditions: os=win32 & cpu=ia32
languageName: node
linkType: hard
-"@swc/core-win32-x64-msvc@npm:1.3.68":
- version: 1.3.68
- resolution: "@swc/core-win32-x64-msvc@npm:1.3.68"
+"@swc/core-win32-x64-msvc@npm:1.3.74":
+ version: 1.3.74
+ resolution: "@swc/core-win32-x64-msvc@npm:1.3.74"
conditions: os=win32 & cpu=x64
languageName: node
linkType: hard
"@swc/core@npm:^1.3.46":
- version: 1.3.68
- resolution: "@swc/core@npm:1.3.68"
+ version: 1.3.74
+ resolution: "@swc/core@npm:1.3.74"
dependencies:
- "@swc/core-darwin-arm64": 1.3.68
- "@swc/core-darwin-x64": 1.3.68
- "@swc/core-linux-arm-gnueabihf": 1.3.68
- "@swc/core-linux-arm64-gnu": 1.3.68
- "@swc/core-linux-arm64-musl": 1.3.68
- "@swc/core-linux-x64-gnu": 1.3.68
- "@swc/core-linux-x64-musl": 1.3.68
- "@swc/core-win32-arm64-msvc": 1.3.68
- "@swc/core-win32-ia32-msvc": 1.3.68
- "@swc/core-win32-x64-msvc": 1.3.68
+ "@swc/core-darwin-arm64": 1.3.74
+ "@swc/core-darwin-x64": 1.3.74
+ "@swc/core-linux-arm-gnueabihf": 1.3.74
+ "@swc/core-linux-arm64-gnu": 1.3.74
+ "@swc/core-linux-arm64-musl": 1.3.74
+ "@swc/core-linux-x64-gnu": 1.3.74
+ "@swc/core-linux-x64-musl": 1.3.74
+ "@swc/core-win32-arm64-msvc": 1.3.74
+ "@swc/core-win32-ia32-msvc": 1.3.74
+ "@swc/core-win32-x64-msvc": 1.3.74
peerDependencies:
"@swc/helpers": ^0.5.0
dependenciesMeta:
@@ -16169,7 +16153,7 @@ __metadata:
peerDependenciesMeta:
"@swc/helpers":
optional: true
- checksum: f56ad1d4cb91f7cc1cb5d4b9894bbb528da0b2eabc98984581f5b3f3187cf2c0d512003880f6ff7a3f6d215b7a3dcbf5a9c45e8a428ac2d711941027c0151d89
+ checksum: fd61d65fbfceb372178a14cfa998c649481a728e33b68bad90fed0ff05b34fb432f88dafb0c2257d54c4de49cdcdd12d2b5fe66f79abc553656445910f163adb
languageName: node
linkType: hard
@@ -16183,14 +16167,14 @@ __metadata:
linkType: hard
"@swc/jest@npm:^0.2.22":
- version: 0.2.26
- resolution: "@swc/jest@npm:0.2.26"
+ version: 0.2.28
+ resolution: "@swc/jest@npm:0.2.28"
dependencies:
"@jest/create-cache-key-function": ^27.4.2
jsonc-parser: ^3.2.0
peerDependencies:
"@swc/core": "*"
- checksum: 771821ed08cf168ca0b6307dee7689253d0af0685acd08408ac431860a7c42ace892db2cb6bb6dcfe297edbdce0f2e22d44ed4ed72d1c621be9e841cffd408a0
+ checksum: 9f9fe7e091077079511e602afe0d0f270c5a274197fe6d55e7f8a8a0f44aadc70f726d8c2571b0eb2af8030d2bba601786adff2d811d6c01f27395c94c746edd
languageName: node
linkType: hard
@@ -16294,8 +16278,8 @@ __metadata:
linkType: hard
"@testing-library/jest-dom@npm:^5.10.1, @testing-library/jest-dom@npm:^5.16.4, @testing-library/jest-dom@npm:^5.16.5":
- version: 5.16.5
- resolution: "@testing-library/jest-dom@npm:5.16.5"
+ version: 5.17.0
+ resolution: "@testing-library/jest-dom@npm:5.17.0"
dependencies:
"@adobe/css-tools": ^4.0.1
"@babel/runtime": ^7.9.2
@@ -16306,7 +16290,7 @@ __metadata:
dom-accessibility-api: ^0.5.6
lodash: ^4.17.15
redent: ^3.0.0
- checksum: 94911f901a8031f3e489d04ac057cb5373621230f5d92bed80e514e24b069fb58a3166d1dd86963e55f078a1bd999da595e2ab96ed95f452d477e272937d792a
+ checksum: 9f28dbca8b50d7c306aae40c3aa8e06f0e115f740360004bd87d57f95acf7ab4b4f4122a7399a76dbf2bdaaafb15c99cc137fdcb0ae457a92e2de0f3fbf9b03b
languageName: node
linkType: hard
@@ -16849,9 +16833,9 @@ __metadata:
linkType: hard
"@types/dagre@npm:^0.7.44":
- version: 0.7.48
- resolution: "@types/dagre@npm:0.7.48"
- checksum: 9d06fc08219056db7c55041bf2099cea24fe824d8c8741ae11c365c7464502d8c65273153446a5546b4a92bc0833802ac1c6bddb708bfcaa75af3963e7fc84aa
+ version: 0.7.49
+ resolution: "@types/dagre@npm:0.7.49"
+ checksum: cb27683074f8c89c073d0b7b549692b67ddae7225a2b6f9586d75c11598f7bd32d9246ecb184017a55592e7daaf63e4d33dcbc56ca4c3999cf34352460ddf772
languageName: node
linkType: hard
@@ -17365,9 +17349,9 @@ __metadata:
linkType: hard
"@types/lodash@npm:^4.14.151, @types/lodash@npm:^4.14.173, @types/lodash@npm:^4.14.175":
- version: 4.14.195
- resolution: "@types/lodash@npm:4.14.195"
- checksum: 39b75ca635b3fa943d17d3d3aabc750babe4c8212485a4df166fe0516e39288e14b0c60afc6e21913cc0e5a84734633c71e617e2bd14eaa1cf51b8d7799c432e
+ version: 4.14.196
+ resolution: "@types/lodash@npm:4.14.196"
+ checksum: 201d17c3e62ae02a93c99ec78e024b2be9bd75564dd8fd8c26f6ac51a985ab280d28ce2688c3bcdfe785b0991cd9814edff19ee000234c7b45d9a697f09feb6a
languageName: node
linkType: hard
@@ -17515,18 +17499,18 @@ __metadata:
linkType: hard
"@types/node-forge@npm:^1.3.0":
- version: 1.3.3
- resolution: "@types/node-forge@npm:1.3.3"
+ version: 1.3.4
+ resolution: "@types/node-forge@npm:1.3.4"
dependencies:
"@types/node": "*"
- checksum: 36e3b597517ad9007822b0a0c4d44a8bcbdc4e8d8c388839d17bfeb8ff005efc1f8d3e997a1921bc54edf530000675d555f3ccb9aac8ab273285a8677a9dcb0b
+ checksum: c3c53ee5039a10d724bfc64fe859106baf0e39c4cac90a5d0ddd3480bf044de6ce145f104d4fa0184c365dff59df7ab4b754172c9d87800f751d10ccd7dcd1ad
languageName: node
linkType: hard
"@types/node@npm:*, @types/node@npm:>=12.12.47, @types/node@npm:>=13.7.0":
- version: 20.4.4
- resolution: "@types/node@npm:20.4.4"
- checksum: 43f3c4a8acc38ae753e15a0e79bae0447d255b3742fa87f8e065d7b9d20ecb0e03d6c5b46c00d5d26f4552160381a00255f49205595a8ee48c2423e00263c930
+ version: 20.4.9
+ resolution: "@types/node@npm:20.4.9"
+ checksum: 504e3da96274f3865c1251830f4750bb0a8f6ef6f8648902cd3bba33370c5f219235471bfbf55cce726b25c8eacfcc8e2aad0ec3b13e27ea6708b00d4a9a46c8
languageName: node
linkType: hard
@@ -17559,16 +17543,16 @@ __metadata:
linkType: hard
"@types/node@npm:^16.0.0, @types/node@npm:^16.11.26, @types/node@npm:^16.9.2":
- version: 16.18.39
- resolution: "@types/node@npm:16.18.39"
- checksum: eac9b202b76013256cb517ca8d3e3f61df206edb1615ca8d8df4c80616e92879fe4d3f8570a11d60f4216a82724a3265d5888b24c6994c80b057a0423c9ff1d2
+ version: 16.18.40
+ resolution: "@types/node@npm:16.18.40"
+ checksum: a683930491b4fd7cb2dc7684e32bbeedc4a83fb1949a7b15ea724fbfaa9988cec59091f169a3f1090cb91992caba8c1a7d50315b2c67c6e2579a3788bb09eec4
languageName: node
linkType: hard
"@types/node@npm:^18.11.17":
- version: 18.17.0
- resolution: "@types/node@npm:18.17.0"
- checksum: 3a43c5c5541342751b514485144818a515fac5427f663066068eaacbe8a108cbe1207aae75ec89d34c3b32414c334aad84e9083cf7fcf3ebfd970adc871314a4
+ version: 18.17.4
+ resolution: "@types/node@npm:18.17.4"
+ checksum: d4c458202d82c999f38d85ca9ae8a2d3e521645c7f1b908cd6a0303d0e13c7d5eb3f888c41f584ba029ecf802d0a0005b7816c149400371a3c035abc4bd9a4c5
languageName: node
linkType: hard
@@ -18210,11 +18194,11 @@ __metadata:
linkType: hard
"@types/testing-library__jest-dom@npm:^5.9.1":
- version: 5.14.8
- resolution: "@types/testing-library__jest-dom@npm:5.14.8"
+ version: 5.14.9
+ resolution: "@types/testing-library__jest-dom@npm:5.14.9"
dependencies:
"@types/jest": "*"
- checksum: 18f5ba7d0db8ebd91667b544537762ce63f11c4fd02b3d57afa92f9457a384d3ecf9bc7b50b6b445af1b3ea38b69862b4f95130720d4dd23621d598ac074d93a
+ checksum: d364494fc2545316292e88861146146af1e3818792ca63b62a63758b2f737669b687f4aaddfcfbcb7d0e1ed7890a9bd05de23ff97f277d5e68de574497a9ee72
languageName: node
linkType: hard
@@ -18577,9 +18561,9 @@ __metadata:
languageName: node
linkType: hard
-"@uiw/codemirror-extensions-basic-setup@npm:4.21.7":
- version: 4.21.7
- resolution: "@uiw/codemirror-extensions-basic-setup@npm:4.21.7"
+"@uiw/codemirror-extensions-basic-setup@npm:4.21.9":
+ version: 4.21.9
+ resolution: "@uiw/codemirror-extensions-basic-setup@npm:4.21.9"
dependencies:
"@codemirror/autocomplete": ^6.0.0
"@codemirror/commands": ^6.0.0
@@ -18596,19 +18580,19 @@ __metadata:
"@codemirror/search": ">=6.0.0"
"@codemirror/state": ">=6.0.0"
"@codemirror/view": ">=6.0.0"
- checksum: c81ccef43396c92049a7bd05fecf6e4f7e1adfaed330892ca472b0d65e1ab919dbdd28475baea833a387547fedbe9c7dcc19b92577e1e8bba42084ee86ab3944
+ checksum: e7f2a78dd26a919b00247ad85211a09b8242d57585c7689cc44ea9de99e02e8fd8dd281ebf48e61c4126704b031babb5a596307299015bb0aa8e561a0ad2d9b1
languageName: node
linkType: hard
"@uiw/react-codemirror@npm:^4.9.3":
- version: 4.21.7
- resolution: "@uiw/react-codemirror@npm:4.21.7"
+ version: 4.21.9
+ resolution: "@uiw/react-codemirror@npm:4.21.9"
dependencies:
"@babel/runtime": ^7.18.6
"@codemirror/commands": ^6.1.0
"@codemirror/state": ^6.1.1
"@codemirror/theme-one-dark": ^6.0.0
- "@uiw/codemirror-extensions-basic-setup": 4.21.7
+ "@uiw/codemirror-extensions-basic-setup": 4.21.9
codemirror: ^6.0.0
peerDependencies:
"@babel/runtime": ">=7.11.0"
@@ -18618,7 +18602,7 @@ __metadata:
codemirror: ">=6.0.0"
react: ">=16.8.0"
react-dom: ">=16.8.0"
- checksum: c4650957d77556f8c2c5b1b072d7b381c7cbec068ff2c744d2891a88d6fb425d520b7b70addc6c82e809326467dcfa913171d62977009faf41be733b079d3e1e
+ checksum: c09a121e0c37f0dfb720e05f080b5f420eaec9bf1502cad38a100f2cefc731f50e854d682898163ad23aaefefcb505b57f4621b9724eca39d334258e0f25fddb
languageName: node
linkType: hard
@@ -18841,34 +18825,25 @@ __metadata:
languageName: node
linkType: hard
-"@wry/context@npm:^0.7.0":
- version: 0.7.0
- resolution: "@wry/context@npm:0.7.0"
+"@wry/context@npm:^0.7.0, @wry/context@npm:^0.7.3":
+ version: 0.7.3
+ resolution: "@wry/context@npm:0.7.3"
dependencies:
tslib: ^2.3.0
- checksum: f4ff78023a0b949122037aae766232b7d2284dc415204d22d9ea6d7969ff8f5f29b18128bc9a40e68dc054c8a12b1bf5868a357fdb50c398c447290c3a5b0496
+ checksum: 91c1e9eee9046c48ff857d60dcbb59f22246ce0f9bb2d9b190e0555227e7ba3f86024032cc057f3f5141d3bee93fc6b2a15ce2c79fa512569d3432eb8e1af02b
languageName: node
linkType: hard
-"@wry/equality@npm:^0.5.0":
- version: 0.5.3
- resolution: "@wry/equality@npm:0.5.3"
+"@wry/equality@npm:^0.5.6":
+ version: 0.5.6
+ resolution: "@wry/equality@npm:0.5.6"
dependencies:
tslib: ^2.3.0
- checksum: 7ea8ded51462911217183b93cc3ffbb4d18dc02a62d4a79e0d9983463739bf54106aaeb25649bf33168120bd044b61d135018bfcf4fefad8099c13eac9238aa6
+ checksum: 9addf8891bdff5e23eecff03641846e7a56c1de3c9362c25e69c0b2ee3303e74b22e9a0376920283cd9d3bdd1bada12df54be5eaa29c2d801d33d94992672e14
languageName: node
linkType: hard
-"@wry/trie@npm:^0.3.0":
- version: 0.3.2
- resolution: "@wry/trie@npm:0.3.2"
- dependencies:
- tslib: ^2.3.0
- checksum: 151d06b519e1ff1c3acf6ee6846161b1d7d50bbecd4c48e5cd1b05f9e37c30602aff02e88f20105f6e6c54ae4123f9c4eb7715044d7fd927d4ba4ec3e755cd36
- languageName: node
- linkType: hard
-
-"@wry/trie@npm:^0.4.0":
+"@wry/trie@npm:^0.4.3":
version: 0.4.3
resolution: "@wry/trie@npm:0.4.3"
dependencies:
@@ -19159,7 +19134,7 @@ __metadata:
languageName: node
linkType: hard
-"ajv@npm:^6.10.0, ajv@npm:^6.10.1, ajv@npm:^6.12.2, ajv@npm:^6.12.4, ajv@npm:^6.12.5, ajv@npm:^6.5.5, ajv@npm:^6.7.0, ajv@npm:~6.12.6":
+"ajv@npm:^6.10.1, ajv@npm:^6.12.2, ajv@npm:^6.12.4, ajv@npm:^6.12.5, ajv@npm:^6.5.5, ajv@npm:^6.7.0, ajv@npm:~6.12.6":
version: 6.12.6
resolution: "ajv@npm:6.12.6"
dependencies:
@@ -20185,13 +20160,13 @@ __metadata:
linkType: hard
"better-sqlite3@npm:^8.0.0":
- version: 8.4.0
- resolution: "better-sqlite3@npm:8.4.0"
+ version: 8.5.0
+ resolution: "better-sqlite3@npm:8.5.0"
dependencies:
bindings: ^1.5.0
node-gyp: latest
prebuild-install: ^7.1.0
- checksum: f8b180c26428a2d381482e83b4519d0d81a918e00f92cafd255f42eb9583f49b2fed1015121ad49ebe1f3f790cc8c6f4697d1e805193d65e70dacf2e8abbd6af
+ checksum: 98243cb08a410fad0b5c443410428c8ea00376a4eb7d2c9a8a5a695970bc7a2a4007221930460939594d728e7d6bcb1889f46ec11a3bbb2257b996c80fbaacb1
languageName: node
linkType: hard
@@ -22290,7 +22265,7 @@ __metadata:
languageName: node
linkType: hard
-"cross-fetch@npm:^3.1.3, cross-fetch@npm:^3.1.5, cross-fetch@npm:^3.1.6":
+"cross-fetch@npm:^3.1.3, cross-fetch@npm:^3.1.5, cross-fetch@npm:^3.1.8 <4":
version: 3.1.8
resolution: "cross-fetch@npm:3.1.8"
dependencies:
@@ -23599,9 +23574,9 @@ __metadata:
linkType: hard
"dompurify@npm:^2.2.7, dompurify@npm:^2.2.9, dompurify@npm:^2.3.6":
- version: 2.4.5
- resolution: "dompurify@npm:2.4.5"
- checksum: d6d3c3b320f15cdb5b26aa1902c3275a3ab2c3705a9df4420bb94691d7c4df67959ec7b91e486c308320791b0ee000456f042734c45d76721e61c2768eac706e
+ version: 2.4.7
+ resolution: "dompurify@npm:2.4.7"
+ checksum: 13c047e772a1998348191554dda403950d45ef2ec75fa0b9915cc179ccea0a39ef780d283109bd72cf83a2a085af6c77664281d4d0106a737bc5f39906364efe
languageName: node
linkType: hard
@@ -24319,32 +24294,32 @@ __metadata:
languageName: node
linkType: hard
-"esbuild@npm:^0.18.0":
- version: 0.18.16
- resolution: "esbuild@npm:0.18.16"
+"esbuild@npm:^0.19.0":
+ version: 0.19.0
+ resolution: "esbuild@npm:0.19.0"
dependencies:
- "@esbuild/android-arm": 0.18.16
- "@esbuild/android-arm64": 0.18.16
- "@esbuild/android-x64": 0.18.16
- "@esbuild/darwin-arm64": 0.18.16
- "@esbuild/darwin-x64": 0.18.16
- "@esbuild/freebsd-arm64": 0.18.16
- "@esbuild/freebsd-x64": 0.18.16
- "@esbuild/linux-arm": 0.18.16
- "@esbuild/linux-arm64": 0.18.16
- "@esbuild/linux-ia32": 0.18.16
- "@esbuild/linux-loong64": 0.18.16
- "@esbuild/linux-mips64el": 0.18.16
- "@esbuild/linux-ppc64": 0.18.16
- "@esbuild/linux-riscv64": 0.18.16
- "@esbuild/linux-s390x": 0.18.16
- "@esbuild/linux-x64": 0.18.16
- "@esbuild/netbsd-x64": 0.18.16
- "@esbuild/openbsd-x64": 0.18.16
- "@esbuild/sunos-x64": 0.18.16
- "@esbuild/win32-arm64": 0.18.16
- "@esbuild/win32-ia32": 0.18.16
- "@esbuild/win32-x64": 0.18.16
+ "@esbuild/android-arm": 0.19.0
+ "@esbuild/android-arm64": 0.19.0
+ "@esbuild/android-x64": 0.19.0
+ "@esbuild/darwin-arm64": 0.19.0
+ "@esbuild/darwin-x64": 0.19.0
+ "@esbuild/freebsd-arm64": 0.19.0
+ "@esbuild/freebsd-x64": 0.19.0
+ "@esbuild/linux-arm": 0.19.0
+ "@esbuild/linux-arm64": 0.19.0
+ "@esbuild/linux-ia32": 0.19.0
+ "@esbuild/linux-loong64": 0.19.0
+ "@esbuild/linux-mips64el": 0.19.0
+ "@esbuild/linux-ppc64": 0.19.0
+ "@esbuild/linux-riscv64": 0.19.0
+ "@esbuild/linux-s390x": 0.19.0
+ "@esbuild/linux-x64": 0.19.0
+ "@esbuild/netbsd-x64": 0.19.0
+ "@esbuild/openbsd-x64": 0.19.0
+ "@esbuild/sunos-x64": 0.19.0
+ "@esbuild/win32-arm64": 0.19.0
+ "@esbuild/win32-ia32": 0.19.0
+ "@esbuild/win32-x64": 0.19.0
dependenciesMeta:
"@esbuild/android-arm":
optional: true
@@ -24392,7 +24367,7 @@ __metadata:
optional: true
bin:
esbuild: bin/esbuild
- checksum: 8b04f7087d4e95cffd43c37663c57a9f42e183cd3d02fe3cefee7e1534a84d5cec181f42187715471b4b3f5478e2e110530df7d3a8b12053cbc8cc35145363ab
+ checksum: 77ef2e57a94d1b88657fb6cd79c3ad6e3161823fd1b615f2ce4b71f163755b85e98cb5b565ed6c38db1f788c52c092b5534caa6800178de99a25de0671f92186
languageName: node
linkType: hard
@@ -24601,13 +24576,13 @@ __metadata:
linkType: hard
"eslint-plugin-cypress@npm:^2.10.3":
- version: 2.13.3
- resolution: "eslint-plugin-cypress@npm:2.13.3"
+ version: 2.14.0
+ resolution: "eslint-plugin-cypress@npm:2.14.0"
dependencies:
- globals: ^11.12.0
+ globals: ^13.20.0
peerDependencies:
eslint: ">= 3.2.1"
- checksum: 9affbcee29e030a4251c4794f7533e8e8c0e3b98ab3470a2c730ed059f733c5857a04c7ac214cc0ca7aeef1b11242e72595de7fc1f6b8b4d4578d9eca10af203
+ checksum: 3fa118a757aebb1aa6b419b2944744796aa4fa3cc1e2e19fa97777fd6792fba12b5ae117bf19bf7e7d9a1abdd48398cfba9ca6f2c62fd690a2108a9a02f3f2ae
languageName: node
linkType: hard
@@ -24651,12 +24626,12 @@ __metadata:
linkType: hard
"eslint-plugin-jest@npm:^27.0.0":
- version: 27.2.2
- resolution: "eslint-plugin-jest@npm:27.2.2"
+ version: 27.2.3
+ resolution: "eslint-plugin-jest@npm:27.2.3"
dependencies:
"@typescript-eslint/utils": ^5.10.0
peerDependencies:
- "@typescript-eslint/eslint-plugin": ^5.0.0
+ "@typescript-eslint/eslint-plugin": ^5.0.0 || ^6.0.0
eslint: ^7.0.0 || ^8.0.0
jest: "*"
peerDependenciesMeta:
@@ -24664,7 +24639,7 @@ __metadata:
optional: true
jest:
optional: true
- checksum: 98b63252d985f5dedf36ce9587dd4a0d24daf71ca8a997258343402c0d33ddd5070502378dafd9ac7fc0ef2e0d557b5c77f18e09ad73c71a52de8061db88293f
+ checksum: 4c7e07f52f17749ac6fd0ff5fcd5ce30b88983ba31eeee322e4d48859f55eaa112f06172e586ad2031c00ff28bb2dfdc3d35c83895251b9c0e860fa47dfc5ff4
languageName: node
linkType: hard
@@ -24742,13 +24717,13 @@ __metadata:
linkType: hard
"eslint-plugin-testing-library@npm:^5.9.1":
- version: 5.11.0
- resolution: "eslint-plugin-testing-library@npm:5.11.0"
+ version: 5.11.1
+ resolution: "eslint-plugin-testing-library@npm:5.11.1"
dependencies:
"@typescript-eslint/utils": ^5.58.0
peerDependencies:
eslint: ^7.5.0 || ^8.0.0
- checksum: 7f19d3dedd7788b411ca3d9045de682feb26025b9c26d97d4e2f0bf62f5eaa276147d946bd5d0cd967b822e546a954330fdb7ef80485301264f646143f011a02
+ checksum: 9f3fc68ef9f13016a4381b33ab5dbffcc189e5de3eaeba184bcf7d2771faa7f54e59c04b652162fb1c0f83fb52428dd909db5450a25508b94be59eba69fcc990
languageName: node
linkType: hard
@@ -24762,13 +24737,13 @@ __metadata:
languageName: node
linkType: hard
-"eslint-scope@npm:^7.2.0":
- version: 7.2.0
- resolution: "eslint-scope@npm:7.2.0"
+"eslint-scope@npm:^7.2.2":
+ version: 7.2.2
+ resolution: "eslint-scope@npm:7.2.2"
dependencies:
esrecurse: ^4.3.0
estraverse: ^5.2.0
- checksum: 64591a2d8b244ade9c690b59ef238a11d5c721a98bcee9e9f445454f442d03d3e04eda88e95a4daec558220a99fa384309d9faae3d459bd40e7a81b4063980ae
+ checksum: ec97dbf5fb04b94e8f4c5a91a7f0a6dd3c55e46bfc7bbcd0e3138c3a76977570e02ed89a1810c778dcd72072ff0e9621ba1379b4babe53921d71e2e4486fda3e
languageName: node
linkType: hard
@@ -24790,10 +24765,10 @@ __metadata:
languageName: node
linkType: hard
-"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1":
- version: 3.4.1
- resolution: "eslint-visitor-keys@npm:3.4.1"
- checksum: f05121d868202736b97de7d750847a328fcfa8593b031c95ea89425333db59676ac087fa905eba438d0a3c5769632f828187e0c1a0d271832a2153c1d3661c2c
+"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.2":
+ version: 3.4.2
+ resolution: "eslint-visitor-keys@npm:3.4.2"
+ checksum: 9e0e7e4aaea705c097ae37c97410e5f167d4d2193be2edcb1f0760762ede3df01545e4820ae314f42dcec687745f2c6dcaf6d83575c4a2a241eb0c8517d724f2
languageName: node
linkType: hard
@@ -24814,25 +24789,25 @@ __metadata:
linkType: hard
"eslint@npm:^8.33.0, eslint@npm:^8.6.0":
- version: 8.44.0
- resolution: "eslint@npm:8.44.0"
+ version: 8.46.0
+ resolution: "eslint@npm:8.46.0"
dependencies:
"@eslint-community/eslint-utils": ^4.2.0
- "@eslint-community/regexpp": ^4.4.0
- "@eslint/eslintrc": ^2.1.0
- "@eslint/js": 8.44.0
+ "@eslint-community/regexpp": ^4.6.1
+ "@eslint/eslintrc": ^2.1.1
+ "@eslint/js": ^8.46.0
"@humanwhocodes/config-array": ^0.11.10
"@humanwhocodes/module-importer": ^1.0.1
"@nodelib/fs.walk": ^1.2.8
- ajv: ^6.10.0
+ ajv: ^6.12.4
chalk: ^4.0.0
cross-spawn: ^7.0.2
debug: ^4.3.2
doctrine: ^3.0.0
escape-string-regexp: ^4.0.0
- eslint-scope: ^7.2.0
- eslint-visitor-keys: ^3.4.1
- espree: ^9.6.0
+ eslint-scope: ^7.2.2
+ eslint-visitor-keys: ^3.4.2
+ espree: ^9.6.1
esquery: ^1.4.2
esutils: ^2.0.2
fast-deep-equal: ^3.1.3
@@ -24842,7 +24817,6 @@ __metadata:
globals: ^13.19.0
graphemer: ^1.4.0
ignore: ^5.2.0
- import-fresh: ^3.0.0
imurmurhash: ^0.1.4
is-glob: ^4.0.0
is-path-inside: ^3.0.3
@@ -24854,11 +24828,10 @@ __metadata:
natural-compare: ^1.4.0
optionator: ^0.9.3
strip-ansi: ^6.0.1
- strip-json-comments: ^3.1.0
text-table: ^0.2.0
bin:
eslint: bin/eslint.js
- checksum: d06309ce4aafb9d27d558c8e5e5aa5cba3bbec3ce8ceccbc7d4b7a35f2b67fd40189159155553270e2e6febeb69bd8a3b60d6241c8f5ddc2ef1702ccbd328501
+ checksum: 7a7d36b1a3bbc12e08fbb5bc36fd482a7a5a1797e62e762499dd45601b9e45aaa53a129f31ce0b4444551a9639b8b681ad535f379893dd1e3ae37b31dccd82aa
languageName: node
linkType: hard
@@ -24869,14 +24842,14 @@ __metadata:
languageName: node
linkType: hard
-"espree@npm:^9.0.0, espree@npm:^9.6.0":
- version: 9.6.0
- resolution: "espree@npm:9.6.0"
+"espree@npm:^9.0.0, espree@npm:^9.6.0, espree@npm:^9.6.1":
+ version: 9.6.1
+ resolution: "espree@npm:9.6.1"
dependencies:
acorn: ^8.9.0
acorn-jsx: ^5.3.2
eslint-visitor-keys: ^3.4.1
- checksum: 1287979510efb052a6a97c73067ea5d0a40701b29adde87bbe2d3eb1667e39ca55e8129e20e2517fed3da570150e7ef470585228459a8f3e3755f45007a1c662
+ checksum: eb8c149c7a2a77b3f33a5af80c10875c3abd65450f60b8af6db1bfcfa8f101e21c1e56a561c6dc13b848e18148d43469e7cd208506238554fb5395a9ea5a1ab9
languageName: node
linkType: hard
@@ -25158,6 +25131,7 @@ __metadata:
resolution: "example-backend-next@workspace:packages/backend-next"
dependencies:
"@backstage/backend-defaults": "workspace:^"
+ "@backstage/backend-plugin-api": "workspace:^"
"@backstage/backend-tasks": "workspace:^"
"@backstage/cli": "workspace:^"
"@backstage/plugin-adr-backend": "workspace:^"
@@ -25175,6 +25149,7 @@ __metadata:
"@backstage/plugin-permission-backend": "workspace:^"
"@backstage/plugin-permission-common": "workspace:^"
"@backstage/plugin-permission-node": "workspace:^"
+ "@backstage/plugin-proxy-backend": "workspace:^"
"@backstage/plugin-scaffolder-backend": "workspace:^"
"@backstage/plugin-search-backend": "workspace:^"
"@backstage/plugin-search-backend-module-catalog": "workspace:^"
@@ -25688,6 +25663,17 @@ __metadata:
languageName: node
linkType: hard
+"fast-xml-parser@npm:^4.2.2":
+ version: 4.2.7
+ resolution: "fast-xml-parser@npm:4.2.7"
+ dependencies:
+ strnum: ^1.0.5
+ bin:
+ fxparser: src/cli/cli.js
+ checksum: d8b0c9e04756f6c43fa0399428f30149acadae21350e42e26e8fe98e24e6afa6b9b00aa554453795036b00e9fee974a1b556fe2ba18be391d51a9bf1ab790e7c
+ languageName: node
+ linkType: hard
+
"fastest-stable-stringify@npm:^2.0.2":
version: 2.0.2
resolution: "fastest-stable-stringify@npm:2.0.2"
@@ -26775,19 +26761,19 @@ __metadata:
languageName: node
linkType: hard
-"globals@npm:^11.1.0, globals@npm:^11.12.0":
+"globals@npm:^11.1.0":
version: 11.12.0
resolution: "globals@npm:11.12.0"
checksum: 67051a45eca3db904aee189dfc7cd53c20c7d881679c93f6146ddd4c9f4ab2268e68a919df740d39c71f4445d2b38ee360fc234428baea1dbdfe68bbcb46979e
languageName: node
linkType: hard
-"globals@npm:^13.19.0":
- version: 13.19.0
- resolution: "globals@npm:13.19.0"
+"globals@npm:^13.19.0, globals@npm:^13.20.0":
+ version: 13.20.0
+ resolution: "globals@npm:13.20.0"
dependencies:
type-fest: ^0.20.2
- checksum: a000dbd00bcf28f0941d8a29c3522b1c3b8e4bfe4e60e262c477a550c3cbbe8dbe2925a6905f037acd40f9a93c039242e1f7079c76b0fd184bc41dcc3b5c8e2e
+ checksum: ad1ecf914bd051325faad281d02ea2c0b1df5d01bd94d368dcc5513340eac41d14b3c61af325768e3c7f8d44576e72780ec0b6f2d366121f8eec6e03c3a3b97a
languageName: node
linkType: hard
@@ -26854,8 +26840,8 @@ __metadata:
linkType: hard
"google-gax@npm:^3.5.7, google-gax@npm:^3.5.8":
- version: 3.6.0
- resolution: "google-gax@npm:3.6.0"
+ version: 3.6.1
+ resolution: "google-gax@npm:3.6.1"
dependencies:
"@grpc/grpc-js": ~1.8.0
"@grpc/proto-loader": ^0.7.0
@@ -26869,13 +26855,13 @@ __metadata:
node-fetch: ^2.6.1
object-hash: ^3.0.0
proto3-json-serializer: ^1.0.0
- protobufjs: 7.2.3
+ protobufjs: 7.2.4
protobufjs-cli: 1.1.1
retry-request: ^5.0.0
bin:
compileProtos: build/tools/compileProtos.js
minifyProtoJson: build/tools/minify.js
- checksum: 4c7b1b5a278ffda3eaa92e7f25a9e0ea2d0a76aca704aca4baee4fe9d109916e97e83062ad751006ed93ac675a7fd74028061204fa9ed92833a853e6657a71a1
+ checksum: 16e5fb211d75c6a4cb4d2e62adba7bbf41d160feba74fe39435a70fc31ef8ebc740af4527a2897abab39a1806d131792b2a761da432ae1b916198c9c43aab36e
languageName: node
linkType: hard
@@ -27164,11 +27150,11 @@ __metadata:
linkType: hard
"handlebars@npm:^4.7.3":
- version: 4.7.7
- resolution: "handlebars@npm:4.7.7"
+ version: 4.7.8
+ resolution: "handlebars@npm:4.7.8"
dependencies:
minimist: ^1.2.5
- neo-async: ^2.6.0
+ neo-async: ^2.6.2
source-map: ^0.6.1
uglify-js: ^3.1.4
wordwrap: ^1.0.0
@@ -27177,7 +27163,7 @@ __metadata:
optional: true
bin:
handlebars: bin/handlebars
- checksum: 1e79a43f5e18d15742977cb987923eab3e2a8f44f2d9d340982bcb69e1735ed049226e534d7c1074eaddaf37e4fb4f471a8adb71cddd5bc8cf3f894241df5cee
+ checksum: 00e68bb5c183fd7b8b63322e6234b5ac8fbb960d712cb3f25587d559c2951d9642df83c04a1172c918c41bcfc81bfbd7a7718bbce93b893e0135fc99edea93ff
languageName: node
linkType: hard
@@ -27873,7 +27859,7 @@ __metadata:
languageName: node
linkType: hard
-"import-fresh@npm:^3.0.0, import-fresh@npm:^3.1.0, import-fresh@npm:^3.2.1":
+"import-fresh@npm:^3.1.0, import-fresh@npm:^3.2.1":
version: 3.2.1
resolution: "import-fresh@npm:3.2.1"
dependencies:
@@ -28016,7 +28002,7 @@ __metadata:
languageName: node
linkType: hard
-"inquirer@npm:8.2.5, inquirer@npm:^8.0.0, inquirer@npm:^8.2.0":
+"inquirer@npm:8.2.5":
version: 8.2.5
resolution: "inquirer@npm:8.2.5"
dependencies:
@@ -28039,6 +28025,29 @@ __metadata:
languageName: node
linkType: hard
+"inquirer@npm:^8.0.0, inquirer@npm:^8.2.0":
+ version: 8.2.6
+ resolution: "inquirer@npm:8.2.6"
+ dependencies:
+ ansi-escapes: ^4.2.1
+ chalk: ^4.1.1
+ cli-cursor: ^3.1.0
+ cli-width: ^3.0.0
+ external-editor: ^3.0.3
+ figures: ^3.0.0
+ lodash: ^4.17.21
+ mute-stream: 0.0.8
+ ora: ^5.4.1
+ run-async: ^2.4.0
+ rxjs: ^7.5.5
+ string-width: ^4.1.0
+ strip-ansi: ^6.0.0
+ through: ^2.3.6
+ wrap-ansi: ^6.0.1
+ checksum: 387ffb0a513559cc7414eb42c57556a60e302f820d6960e89d376d092e257a919961cd485a1b4de693dbb5c0de8bc58320bfd6247dfd827a873aa82a4215a240
+ languageName: node
+ linkType: hard
+
"internal-slot@npm:^1.0.3":
version: 1.0.3
resolution: "internal-slot@npm:1.0.3"
@@ -28927,8 +28936,8 @@ __metadata:
linkType: hard
"isomorphic-git@npm:^1.23.0":
- version: 1.24.2
- resolution: "isomorphic-git@npm:1.24.2"
+ version: 1.24.5
+ resolution: "isomorphic-git@npm:1.24.5"
dependencies:
async-lock: ^1.1.0
clean-git-ref: ^2.0.1
@@ -28943,7 +28952,7 @@ __metadata:
simple-get: ^4.0.1
bin:
isogit: cli.cjs
- checksum: 5c69ebf32624ac175fda11b49970e235dd380f18d5ebb80580e1c1b9649bb95aa5f02dc9d2967acf99f485e40f558659c0d14f1ee87bbcc06330a1fcfa5ffb93
+ checksum: d9d13d76ec3a7d7cc8afd70d07ea920f07806b74810fe414559d460cbef8d49c7e0f6dfba0e1773c7856b1d3dd1bf98e17a09ae6aa4a8fd2d759a2f54989491a
languageName: node
linkType: hard
@@ -29569,11 +29578,11 @@ __metadata:
linkType: hard
"jest-when@npm:^3.1.0":
- version: 3.5.2
- resolution: "jest-when@npm:3.5.2"
+ version: 3.6.0
+ resolution: "jest-when@npm:3.6.0"
peerDependencies:
jest: ">= 25"
- checksum: 9ad95552d377ef4d517c96a14c38bd8626d6856f518e7efc8a01d76a45a39d3c52281392c98da781c302114c78cd1ea17556c7f638d49d15971fcce9d58306e8
+ checksum: ed32ed84e5802bb6fec98966cdf862ce59677551be33d3795e6ac7a6207acf467ed559573d671c8d94c59f7fc0780cf358d2d165d81cdc7d9611250d975ee024
languageName: node
linkType: hard
@@ -29675,10 +29684,10 @@ __metadata:
languageName: node
linkType: hard
-"jose@npm:^4.14.1, jose@npm:^4.6.0":
- version: 4.14.3
- resolution: "jose@npm:4.14.3"
- checksum: b766d65a60c0407f891003aae053fb500be0edb7e0745e6702bce39199d9f06fda5eb74a90df10611cb7bd7daf2636cbe3726341fef388b51cb4e43b64200f4f
+"jose@npm:^4.14.4, jose@npm:^4.6.0":
+ version: 4.14.4
+ resolution: "jose@npm:4.14.4"
+ checksum: 2d820a91a8fd97c05d8bc8eedc373b944a0cd7f5fe41063086da233d0473c73fb523912a9f026ea870782bd221f4a515f441a2d3af4de48c6f2c76dac5082377
languageName: node
linkType: hard
@@ -30546,11 +30555,11 @@ __metadata:
linkType: hard
"keyv@npm:^4.0.0, keyv@npm:^4.5.2":
- version: 4.5.2
- resolution: "keyv@npm:4.5.2"
+ version: 4.5.3
+ resolution: "keyv@npm:4.5.3"
dependencies:
json-buffer: 3.0.1
- checksum: 13ad58303acd2261c0d4831b4658451603fd159e61daea2121fcb15feb623e75ee328cded0572da9ca76b7b3ceaf8e614f1806c6b3af5db73c9c35a345259651
+ checksum: 3ffb4d5b72b6b4b4af443bbb75ca2526b23c750fccb5ac4c267c6116888b4b65681015c2833cb20d26cf3e6e32dac6b988c77f7f022e1a571b7d90f1442257da
languageName: node
linkType: hard
@@ -30828,13 +30837,13 @@ __metadata:
linkType: hard
"linguist-js@npm:^2.5.3":
- version: 2.5.6
- resolution: "linguist-js@npm:2.5.6"
+ version: 2.6.1
+ resolution: "linguist-js@npm:2.6.1"
dependencies:
binary-extensions: ^2.2.0
commander: ^9.5.0 <10
common-path-prefix: ^3.0.0
- cross-fetch: ^3.1.6
+ cross-fetch: ^3.1.8 <4
ignore: ^5.2.4
isbinaryfile: ^4.0.10 <5
js-yaml: ^4.1.0
@@ -30842,7 +30851,7 @@ __metadata:
bin:
linguist: bin/index.js
linguist-js: bin/index.js
- checksum: bd1ae9514b4fa365611e571eb7c0cf5b087fc8ab77cdf7aeade2029a327ae3dd9005eb87e4b75770780e06e749c2d9b72f011d0a659705e1a2347b4fe7e28631
+ checksum: 5eea5a0562e4a8958703833eef0377235fd34da1f12b7b8b8208934b877c9f36b7c140b25c66ab563ff229203cd8c224e84d840edbc4ee285ad051b8b8fdb5ae
languageName: node
linkType: hard
@@ -33068,7 +33077,7 @@ __metadata:
languageName: node
linkType: hard
-"neo-async@npm:^2.5.0, neo-async@npm:^2.6.0, neo-async@npm:^2.6.2":
+"neo-async@npm:^2.5.0, neo-async@npm:^2.6.2":
version: 2.6.2
resolution: "neo-async@npm:2.6.2"
checksum: deac9f8d00eda7b2e5cd1b2549e26e10a0faa70adaa6fdadca701cc55f49ee9018e427f424bac0c790b7c7e2d3068db97f3093f1093975f2acb8f8818b936ed9
@@ -33650,9 +33659,9 @@ __metadata:
linkType: hard
"nwsapi@npm:^2.2.0":
- version: 2.2.0
- resolution: "nwsapi@npm:2.2.0"
- checksum: 5ef4a9bc0c1a5b7f2e014aa6a4b359a257503b796618ed1ef0eb852098f77e772305bb0e92856e4bbfa3e6c75da48c0113505c76f144555ff38867229c2400a7
+ version: 2.2.7
+ resolution: "nwsapi@npm:2.2.7"
+ checksum: cab25f7983acec7e23490fec3ef7be608041b460504229770e3bfcf9977c41d6fe58f518994d3bd9aa3a101f501089a3d4a63536f4ff8ae4b8c4ca23bdbfda4e
languageName: node
linkType: hard
@@ -33928,24 +33937,25 @@ __metadata:
linkType: hard
"openid-client@npm:^5.2.1, openid-client@npm:^5.3.0":
- version: 5.4.2
- resolution: "openid-client@npm:5.4.2"
+ version: 5.4.3
+ resolution: "openid-client@npm:5.4.3"
dependencies:
- jose: ^4.14.1
+ jose: ^4.14.4
lru-cache: ^6.0.0
object-hash: ^2.2.0
oidc-token-hash: ^5.0.3
- checksum: 0f3570990a4979aff8581de35078c82d21d45baed9805e0e385dfc62c24fa295ee82d86386846a33bc33ed3b524a5406d8564f9f927420027719f84bf1d8b741
+ checksum: 0e5a126b77dad0320e8f7023ac7ad7f5f1f82ad5f985f7ab0b42a7cf36700dfb78f0bef9b59c1fae915dce0148ef191b49921cd0a01443b64c04f862d9dc03e0
languageName: node
linkType: hard
-"optimism@npm:^0.16.2":
- version: 0.16.2
- resolution: "optimism@npm:0.16.2"
+"optimism@npm:^0.17.5":
+ version: 0.17.5
+ resolution: "optimism@npm:0.17.5"
dependencies:
"@wry/context": ^0.7.0
- "@wry/trie": ^0.3.0
- checksum: a98ed9a0b8ee2b031010222099b60860d52860bf8182889f2695a7cf2185f21aca59020f78e2b47c0ae7697843caa576798d792967314ff59f6aa7c5d9de7f3a
+ "@wry/trie": ^0.4.3
+ tslib: ^2.3.0
+ checksum: 5990217d989e9857dc523a64cb6e5a9205eae68c7acac78f7dde8fbe50045d0f11ca8068cdbb51b1eae15510d96ad593a99cf98c6f86c41d1b6f90e54956ff11
languageName: node
linkType: hard
@@ -34821,10 +34831,10 @@ __metadata:
languageName: node
linkType: hard
-"pg-connection-string@npm:^2.3.0, pg-connection-string@npm:^2.4.0, pg-connection-string@npm:^2.6.1":
- version: 2.6.1
- resolution: "pg-connection-string@npm:2.6.1"
- checksum: 882344a47e1ecf3a91383e0809bf2ac48facea97fcec0358d6e060e1cbcb8737acde419b4c86f05da4ce4a16634ee50fff1d2bb787d73b52ccbfde697243ad8a
+"pg-connection-string@npm:^2.3.0, pg-connection-string@npm:^2.4.0, pg-connection-string@npm:^2.6.2":
+ version: 2.6.2
+ resolution: "pg-connection-string@npm:2.6.2"
+ checksum: 22265882c3b6f2320785378d0760b051294a684989163d5a1cde4009e64e84448d7bf67d9a7b9e7f69440c3ee9e2212f9aa10dd17ad6773f6143c6020cebbcb5
languageName: node
linkType: hard
@@ -34887,13 +34897,13 @@ __metadata:
linkType: hard
"pg@npm:^8.3.0, pg@npm:^8.4.0":
- version: 8.11.1
- resolution: "pg@npm:8.11.1"
+ version: 8.11.2
+ resolution: "pg@npm:8.11.2"
dependencies:
buffer-writer: 2.0.0
packet-reader: 1.0.0
pg-cloudflare: ^1.1.1
- pg-connection-string: ^2.6.1
+ pg-connection-string: ^2.6.2
pg-pool: ^3.6.1
pg-protocol: ^1.6.0
pg-types: ^2.1.0
@@ -34906,7 +34916,7 @@ __metadata:
peerDependenciesMeta:
pg-native:
optional: true
- checksum: e608fe1c52725e1c0c4cbdf97e29df8f41b9fd21aed821866e3488b3a0622be1c19801d8d8eb31f0de35f040c4f69163c211358e7df8c48d15ee8f660d2bd4cc
+ checksum: dfea8a2269d500dee8c17291207e5a25897163480037beb7a59be35f51e33b519c297c943ea6898b285d6a74a0d661901dc9cff2e587cc4be0bbf09b833a71a5
languageName: node
linkType: hard
@@ -35560,13 +35570,13 @@ __metadata:
linkType: hard
"postcss@npm:^8.1.0, postcss@npm:^8.4.21":
- version: 8.4.24
- resolution: "postcss@npm:8.4.24"
+ version: 8.4.27
+ resolution: "postcss@npm:8.4.27"
dependencies:
nanoid: ^3.3.6
picocolors: ^1.0.0
source-map-js: ^1.0.2
- checksum: 814e2126dacfea313588eda09cc99a9b4c26ec55c059188aa7a916d20d26d483483106dc5ff9e560731b59f45c5bb91b945dfadc670aed875cc90ddbbf4e787d
+ checksum: 1cdd0c298849df6cd65f7e646a3ba36870a37b65f55fd59d1a165539c263e9b4872a402bf4ed1ca1bc31f58b68b2835545e33ea1a23b161a1f8aa6d5ded81e78
languageName: node
linkType: hard
@@ -35929,11 +35939,11 @@ __metadata:
linkType: hard
"proto3-json-serializer@npm:^1.0.0":
- version: 1.0.0
- resolution: "proto3-json-serializer@npm:1.0.0"
+ version: 1.1.1
+ resolution: "proto3-json-serializer@npm:1.1.1"
dependencies:
- protobufjs: ^6.11.2
- checksum: 47ac3b7c48eb177aba3e59431704c5db24d670827bd47ef7488e3529ab85e0de4833ed22615945fa72597dd382aa505b8dd427c917c4c50d31e7570d8af21294
+ protobufjs: ^7.0.0
+ checksum: 0cd94cb635a9b9b3a2d047700175be4a6c7b7a43e2698826edad17604793764bcdfc270585ea58cb94aa690211b6cdaae5bf7a22522bea68ca67a2844773b4b7
languageName: node
linkType: hard
@@ -35960,9 +35970,9 @@ __metadata:
languageName: node
linkType: hard
-"protobufjs@npm:7.2.3, protobufjs@npm:^7.0.0":
- version: 7.2.3
- resolution: "protobufjs@npm:7.2.3"
+"protobufjs@npm:7.2.4, protobufjs@npm:^7.0.0":
+ version: 7.2.4
+ resolution: "protobufjs@npm:7.2.4"
dependencies:
"@protobufjs/aspromise": ^1.1.2
"@protobufjs/base64": ^1.1.2
@@ -35976,31 +35986,7 @@ __metadata:
"@protobufjs/utf8": ^1.1.0
"@types/node": ">=13.7.0"
long: ^5.0.0
- checksum: 9afa6de5fced0139a5180c063718508fac3ea734a9f1aceb99712367b15473a83327f91193f16b63540f9112b09a40912f5f0441a9b0d3f3c6a1c7f707d78249
- languageName: node
- linkType: hard
-
-"protobufjs@npm:^6.11.2":
- version: 6.11.3
- resolution: "protobufjs@npm:6.11.3"
- dependencies:
- "@protobufjs/aspromise": ^1.1.2
- "@protobufjs/base64": ^1.1.2
- "@protobufjs/codegen": ^2.0.4
- "@protobufjs/eventemitter": ^1.1.0
- "@protobufjs/fetch": ^1.1.0
- "@protobufjs/float": ^1.0.2
- "@protobufjs/inquire": ^1.1.0
- "@protobufjs/path": ^1.1.2
- "@protobufjs/pool": ^1.1.0
- "@protobufjs/utf8": ^1.1.0
- "@types/long": ^4.0.1
- "@types/node": ">=13.7.0"
- long: ^4.0.0
- bin:
- pbjs: bin/pbjs
- pbts: bin/pbts
- checksum: 4a6ce1964167e4c45c53fd8a312d7646415c777dd31b4ba346719947b88e61654912326101f927da387d6b6473ab52a7ea4f54d6f15d63b31130ce28e2e15070
+ checksum: a952cdf2a5e5250c16ae651b570849b6f5b20a5475c3eef63ffb290ad239aa2916adfc1cc676f7fc93c69f48113df268761c0c246f7f023118c85bdd1a170044
languageName: node
linkType: hard
@@ -38472,11 +38458,11 @@ __metadata:
linkType: hard
"semver@npm:2 || 3 || 4 || 5, semver@npm:^5.4.1, semver@npm:^5.5.0, semver@npm:^5.6.0, semver@npm:^5.7.1":
- version: 5.7.1
- resolution: "semver@npm:5.7.1"
+ version: 5.7.2
+ resolution: "semver@npm:5.7.2"
bin:
- semver: ./bin/semver
- checksum: 57fd0acfd0bac382ee87cd52cd0aaa5af086a7dc8d60379dfe65fea491fb2489b6016400813930ecd61fd0952dae75c115287a1b16c234b1550887117744dfaf
+ semver: bin/semver
+ checksum: fb4ab5e0dd1c22ce0c937ea390b4a822147a9c53dbd2a9a0132f12fe382902beef4fbf12cf51bb955248d8d15874ce8cd89532569756384f994309825f10b686
languageName: node
linkType: hard
@@ -38490,22 +38476,22 @@ __metadata:
linkType: hard
"semver@npm:^6.0.0, semver@npm:^6.1.1, semver@npm:^6.1.2, semver@npm:^6.3.0":
- version: 6.3.0
- resolution: "semver@npm:6.3.0"
+ version: 6.3.1
+ resolution: "semver@npm:6.3.1"
bin:
- semver: ./bin/semver.js
- checksum: 1b26ecf6db9e8292dd90df4e781d91875c0dcc1b1909e70f5d12959a23c7eebb8f01ea581c00783bbee72ceeaad9505797c381756326073850dc36ed284b21b9
+ semver: bin/semver.js
+ checksum: ae47d06de28836adb9d3e25f22a92943477371292d9b665fb023fae278d345d508ca1958232af086d85e0155aee22e313e100971898bbb8d5d89b8b1d4054ca2
languageName: node
linkType: hard
"semver@npm:^7.1.1, semver@npm:^7.1.2, semver@npm:^7.1.3, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.0, semver@npm:^7.5.3":
- version: 7.5.3
- resolution: "semver@npm:7.5.3"
+ version: 7.5.4
+ resolution: "semver@npm:7.5.4"
dependencies:
lru-cache: ^6.0.0
bin:
semver: bin/semver.js
- checksum: 9d58db16525e9f749ad0a696a1f27deabaa51f66e91d2fa2b0db3de3e9644e8677de3b7d7a03f4c15bc81521e0c3916d7369e0572dbde250d9bedf5194e2a8a7
+ checksum: 12d8ad952fa353b0995bf180cdac205a4068b759a140e5d3c608317098b3575ac2f1e09182206bf2eb26120e1c0ed8fb92c48c592f6099680de56bb071423ca3
languageName: node
linkType: hard
@@ -42541,7 +42527,7 @@ __metadata:
languageName: node
linkType: hard
-"wrap-ansi@npm:^6.2.0":
+"wrap-ansi@npm:^6.0.1, wrap-ansi@npm:^6.2.0":
version: 6.2.0
resolution: "wrap-ansi@npm:6.2.0"
dependencies:
@@ -42713,12 +42699,12 @@ __metadata:
linkType: hard
"xml2js@npm:^0.6.0":
- version: 0.6.0
- resolution: "xml2js@npm:0.6.0"
+ version: 0.6.2
+ resolution: "xml2js@npm:0.6.2"
dependencies:
sax: ">=0.6.0"
xmlbuilder: ~11.0.0
- checksum: 437f353fd66d367bf158e9555a0625df9965d944e499728a5c6bc92a54a2763179b144f14b7e1c725040f56bbd22b0fa6cfcb09ec4faf39c45ce01efe631f40b
+ checksum: 458a83806193008edff44562c0bdb982801d61ee7867ae58fd35fab781e69e17f40dfeb8fc05391a4648c9c54012066d3955fe5d993ffbe4dc63399023f32ac2
languageName: node
linkType: hard