diff --git a/.changeset/afraid-horses-lick.md b/.changeset/afraid-horses-lick.md
new file mode 100644
index 0000000000..f2dfcf4ed6
--- /dev/null
+++ b/.changeset/afraid-horses-lick.md
@@ -0,0 +1,54 @@
+---
+'@backstage/app-defaults': patch
+'@backstage/core-app-api': patch
+'@backstage/core-components': patch
+'@backstage/core-plugin-api': patch
+'@backstage/dev-utils': patch
+'@backstage/test-utils': patch
+'@backstage/plugin-adr': patch
+'@backstage/plugin-airbrake': patch
+'@backstage/plugin-allure': patch
+'@backstage/plugin-api-docs': patch
+'@backstage/plugin-azure-devops': patch
+'@backstage/plugin-badges': patch
+'@backstage/plugin-bazaar': patch
+'@backstage/plugin-catalog-graph': patch
+'@backstage/plugin-catalog-import': patch
+'@backstage/plugin-catalog-react': patch
+'@backstage/plugin-catalog': patch
+'@backstage/plugin-circleci': patch
+'@backstage/plugin-cloudbuild': patch
+'@backstage/plugin-code-climate': patch
+'@backstage/plugin-code-coverage': patch
+'@backstage/plugin-codescene': patch
+'@backstage/plugin-cost-insights': patch
+'@backstage/plugin-explore': patch
+'@backstage/plugin-gcp-projects': patch
+'@backstage/plugin-git-release-manager': patch
+'@backstage/plugin-github-actions': patch
+'@backstage/plugin-gitops-profiles': patch
+'@backstage/plugin-graphiql': patch
+'@backstage/plugin-home': patch
+'@backstage/plugin-jenkins': patch
+'@backstage/plugin-kafka': patch
+'@backstage/plugin-kubernetes': patch
+'@backstage/plugin-lighthouse': patch
+'@backstage/plugin-org': patch
+'@backstage/plugin-pagerduty': patch
+'@backstage/plugin-permission-react': patch
+'@backstage/plugin-rollbar': patch
+'@backstage/plugin-scaffolder': patch
+'@backstage/plugin-search-react': patch
+'@backstage/plugin-search': patch
+'@backstage/plugin-sentry': patch
+'@backstage/plugin-shortcuts': patch
+'@backstage/plugin-splunk-on-call': patch
+'@backstage/plugin-tech-insights': patch
+'@backstage/plugin-techdocs-addons-test-utils': patch
+'@backstage/plugin-techdocs-react': patch
+'@backstage/plugin-techdocs': patch
+'@backstage/plugin-todo': patch
+'@backstage/plugin-user-settings': patch
+---
+
+Updated React Router dependencies to be peer dependencies.
diff --git a/.changeset/afraid-radios-boil.md b/.changeset/afraid-radios-boil.md
new file mode 100644
index 0000000000..a9533d55c0
--- /dev/null
+++ b/.changeset/afraid-radios-boil.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-catalog-backend-module-msgraph': patch
+---
+
+Fixed a bug in the `MicrosoftGraphEntityProvider` that ignored the `userExpand` and `groupExpand` configuration parameters
diff --git a/.changeset/big-dolls-reflect.md b/.changeset/big-dolls-reflect.md
new file mode 100644
index 0000000000..e57fb74e09
--- /dev/null
+++ b/.changeset/big-dolls-reflect.md
@@ -0,0 +1,6 @@
+---
+'@backstage/plugin-auth-node': patch
+'@backstage/plugin-permission-node': patch
+---
+
+Minor update to tests
diff --git a/.changeset/big-teachers-tell.md b/.changeset/big-teachers-tell.md
new file mode 100644
index 0000000000..180a974e5e
--- /dev/null
+++ b/.changeset/big-teachers-tell.md
@@ -0,0 +1,5 @@
+---
+'@backstage/test-utils': minor
+---
+
+Elements rendered in a test app are no longer wrapped in a `Routes` and `Route` element, as this is not compatible with React Router v6 stable.
diff --git a/.changeset/blue-snakes-compete.md b/.changeset/blue-snakes-compete.md
new file mode 100644
index 0000000000..73054554b1
--- /dev/null
+++ b/.changeset/blue-snakes-compete.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-adr-backend': patch
+---
+
+Continue processing subsequent entities when an error occurs in collator
diff --git a/.changeset/curly-hounds-wait.md b/.changeset/curly-hounds-wait.md
new file mode 100644
index 0000000000..58ebfe89a3
--- /dev/null
+++ b/.changeset/curly-hounds-wait.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-stack-overflow-backend': patch
+---
+
+Now requests all questions available using pagination. Default max page is set to 100, with a configurable `maxPage` option on the collator.
diff --git a/.changeset/eleven-bees-marry.md b/.changeset/eleven-bees-marry.md
new file mode 100644
index 0000000000..fb0a6fb32e
--- /dev/null
+++ b/.changeset/eleven-bees-marry.md
@@ -0,0 +1,6 @@
+---
+'@backstage/backend-common': patch
+---
+
+Added a keep-alive refresh loop to the `DatabaseManager`, keeping the connection
+pool up.
diff --git a/.changeset/famous-hounds-sit.md b/.changeset/famous-hounds-sit.md
new file mode 100644
index 0000000000..d6cc852ff0
--- /dev/null
+++ b/.changeset/famous-hounds-sit.md
@@ -0,0 +1,6 @@
+---
+'@backstage/backend-common': patch
+---
+
+The options part of `DatabaseManager.fromConfig` now accepts an optional logger
+field.
diff --git a/.changeset/famous-wombats-happen.md b/.changeset/famous-wombats-happen.md
new file mode 100644
index 0000000000..9d8a2f0b0e
--- /dev/null
+++ b/.changeset/famous-wombats-happen.md
@@ -0,0 +1,8 @@
+---
+'@backstage/plugin-cloudbuild': patch
+'@backstage/plugin-scaffolder': patch
+'@backstage/plugin-tech-insights': patch
+'@backstage/plugin-techdocs': patch
+---
+
+Internal refactor to use more type safe code when dealing with route parameters.
diff --git a/.changeset/flat-plums-shout.md b/.changeset/flat-plums-shout.md
new file mode 100644
index 0000000000..250d6a1b35
--- /dev/null
+++ b/.changeset/flat-plums-shout.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-catalog-backend': minor
+---
+
+Allow unknown typed location from being registered via the location service by configuration settings
diff --git a/.changeset/flat-walls-kiss.md b/.changeset/flat-walls-kiss.md
new file mode 100644
index 0000000000..ea2d2556ed
--- /dev/null
+++ b/.changeset/flat-walls-kiss.md
@@ -0,0 +1,5 @@
+---
+'@backstage/create-app': patch
+---
+
+The Backstage packages and plugins have all been updated to support React Router v6 stable. The `create-app` template has not been migrated yet, but if you want to migrate your own app or plugins, check out the [migration guide](https://backstage.io/docs/tutorials/react-router-stable-migration).
diff --git a/.changeset/funny-hounds-obey.md b/.changeset/funny-hounds-obey.md
new file mode 100644
index 0000000000..065af245c7
--- /dev/null
+++ b/.changeset/funny-hounds-obey.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-scaffolder': patch
+---
+
+Fixing bug when the workspace would not be automatically saved when using `allowedOwners`
diff --git a/.changeset/gold-hounds-vanish.md b/.changeset/gold-hounds-vanish.md
new file mode 100644
index 0000000000..d221f0f5e9
--- /dev/null
+++ b/.changeset/gold-hounds-vanish.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-catalog-backend': minor
+---
+
+The search index now does retain fields that have a very long value, but in the form of just a null. This makes it possible to at least filter for their existence.
diff --git a/.changeset/good-avocados-grow.md b/.changeset/good-avocados-grow.md
new file mode 100644
index 0000000000..dcc685c36d
--- /dev/null
+++ b/.changeset/good-avocados-grow.md
@@ -0,0 +1,5 @@
+---
+'@backstage/core-app-api': minor
+---
+
+Updated the routing system to be compatible with React Router v6 stable.
diff --git a/.changeset/good-papayas-dress.md b/.changeset/good-papayas-dress.md
new file mode 100644
index 0000000000..26062c8da8
--- /dev/null
+++ b/.changeset/good-papayas-dress.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-scaffolder-backend': minor
+---
+
+Added `projectId` for gitlab projects to be displayed in the `gitlab:publish` output
diff --git a/.changeset/great-cats-sit.md b/.changeset/great-cats-sit.md
new file mode 100644
index 0000000000..abdf9cfb39
--- /dev/null
+++ b/.changeset/great-cats-sit.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-catalog-backend': patch
+---
+
+Fixes a bug to be able to utilize refresh keys after the entity is loaded from cache
diff --git a/.changeset/grumpy-kiwis-juggle.md b/.changeset/grumpy-kiwis-juggle.md
new file mode 100644
index 0000000000..e303f8f674
--- /dev/null
+++ b/.changeset/grumpy-kiwis-juggle.md
@@ -0,0 +1,5 @@
+---
+'@backstage/cli': patch
+---
+
+Added a new `migrate react-router-deps` command to aid in the migration to React Router v6 stable.
diff --git a/.changeset/heavy-ligers-laugh.md b/.changeset/heavy-ligers-laugh.md
new file mode 100644
index 0000000000..71f8b99b12
--- /dev/null
+++ b/.changeset/heavy-ligers-laugh.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-search-backend-node': patch
+---
+
+Fixed bug in LunrSearchEngine where stopwords in title is causing in-doc search not working
diff --git a/.changeset/large-eagles-shop.md b/.changeset/large-eagles-shop.md
new file mode 100644
index 0000000000..bd5bd2e28d
--- /dev/null
+++ b/.changeset/large-eagles-shop.md
@@ -0,0 +1,10 @@
+---
+'@backstage/plugin-airbrake-backend': patch
+'@backstage/plugin-catalog-backend-module-bitbucket-server': patch
+'@backstage/plugin-dynatrace': patch
+'@backstage/plugin-periskop-backend': patch
+'@backstage/plugin-stack-overflow-backend': patch
+'@backstage/plugin-vault-backend': patch
+---
+
+Switched to using node-fetch instead of cross-fetch as is standard for our backend packages
diff --git a/.changeset/large-trainers-float.md b/.changeset/large-trainers-float.md
new file mode 100644
index 0000000000..b5d1d9be1d
--- /dev/null
+++ b/.changeset/large-trainers-float.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-catalog-react': patch
+---
+
+Properly handle free-text entity filtering in the case of empty tag arrays
diff --git a/.changeset/loud-comics-search.md b/.changeset/loud-comics-search.md
new file mode 100644
index 0000000000..27f5b3c5d9
--- /dev/null
+++ b/.changeset/loud-comics-search.md
@@ -0,0 +1,16 @@
+---
+'@backstage/plugin-tech-insights': minor
+---
+
+Added the possibility to display check results of different types on a single scorecard.
+
+- **BREAKING** Removed the `getScorecardsDefinition` method from the `TechInsightsApi` interface. Added the `getCheckResultRenderers` method that returns rendering components for given types.
+- **BREAKING** The `CheckResultRenderer` type now exposes the `component` factory method that creates a React component used to display a result of a provided check result.
+- The `TechInsightsClient` constructor accepts now the optional `renderers` parameter that can be used to inject a custom renderer.
+- **BREAKING** The `title` parameter in the `EntityTechInsightsScorecardContent` and `EntityTechInsightsScorecardCard` components is now mandatory.
+- The `jsonRulesEngineCheckResultRenderer` used to render `json-rules-engine` check results is exported.
+- The `BooleanCheck` component that can be used to render other check results types is also exported.
+
+If you were overriding the `getScorecardsDefinition` method to adjust the rendering of check results, you should now provide a custom renderer using `renderers` parameter in the `TechInsightsClient` class.
+
+See the [README](https://github.com/backstage/backstage/tree/master/plugins/tech-insights/README.md) for more details.
diff --git a/.changeset/lovely-ants-invite.md b/.changeset/lovely-ants-invite.md
new file mode 100644
index 0000000000..688850f776
--- /dev/null
+++ b/.changeset/lovely-ants-invite.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-scaffolder-backend': patch
+---
+
+Applied the fix from version 1.5.1 of this package, which is part of the v1.5.1 release of Backstage.
diff --git a/.changeset/many-rules-raise.md b/.changeset/many-rules-raise.md
new file mode 100644
index 0000000000..40a26a85fe
--- /dev/null
+++ b/.changeset/many-rules-raise.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-catalog-backend-module-ldap': patch
+---
+
+Added ae-dir LDAP vendor to correctly extract DN.
diff --git a/.changeset/mean-tomatoes-visit.md b/.changeset/mean-tomatoes-visit.md
new file mode 100644
index 0000000000..111063d805
--- /dev/null
+++ b/.changeset/mean-tomatoes-visit.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-techdocs': patch
+---
+
+Updated the `TechDocsReaderPage` to be compatible with React Router v6 stable.
diff --git a/.changeset/old-lemons-switch.md b/.changeset/old-lemons-switch.md
new file mode 100644
index 0000000000..62f8d099b3
--- /dev/null
+++ b/.changeset/old-lemons-switch.md
@@ -0,0 +1,5 @@
+---
+'@backstage/core-components': patch
+---
+
+The `RoutedTabs` component has been updated to be compatible with React Router v6 stable.
diff --git a/.changeset/popular-shirts-happen.md b/.changeset/popular-shirts-happen.md
new file mode 100644
index 0000000000..137354fe2b
--- /dev/null
+++ b/.changeset/popular-shirts-happen.md
@@ -0,0 +1,7 @@
+---
+'@backstage/plugin-permission-react': patch
+---
+
+**DEPRECATION**: The `PermissionedRoute` component has been deprecated in favor of the new `RequirePermission` component. This is because the usage pattern of `PermissionedRoute` is not compatible with React Router v6 stable.
+
+Embed the type from `react-router` instead of exporting it directly.
diff --git a/.changeset/pre.json b/.changeset/pre.json
index a2f1d9f8e8..8dfbaa58f6 100644
--- a/.changeset/pre.json
+++ b/.changeset/pre.json
@@ -172,44 +172,87 @@
"@backstage/plugin-xcmetrics": "0.2.28"
},
"changesets": [
+ "afraid-horses-lick",
+ "afraid-radios-boil",
"beige-monkeys-add",
"beige-pumas-tap",
+ "big-dolls-reflect",
+ "big-teachers-tell",
+ "blue-snakes-compete",
"clever-beans-turn",
"cold-frogs-kiss",
+ "curly-hounds-wait",
"dry-games-end",
"eight-spies-protect",
+ "eleven-bees-marry",
+ "famous-hounds-sit",
+ "famous-wombats-happen",
"five-carrots-pay",
+ "flat-plums-shout",
+ "flat-walls-kiss",
"fresh-rabbits-juggle",
+ "funny-hounds-obey",
+ "funny-years-speak",
+ "gold-hounds-vanish",
+ "good-avocados-grow",
+ "good-papayas-dress",
"gorgeous-swans-kiss",
+ "great-cats-sit",
+ "grumpy-kiwis-juggle",
"happy-kiwis-look",
+ "heavy-ligers-laugh",
"hot-files-begin",
"hot-suits-glow",
"hungry-dogs-agree",
+ "large-eagles-shop",
+ "large-trainers-float",
"lazy-snakes-film",
"light-beans-share",
+ "loud-comics-search",
+ "lovely-ants-invite",
"lucky-points-wash",
+ "many-rules-raise",
+ "mean-tomatoes-visit",
+ "metal-crabs-wash",
"nervous-rivers-sneeze",
+ "old-lemons-switch",
"old-tables-joke",
+ "popular-shirts-happen",
+ "red-numbers-suffer",
+ "renovate-16f36a0",
+ "renovate-4f0c2e3",
+ "renovate-58c2860",
"renovate-7d3b357",
"renovate-c98c336",
+ "renovate-f18a0fc",
+ "rich-cooks-camp",
+ "rich-melons-compete",
"rotten-books-crash",
"rude-books-rush",
"shaggy-chicken-behave",
+ "shaggy-vans-repeat",
"sharp-swans-suffer",
"shiny-lobsters-fix",
"silent-kings-live",
"slimy-zebras-reply",
+ "small-lemons-brake",
+ "small-walls-promise",
+ "smooth-yaks-hug",
"spicy-cherries-remember",
"strong-games-kiss",
"strong-planes-return",
+ "sweet-fishes-taste",
+ "tall-trains-remain",
"tame-papayas-protect",
"techdocs-jeans-wait",
+ "tender-ladybugs-relax",
"tiny-oranges-thank",
"tough-dolphins-smile",
"two-planets-provide",
"weak-yaks-learn",
"wild-sheep-roll",
"witty-cats-wink",
+ "witty-queens-happen",
"young-trees-rescue"
]
}
diff --git a/.changeset/renovate-16f36a0.md b/.changeset/renovate-16f36a0.md
new file mode 100644
index 0000000000..74c33ec0a7
--- /dev/null
+++ b/.changeset/renovate-16f36a0.md
@@ -0,0 +1,14 @@
+---
+'@backstage/backend-common': patch
+'@backstage/plugin-app-backend': patch
+'@backstage/plugin-graphql-backend': patch
+'@backstage/plugin-kubernetes-backend': patch
+'@backstage/plugin-vault-backend': patch
+---
+
+Updated dependency `helmet` to `^6.0.0`.
+
+Please note that these policies are no longer applied by default:
+
+helmet.contentSecurityPolicy no longer sets block-all-mixed-content directive by default
+helmet.expectCt is no longer set by default. It can, however, be explicitly enabled. It will be removed in Helmet 7.
diff --git a/.changeset/renovate-4f0c2e3.md b/.changeset/renovate-4f0c2e3.md
new file mode 100644
index 0000000000..0aab9dc9a6
--- /dev/null
+++ b/.changeset/renovate-4f0c2e3.md
@@ -0,0 +1,13 @@
+---
+'@backstage/cli': minor
+---
+
+Updated dependency `eslint-plugin-jest` to `^27.0.0`.
+
+Note that this major update to the Jest plugin contains some breaking changes.
+This means that some of your tests may start seeing some new lint errors. [Read
+about them
+here](https://github.com/jest-community/eslint-plugin-jest/blob/main/CHANGELOG.md#2700-2022-08-28).
+
+These are mostly possible to fix automatically. You can try to run `yarn backstage-cli repo lint --fix` in your repo root to have most or all of them
+corrected.
diff --git a/.changeset/renovate-58c2860.md b/.changeset/renovate-58c2860.md
new file mode 100644
index 0000000000..a03ccdf6f8
--- /dev/null
+++ b/.changeset/renovate-58c2860.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-jenkins-backend': patch
+---
+
+Updated dependency `jenkins` to `^1.0.0`.
diff --git a/.changeset/renovate-f18a0fc.md b/.changeset/renovate-f18a0fc.md
new file mode 100644
index 0000000000..6f17cb8c0f
--- /dev/null
+++ b/.changeset/renovate-f18a0fc.md
@@ -0,0 +1,5 @@
+---
+'@backstage/cli': patch
+---
+
+Updated dependency `@types/minimatch` to `^5.0.0`.
diff --git a/.changeset/rich-melons-compete.md b/.changeset/rich-melons-compete.md
new file mode 100644
index 0000000000..68297159f7
--- /dev/null
+++ b/.changeset/rich-melons-compete.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-gcalendar': patch
+---
+
+Upgrade `react-query:3` to `@tanstack/react-query:4`
diff --git a/.changeset/shaggy-vans-repeat.md b/.changeset/shaggy-vans-repeat.md
new file mode 100644
index 0000000000..fd865c702c
--- /dev/null
+++ b/.changeset/shaggy-vans-repeat.md
@@ -0,0 +1,18 @@
+---
+'@backstage/create-app': patch
+---
+
+The options part of `DatabaseManager.fromConfig` now accepts an optional logger
+field. You may want to supply that logger in your backend initialization code to
+ensure that you can get relevant logging data when things happen related to the
+connection pool.
+
+In `packages/backend/src/index.ts`:
+
+```diff
+ function makeCreateEnv(config: Config) {
+ const root = getRootLogger();
+ ...
+- const databaseManager = DatabaseManager.fromConfig(config);
++ const databaseManager = DatabaseManager.fromConfig(config, { logger: root });
+```
diff --git a/.changeset/shiny-walls-kiss.md b/.changeset/shiny-walls-kiss.md
new file mode 100644
index 0000000000..0f13acb154
--- /dev/null
+++ b/.changeset/shiny-walls-kiss.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-stack-overflow': patch
+---
+
+Create a front end API.
diff --git a/.changeset/small-lemons-brake.md b/.changeset/small-lemons-brake.md
new file mode 100644
index 0000000000..ac7906fc28
--- /dev/null
+++ b/.changeset/small-lemons-brake.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-catalog-backend': patch
+---
+
+Include entity ref into error message when catalog policies fail
diff --git a/.changeset/small-walls-promise.md b/.changeset/small-walls-promise.md
new file mode 100644
index 0000000000..0455b0d776
--- /dev/null
+++ b/.changeset/small-walls-promise.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-tech-insights-backend': patch
+---
+
+Changed the description of the `techdocsAnnotationFactName` fact.
diff --git a/.changeset/smooth-yaks-hug.md b/.changeset/smooth-yaks-hug.md
new file mode 100644
index 0000000000..d93176540f
--- /dev/null
+++ b/.changeset/smooth-yaks-hug.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-catalog-backend-module-github': patch
+---
+
+Added the ability to configure the host for the `GitHubEntityProvider` to use against GitHub Enterprise
diff --git a/.changeset/sweet-fishes-taste.md b/.changeset/sweet-fishes-taste.md
new file mode 100644
index 0000000000..8d1fcfc790
--- /dev/null
+++ b/.changeset/sweet-fishes-taste.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-github-pull-requests-board': patch
+---
+
+Add optional `pullRequestLimit` prop to `EntityTeamPullRequestsCard` and `EntityTeamPullRequestsContent` to limit the number of PRs shown per repository. Excluding this prop will default the number of pull requests shown to 10 per repository (the existing functionality).
diff --git a/.changeset/tall-trains-remain.md b/.changeset/tall-trains-remain.md
new file mode 100644
index 0000000000..9a94672656
--- /dev/null
+++ b/.changeset/tall-trains-remain.md
@@ -0,0 +1,5 @@
+---
+'@backstage/core-app-api': patch
+---
+
+Updated `FlatRoutes` to be compatible with React Router v6 stable.
diff --git a/.changeset/tender-ladybugs-relax.md b/.changeset/tender-ladybugs-relax.md
new file mode 100644
index 0000000000..2aefa09dc0
--- /dev/null
+++ b/.changeset/tender-ladybugs-relax.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-stack-overflow': patch
+---
+
+Support showing HTML entity references from the API response before rendering the question title to the list component.
diff --git a/.changeset/witty-queens-happen.md b/.changeset/witty-queens-happen.md
new file mode 100644
index 0000000000..969bd2c79e
--- /dev/null
+++ b/.changeset/witty-queens-happen.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-adr': patch
+---
+
+Fix parsing of ADR location which includes a trailing slash
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index e732e49b43..3bead8d569 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -33,7 +33,7 @@ jobs:
registry-url: https://registry.npmjs.org/ # Needed for auth
- name: yarn install
- uses: backstage/actions/yarn-install@v0.5.3
+ uses: backstage/actions/yarn-install@v0.5.5
with:
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
@@ -63,7 +63,7 @@ jobs:
registry-url: https://registry.npmjs.org/ # Needed for auth
- name: yarn install
- uses: backstage/actions/yarn-install@v0.5.3
+ uses: backstage/actions/yarn-install@v0.5.5
with:
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
@@ -181,7 +181,7 @@ jobs:
registry-url: https://registry.npmjs.org/ # Needed for auth
- name: yarn install
- uses: backstage/actions/yarn-install@v0.5.3
+ uses: backstage/actions/yarn-install@v0.5.5
with:
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
diff --git a/.github/workflows/cron.yml b/.github/workflows/cron.yml
index 6fd9fe2814..03105b753a 100644
--- a/.github/workflows/cron.yml
+++ b/.github/workflows/cron.yml
@@ -8,7 +8,7 @@ jobs:
cron:
runs-on: ubuntu-latest
steps:
- - uses: backstage/actions/cron@v0.5.3
+ - uses: backstage/actions/cron@v0.5.5
with:
app-id: ${{ secrets.BACKSTAGE_GOALIE_APPLICATION_ID }}
private-key: ${{ secrets.BACKSTAGE_GOALIE_PRIVATE_KEY }}
diff --git a/.github/workflows/deploy_nightly.yml b/.github/workflows/deploy_nightly.yml
index fe234359dd..e776c47537 100644
--- a/.github/workflows/deploy_nightly.yml
+++ b/.github/workflows/deploy_nightly.yml
@@ -26,7 +26,7 @@ jobs:
node-version: ${{ matrix.node-version }}
registry-url: https://registry.npmjs.org/ # Needed for auth
- name: yarn install
- uses: backstage/actions/yarn-install@v0.5.3
+ uses: backstage/actions/yarn-install@v0.5.5
with:
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
diff --git a/.github/workflows/deploy_packages.yml b/.github/workflows/deploy_packages.yml
index 6b505dfbf5..a2ffdbcbe3 100644
--- a/.github/workflows/deploy_packages.yml
+++ b/.github/workflows/deploy_packages.yml
@@ -67,7 +67,7 @@ jobs:
node-version: ${{ matrix.node-version }}
registry-url: https://registry.npmjs.org/ # Needed for auth
- name: yarn install
- uses: backstage/actions/yarn-install@v0.5.3
+ uses: backstage/actions/yarn-install@v0.5.5
with:
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
@@ -145,7 +145,7 @@ jobs:
node-version: ${{ matrix.node-version }}
registry-url: https://registry.npmjs.org/ # Needed for auth
- name: yarn install
- uses: backstage/actions/yarn-install@v0.5.3
+ uses: backstage/actions/yarn-install@v0.5.5
with:
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
diff --git a/.github/workflows/issue.yaml b/.github/workflows/issue.yaml
index 58b1f725ad..0a8b243255 100644
--- a/.github/workflows/issue.yaml
+++ b/.github/workflows/issue.yaml
@@ -10,4 +10,4 @@ jobs:
if: github.repository == 'backstage/backstage'
steps:
- name: Issue sync
- uses: backstage/actions/issue-sync@v0.5.3
+ uses: backstage/actions/issue-sync@v0.5.5
diff --git a/.github/workflows/pr-review-comment.yaml b/.github/workflows/pr-review-comment.yaml
index fac7fd2fc4..4b1048da9b 100644
--- a/.github/workflows/pr-review-comment.yaml
+++ b/.github/workflows/pr-review-comment.yaml
@@ -35,7 +35,7 @@ jobs:
const prNumber = artifact.name.slice('pr_number-'.length)
console.log(`::set-output name=pr-number::${prNumber}`);
- - uses: backstage/actions/re-review@v0.5.3
+ - uses: backstage/actions/re-review@v0.5.5
with:
app-id: ${{ secrets.BACKSTAGE_GOALIE_APPLICATION_ID }}
private-key: ${{ secrets.BACKSTAGE_GOALIE_PRIVATE_KEY }}
diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml
index 4fa8a60577..3fbac53400 100644
--- a/.github/workflows/pr.yaml
+++ b/.github/workflows/pr.yaml
@@ -18,7 +18,7 @@ jobs:
if: github.repository == 'backstage/backstage' && ( github.event.pull_request || github.event.issue.pull_request )
steps:
- name: PR sync
- uses: backstage/actions/pr-sync@v0.5.3
+ uses: backstage/actions/pr-sync@v0.5.5
with:
github-token: ${{ secrets.GH_SERVICE_ACCOUNT_TOKEN }}
app-id: ${{ secrets.BACKSTAGE_GOALIE_APPLICATION_ID }}
diff --git a/.github/workflows/sync_code-formatting.yml b/.github/workflows/sync_code-formatting.yml
index 45cf6dca3d..c37f8c578e 100644
--- a/.github/workflows/sync_code-formatting.yml
+++ b/.github/workflows/sync_code-formatting.yml
@@ -20,7 +20,7 @@ jobs:
node-version: ${{ matrix.node-version }}
registry-url: https://registry.npmjs.org/ # Needed for auth
- name: yarn install
- uses: backstage/actions/yarn-install@v0.5.3
+ uses: backstage/actions/yarn-install@v0.5.5
with:
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
diff --git a/.github/workflows/sync_snyk-github-issues.yml b/.github/workflows/sync_snyk-github-issues.yml
index 1ac1ff3b2c..ae65e90ac0 100644
--- a/.github/workflows/sync_snyk-github-issues.yml
+++ b/.github/workflows/sync_snyk-github-issues.yml
@@ -22,7 +22,7 @@ jobs:
node-version: ${{ matrix.node-version }}
registry-url: https://registry.npmjs.org/ # Needed for auth
- name: yarn install
- uses: backstage/actions/yarn-install@v0.5.3
+ uses: backstage/actions/yarn-install@v0.5.5
with:
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
diff --git a/.github/workflows/verify_e2e-linux.yml b/.github/workflows/verify_e2e-linux.yml
index d02c17c35f..0eedfd9d6b 100644
--- a/.github/workflows/verify_e2e-linux.yml
+++ b/.github/workflows/verify_e2e-linux.yml
@@ -47,7 +47,7 @@ jobs:
node-version: ${{ matrix.node-version }}
registry-url: https://registry.npmjs.org/ # Needed for auth
- name: yarn install
- uses: backstage/actions/yarn-install@v0.5.3
+ uses: backstage/actions/yarn-install@v0.5.5
with:
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
diff --git a/.github/workflows/verify_storybook.yml b/.github/workflows/verify_storybook.yml
index 03a1b01c07..9c6e693ba4 100644
--- a/.github/workflows/verify_storybook.yml
+++ b/.github/workflows/verify_storybook.yml
@@ -35,7 +35,7 @@ jobs:
node-version: ${{ matrix.node-version }}
registry-url: https://registry.npmjs.org/ # Needed for auth
- name: yarn install
- uses: backstage/actions/yarn-install@v0.5.3
+ uses: backstage/actions/yarn-install@v0.5.5
with:
cache-prefix: ${{ runner.os }}-v${{ matrix.node-version }}
- name: storybook yarn install
diff --git a/ADOPTERS.md b/ADOPTERS.md
index 902952a90e..c740fe857c 100644
--- a/ADOPTERS.md
+++ b/ADOPTERS.md
@@ -171,7 +171,7 @@ _You can do this by using the [Adopter form](https://form.typeform.com/to/zcOaKi
| [AEB](https://www.aeb.com/) | [David Fankhänel](mailto:dfl@aeb.com) | Central developer platform for creating new apps via templates, getting an overview via software catalog, etc |
| [SALTO Systems](https://saltosystems.com) | [Ian Cowley](mailto:i.cowley@saltosystems.com) | Currently using Backstage as an internal documentation portal. |
| [Lummo](https://lummo.com) | [Anjul Sahu](mailto:anjul@lummo.com) | We are building the internal developer portal using Backstage and bringing up all integrations and service information at one place. |
-| [Frontside](https://frontside.com) | [Taras Mankovski](mailto:taras@frontside.com) | |
+| [Frontside](https://frontside.com/backstage) | [Taras Mankovski](mailto:taras@frontside.com) | An active community member and contributor, Frontside offers both custom development as well as enterprise support services to help teams get the most out of Backstage for the long-run. |
| [Stepstone](https://www.stepstone.com/en/) | [Neil Kennedy](mailto:neil.kennedy@stepstone.com) | StepStone is using Backstage to solve problems around ownership and visibility of our applications. We have thousands of repos, multiple legacy systems and a growing platform that is hard to maintain. Backstage is forming the centre of our push to embrace the chaos. |
| [idwall](https://idwall.co) | [Rodrigo Catão Araujo](mailto:rodrigo@idwall.co) | Developer Portal for internal engineers to access service catalog, documentation, observability, infrastructure and internal tooling. |
| [Jaguar Land Rover](https://www.jaguarlandrover.com) | [Josh Walker](mailto:jwalke18@jaguarlandrover.com) | Users can request a Gitlab user, which creates a commit with the Terraform code. |
@@ -207,4 +207,6 @@ _You can do this by using the [Adopter form](https://form.typeform.com/to/zcOaKi
| [Fanatics](https://www.fanaticsinc.com/) | [Rory Scott](mailto:rscott@fanatics.com) | Internal Portal consolidating documentation, making it easier to manage applications, internal developer community platform, and self-service cloud infrastructure + pipelines. |
| [Appfolio](https://appfolio.com) | [Andy Vaughn](mailto:andy.vaughn@appfolio.com) | Internal software catalog, tech radar, documentation portal to disambiguate software and domain ownership, foster exploration of available developer platform services and tools, improve communication, democratize documentation and knowledge sharing, and coordinate the software lifecycle; all in service of a best-in-class developer experience. |
| [isaac](https://isaac.com.br/) | [Leonardo Borges](mailto:leonardo.borges@isaac.com.br), [Ordilei Souza](mailto:ordilei.souza@isaac.com.br) | We're using Backstage as our Internal Developer Portal and main microservices catalog for mapping ownership, health and metrics for each one. |
-| [Paraná Banco](https://site.paranabanco.com.br/) | [Joao Antunes](mailto:joaopma@pbtech.net.br) | Internal software catalog, documentation and ownership, improve communication, democratize documentation and knowledge sharing, and coordinate the software lifecycle; all in service of a best-in-class developer experience. |
\ No newline at end of file
+| [Paraná Banco](https://site.paranabanco.com.br/) | [Joao Antunes](mailto:joaopma@pbtech.net.br) | Internal software catalog, documentation and ownership, improve communication, democratize documentation and knowledge sharing, and coordinate the software lifecycle; all in service of a best-in-class developer experience. |
+| [Stone](https://stone.com.br/) | [Levy Fialho](mailto:lfialho@stone.com.br) | We're using Backstage as our Credit Team Developer Portal and microservices catalog for mapping ownership. We are also using mkdocs for microservices documentation. |
+| [REI](https://www.rei.com/) | [Jen Evans](mailto:jenevan@rei.com) | Developer portal focused on an enterprise-wide app catalog to track ownership and surface APIs. |
diff --git a/cypress/yarn.lock b/cypress/yarn.lock
index 2f1e0f0775..646342b0a2 100644
--- a/cypress/yarn.lock
+++ b/cypress/yarn.lock
@@ -1059,9 +1059,9 @@ type-fest@^0.21.3:
integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==
typescript@^4.1.3:
- version "4.7.4"
- resolved "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235"
- integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==
+ version "4.8.2"
+ resolved "https://registry.npmjs.org/typescript/-/typescript-4.8.2.tgz#e3b33d5ccfb5914e4eeab6699cf208adee3fd790"
+ integrity sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==
universalify@^2.0.0:
version "2.0.0"
diff --git a/docs/overview/roadmap.md b/docs/overview/roadmap.md
index 2763f95a5a..2ac211bf97 100644
--- a/docs/overview/roadmap.md
+++ b/docs/overview/roadmap.md
@@ -111,5 +111,4 @@ guidelines to get started.
If you have specific questions about the roadmap, please create an
[issue](https://github.com/backstage/backstage/issues/new/choose), ping us on
-[Discord](https://discord.gg/qxsEfa8Vq8), or [book
-time](http://calendly.com/spotify-backstage) with the Spotify team.
+[Discord](https://discord.gg/qxsEfa8Vq8), or [book time](https://info.backstage.spotify.com/office-hours) with the Spotify team.
diff --git a/docs/publishing.md b/docs/publishing.md
index a0d67b7d24..142e019fb2 100644
--- a/docs/publishing.md
+++ b/docs/publishing.md
@@ -55,6 +55,7 @@ process is used to release an emergency fix as version `6.5.1` in the patch rele
of the repo in order to convert your changeset into package version bumps and changelog entries.
Commit these changes as a second `"Generated release"` commit.
- [ ] Create PR towards the base branch (`patch/v1.18.0`) containing the two commits.
+ - [ ] Add a PR body, it will be used as the release description. Typically something like "This release fixes ...".
- [ ] Review/Merge the PR into `patch/v1.18.0`. This will automatically trigger a release.
- [ ] Look up the new version of our package in the patch PR as well as the new release
@@ -65,5 +66,5 @@ process is used to release an emergency fix as version `6.5.1` in the patch rele
master branch as well. Create a PR that contains the following:
- [ ] The fix, which you can likely cherry-pick from your patch branch: `git cherry-pick origin/patch/v1.18.0^`
- - [ ] An updated `CHANGELOG.md` of all patched packages from the tip of the patch branch, `git checkout origin/patch/v1.18.0 -- {packages,plugins}/*/CHANGELOG.md`.
+ - [ ] An updated `CHANGELOG.md` of all patched packages from the tip of the patch branch, `git checkout origin/patch/v1.18.0 -- {packages,plugins}/*/CHANGELOG.md`. Note that if the patch happens after any next-line releases you'll need to restore those entries in the changelog, placing the patch release entry beneath any next-line release entries.
- [ ] A changeset with the message "Applied the fix from version `6.5.1` of this package, which is part of the `v1.18.1` release of Backstage."
diff --git a/docs/releases/v1.6.0-next.1-changelog.md b/docs/releases/v1.6.0-next.1-changelog.md
new file mode 100644
index 0000000000..ba5d032ead
--- /dev/null
+++ b/docs/releases/v1.6.0-next.1-changelog.md
@@ -0,0 +1,1171 @@
+# Release v1.6.0-next.1
+
+## @backstage/cli@0.19.0-next.1
+
+### Minor Changes
+
+- 1fe6823bb5: Updated dependency `eslint-plugin-jest` to `^27.0.0`.
+
+ Note that this major update to the Jest plugin contains some breaking changes.
+ This means that some of your tests may start seeing some new lint errors. [Read
+ about them
+ here](https://github.com/jest-community/eslint-plugin-jest/blob/main/CHANGELOG.md#2700-2022-08-28).
+
+ These are mostly possible to fix automatically. You can try to run `yarn backstage-cli repo lint --fix` in your repo root to have most or all of them
+ corrected.
+
+### Patch Changes
+
+- 817f3196f6: Added a new `migrate react-router-deps` command to aid in the migration to React Router v6 stable.
+- 33fbd9f9a4: Updated dependency `@types/minimatch` to `^5.0.0`.
+
+## @backstage/core-app-api@1.1.0-next.1
+
+### Minor Changes
+
+- a448fea691: Updated the routing system to be compatible with React Router v6 stable.
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- 70299c99d5: Updated `FlatRoutes` to be compatible with React Router v6 stable.
+- Updated dependencies
+ - @backstage/core-plugin-api@1.0.6-next.1
+
+## @backstage/test-utils@1.2.0-next.1
+
+### Minor Changes
+
+- 817f3196f6: Elements rendered in a test app are no longer wrapped in a `Routes` and `Route` element, as this is not compatible with React Router v6 stable.
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- Updated dependencies
+ - @backstage/core-app-api@1.1.0-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-permission-react@0.4.5-next.1
+
+## @backstage/plugin-auth-backend@0.16.0-next.1
+
+### Minor Changes
+
+- 2fc41ebf07: Removed the previously deprecated class `AtlassianAuthProvider`. Please use `providers.atlassian.create(...)` instead.
+- a291688bc5: Renamed the `RedirectInfo` type to `OAuthStartResponse`
+
+### Patch Changes
+
+- d669d89206: Minor API signatures cleanup
+- e1ebaeb332: Cloudflare Access Provider: Add JWT to CloudflareAccessResult
+- Updated dependencies
+ - @backstage/plugin-auth-node@0.2.5-next.1
+ - @backstage/backend-common@0.15.1-next.1
+
+## @backstage/plugin-catalog-backend@1.4.0-next.1
+
+### Minor Changes
+
+- dd395335bc: Allow unknown typed location from being registered via the location service by configuration settings
+- 651c9d6800: The search index now does retain fields that have a very long value, but in the form of just a null. This makes it possible to at least filter for their existence.
+
+### Patch Changes
+
+- ce77e78c93: Fixes a bug to be able to utilize refresh keys after the entity is loaded from cache
+- 679f7c5e95: Include entity ref into error message when catalog policies fail
+- Updated dependencies
+ - @backstage/plugin-permission-node@0.6.5-next.1
+ - @backstage/backend-common@0.15.1-next.1
+
+## @backstage/plugin-scaffolder-backend@1.6.0-next.1
+
+### Minor Changes
+
+- 7db9613671: Added `projectId` for gitlab projects to be displayed in the `gitlab:publish` output
+
+### Patch Changes
+
+- 0d8d650e32: Applied the fix from version 1.5.1 of this package, which is part of the v1.5.1 release of Backstage.
+- Updated dependencies
+ - @backstage/backend-common@0.15.1-next.1
+ - @backstage/plugin-catalog-backend@1.4.0-next.1
+
+## @backstage/plugin-tech-insights@0.3.0-next.1
+
+### Minor Changes
+
+- f7e99ac1d8: Added the possibility to display check results of different types on a single scorecard.
+
+ - **BREAKING** Removed the `getScorecardsDefinition` method from the `TechInsightsApi` interface. Added the `getCheckResultRenderers` method that returns rendering components for given types.
+ - **BREAKING** The `CheckResultRenderer` type now exposes the `component` factory method that creates a React component used to display a result of a provided check result.
+ - The `TechInsightsClient` constructor accepts now the optional `renderers` parameter that can be used to inject a custom renderer.
+ - **BREAKING** The `title` parameter in the `EntityTechInsightsScorecardContent` and `EntityTechInsightsScorecardCard` components is now mandatory.
+ - The `jsonRulesEngineCheckResultRenderer` used to render `json-rules-engine` check results is exported.
+ - The `BooleanCheck` component that can be used to render other check results types is also exported.
+
+ If you were overriding the `getScorecardsDefinition` method to adjust the rendering of check results, you should now provide a custom renderer using `renderers` parameter in the `TechInsightsClient` class.
+
+ See the [README](https://github.com/backstage/backstage/tree/master/plugins/tech-insights/README.md) for more details.
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- 763fb81e82: Internal refactor to use more type safe code when dealing with route parameters.
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+
+## @backstage/app-defaults@1.0.6-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- Updated dependencies
+ - @backstage/core-app-api@1.1.0-next.1
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-permission-react@0.4.5-next.1
+
+## @backstage/backend-common@0.15.1-next.1
+
+### Patch Changes
+
+- c3c90280be: Added a keep-alive refresh loop to the `DatabaseManager`, keeping the connection
+ pool up.
+- c3c90280be: The options part of `DatabaseManager.fromConfig` now accepts an optional logger
+ field.
+- 60b85d8ade: Updated dependency `helmet` to `^6.0.0`.
+
+ Please note that these policies are no longer applied by default:
+
+ helmet.contentSecurityPolicy no longer sets block-all-mixed-content directive by default
+ helmet.expectCt is no longer set by default. It can, however, be explicitly enabled. It will be removed in Helmet 7.
+
+## @backstage/backend-test-utils@0.1.28-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.15.1-next.1
+ - @backstage/cli@0.19.0-next.1
+
+## @backstage/core-components@0.11.1-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- 37e8c5e128: The `RoutedTabs` component has been updated to be compatible with React Router v6 stable.
+- Updated dependencies
+ - @backstage/core-plugin-api@1.0.6-next.1
+
+## @backstage/core-plugin-api@1.0.6-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+
+## @backstage/create-app@0.4.31-next.1
+
+### Patch Changes
+
+- c1f1a4c760: The Backstage packages and plugins have all been updated to support React Router v6 stable. The `create-app` template has not been migrated yet, but if you want to migrate your own app or plugins, check out the [migration guide](https://backstage.io/docs/tutorials/react-router-stable-migration).
+- c3c90280be: The options part of `DatabaseManager.fromConfig` now accepts an optional logger
+ field. You may want to supply that logger in your backend initialization code to
+ ensure that you can get relevant logging data when things happen related to the
+ connection pool.
+
+ In `packages/backend/src/index.ts`:
+
+ ```diff
+ function makeCreateEnv(config: Config) {
+ const root = getRootLogger();
+ ...
+ - const databaseManager = DatabaseManager.fromConfig(config);
+ + const databaseManager = DatabaseManager.fromConfig(config, { logger: root });
+ ```
+
+## @backstage/dev-utils@1.0.6-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- Updated dependencies
+ - @backstage/app-defaults@1.0.6-next.1
+ - @backstage/core-app-api@1.1.0-next.1
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/test-utils@1.2.0-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+
+## @backstage/plugin-adr@0.2.1-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- b489de83b1: Fix parsing of ADR location which includes a trailing slash
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+ - @backstage/plugin-search-react@1.0.2-next.1
+
+## @backstage/plugin-adr-backend@0.2.1-next.1
+
+### Patch Changes
+
+- b489de83b1: Continue processing subsequent entities when an error occurs in collator
+- Updated dependencies
+ - @backstage/backend-common@0.15.1-next.1
+
+## @backstage/plugin-airbrake@0.3.9-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/dev-utils@1.0.6-next.1
+ - @backstage/test-utils@1.2.0-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+
+## @backstage/plugin-airbrake-backend@0.2.9-next.1
+
+### Patch Changes
+
+- 148568b5c2: Switched to using node-fetch instead of cross-fetch as is standard for our backend packages
+- Updated dependencies
+ - @backstage/backend-common@0.15.1-next.1
+
+## @backstage/plugin-allure@0.1.25-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- d669d89206: Minor API signatures cleanup
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+
+## @backstage/plugin-apache-airflow@0.2.2-next.1
+
+### Patch Changes
+
+- d669d89206: Minor API signatures cleanup
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+
+## @backstage/plugin-api-docs@0.8.9-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+ - @backstage/plugin-catalog@1.5.1-next.1
+
+## @backstage/plugin-app-backend@0.3.36-next.1
+
+### Patch Changes
+
+- d669d89206: Minor API signatures cleanup
+
+- 60b85d8ade: Updated dependency `helmet` to `^6.0.0`.
+
+ Please note that these policies are no longer applied by default:
+
+ helmet.contentSecurityPolicy no longer sets block-all-mixed-content directive by default
+ helmet.expectCt is no longer set by default. It can, however, be explicitly enabled. It will be removed in Helmet 7.
+
+- Updated dependencies
+ - @backstage/backend-common@0.15.1-next.1
+
+## @backstage/plugin-auth-node@0.2.5-next.1
+
+### Patch Changes
+
+- 9212439d15: Minor update to tests
+- Updated dependencies
+ - @backstage/backend-common@0.15.1-next.1
+
+## @backstage/plugin-azure-devops@0.2.0-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+
+## @backstage/plugin-badges@0.2.33-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+
+## @backstage/plugin-bazaar@0.1.24-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+ - @backstage/plugin-catalog@1.5.1-next.1
+ - @backstage/cli@0.19.0-next.1
+
+## @backstage/plugin-bitrise@0.1.36-next.1
+
+### Patch Changes
+
+- d669d89206: Minor API signatures cleanup
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+
+## @backstage/plugin-catalog@1.5.1-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- d669d89206: Minor API signatures cleanup
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+ - @backstage/plugin-search-react@1.0.2-next.1
+
+## @backstage/plugin-catalog-backend-module-aws@0.1.9-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.15.1-next.1
+ - @backstage/plugin-catalog-backend@1.4.0-next.1
+
+## @backstage/plugin-catalog-backend-module-azure@0.1.7-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.15.1-next.1
+ - @backstage/plugin-catalog-backend@1.4.0-next.1
+
+## @backstage/plugin-catalog-backend-module-bitbucket@0.2.3-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.15.1-next.1
+ - @backstage/plugin-catalog-backend@1.4.0-next.1
+
+## @backstage/plugin-catalog-backend-module-bitbucket-cloud@0.1.3-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-backend@1.4.0-next.1
+
+## @backstage/plugin-catalog-backend-module-bitbucket-server@0.1.1-next.1
+
+### Patch Changes
+
+- 148568b5c2: Switched to using node-fetch instead of cross-fetch as is standard for our backend packages
+- Updated dependencies
+ - @backstage/backend-common@0.15.1-next.1
+ - @backstage/plugin-catalog-backend@1.4.0-next.1
+
+## @backstage/plugin-catalog-backend-module-gerrit@0.1.4-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.15.1-next.1
+ - @backstage/plugin-catalog-backend@1.4.0-next.1
+
+## @backstage/plugin-catalog-backend-module-github@0.1.7-next.1
+
+### Patch Changes
+
+- 287a64bf97: Added the ability to configure the host for the `GitHubEntityProvider` to use against GitHub Enterprise
+- Updated dependencies
+ - @backstage/backend-common@0.15.1-next.1
+ - @backstage/plugin-catalog-backend@1.4.0-next.1
+
+## @backstage/plugin-catalog-backend-module-gitlab@0.1.7-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.15.1-next.1
+ - @backstage/plugin-catalog-backend@1.4.0-next.1
+
+## @backstage/plugin-catalog-backend-module-ldap@0.5.3-next.1
+
+### Patch Changes
+
+- 7fa54c3c77: Added ae-dir LDAP vendor to correctly extract DN.
+- Updated dependencies
+ - @backstage/plugin-catalog-backend@1.4.0-next.1
+
+## @backstage/plugin-catalog-backend-module-msgraph@0.4.2-next.1
+
+### Patch Changes
+
+- c1d32d2b76: Fixed a bug in the `MicrosoftGraphEntityProvider` that ignored the `userExpand` and `groupExpand` configuration parameters
+- Updated dependencies
+ - @backstage/plugin-catalog-backend@1.4.0-next.1
+
+## @backstage/plugin-catalog-backend-module-openapi@0.1.2-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/backend-common@0.15.1-next.1
+ - @backstage/plugin-catalog-backend@1.4.0-next.1
+
+## @backstage/plugin-catalog-graph@0.2.21-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+
+## @backstage/plugin-catalog-graphql@0.3.13-next.1
+
+### Patch Changes
+
+- d669d89206: Minor API signatures cleanup
+
+## @backstage/plugin-catalog-import@0.8.12-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+
+## @backstage/plugin-catalog-react@1.1.4-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- a6d551fad9: Properly handle free-text entity filtering in the case of empty tag arrays
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-permission-react@0.4.5-next.1
+
+## @backstage/plugin-cicd-statistics@0.1.11-next.1
+
+### Patch Changes
+
+- d669d89206: Minor API signatures cleanup
+- Updated dependencies
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+
+## @backstage/plugin-circleci@0.3.9-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- d669d89206: Minor API signatures cleanup
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+
+## @backstage/plugin-cloudbuild@0.3.9-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- 763fb81e82: Internal refactor to use more type safe code when dealing with route parameters.
+- d669d89206: Minor API signatures cleanup
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+
+## @backstage/plugin-code-climate@0.1.9-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- d669d89206: Minor API signatures cleanup
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+
+## @backstage/plugin-code-coverage@0.2.2-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+
+## @backstage/plugin-codescene@0.1.4-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+
+## @backstage/plugin-config-schema@0.1.32-next.1
+
+### Patch Changes
+
+- d669d89206: Minor API signatures cleanup
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+
+## @backstage/plugin-cost-insights@0.11.31-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- d669d89206: Minor API signatures cleanup
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+
+## @backstage/plugin-dynatrace@0.2.0-next.1
+
+### Patch Changes
+
+- 148568b5c2: Switched to using node-fetch instead of cross-fetch as is standard for our backend packages
+- d669d89206: Minor API signatures cleanup
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+
+## @backstage/plugin-explore@0.3.40-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- d669d89206: Minor API signatures cleanup
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+ - @backstage/plugin-explore-react@0.0.21-next.1
+
+## @backstage/plugin-explore-react@0.0.21-next.1
+
+### Patch Changes
+
+- d669d89206: Minor API signatures cleanup
+- Updated dependencies
+ - @backstage/core-plugin-api@1.0.6-next.1
+
+## @backstage/plugin-firehydrant@0.1.26-next.1
+
+### Patch Changes
+
+- d669d89206: Minor API signatures cleanup
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+
+## @backstage/plugin-gcalendar@0.3.5-next.1
+
+### Patch Changes
+
+- d669d89206: Minor API signatures cleanup
+- a69ac5b63a: Upgrade `react-query:3` to `@tanstack/react-query:4`
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+
+## @backstage/plugin-gcp-projects@0.3.28-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- d669d89206: Minor API signatures cleanup
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+
+## @backstage/plugin-git-release-manager@0.3.22-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+
+## @backstage/plugin-github-actions@0.5.9-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- d669d89206: Minor API signatures cleanup
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+
+## @backstage/plugin-github-deployments@0.1.40-next.1
+
+### Patch Changes
+
+- d669d89206: Minor API signatures cleanup
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+
+## @backstage/plugin-github-pull-requests-board@0.1.3-next.1
+
+### Patch Changes
+
+- d669d89206: Minor API signatures cleanup
+- 723113296b: Add optional `pullRequestLimit` prop to `EntityTeamPullRequestsCard` and `EntityTeamPullRequestsContent` to limit the number of PRs shown per repository. Excluding this prop will default the number of pull requests shown to 10 per repository (the existing functionality).
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+
+## @backstage/plugin-gitops-profiles@0.3.27-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- d669d89206: Minor API signatures cleanup
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+
+## @backstage/plugin-graphiql@0.2.41-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+
+## @backstage/plugin-graphql-backend@0.1.26-next.1
+
+### Patch Changes
+
+- d669d89206: Minor API signatures cleanup
+
+- 60b85d8ade: Updated dependency `helmet` to `^6.0.0`.
+
+ Please note that these policies are no longer applied by default:
+
+ helmet.contentSecurityPolicy no longer sets block-all-mixed-content directive by default
+ helmet.expectCt is no longer set by default. It can, however, be explicitly enabled. It will be removed in Helmet 7.
+
+- Updated dependencies
+ - @backstage/backend-common@0.15.1-next.1
+ - @backstage/plugin-catalog-graphql@0.3.13-next.1
+
+## @backstage/plugin-home@0.4.25-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- d669d89206: Minor API signatures cleanup
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+ - @backstage/plugin-stack-overflow@0.1.5-next.1
+
+## @backstage/plugin-ilert@0.1.35-next.1
+
+### Patch Changes
+
+- d669d89206: Minor API signatures cleanup
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+
+## @backstage/plugin-jenkins@0.7.8-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+
+## @backstage/plugin-jenkins-backend@0.1.26-next.1
+
+### Patch Changes
+
+- d669d89206: Minor API signatures cleanup
+- 69ec1cf39f: Updated dependency `jenkins` to `^1.0.0`.
+- Updated dependencies
+ - @backstage/plugin-auth-node@0.2.5-next.1
+ - @backstage/backend-common@0.15.1-next.1
+
+## @backstage/plugin-kafka@0.3.9-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+
+## @backstage/plugin-kubernetes@0.7.2-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+ - @backstage/plugin-kubernetes-common@0.4.2-next.0
+
+## @backstage/plugin-kubernetes-backend@0.7.2-next.1
+
+### Patch Changes
+
+- 60b85d8ade: Updated dependency `helmet` to `^6.0.0`.
+
+ Please note that these policies are no longer applied by default:
+
+ helmet.contentSecurityPolicy no longer sets block-all-mixed-content directive by default
+ helmet.expectCt is no longer set by default. It can, however, be explicitly enabled. It will be removed in Helmet 7.
+
+- Updated dependencies
+ - @backstage/plugin-auth-node@0.2.5-next.1
+ - @backstage/backend-common@0.15.1-next.1
+ - @backstage/plugin-kubernetes-common@0.4.2-next.0
+
+## @backstage/plugin-kubernetes-common@0.4.2-next.0
+
+### Patch Changes
+
+- d669d89206: Minor API signatures cleanup
+
+## @backstage/plugin-lighthouse@0.3.9-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+
+## @backstage/plugin-newrelic@0.3.27-next.1
+
+### Patch Changes
+
+- d669d89206: Minor API signatures cleanup
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+
+## @backstage/plugin-newrelic-dashboard@0.2.2-next.1
+
+### Patch Changes
+
+- d669d89206: Minor API signatures cleanup
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+
+## @backstage/plugin-org@0.5.9-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+
+## @backstage/plugin-pagerduty@0.5.2-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- d669d89206: Minor API signatures cleanup
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+
+## @backstage/plugin-periskop-backend@0.1.7-next.1
+
+### Patch Changes
+
+- 148568b5c2: Switched to using node-fetch instead of cross-fetch as is standard for our backend packages
+- Updated dependencies
+ - @backstage/backend-common@0.15.1-next.1
+
+## @backstage/plugin-permission-node@0.6.5-next.1
+
+### Patch Changes
+
+- 9212439d15: Minor update to tests
+- Updated dependencies
+ - @backstage/plugin-auth-node@0.2.5-next.1
+ - @backstage/backend-common@0.15.1-next.1
+
+## @backstage/plugin-permission-react@0.4.5-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+
+- 817f3196f6: **DEPRECATION**: The `PermissionedRoute` component has been deprecated in favor of the new `RequirePermission` component. This is because the usage pattern of `PermissionedRoute` is not compatible with React Router v6 stable.
+
+ Embed the type from `react-router` instead of exporting it directly.
+
+- Updated dependencies
+ - @backstage/core-plugin-api@1.0.6-next.1
+
+## @backstage/plugin-rollbar@0.4.9-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- d669d89206: Minor API signatures cleanup
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+
+## @backstage/plugin-rollbar-backend@0.1.33-next.1
+
+### Patch Changes
+
+- d669d89206: Minor API signatures cleanup
+- Updated dependencies
+ - @backstage/backend-common@0.15.1-next.1
+
+## @backstage/plugin-scaffolder@1.6.0-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- 763fb81e82: Internal refactor to use more type safe code when dealing with route parameters.
+- a66d44b72b: Fixing bug when the workspace would not be automatically saved when using `allowedOwners`
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+ - @backstage/plugin-permission-react@0.4.5-next.1
+
+## @backstage/plugin-search@1.0.2-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+ - @backstage/plugin-search-react@1.0.2-next.1
+
+## @backstage/plugin-search-backend-module-pg@0.4.0-next.1
+
+### Patch Changes
+
+- d669d89206: Minor API signatures cleanup
+- Updated dependencies
+ - @backstage/backend-common@0.15.1-next.1
+ - @backstage/plugin-search-backend-node@1.0.2-next.1
+
+## @backstage/plugin-search-backend-node@1.0.2-next.1
+
+### Patch Changes
+
+- a1124adf5e: Fixed bug in LunrSearchEngine where stopwords in title is causing in-doc search not working
+- Updated dependencies
+ - @backstage/backend-common@0.15.1-next.1
+
+## @backstage/plugin-search-react@1.0.2-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+
+## @backstage/plugin-sentry@0.4.2-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- d669d89206: Minor API signatures cleanup
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+
+## @backstage/plugin-shortcuts@0.3.1-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- d669d89206: Minor API signatures cleanup
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+
+## @backstage/plugin-splunk-on-call@0.3.33-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- d669d89206: Minor API signatures cleanup
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+
+## @backstage/plugin-stack-overflow@0.1.5-next.1
+
+### Patch Changes
+
+- a720c44070: Support showing HTML entity references from the API response before rendering the question title to the list component.
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-home@0.4.25-next.1
+
+## @backstage/plugin-stack-overflow-backend@0.1.5-next.1
+
+### Patch Changes
+
+- 79040f73f7: Now requests all questions available using pagination. Default max page is set to 100, with a configurable `maxPage` option on the collator.
+- 148568b5c2: Switched to using node-fetch instead of cross-fetch as is standard for our backend packages
+
+## @backstage/plugin-tech-insights-backend@0.5.2-next.1
+
+### Patch Changes
+
+- 12c6a07c2a: Changed the description of the `techdocsAnnotationFactName` fact.
+- Updated dependencies
+ - @backstage/backend-common@0.15.1-next.1
+
+## @backstage/plugin-tech-radar@0.5.16-next.1
+
+### Patch Changes
+
+- d669d89206: Minor API signatures cleanup
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+
+## @backstage/plugin-techdocs@1.3.2-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- 763fb81e82: Internal refactor to use more type safe code when dealing with route parameters.
+- 817f3196f6: Updated the `TechDocsReaderPage` to be compatible with React Router v6 stable.
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+ - @backstage/plugin-search-react@1.0.2-next.1
+ - @backstage/plugin-techdocs-react@1.0.4-next.1
+
+## @backstage/plugin-techdocs-addons-test-utils@1.0.4-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- Updated dependencies
+ - @backstage/core-app-api@1.1.0-next.1
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/test-utils@1.2.0-next.1
+ - @backstage/plugin-catalog@1.5.1-next.1
+ - @backstage/plugin-search-react@1.0.2-next.1
+ - @backstage/plugin-techdocs-react@1.0.4-next.1
+ - @backstage/plugin-techdocs@1.3.2-next.1
+
+## @backstage/plugin-techdocs-react@1.0.4-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+
+## @backstage/plugin-todo@0.2.11-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+
+## @backstage/plugin-user-settings@0.4.8-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- d669d89206: Minor API signatures cleanup
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+
+## @backstage/plugin-vault-backend@0.2.2-next.1
+
+### Patch Changes
+
+- 148568b5c2: Switched to using node-fetch instead of cross-fetch as is standard for our backend packages
+
+- 60b85d8ade: Updated dependency `helmet` to `^6.0.0`.
+
+ Please note that these policies are no longer applied by default:
+
+ helmet.contentSecurityPolicy no longer sets block-all-mixed-content directive by default
+ helmet.expectCt is no longer set by default. It can, however, be explicitly enabled. It will be removed in Helmet 7.
+
+- Updated dependencies
+ - @backstage/backend-common@0.15.1-next.1
+ - @backstage/backend-test-utils@0.1.28-next.1
+
+## @backstage/plugin-xcmetrics@0.2.29-next.1
+
+### Patch Changes
+
+- d669d89206: Minor API signatures cleanup
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+
+## example-app@0.2.75-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/app-defaults@1.0.6-next.1
+ - @backstage/core-app-api@1.1.0-next.1
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-airbrake@0.3.9-next.1
+ - @backstage/plugin-api-docs@0.8.9-next.1
+ - @backstage/plugin-azure-devops@0.2.0-next.1
+ - @backstage/plugin-badges@0.2.33-next.1
+ - @backstage/plugin-catalog-graph@0.2.21-next.1
+ - @backstage/plugin-catalog-import@0.8.12-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+ - @backstage/plugin-circleci@0.3.9-next.1
+ - @backstage/plugin-cloudbuild@0.3.9-next.1
+ - @backstage/plugin-code-coverage@0.2.2-next.1
+ - @backstage/plugin-cost-insights@0.11.31-next.1
+ - @backstage/plugin-explore@0.3.40-next.1
+ - @backstage/plugin-gcp-projects@0.3.28-next.1
+ - @backstage/plugin-github-actions@0.5.9-next.1
+ - @backstage/plugin-graphiql@0.2.41-next.1
+ - @backstage/plugin-home@0.4.25-next.1
+ - @backstage/plugin-jenkins@0.7.8-next.1
+ - @backstage/plugin-kafka@0.3.9-next.1
+ - @backstage/plugin-kubernetes@0.7.2-next.1
+ - @backstage/plugin-lighthouse@0.3.9-next.1
+ - @backstage/plugin-org@0.5.9-next.1
+ - @backstage/plugin-pagerduty@0.5.2-next.1
+ - @backstage/plugin-permission-react@0.4.5-next.1
+ - @backstage/plugin-rollbar@0.4.9-next.1
+ - @backstage/plugin-scaffolder@1.6.0-next.1
+ - @backstage/plugin-search-react@1.0.2-next.1
+ - @backstage/plugin-search@1.0.2-next.1
+ - @backstage/plugin-sentry@0.4.2-next.1
+ - @backstage/plugin-shortcuts@0.3.1-next.1
+ - @backstage/plugin-tech-insights@0.3.0-next.1
+ - @backstage/plugin-techdocs-react@1.0.4-next.1
+ - @backstage/plugin-techdocs@1.3.2-next.1
+ - @backstage/plugin-todo@0.2.11-next.1
+ - @backstage/plugin-user-settings@0.4.8-next.1
+ - @backstage/cli@0.19.0-next.1
+ - @backstage/plugin-dynatrace@0.2.0-next.1
+ - @backstage/plugin-apache-airflow@0.2.2-next.1
+ - @backstage/plugin-gcalendar@0.3.5-next.1
+ - @backstage/plugin-newrelic@0.3.27-next.1
+ - @backstage/plugin-newrelic-dashboard@0.2.2-next.1
+ - @backstage/plugin-tech-radar@0.5.16-next.1
+ - @backstage/plugin-stack-overflow@0.1.5-next.1
+
+## example-backend@0.2.75-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-auth-node@0.2.5-next.1
+ - @backstage/plugin-permission-node@0.6.5-next.1
+ - @backstage/backend-common@0.15.1-next.1
+ - @backstage/plugin-catalog-backend@1.4.0-next.1
+ - @backstage/plugin-auth-backend@0.16.0-next.1
+ - @backstage/plugin-scaffolder-backend@1.6.0-next.1
+ - @backstage/plugin-search-backend-node@1.0.2-next.1
+ - @backstage/plugin-app-backend@0.3.36-next.1
+ - @backstage/plugin-graphql-backend@0.1.26-next.1
+ - @backstage/plugin-jenkins-backend@0.1.26-next.1
+ - @backstage/plugin-rollbar-backend@0.1.33-next.1
+ - @backstage/plugin-search-backend-module-pg@0.4.0-next.1
+ - @backstage/plugin-kubernetes-backend@0.7.2-next.1
+ - @backstage/plugin-tech-insights-backend@0.5.2-next.1
+ - example-app@0.2.75-next.1
+
+## example-backend-next@0.0.3-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/plugin-catalog-backend@1.4.0-next.1
+ - @backstage/plugin-scaffolder-backend@1.6.0-next.1
+
+## techdocs-cli-embedded-app@0.2.74-next.1
+
+### Patch Changes
+
+- Updated dependencies
+ - @backstage/app-defaults@1.0.6-next.1
+ - @backstage/core-app-api@1.1.0-next.1
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/test-utils@1.2.0-next.1
+ - @backstage/plugin-catalog@1.5.1-next.1
+ - @backstage/plugin-techdocs-react@1.0.4-next.1
+ - @backstage/plugin-techdocs@1.3.2-next.1
+ - @backstage/cli@0.19.0-next.1
diff --git a/docs/tutorials/react-router-stable-migration.md b/docs/tutorials/react-router-stable-migration.md
new file mode 100644
index 0000000000..9636345116
--- /dev/null
+++ b/docs/tutorials/react-router-stable-migration.md
@@ -0,0 +1,205 @@
+---
+id: react-router-stable-migration
+title: React Router 6.0 Migration
+description: Guide for how to migrate from React Router v6 beta to React Router v6 stable
+---
+
+Backstage has for a long time been using `react-router` version `6.0.0-beta.0`.
+We adopted this unstable version because v6 had some new features that fit
+really well with Backstage, particularly relative routing. Because we jumped on
+this early and unstable version, we knew that we would at some point need a
+breaking migration to the stable version of `react-router` v6, which is the
+point we're at now!
+
+This migration is required but controlled by each app, meaning that you choose
+when you want to migrate your app. There will however be some point in the
+future where we drop support for the beta version of `react-router`, at which
+time you would be forced to migrate.
+
+The stable version of React Router v6 brings a number of improvements and bug
+fixes. Notably, the way that paths are resolved has been improved, which fixes a
+bug where paths like `/catalog` and `/catalog-import` could get confused.
+
+## Migration
+
+### Step 1 - Upgrade to Backstage 1.6
+
+The first Backstage release to support `react-router` v6 is `1.6`. You should upgrade to this version first before you start migrating. If you are an early bird and want to try out migration before that release, it is also shipped in `1.6.0-next.1`.
+
+### Step 2 - Move `react-router` to `peerDependencies`
+
+It's important that only one version of `react-router` is installed in the
+project at a time. Similar to how the `react` version is handled, all plugins
+and packages now declare a peer dependency on the React Router dependencies,
+rather than a direct dependency. The only exception to this is the app package
+(in `packages/app/package.json`), which has the direct dependencies that end up
+deciding what version of React Router that you are using in your project.
+
+Your internal packages might specify a dependency on `react-router` or `react-router-dom` in their `package.json`, and it's important that those are converted to `peerDependencies` so that we can control the version of `react-router` in the app `package.json`.
+
+You can automate this step by running the following command:
+
+```bash
+yarn backstage-cli migrate react-router-deps
+```
+
+For those interested in doing this manually, apply the below change to all `package.json` files except the one at `packages/app/package.json` or any other app packages. Skip moving any dependencies that don't already exist, and move both `dependencies` and `devDependencies`.
+
+```diff
+ dependencies {
+ ...
+- "react-router-dom": "^6.0.0-beta.0",
+- "react-router": "^6.0.0-beta.0"
+ },
+ peerDependencies: {
+ ...
++ "react-router-dom": "6.0.0-beta.0 || ^6.3.0",
++ "react-router": "6.0.0-beta.0 || ^6.3.0"
+ },
+```
+
+### Step 3 - Ensure that your external plugins are updated
+
+It's important that you also update your external plugins to their latest version as these will have to perform the same `peerDependencies` update.
+
+During this migration there may be external plugins that need updating. If you encounter any plugins outside of the `@backstage` scope that are incompatible with your installation, make sure to check for an existing issue or raise a new one at the plugin's GitHub repository.
+
+### Step 4 - Bump the React Router dependencies in your app.
+
+Now it's time to do the actual migration to the latest version of React Router. At this time of writing that is `6.3.0`, but that is of course a moving target.
+
+The first step is to modify `packages/app/package.json`:
+
+```diff
+- "react-router": "6.0.0-beta.0",
+- "react-router-dom": "6.0.0-beta.0",
++ "react-router": "^6.3.0",
++ "react-router-dom": "^6.3.0",
+```
+
+In case you happen to have multiple app packages in your project, apply the same change to all those packages.
+
+Once the change has been made, run `yarn install`, and then `yarn why react-router` to validate the installation. You should see the following line in the log as the only resulting entry:
+
+```
+=> Found "react-router@6.3.0"
+```
+
+If you see multiple entries, and especially `=> Found "react-router@6.0.0-beta.0"`, then your dependencies have not yet been fully migrated to support React Router v6 stable. Double check the steps above, using the information that the Yarn `why` command logged. Repeat the same process for `yarn why react-router-dom`.
+
+If you end up being stuck not being able to move your entire project to stable versions cleanly, then you can use Yarn `"resolutions"` overrides in your root `package.json`. Try to avoid this option as it may lead to hidden breakages at runtime, and verify any plugins that needed the override. A better option is likely to hold off migrating for a while until plugins have had time to be updated.
+
+### Step 5 - Breaking Changes
+
+For a new app created with `npx @backstage/create-app`, the above steps are all you need to do. If you have created internal plugins and customizations then be sure to review the breaking changes in the [React Router changelog](https://reactrouter.com/docs/en/v6/upgrading/reach#breaking-updates) and validate all parts of your app. We've summarized the most important breaking changes below.
+
+## Breaking Changes
+
+See [changelog](https://reactrouter.com/docs/en/v6/upgrading/reach#breaking-updates) for a full list of breaking changes. Below we highlight a couple of the most important ones.
+
+### Route paths
+
+`Route` components must always contain a `path` or `index` prop.
+
+```tsx
+
+ {/* Invalid */}
+ } />
+
+ {/* Valid */}
+ } />
+
+ {/* Valid but discouraged due to incompatibility with react-router beta */}
+ } />
+
+```
+
+Absolute route paths within each `Routes` element must now match their own location, meaning that the following is invalid:
+
+```tsx
+
+
+ {/* INVALID, must be "/foo/bar" or "bar" */}
+
+
+```
+
+### Routes and Route components
+
+The `Routes` and `Route` component both received a large related breaking changes. It is no longer possible
+to have anything but `Route` elements and React fragments be a child of a `Routes` element. This means that
+structures like these:
+
+```tsx
+
+
+ ...
+
+```
+
+need to be migrated to this:
+
+```tsx
+
+ } />
+ ...
+
+```
+
+Somewhat related to the `Routes` change, it is no longer possible to render a
+`Route` element by itself, outside of a `Routes` wrapper. Previously, rendering
+such a `Route` element would cause the contents of its `element` prop to be
+rendered instead, but it will now throw an error.
+
+### `PermissionedRoute`
+
+Because of the above change, the `PermissionedRoute` component no longer works in all situations with React Router v6 stable. It has been deprecated in favor of the new `RequirePermission` component, which can be placed anywhere in order to perform a permissions check.
+
+It's crucial that you update to `RequirePermission` at the same time as you update to React Router v6 stable as the `PermissionedRoute` component will no longer function.
+
+```diff
+- }
++
++
++
++ }
+ />
+```
+
+### `` component
+
+When migrating over to React Router v6 stable, you might also see browser console warnings for the `Navigate` component. This will need to be wrapped up in a `Route` component with the `Navigate` component in the `element` prop.
+
+```diff
+-
++ } />
+```
+
+### `NavLink`
+
+The `NavLink` component no longer has the `activeClassName` and `activeStyle` props. Instead, the `className` and `style` props accept a callback that receives a boolean indicating whether the link is active.
+
+## For Plugin Authors
+
+There are a few things to keep in mind when migrating a published plugin. You of course need to make sure that dependencies on React Router are moved to `peerDependencies` as described above.
+In addition, you need to make sure that your plugin truly is compatible with both versions of React Router at runtime. To help you achieve that, you can follow these additional guidelines:
+
+- Bump the version of `react-router` and `react-router-dom` in your own project to use the stable version. Place them in `devDependencies` if your plugin is a single package project. The stable version is more strict, so this is the better baseline to work from.
+- Make sure all `Route` elements have a `path` prop. Do not use the new `index` props, as it is not supported by the beta version. Use `path="/"` for the index routes within a `Routes`.
+- If you are using `NavLink`, use both the new and old APIs simultaneously, and work around any TypeScript errors.
+
+## Troubleshooting
+
+Check the browser console for React Router related error messages.
+
+Check `yarn.lock` for packages depending on older versions of `react-router`:
+
+```bash
+yarn why react-router
+```
diff --git a/microsite/blog/2020-06-22-backstage-service-catalog-alpha.md b/microsite/blog/2020-06-22-backstage-service-catalog-alpha.md
index 4519f16d96..7f8fe01e11 100644
--- a/microsite/blog/2020-06-22-backstage-service-catalog-alpha.md
+++ b/microsite/blog/2020-06-22-backstage-service-catalog-alpha.md
@@ -51,4 +51,4 @@ As with most alpha releases, you should expect things to change quite a lot unti
If you have feedback or questions, please open a [GitHub issue](https://github.com/backstage/backstage/issues), ping us on [Discord chat](https://discord.gg/EBHEGzX) or send us an email at [backstage-interest@spotify.com](mailto:backstage-interest@spotify.com) 🙏
-To get regular product updates and news about the Backstage community, sign up for the [Backstage newsletter](https://mailchi.mp/spotify/backstage-community).
+To get regular product updates and news about the Backstage community, sign up for the [Backstage newsletter](https://info.backstage.spotify.com/newsletter_subscribe).
diff --git a/microsite/blog/2020-08-05-announcing-backstage-software-templates.md b/microsite/blog/2020-08-05-announcing-backstage-software-templates.md
index 0bf8d7e581..18bfa64c19 100644
--- a/microsite/blog/2020-08-05-announcing-backstage-software-templates.md
+++ b/microsite/blog/2020-08-05-announcing-backstage-software-templates.md
@@ -75,4 +75,4 @@ We have learned that one of the keys to getting these standards adopted is to ke
If you have feedback or questions, please open a [GitHub issue](https://github.com/backstage/backstage/issues), ping us on [Discord chat](https://discord.gg/EBHEGzX) or send us an email at [backstage-interest@spotify.com](mailto:backstage-interest@spotify.com) 🙏
-To get regular product updates and news about the Backstage community, sign up for the [Backstage newsletter](https://mailchi.mp/spotify/backstage-community).
+To get regular product updates and news about the Backstage community, sign up for the [Backstage newsletter](https://info.backstage.spotify.com/newsletter_subscribe).
diff --git a/microsite/blog/2020-09-23-backstage-cncf-sandbox.md b/microsite/blog/2020-09-23-backstage-cncf-sandbox.md
index 48a67e878c..70ef06f242 100644
--- a/microsite/blog/2020-09-23-backstage-cncf-sandbox.md
+++ b/microsite/blog/2020-09-23-backstage-cncf-sandbox.md
@@ -18,4 +18,4 @@ The Backstage community is healthy and growing quickly. Over [130 people](https:
We’re excited to embark on this journey with the CNCF community. There’s so much great tech being built here, and it’s about time we share it to build even greater products, together. Entering into the CNCF Sandbox is just the first step. We are committed to working with the community to bring Backstage through the Incubation step, and finally all the way to becoming a Graduated, top-level project.
-Thanks to everyone for your support so far. We hope you [join us](https://mailchi.mp/spotify/backstage-community) in this next chapter of Backstage's journey. If you have questions or feedback, feel free to [email](mailto:backstage-interest@spotify.com) me directly.
+Thanks to everyone for your support so far. We hope you [join us](https://info.backstage.spotify.com/newsletter_subscribe) in this next chapter of Backstage's journey. If you have questions or feedback, feel free to [email](mailto:backstage-interest@spotify.com) me directly.
diff --git a/microsite/blog/2021-06-22-spotify-backstage-is-growing.md b/microsite/blog/2021-06-22-spotify-backstage-is-growing.md
index 2507192a4a..a12ddf7443 100644
--- a/microsite/blog/2021-06-22-spotify-backstage-is-growing.md
+++ b/microsite/blog/2021-06-22-spotify-backstage-is-growing.md
@@ -49,7 +49,7 @@ We’ve launched a new website at: [backstage.spotify.com](https://backstage.spo
You’ll find a high-level introduction to the platform, tips and tricks tested by Spotify to accelerate developer effectiveness, and access to a group of partners that have scaled Backstage for numerous adopters. You can also use the site to book product overviews, demos, and technical deep dives with members of the Spotify team.
-We will continue to post important product announcements, technical documentation, feature demos, and community news here on Backstage.io. ([Subscribe to the newsletter](https://mailchi.mp/spotify/backstage-community) to stay up to date.) And both contributors and adopting companies can continue to find around-the-clock/around-the-world technical support on [GitHub](https://github.com/backstage/backstage) and [Discord](https://discord.gg/MUpMjP2).
+We will continue to post important product announcements, technical documentation, feature demos, and community news here on Backstage.io. ([Subscribe to the newsletter](https://info.backstage.spotify.com/newsletter_subscribe) to stay up to date.) And both contributors and adopting companies can continue to find around-the-clock/around-the-world technical support on [GitHub](https://github.com/backstage/backstage) and [Discord](https://discord.gg/MUpMjP2).
## Separate community sessions for adopters and contributors
diff --git a/microsite/blog/2021-09-30-50-public-adopters.md b/microsite/blog/2021-09-30-50-public-adopters.md
index 3e96cade69..6a4652b99f 100644
--- a/microsite/blog/2021-09-30-50-public-adopters.md
+++ b/microsite/blog/2021-09-30-50-public-adopters.md
@@ -41,5 +41,5 @@ If you are a Backstage enthusiast, please [join me][news] and the entire Backsta
[da]: https://medium.com/dazn-tech/developer-experience-dx-at-dazn-e6de9a0208d2
[ex]: https://backstage.spotify.com/blog/community-session/firehydrant-expedia-loblaw/
[plugins]: https://backstage.io/plugins
-[news]: https://mailchi.mp/spotify/backstage-community
+[news]: https://info.backstage.spotify.com/newsletter_subscribe
[gh]: https://github.com/backstage/backstage/blob/master/ADOPTERS.md
diff --git a/microsite/blog/2022-08-23-backstage-security-audit.md b/microsite/blog/2022-08-23-backstage-security-audit.md
new file mode 100644
index 0000000000..d81b9b1cf6
--- /dev/null
+++ b/microsite/blog/2022-08-23-backstage-security-audit.md
@@ -0,0 +1,41 @@
+---
+# prettier-ignore
+title: Backstage Security Audit & Updates
+author: Patrik Oldsberg, Spotify
+authorURL: https://github.com/Rugvip
+---
+
+**TL;DR** Backstage’s security posture continues to mature! Today, we’re releasing a report from an independent security audit and the first version of the Backstage Threat Model.
+
+
+
+As an [Incubating project](https://www.cncf.io/blog/2022/03/15/backstage-project-joins-the-cncf-incubator/) within the [Cloud Native Computing Foundation (CNCF)](https://www.cncf.io/), Backstage was fortunate enough to take advantage of a sponsored security audit. The [Open Source Technology Improvement Fund (OSTIF)](https://ostif.org/) sponsored the audit as part of its ongoing efforts to secure the open source software ecosystem, and the audit itself was performed by [X41 D-Sec](https://x41-dsec.de/). Our goal with the audit was to evaluate and improve Backstage’s security posture, focusing on the core Backstage framework and plugins.
+
+
+
+## Report Findings and Fixes
+
+The security audit and improvements concluded earlier this month, on August 18th. The audit **findings** totalled two critical, two high, five medium, and three low severity vulnerabilities, alongside 15 side findings with no direct security impact. As of the [Backstage 1.5 release](https://backstage.io/docs/releases/v1.5.0), eight out of the 12 main findings and many of the side findings are fully remedied. If you are a few versions behind there’s no need to worry though, most fixes were included in the 1.3 release.
+
+Out of the four findings that have yet to be fixed, three are related to rate limiting or internal DoS concerns. With the introduction of the Backstage Threat Model (more on that below), Backstage’s positioning states that this is outside the scope of the security concerns of Backstage. Rather, we trust internal users of Backstage to not intentionally sabotage the availability of the service. This is not to say that we will never aim to get these findings addressed, but we have pushed them to be potential future improvements as we focus our near-term efforts on improving the product in other ways.
+
+The last outstanding finding is to build out the capabilities of our service-to-service auth system. This is an area where the audit identified a couple of missing pieces in our early version of the implementation. We have since closed the gap by introducing token expiration, and will continue to work on this as we open up for more complex and hardened deployment patterns through the [evolution of the backend system](https://github.com/backstage/backstage/issues/11611).
+
+Another important finding was the potential for confusion and user impersonation due to most authentication providers having sign-in enabled by default. This finding reinforced our decision to switch sign-in to being disabled by default for all authentication providers, which was part of the [1.1 release](https://backstage.io/docs/releases/v1.1.0).
+
+Perhaps the most important outcome of this audit is that it helped us focus our efforts to keep improving the security of Backstage. It identified priority areas in both implementation and documentation for us going forward. One particular area that was pointed out in a finding is the documentation around the security model of Backstage deployment. There have been several efforts to highlight this in documentation, but it is still not clear enough. What we’ve been lacking is documentation that is completely dedicated towards detailing the security concerns of Backstage. That is why in addition to publishing the security audit report, we are also introducing the [Backstage Threat Model](https://backstage.io/docs/overview/threat-model).
+
+## Introducing the Backstage Threat Model
+
+The existing Backstage documentation has many security concerns interwoven within its text, but to find them all, you need to spend a lot of time reading. We previously lacked a one-stop-shop for readers that are interested in the security model and concerns of Backstage. So, we are happy to introduce the [Backstage Threat Model](https://backstage.io/docs/overview/threat-model), which closes this gap. The Threat Model outlines key security considerations for operators, developers, and security researchers. It is a living document that will evolve and expand alongside the Backstage project.
+
+The threat model document covers the trust model and roles involved in a typical Backstage setup, the responsibilities that fall on integrators of Backstage, and common configuration concerns across all Backstage projects. Beyond these three topics, it also dives deeper into a number of core features. The `auth`, `catalog`, `scaffolder`, and `techdocs` plugins are all covered separately with their individual security concerns.
+
+We’d like to point out a few key parts in case you are in a rush. Be sure to familiarize yourself with the integrator's responsibility to protect the Backstage installation from unauthorized access. If you ingest organizational data into the catalog and use that to sign in users, you’ll also want to check out the first halves of the authentication and catalog sections.
+
+## Links and References
+
+- [Full Audit Report](assets/22-08-23/X41-Backstage-Audit-2022.pdf)
+- [Backstage Security Policy](https://github.com/backstage/backstage/blob/master/SECURITY.md)
+
+On behalf of the Backstage maintainers and community: thanks to the CNCF, OSTIF, and X41 D-Sec for the opportunity to improve the project.
diff --git a/microsite/blog/assets/22-08-23/X41-Backstage-Audit-2022.pdf b/microsite/blog/assets/22-08-23/X41-Backstage-Audit-2022.pdf
new file mode 100644
index 0000000000..e915ef81df
Binary files /dev/null and b/microsite/blog/assets/22-08-23/X41-Backstage-Audit-2022.pdf differ
diff --git a/microsite/blog/assets/22-08-23/backstage-security-audit.png b/microsite/blog/assets/22-08-23/backstage-security-audit.png
new file mode 100644
index 0000000000..d45d43168c
Binary files /dev/null and b/microsite/blog/assets/22-08-23/backstage-security-audit.png differ
diff --git a/microsite/core/Footer.js b/microsite/core/Footer.js
index f0917d3255..327e42f38a 100644
--- a/microsite/core/Footer.js
+++ b/microsite/core/Footer.js
@@ -48,7 +48,7 @@ class Footer extends React.Component {
Community Sessions
-
+
Subscribe to our newsletter
CNCF Incubation
diff --git a/microsite/core/HubSpotForm.js b/microsite/core/HubSpotForm.js
new file mode 100644
index 0000000000..2905909ffe
--- /dev/null
+++ b/microsite/core/HubSpotForm.js
@@ -0,0 +1,40 @@
+import React from 'react';
+
+export class HubSpotForm extends React.Component {
+ render() {
+ return (
+ <>
+
+ }
+ children={content
}
/>,
);
@@ -50,9 +50,9 @@ describe('PermissionedRoute', () => {
mockUsePermission.mockReturnValue({ loading: false, allowed: true });
const { getByText } = await renderInTestApp(
- content}
+ children={content
}
/>,
);
@@ -64,22 +64,22 @@ describe('PermissionedRoute', () => {
await expect(
renderInTestApp(
- content}
+ children={content
}
/>,
),
- ).rejects.toThrowError('Reached NotFound Page');
+ ).rejects.toThrow('Reached NotFound Page');
});
it('Renders custom error page if not authorized', async () => {
mockUsePermission.mockReturnValue({ loading: false, allowed: false });
const { getByText } = await renderInTestApp(
- content}
- errorComponent={Custom Error
}
+ children={content
}
+ errorPage={Custom Error
}
/>,
);
diff --git a/plugins/permission-react/src/components/RequirePermission.tsx b/plugins/permission-react/src/components/RequirePermission.tsx
new file mode 100644
index 0000000000..801eb0fe24
--- /dev/null
+++ b/plugins/permission-react/src/components/RequirePermission.tsx
@@ -0,0 +1,82 @@
+/*
+ * Copyright 2021 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import React, { ReactNode } from 'react';
+import { useApp } from '@backstage/core-plugin-api';
+import { usePermission } from '../hooks';
+import {
+ isResourcePermission,
+ Permission,
+ ResourcePermission,
+} from '@backstage/plugin-permission-common';
+
+/**
+ * Properties for {@link RequirePermission}
+ *
+ * @public
+ */
+export type RequirePermissionProps = (
+ | {
+ permission: Exclude;
+ resourceRef?: never;
+ }
+ | {
+ permission: ResourcePermission;
+ resourceRef: string | undefined;
+ }
+) & {
+ /**
+ * The error page to be displayed if the user is not allowed access.
+ *
+ * Defaults to the `NotFoundErrorPage` app component.
+ */
+ errorPage?: ReactNode;
+ children: ReactNode;
+};
+
+/**
+ * A boundary that only renders its child elements if the user has the specified permission.
+ *
+ * While loading, nothing will be rendered. If the user does not have
+ * permission, the `errorPage` element will be rendered, falling back
+ * to the `NotFoundErrorPage` app component if no `errorPage` is provider.
+ *
+ * @public
+ */
+export function RequirePermission(
+ props: RequirePermissionProps,
+): JSX.Element | null {
+ const { permission, resourceRef } = props;
+ const permissionResult = usePermission(
+ isResourcePermission(permission)
+ ? { permission, resourceRef }
+ : { permission },
+ );
+ const app = useApp();
+
+ if (permissionResult.loading) {
+ return null;
+ } else if (permissionResult.allowed) {
+ return <>{props.children}>;
+ }
+
+ if (props.errorPage) {
+ return <>{props.errorPage}>;
+ }
+ // If no explicit error element is provided, the not found page is used as fallback.
+ const { NotFoundErrorPage } = app.getComponents();
+ return ;
+}
diff --git a/plugins/permission-react/src/components/index.ts b/plugins/permission-react/src/components/index.ts
index 05f13bca81..e443ad0b5e 100644
--- a/plugins/permission-react/src/components/index.ts
+++ b/plugins/permission-react/src/components/index.ts
@@ -15,3 +15,5 @@
*/
export { PermissionedRoute } from './PermissionedRoute';
+export { RequirePermission } from './RequirePermission';
+export type { RequirePermissionProps } from './RequirePermission';
diff --git a/plugins/permission-react/src/hooks/usePermission.test.tsx b/plugins/permission-react/src/hooks/usePermission.test.tsx
index 2862b10f96..cbf3b22ae7 100644
--- a/plugins/permission-react/src/hooks/usePermission.test.tsx
+++ b/plugins/permission-react/src/hooks/usePermission.test.tsx
@@ -83,6 +83,6 @@ describe('usePermission', () => {
const { findByText } = renderComponent(mockPermissionApi);
expect(mockPermissionApi.authorize).toHaveBeenCalledWith({ permission });
- await expect(findByText('content')).rejects.toThrowError();
+ await expect(findByText('content')).rejects.toThrow();
});
});
diff --git a/plugins/proxy-backend/package.json b/plugins/proxy-backend/package.json
index 8c5ec006a1..6441913090 100644
--- a/plugins/proxy-backend/package.json
+++ b/plugins/proxy-backend/package.json
@@ -32,7 +32,7 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.15.1-next.0",
+ "@backstage/backend-common": "^0.15.1-next.1",
"@backstage/config": "^1.0.1",
"@types/express": "^4.17.6",
"express": "^4.17.1",
@@ -46,7 +46,7 @@
"yup": "^0.32.9"
},
"devDependencies": {
- "@backstage/cli": "^0.18.2-next.0",
+ "@backstage/cli": "^0.19.0-next.1",
"@types/http-proxy-middleware": "^0.19.3",
"@types/supertest": "^2.0.8",
"@types/uuid": "^8.0.0",
diff --git a/plugins/proxy-backend/src/service/router.test.ts b/plugins/proxy-backend/src/service/router.test.ts
index 3bfcc889f4..afe78aebeb 100644
--- a/plugins/proxy-backend/src/service/router.test.ts
+++ b/plugins/proxy-backend/src/service/router.test.ts
@@ -392,9 +392,9 @@ describe('buildMiddleware', () => {
it('rejects malformed target URLs', async () => {
expect(() =>
buildMiddleware('/proxy', logger, '/test', 'backstage.io'),
- ).toThrowError(/Proxy target is not a valid URL/);
+ ).toThrow(/Proxy target is not a valid URL/);
expect(() =>
buildMiddleware('/proxy', logger, '/test', { target: 'backstage.io' }),
- ).toThrowError(/Proxy target is not a valid URL/);
+ ).toThrow(/Proxy target is not a valid URL/);
});
});
diff --git a/plugins/rollbar-backend/CHANGELOG.md b/plugins/rollbar-backend/CHANGELOG.md
index cb28aeb015..4af6e8ec5c 100644
--- a/plugins/rollbar-backend/CHANGELOG.md
+++ b/plugins/rollbar-backend/CHANGELOG.md
@@ -1,5 +1,13 @@
# @backstage/plugin-rollbar-backend
+## 0.1.33-next.1
+
+### Patch Changes
+
+- d669d89206: Minor API signatures cleanup
+- Updated dependencies
+ - @backstage/backend-common@0.15.1-next.1
+
## 0.1.33-next.0
### Patch Changes
diff --git a/plugins/rollbar-backend/package.json b/plugins/rollbar-backend/package.json
index 99fd5d81e8..f900668311 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.33-next.0",
+ "version": "0.1.33-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -34,7 +34,7 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.15.1-next.0",
+ "@backstage/backend-common": "^0.15.1-next.1",
"@backstage/config": "^1.0.1",
"@types/express": "^4.17.6",
"camelcase-keys": "^7.0.1",
@@ -50,8 +50,8 @@
"yn": "^4.0.0"
},
"devDependencies": {
- "@backstage/backend-test-utils": "^0.1.28-next.0",
- "@backstage/cli": "^0.18.2-next.0",
+ "@backstage/backend-test-utils": "^0.1.28-next.1",
+ "@backstage/cli": "^0.19.0-next.1",
"@types/supertest": "^2.0.8",
"msw": "^0.45.0",
"supertest": "^6.1.3"
diff --git a/plugins/rollbar/CHANGELOG.md b/plugins/rollbar/CHANGELOG.md
index cd9f73bfe0..f74ef5c104 100644
--- a/plugins/rollbar/CHANGELOG.md
+++ b/plugins/rollbar/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-rollbar
+## 0.4.9-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- d669d89206: Minor API signatures cleanup
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+
## 0.4.9-next.0
### Patch Changes
diff --git a/plugins/rollbar/package.json b/plugins/rollbar/package.json
index d31dd16bcb..4f0ee1aaa8 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.9-next.0",
+ "version": "0.4.9-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -36,27 +36,27 @@
},
"dependencies": {
"@backstage/catalog-model": "^1.1.0",
- "@backstage/core-components": "^0.11.1-next.0",
- "@backstage/core-plugin-api": "^1.0.6-next.0",
- "@backstage/plugin-catalog-react": "^1.1.4-next.0",
+ "@backstage/core-components": "^0.11.1-next.1",
+ "@backstage/core-plugin-api": "^1.0.6-next.1",
+ "@backstage/plugin-catalog-react": "^1.1.4-next.1",
"@backstage/theme": "^0.2.16",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.57",
"lodash": "^4.17.21",
- "react-router": "6.0.0-beta.0",
- "react-router-dom": "6.0.0-beta.0",
"react-sparklines": "^1.7.0",
"react-use": "^17.2.4"
},
"peerDependencies": {
- "react": "^16.13.1 || ^17.0.0"
+ "react": "^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"
},
"devDependencies": {
- "@backstage/cli": "^0.18.2-next.0",
- "@backstage/core-app-api": "^1.0.6-next.0",
- "@backstage/dev-utils": "^1.0.6-next.0",
- "@backstage/test-utils": "^1.1.4-next.0",
+ "@backstage/cli": "^0.19.0-next.1",
+ "@backstage/core-app-api": "^1.1.0-next.1",
+ "@backstage/dev-utils": "^1.0.6-next.1",
+ "@backstage/test-utils": "^1.2.0-next.1",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/react-hooks": "^8.0.0",
diff --git a/plugins/scaffolder-backend-module-cookiecutter/package.json b/plugins/scaffolder-backend-module-cookiecutter/package.json
index 94f5233fca..d33ed89eed 100644
--- a/plugins/scaffolder-backend-module-cookiecutter/package.json
+++ b/plugins/scaffolder-backend-module-cookiecutter/package.json
@@ -23,10 +23,10 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.15.1-next.0",
+ "@backstage/backend-common": "^0.15.1-next.1",
"@backstage/errors": "^1.1.0",
"@backstage/integration": "^1.3.1-next.0",
- "@backstage/plugin-scaffolder-backend": "^1.6.0-next.0",
+ "@backstage/plugin-scaffolder-backend": "^1.6.0-next.1",
"@backstage/config": "^1.0.1",
"@backstage/types": "^1.0.0",
"command-exists": "^1.2.9",
@@ -35,7 +35,7 @@
"yn": "^4.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.18.2-next.0",
+ "@backstage/cli": "^0.19.0-next.1",
"@types/fs-extra": "^9.0.1",
"@types/mock-fs": "^4.13.0",
"@types/jest": "^26.0.7",
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 3b235b9650..23d343f354 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
@@ -139,7 +139,7 @@ describe('fetch:cookiecutter', () => {
it('should throw an error when copyWithoutRender is not an array', async () => {
(mockContext.input as any).copyWithoutRender = 'not an array';
- await expect(action.handler(mockContext)).rejects.toThrowError(
+ await expect(action.handler(mockContext)).rejects.toThrow(
/Fetch action input copyWithoutRender must be an Array/,
);
});
@@ -147,7 +147,7 @@ describe('fetch:cookiecutter', () => {
it('should throw an error when extensions is not an array', async () => {
(mockContext.input as any).extensions = 'not an array';
- await expect(action.handler(mockContext)).rejects.toThrowError(
+ await expect(action.handler(mockContext)).rejects.toThrow(
/Fetch action input extensions must be an Array/,
);
});
diff --git a/plugins/scaffolder-backend-module-rails/package.json b/plugins/scaffolder-backend-module-rails/package.json
index 79c3c4cd89..2b54f59a77 100644
--- a/plugins/scaffolder-backend-module-rails/package.json
+++ b/plugins/scaffolder-backend-module-rails/package.json
@@ -24,8 +24,8 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.15.1-next.0",
- "@backstage/plugin-scaffolder-backend": "^1.6.0-next.0",
+ "@backstage/backend-common": "^0.15.1-next.1",
+ "@backstage/plugin-scaffolder-backend": "^1.6.0-next.1",
"@backstage/config": "^1.0.1",
"@backstage/errors": "^1.1.0",
"@backstage/integration": "^1.3.1-next.0",
@@ -34,7 +34,7 @@
"fs-extra": "^10.0.1"
},
"devDependencies": {
- "@backstage/cli": "^0.18.2-next.0",
+ "@backstage/cli": "^0.19.0-next.1",
"@types/jest": "^26.0.7",
"@types/node": "^16.11.26",
"@types/command-exists": "^1.2.0",
diff --git a/plugins/scaffolder-backend/CHANGELOG.md b/plugins/scaffolder-backend/CHANGELOG.md
index 609afd2c9b..8d71ea0c30 100644
--- a/plugins/scaffolder-backend/CHANGELOG.md
+++ b/plugins/scaffolder-backend/CHANGELOG.md
@@ -1,5 +1,18 @@
# @backstage/plugin-scaffolder-backend
+## 1.6.0-next.1
+
+### Minor Changes
+
+- 7db9613671: Added `projectId` for gitlab projects to be displayed in the `gitlab:publish` output
+
+### Patch Changes
+
+- 0d8d650e32: Applied the fix from version 1.5.1 of this package, which is part of the v1.5.1 release of Backstage.
+- Updated dependencies
+ - @backstage/backend-common@0.15.1-next.1
+ - @backstage/plugin-catalog-backend@1.4.0-next.1
+
## 1.6.0-next.0
### Minor Changes
@@ -34,6 +47,12 @@
- @backstage/plugin-scaffolder-common@1.2.0-next.0
- @backstage/plugin-catalog-node@1.0.2-next.0
+## 1.5.1
+
+### Patch Changes
+
+- Fix minimum required version for `vm2`
+
## 1.5.0
### Minor Changes
diff --git a/plugins/scaffolder-backend/package.json b/plugins/scaffolder-backend/package.json
index b8f09ff0dc..6e18cd462f 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.6.0-next.0",
+ "version": "1.6.0-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -35,14 +35,14 @@
"build:assets": "node scripts/build-nunjucks.js"
},
"dependencies": {
- "@backstage/backend-common": "^0.15.1-next.0",
+ "@backstage/backend-common": "^0.15.1-next.1",
"@backstage/catalog-client": "^1.0.5-next.0",
"@backstage/catalog-model": "^1.1.0",
"@backstage/config": "^1.0.1",
"@backstage/errors": "^1.1.0",
"@backstage/integration": "^1.3.1-next.0",
"@backstage/plugin-auth-node": "^0.2.5-next.0",
- "@backstage/plugin-catalog-backend": "^1.3.2-next.0",
+ "@backstage/plugin-catalog-backend": "^1.4.0-next.1",
"@backstage/plugin-scaffolder-common": "^1.2.0-next.0",
"@backstage/backend-plugin-api": "^0.1.2-next.0",
"@backstage/plugin-catalog-node": "^1.0.2-next.0",
@@ -75,13 +75,13 @@
"uuid": "^8.2.0",
"winston": "^3.2.1",
"yaml": "^2.0.0",
- "vm2": "^3.9.6",
+ "vm2": "^3.9.11",
"zen-observable": "^0.8.15",
"zod": "^3.11.6"
},
"devDependencies": {
- "@backstage/backend-test-utils": "^0.1.28-next.0",
- "@backstage/cli": "^0.18.2-next.0",
+ "@backstage/backend-test-utils": "^0.1.28-next.1",
+ "@backstage/cli": "^0.19.0-next.1",
"@types/command-exists": "^1.2.0",
"@types/fs-extra": "^9.0.1",
"@types/git-url-parse": "^9.0.0",
diff --git a/plugins/scaffolder-backend/src/processor/ScaffolderEntitiesProcessor.test.ts b/plugins/scaffolder-backend/src/processor/ScaffolderEntitiesProcessor.test.ts
index c5278edce3..db817af569 100644
--- a/plugins/scaffolder-backend/src/processor/ScaffolderEntitiesProcessor.test.ts
+++ b/plugins/scaffolder-backend/src/processor/ScaffolderEntitiesProcessor.test.ts
@@ -58,8 +58,8 @@ describe('ScaffolderEntitiesProcessor', () => {
await processor.postProcessEntity(mockEntity, mockLocation, emit);
- expect(emit).toBeCalledTimes(2);
- expect(emit).toBeCalledWith({
+ expect(emit).toHaveBeenCalledTimes(2);
+ expect(emit).toHaveBeenCalledWith({
type: 'relation',
relation: {
source: { kind: 'Group', namespace: 'default', name: 'o' },
@@ -67,7 +67,7 @@ describe('ScaffolderEntitiesProcessor', () => {
target: { kind: 'Template', namespace: 'default', name: 'n' },
},
});
- expect(emit).toBeCalledWith({
+ expect(emit).toHaveBeenCalledWith({
type: 'relation',
relation: {
source: { kind: 'Template', namespace: 'default', name: 'n' },
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/register.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/register.test.ts
index d257bced38..c718f3906e 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/register.test.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/register.test.ts
@@ -107,11 +107,11 @@ describe('catalog:register', () => {
{},
);
- expect(mockContext.output).toBeCalledWith(
+ expect(mockContext.output).toHaveBeenCalledWith(
'entityRef',
'component:default/test',
);
- expect(mockContext.output).toBeCalledWith(
+ expect(mockContext.output).toHaveBeenCalledWith(
'catalogInfoUrl',
'http://foo/var',
);
@@ -160,7 +160,7 @@ describe('catalog:register', () => {
catalogInfoUrl: 'http://foo/var',
},
});
- expect(mockContext.output).toBeCalledWith(
+ expect(mockContext.output).toHaveBeenCalledWith(
'entityRef',
'component:default/test',
);
@@ -202,7 +202,10 @@ describe('catalog:register', () => {
catalogInfoUrl: 'http://foo/var',
},
});
- expect(mockContext.output).toBeCalledWith('entityRef', 'api:default/test');
+ expect(mockContext.output).toHaveBeenCalledWith(
+ 'entityRef',
+ 'api:default/test',
+ );
});
it('should return entityRef with the first entity if no non-generated entities can be found', async () => {
@@ -234,7 +237,7 @@ describe('catalog:register', () => {
catalogInfoUrl: 'http://foo/var',
},
});
- expect(mockContext.output).toBeCalledWith(
+ expect(mockContext.output).toHaveBeenCalledWith(
'entityRef',
'location:default/generated-1238',
);
@@ -254,7 +257,7 @@ describe('catalog:register', () => {
catalogInfoUrl: 'http://foo/var',
},
});
- expect(mockContext.output).not.toBeCalledWith(
+ expect(mockContext.output).not.toHaveBeenCalledWith(
'entityRef',
expect.any(String),
);
@@ -292,7 +295,7 @@ describe('catalog:register', () => {
{},
);
- expect(mockContext.output).toBeCalledWith(
+ expect(mockContext.output).toHaveBeenCalledWith(
'catalogInfoUrl',
'http://foo/var',
);
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/debug/log.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/debug/log.test.ts
index ecd0f33e21..544784acb5 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/debug/log.test.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/debug/log.test.ts
@@ -54,7 +54,7 @@ describe('debug:log', () => {
it('should do nothing', async () => {
await action.handler(mockContext);
- expect(logStream.write).toBeCalledTimes(0);
+ expect(logStream.write).toHaveBeenCalledTimes(0);
});
it('should log the workspace content, if active', async () => {
@@ -67,11 +67,11 @@ describe('debug:log', () => {
await action.handler(context);
- expect(logStream.write).toBeCalledTimes(1);
- expect(logStream.write).toBeCalledWith(
+ expect(logStream.write).toHaveBeenCalledTimes(1);
+ expect(logStream.write).toHaveBeenCalledWith(
expect.stringContaining('README.md'),
);
- expect(logStream.write).toBeCalledWith(
+ expect(logStream.write).toHaveBeenCalledWith(
expect.stringContaining(join('a-directory', 'index.md')),
);
});
@@ -86,8 +86,8 @@ describe('debug:log', () => {
await action.handler(context);
- expect(logStream.write).toBeCalledTimes(1);
- expect(logStream.write).toBeCalledWith(
+ expect(logStream.write).toHaveBeenCalledTimes(1);
+ expect(logStream.write).toHaveBeenCalledWith(
expect.stringContaining('Hello Backstage!'),
);
});
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/helpers.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/helpers.test.ts
index d274ad3ba8..3c58c833ff 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/helpers.test.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/helpers.test.ts
@@ -81,7 +81,7 @@ describe('fetchContent helper', () => {
fetchUrl: 'foo',
outputPath: 'somepath',
});
- expect(fs.copy).toBeCalledWith(resolvePath('/some/foo'), 'somepath');
+ expect(fs.copy).toHaveBeenCalledWith(resolvePath('/some/foo'), 'somepath');
});
it('should reject if no integration matches location', async () => {
@@ -116,7 +116,7 @@ describe('fetchContent helper', () => {
outputPath: 'foo',
fetchUrl: 'https://github.com/backstage/foo',
});
- expect(fs.ensureDir).toBeCalled();
- expect(dirFunction).toBeCalledWith({ targetDir: 'foo' });
+ expect(fs.ensureDir).toHaveBeenCalled();
+ expect(dirFunction).toHaveBeenCalledWith({ targetDir: 'foo' });
});
});
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 0ef095bf79..740f27a623 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
@@ -73,7 +73,7 @@ describe('fetch:plain', () => {
targetPath: 'lol',
},
});
- expect(fetchContents).toBeCalledWith(
+ expect(fetchContents).toHaveBeenCalledWith(
expect.objectContaining({
outputPath: resolvePath(mockContext.workspacePath, 'lol'),
fetchUrl:
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 af353bef70..165289de23 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
@@ -117,7 +117,7 @@ describe('fetch:template', () => {
it('throws if output directory is outside the workspace', async () => {
await expect(() =>
action.handler(mockContext({ targetPath: '../' })),
- ).rejects.toThrowError(
+ ).rejects.toThrow(
/relative path is not allowed to refer to a directory outside its parent/i,
);
});
@@ -127,7 +127,7 @@ describe('fetch:template', () => {
action.handler(
mockContext({ copyWithoutRender: 'abc' as unknown as string[] }),
),
- ).rejects.toThrowError(
+ ).rejects.toThrow(
/copyWithoutRender\/copyWithoutTemplating must be an array/i,
);
});
@@ -140,7 +140,7 @@ describe('fetch:template', () => {
copyWithoutTemplating: 'def' as unknown as string[],
}),
),
- ).rejects.toThrowError(
+ ).rejects.toThrow(
/copyWithoutRender and copyWithoutTemplating can not be used at the same time/i,
);
});
@@ -153,7 +153,7 @@ describe('fetch:template', () => {
templateFileExtension: true,
}),
),
- ).rejects.toThrowError(
+ ).rejects.toThrow(
/input extension incompatible with copyWithoutRender\/copyWithoutTemplating and cookiecutterCompat/,
);
});
@@ -166,7 +166,7 @@ describe('fetch:template', () => {
templateFileExtension: true,
}),
),
- ).rejects.toThrowError(
+ ).rejects.toThrow(
/input extension incompatible with copyWithoutRender\/copyWithoutTemplating and cookiecutterCompat/,
);
});
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/githubPullRequest.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/githubPullRequest.test.ts
index 1bc768e4bd..43b4eeb58d 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/githubPullRequest.test.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/githubPullRequest.test.ts
@@ -302,8 +302,8 @@ describe('createPublishGithubPullRequestAction', () => {
it('creates a pull request and requests a review from the given reviewers', async () => {
await instance.handler(ctx);
- expect(fakeClient.createPullRequest).toBeCalled();
- expect(fakeClient.rest.pulls.requestReviewers).toBeCalledWith({
+ expect(fakeClient.createPullRequest).toHaveBeenCalled();
+ expect(fakeClient.rest.pulls.requestReviewers).toHaveBeenCalledWith({
owner: 'myorg',
repo: 'myrepo',
pull_number: 123,
@@ -354,8 +354,8 @@ describe('createPublishGithubPullRequestAction', () => {
it('does not call the API endpoint for requesting reviewers', async () => {
await instance.handler(ctx);
- expect(fakeClient.createPullRequest).toBeCalled();
- expect(fakeClient.rest.pulls.requestReviewers).not.toBeCalled();
+ expect(fakeClient.createPullRequest).toHaveBeenCalled();
+ expect(fakeClient.rest.pulls.requestReviewers).not.toHaveBeenCalled();
});
});
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.test.ts
index 27261ecd49..dc1d26d416 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.test.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.test.ts
@@ -313,11 +313,12 @@ describe('publish:gitlab', () => {
});
});
- it('should call output with the remoteUrl and repoContentsUrl', async () => {
+ it('should call output with the remoteUrl and repoContentsUrl and projectId', async () => {
mockGitlabClient.Users.current.mockResolvedValue({ id: 12345 });
mockGitlabClient.Namespaces.show.mockResolvedValue({ id: 1234 });
mockGitlabClient.Projects.create.mockResolvedValue({
http_url_to_repo: 'http://mockurl.git',
+ id: 1234,
});
await action.handler(mockContext);
@@ -330,6 +331,7 @@ describe('publish:gitlab', () => {
'repoContentsUrl',
'http://mockurl/-/blob/master',
);
+ expect(mockContext.output).toHaveBeenCalledWith('projectId', 1234);
});
it('should call the correct Gitlab APIs when setUserAsOwner option is true and integration config has a token', async () => {
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.ts
index 4fe55b77a2..9fc95b1b5e 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.ts
@@ -112,6 +112,10 @@ export function createPublishGitlabAction(options: {
title: 'A URL to the root of the repository',
type: 'string',
},
+ projectId: {
+ title: 'The ID of the project',
+ type: 'string',
+ },
},
},
},
@@ -214,6 +218,7 @@ export function createPublishGitlabAction(options: {
ctx.output('remoteUrl', remoteUrl);
ctx.output('repoContentsUrl', repoContentsUrl);
+ ctx.output('projectId', projectId);
},
});
}
diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts
index 6b1701380b..3627d83aa7 100644
--- a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts
@@ -128,7 +128,7 @@ describe('DefaultWorkflowRunner', () => {
steps: [{ id: 'test', name: 'name', action: 'does-not-exist' }],
});
- await expect(runner.execute(task)).rejects.toThrowError(
+ await expect(runner.execute(task)).rejects.toThrow(
"Template action with ID 'does-not-exist' is not registered.",
);
});
@@ -142,7 +142,7 @@ describe('DefaultWorkflowRunner', () => {
steps: [{ id: 'test', name: 'name', action: 'jest-validated-action' }],
});
- await expect(runner.execute(task)).rejects.toThrowError(
+ await expect(runner.execute(task)).rejects.toThrow(
/Invalid input passed to action jest-validated-action, instance requires property \"foo\"/,
);
});
diff --git a/plugins/scaffolder-backend/src/service/router.test.ts b/plugins/scaffolder-backend/src/service/router.test.ts
index d820dd07c8..9bc327f25d 100644
--- a/plugins/scaffolder-backend/src/service/router.test.ts
+++ b/plugins/scaffolder-backend/src/service/router.test.ts
@@ -421,7 +421,7 @@ describe('createRouter', () => {
});
const response = await request(app).get(`/v2/tasks`);
- expect(taskBroker.list).toBeCalledWith({
+ expect(taskBroker.list).toHaveBeenCalledWith({
createdBy: undefined,
});
expect(response.status).toEqual(200);
@@ -456,7 +456,7 @@ describe('createRouter', () => {
const response = await request(app).get(
`/v2/tasks?createdBy=user:default/foo`,
);
- expect(taskBroker.list).toBeCalledWith({
+ expect(taskBroker.list).toHaveBeenCalledWith({
createdBy: 'user:default/foo',
});
@@ -556,18 +556,20 @@ describe('createRouter', () => {
expect(statusCode).toBe(200);
expect(headers['content-type']).toBe('text/event-stream');
- expect(responseDataFn).toBeCalledTimes(2);
- expect(responseDataFn).toBeCalledWith(`event: log
+ expect(responseDataFn).toHaveBeenCalledTimes(2);
+ expect(responseDataFn).toHaveBeenCalledWith(`event: log
data: {"id":0,"taskId":"a-random-id","type":"log","createdAt":"","body":{"message":"My log message"}}
`);
- expect(responseDataFn).toBeCalledWith(`event: completion
+ expect(responseDataFn).toHaveBeenCalledWith(`event: completion
data: {"id":1,"taskId":"a-random-id","type":"completion","createdAt":"","body":{"message":"Finished!"}}
`);
- expect(taskBroker.event$).toBeCalledTimes(1);
- expect(taskBroker.event$).toBeCalledWith({ taskId: 'a-random-id' });
+ expect(taskBroker.event$).toHaveBeenCalledTimes(1);
+ expect(taskBroker.event$).toHaveBeenCalledWith({
+ taskId: 'a-random-id',
+ });
expect(subscriber!.closed).toBe(true);
});
@@ -618,8 +620,8 @@ data: {"id":1,"taskId":"a-random-id","type":"completion","createdAt":"","body":{
expect(statusCode).toBe(200);
expect(headers['content-type']).toBe('text/event-stream');
- expect(taskBroker.event$).toBeCalledTimes(1);
- expect(taskBroker.event$).toBeCalledWith({
+ expect(taskBroker.event$).toHaveBeenCalledTimes(1);
+ expect(taskBroker.event$).toHaveBeenCalledWith({
taskId: 'a-random-id',
after: 10,
});
@@ -677,8 +679,10 @@ data: {"id":1,"taskId":"a-random-id","type":"completion","createdAt":"","body":{
},
]);
- expect(taskBroker.event$).toBeCalledTimes(1);
- expect(taskBroker.event$).toBeCalledWith({ taskId: 'a-random-id' });
+ expect(taskBroker.event$).toHaveBeenCalledTimes(1);
+ expect(taskBroker.event$).toHaveBeenCalledWith({
+ taskId: 'a-random-id',
+ });
expect(subscriber!.closed).toBe(true);
});
@@ -700,8 +704,8 @@ data: {"id":1,"taskId":"a-random-id","type":"completion","createdAt":"","body":{
expect(response.status).toEqual(200);
expect(response.body).toEqual([]);
- expect(taskBroker.event$).toBeCalledTimes(1);
- expect(taskBroker.event$).toBeCalledWith({
+ expect(taskBroker.event$).toHaveBeenCalledTimes(1);
+ expect(taskBroker.event$).toHaveBeenCalledWith({
taskId: 'a-random-id',
after: 10,
});
@@ -709,7 +713,6 @@ data: {"id":1,"taskId":"a-random-id","type":"completion","createdAt":"","body":{
});
});
});
-
describe('providing an identity api', () => {
beforeEach(async () => {
const logger = getVoidLogger();
diff --git a/plugins/scaffolder-common/package.json b/plugins/scaffolder-common/package.json
index f12e6e8de3..97453b05f9 100644
--- a/plugins/scaffolder-common/package.json
+++ b/plugins/scaffolder-common/package.json
@@ -43,6 +43,6 @@
"@backstage/types": "^1.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.18.2-next.0"
+ "@backstage/cli": "^0.19.0-next.1"
}
}
diff --git a/plugins/scaffolder/CHANGELOG.md b/plugins/scaffolder/CHANGELOG.md
index c4a9830f3c..7c3e347627 100644
--- a/plugins/scaffolder/CHANGELOG.md
+++ b/plugins/scaffolder/CHANGELOG.md
@@ -1,5 +1,18 @@
# @backstage/plugin-scaffolder
+## 1.6.0-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- 763fb81e82: Internal refactor to use more type safe code when dealing with route parameters.
+- a66d44b72b: Fixing bug when the workspace would not be automatically saved when using `allowedOwners`
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+ - @backstage/plugin-permission-react@0.4.5-next.1
+
## 1.6.0-next.0
### Minor Changes
diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json
index 4200e2d3ff..3cb800635d 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.6.0-next.0",
+ "version": "1.6.0-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -38,14 +38,14 @@
"@backstage/catalog-client": "^1.0.5-next.0",
"@backstage/catalog-model": "^1.1.0",
"@backstage/config": "^1.0.1",
- "@backstage/core-components": "^0.11.1-next.0",
- "@backstage/core-plugin-api": "^1.0.6-next.0",
+ "@backstage/core-components": "^0.11.1-next.1",
+ "@backstage/core-plugin-api": "^1.0.6-next.1",
"@backstage/errors": "^1.1.0",
"@backstage/integration": "^1.3.1-next.0",
"@backstage/integration-react": "^1.1.4-next.0",
"@backstage/plugin-catalog-common": "^1.0.6-next.0",
- "@backstage/plugin-catalog-react": "^1.1.4-next.0",
- "@backstage/plugin-permission-react": "^0.4.5-next.0",
+ "@backstage/plugin-catalog-react": "^1.1.4-next.1",
+ "@backstage/plugin-permission-react": "^0.4.5-next.1",
"@backstage/plugin-scaffolder-common": "^1.2.0-next.0",
"@backstage/theme": "^0.2.16",
"@backstage/types": "^1.0.0",
@@ -69,8 +69,6 @@
"lodash": "^4.17.21",
"luxon": "^3.0.0",
"qs": "^6.9.4",
- "react-router": "6.0.0-beta.0",
- "react-router-dom": "6.0.0-beta.0",
"react-use": "^17.2.4",
"use-immer": "^0.7.0",
"yaml": "^2.0.0",
@@ -78,14 +76,16 @@
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0",
- "react": "^16.13.1 || ^17.0.0"
+ "react": "^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"
},
"devDependencies": {
- "@backstage/cli": "^0.18.2-next.0",
- "@backstage/core-app-api": "^1.0.6-next.0",
- "@backstage/dev-utils": "^1.0.6-next.0",
- "@backstage/plugin-catalog": "^1.5.1-next.0",
- "@backstage/test-utils": "^1.1.4-next.0",
+ "@backstage/cli": "^0.19.0-next.1",
+ "@backstage/core-app-api": "^1.1.0-next.1",
+ "@backstage/dev-utils": "^1.0.6-next.1",
+ "@backstage/plugin-catalog": "^1.5.1-next.1",
+ "@backstage/test-utils": "^1.2.0-next.1",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/react-hooks": "^8.0.0",
diff --git a/plugins/scaffolder/src/api.test.ts b/plugins/scaffolder/src/api.test.ts
index 583258c069..e21bda8fd7 100644
--- a/plugins/scaffolder/src/api.test.ts
+++ b/plugins/scaffolder/src/api.test.ts
@@ -110,21 +110,21 @@ describe('api', () => {
.subscribe({ next, complete });
});
- expect(MockedEventSource).toBeCalledWith(
+ expect(MockedEventSource).toHaveBeenCalledWith(
'http://backstage/api/v2/tasks/a-random-task-id/eventstream',
{ withCredentials: true },
);
- expect(MockedEventSource.prototype.close).toBeCalled();
+ expect(MockedEventSource.prototype.close).toHaveBeenCalled();
- expect(next).toBeCalledTimes(2);
- expect(next).toBeCalledWith({
+ expect(next).toHaveBeenCalledTimes(2);
+ expect(next).toHaveBeenCalledWith({
id: 1,
taskId: 'a-random-id',
type: 'log',
createdAt: '',
body: { message: 'My log message' },
});
- expect(next).toBeCalledWith({
+ expect(next).toHaveBeenCalledWith({
id: 2,
taskId: 'a-random-id',
type: 'completion',
@@ -194,15 +194,15 @@ describe('api', () => {
.subscribe({ next, complete }),
);
- expect(next).toBeCalledTimes(2);
- expect(next).toBeCalledWith({
+ expect(next).toHaveBeenCalledTimes(2);
+ expect(next).toHaveBeenCalledWith({
id: 1,
taskId: 'a-random-id',
type: 'log',
createdAt: '',
body: { message: 'My log message' },
});
- expect(next).toBeCalledWith({
+ expect(next).toHaveBeenCalledWith({
id: 2,
taskId: 'a-random-id',
type: 'completion',
@@ -258,8 +258,8 @@ describe('api', () => {
});
});
- expect(next).toBeCalledTimes(1);
- expect(next).toBeCalledWith({
+ expect(next).toHaveBeenCalledTimes(1);
+ expect(next).toHaveBeenCalledWith({
id: 1,
taskId: 'a-random-id',
type: 'log',
@@ -304,10 +304,10 @@ describe('api', () => {
.subscribe({ next, complete }),
);
- expect(called).toBeCalledTimes(2);
+ expect(called).toHaveBeenCalledTimes(2);
- expect(next).toBeCalledTimes(1);
- expect(next).toBeCalledWith({
+ expect(next).toHaveBeenCalledTimes(1);
+ expect(next).toHaveBeenCalledWith({
id: 2,
taskId: 'a-random-id',
type: 'completion',
@@ -387,7 +387,7 @@ describe('api', () => {
});
const result = await apiClient.listTasks({ filterByOwnership: 'owned' });
- expect(identityApi.getBackstageIdentity).toBeCalled();
+ expect(identityApi.getBackstageIdentity).toHaveBeenCalled();
expect(result.tasks).toHaveLength(1);
});
});
diff --git a/plugins/scaffolder/src/components/ListTasksPage/ListTaskPage.test.tsx b/plugins/scaffolder/src/components/ListTasksPage/ListTaskPage.test.tsx
index 6dc26abd68..837b87437f 100644
--- a/plugins/scaffolder/src/components/ListTasksPage/ListTaskPage.test.tsx
+++ b/plugins/scaffolder/src/components/ListTasksPage/ListTaskPage.test.tsx
@@ -141,7 +141,7 @@ describe('', () => {
},
);
- expect(scaffolderApiMock.listTasks).toBeCalledWith({
+ expect(scaffolderApiMock.listTasks).toHaveBeenCalledWith({
filterByOwnership: 'owned',
});
expect(getByText('List template tasks')).toBeInTheDocument();
@@ -240,7 +240,7 @@ describe('', () => {
fireEvent.click(allButton);
});
- expect(scaffolderApiMock.listTasks).toBeCalledWith({
+ expect(scaffolderApiMock.listTasks).toHaveBeenCalledWith({
filterByOwnership: 'all',
});
expect(await findByText('One Template')).toBeInTheDocument();
diff --git a/plugins/scaffolder/src/components/ListTasksPage/OwnerListPicker.test.tsx b/plugins/scaffolder/src/components/ListTasksPage/OwnerListPicker.test.tsx
index bf0ae6d946..63f943d6dd 100644
--- a/plugins/scaffolder/src/components/ListTasksPage/OwnerListPicker.test.tsx
+++ b/plugins/scaffolder/src/components/ListTasksPage/OwnerListPicker.test.tsx
@@ -42,6 +42,6 @@ describe('', () => {
const { getByText } = await renderInTestApp();
fireEvent.click(await getByText('All'));
- expect(props.onSelectOwner).toBeCalledWith('all');
+ expect(props.onSelectOwner).toHaveBeenCalledWith('all');
});
});
diff --git a/plugins/scaffolder/src/components/Router.tsx b/plugins/scaffolder/src/components/Router.tsx
index ac35c4dcd7..05633787b5 100644
--- a/plugins/scaffolder/src/components/Router.tsx
+++ b/plugins/scaffolder/src/components/Router.tsx
@@ -15,7 +15,7 @@
*/
import React, { ComponentType, useEffect } from 'react';
-import { Routes, Route, useOutlet, Navigate, useParams } from 'react-router';
+import { Routes, Route, useOutlet, Navigate } from 'react-router';
import { Entity } from '@backstage/catalog-model';
import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common';
import { ScaffolderPage } from './ScaffolderPage';
@@ -31,7 +31,11 @@ import {
FIELD_EXTENSION_KEY,
DEFAULT_SCAFFOLDER_FIELD_EXTENSIONS,
} from '../extensions';
-import { useElementFilter, useRouteRef } from '@backstage/core-plugin-api';
+import {
+ useElementFilter,
+ useRouteRef,
+ useRouteRefParams,
+} from '@backstage/core-plugin-api';
import {
actionsRouteRef,
editRouteRef,
@@ -105,7 +109,7 @@ export const Router = (props: RouterProps) => {
* This component can be deleted once the older routes have been deprecated.
*/
const RedirectingComponent = () => {
- const { templateName } = useParams();
+ const { templateName } = useRouteRefParams(legacySelectedTemplateRouteRef);
const newLink = useRouteRef(selectedTemplateRouteRef);
useEffect(
() =>
@@ -121,6 +125,7 @@ export const Router = (props: RouterProps) => {
return (
{
/>
}
/>
-
-
-
+ }
+ />
{
const [lastActiveStepId, setLastActiveStepId] = useState(
undefined,
);
- const { taskId } = useParams();
+ const { taskId } = useRouteRefParams(scaffolderTaskRouteRef);
const taskStream = useTaskEventStream(taskId);
const completed = taskStream.completed;
const steps = useMemo(
diff --git a/plugins/scaffolder/src/components/TemplatePage/TemplatePage.test.tsx b/plugins/scaffolder/src/components/TemplatePage/TemplatePage.test.tsx
index 34e6901937..d35b561f2b 100644
--- a/plugins/scaffolder/src/components/TemplatePage/TemplatePage.test.tsx
+++ b/plugins/scaffolder/src/components/TemplatePage/TemplatePage.test.tsx
@@ -13,16 +13,10 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import {
- renderInTestApp,
- renderWithEffects,
- TestApiRegistry,
-} from '@backstage/test-utils';
-import { lightTheme } from '@backstage/theme';
-import { ThemeProvider } from '@material-ui/core';
+import { renderInTestApp, TestApiRegistry } from '@backstage/test-utils';
import { act, fireEvent, within } from '@testing-library/react';
import React from 'react';
-import { MemoryRouter, Route } from 'react-router';
+import { Route, Routes } from 'react-router';
import { scaffolderApiRef } from '../../api';
import { ScaffolderApi } from '../../types';
import { rootRouteRef } from '../../routes';
@@ -169,17 +163,17 @@ describe('TemplatePage', () => {
undefined as any,
);
- const rendered = await renderWithEffects(
+ const rendered = await renderInTestApp(
-
-
-
-
-
- This is root>} />
-
-
+
+ } />
+ This is root>} />
+
,
+ {
+ routeEntries: ['/create'],
+ mountedRoutes: { '/create': rootRouteRef },
+ },
);
expect(
diff --git a/plugins/scaffolder/src/components/TemplatePage/TemplatePage.tsx b/plugins/scaffolder/src/components/TemplatePage/TemplatePage.tsx
index f694688801..03ce57136f 100644
--- a/plugins/scaffolder/src/components/TemplatePage/TemplatePage.tsx
+++ b/plugins/scaffolder/src/components/TemplatePage/TemplatePage.tsx
@@ -18,12 +18,15 @@ import { IChangeEvent } from '@rjsf/core';
import qs from 'qs';
import React, { useCallback, useContext, useState } from 'react';
import { Navigate, useNavigate } from 'react-router';
-import { useParams } from 'react-router-dom';
import useAsync from 'react-use/lib/useAsync';
import { scaffolderApiRef } from '../../api';
import { FieldExtensionOptions } from '../../extensions';
import { SecretsContext } from '../secrets/SecretsContext';
-import { rootRouteRef, scaffolderTaskRouteRef } from '../../routes';
+import {
+ rootRouteRef,
+ scaffolderTaskRouteRef,
+ selectedTemplateRouteRef,
+} from '../../routes';
import { MultistepJsonForm } from '../MultistepJsonForm';
import { createValidator } from './createValidator';
@@ -33,6 +36,7 @@ import {
useApi,
useApiHolder,
useRouteRef,
+ useRouteRefParams,
} from '@backstage/core-plugin-api';
import { stringifyEntityRef } from '@backstage/catalog-model';
@@ -54,7 +58,9 @@ export const TemplatePage = ({
const secretsContext = useContext(SecretsContext);
const errorApi = useApi(errorApiRef);
const scaffolderApi = useApi(scaffolderApiRef);
- const { templateName, namespace } = useParams();
+ const { templateName, namespace } = useRouteRefParams(
+ selectedTemplateRouteRef,
+ );
const templateRef = stringifyEntityRef({
name: templateName,
kind: 'template',
diff --git a/plugins/scaffolder/src/components/TemplatePage/createValidator.test.ts b/plugins/scaffolder/src/components/TemplatePage/createValidator.test.ts
index a5b04df71e..f549c9e7f2 100644
--- a/plugins/scaffolder/src/components/TemplatePage/createValidator.test.ts
+++ b/plugins/scaffolder/src/components/TemplatePage/createValidator.test.ts
@@ -68,6 +68,6 @@ describe('createValidator', () => {
/* THEN */
expect(result).not.toBeNull();
- expect(result.p1.addError).toBeCalledTimes(1);
+ expect(result.p1.addError).toHaveBeenCalledTimes(1);
});
});
diff --git a/plugins/scaffolder/src/components/fields/RepoUrlPicker/BitbucketRepoPicker.tsx b/plugins/scaffolder/src/components/fields/RepoUrlPicker/BitbucketRepoPicker.tsx
index 38d615078d..5bc1380553 100644
--- a/plugins/scaffolder/src/components/fields/RepoUrlPicker/BitbucketRepoPicker.tsx
+++ b/plugins/scaffolder/src/components/fields/RepoUrlPicker/BitbucketRepoPicker.tsx
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import React from 'react';
+import React, { useEffect } from 'react';
import FormControl from '@material-ui/core/FormControl';
import FormHelperText from '@material-ui/core/FormHelperText';
import Input from '@material-ui/core/Input';
@@ -32,6 +32,13 @@ export const BitbucketRepoPicker = (props: {
const ownerItems: SelectItem[] = allowedOwners
? allowedOwners?.map(i => ({ label: i, value: i }))
: [];
+
+ useEffect(() => {
+ if (host === 'bitbucket.org' && allowedOwners.length) {
+ onChange({ workspace: allowedOwners[0] });
+ }
+ }, [allowedOwners, host, onChange]);
+
return (
<>
{host === 'bitbucket.org' && (
diff --git a/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPicker.tsx b/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPicker.tsx
index f6fa37109d..2214997560 100644
--- a/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPicker.tsx
+++ b/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPicker.tsx
@@ -90,9 +90,13 @@ export const RepoUrlPicker = (
/* we deal with calling the repo setting here instead of in each components for ease */
useEffect(() => {
if (allowedOwners.length > 0) {
- setState(prevState => ({ ...prevState, owner: allowedOwners[0] }));
+ setState(prevState => ({
+ ...prevState,
+ owner: allowedOwners[0],
+ }));
}
}, [setState, allowedOwners]);
+
useEffect(() => {
if (allowedRepos.length > 0) {
setState(prevState => ({ ...prevState, repoName: allowedRepos[0] }));
diff --git a/plugins/scaffolder/src/next/Router/Router.tsx b/plugins/scaffolder/src/next/Router/Router.tsx
index 91efe850e0..758e268cb3 100644
--- a/plugins/scaffolder/src/next/Router/Router.tsx
+++ b/plugins/scaffolder/src/next/Router/Router.tsx
@@ -78,6 +78,7 @@ export const Router = (props: PropsWithChildren) => {
return (
[];
@@ -62,7 +67,9 @@ const useTemplateParameterSchema = (templateRef: string) => {
export const TemplateWizardPage = (props: TemplateWizardPageProps) => {
const styles = useStyles();
const rootRef = useRouteRef(nextRouteRef);
- const { templateName, namespace } = useParams();
+ const { templateName, namespace } = useRouteRefParams(
+ selectedTemplateRouteRef,
+ );
const errorApi = useApi(errorApiRef);
const { loading, manifest, error } = useTemplateParameterSchema(
stringifyEntityRef({
diff --git a/plugins/search-backend-module-elasticsearch/package.json b/plugins/search-backend-module-elasticsearch/package.json
index 2c8e143dd7..4655beade8 100644
--- a/plugins/search-backend-module-elasticsearch/package.json
+++ b/plugins/search-backend-module-elasticsearch/package.json
@@ -24,7 +24,7 @@
},
"dependencies": {
"@backstage/config": "^1.0.1",
- "@backstage/plugin-search-backend-node": "^1.0.2-next.0",
+ "@backstage/plugin-search-backend-node": "^1.0.2-next.1",
"@backstage/plugin-search-common": "^1.0.1-next.0",
"@elastic/elasticsearch": "^7.13.0",
"@opensearch-project/opensearch": "^2.0.0",
@@ -36,8 +36,8 @@
"winston": "^3.2.1"
},
"devDependencies": {
- "@backstage/backend-common": "^0.15.1-next.0",
- "@backstage/cli": "^0.18.2-next.0",
+ "@backstage/backend-common": "^0.15.1-next.1",
+ "@backstage/cli": "^0.19.0-next.1",
"@elastic/elasticsearch-mock": "^1.0.0",
"@short.io/opensearch-mock": "^0.3.1"
},
diff --git a/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngine.test.ts b/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngine.test.ts
index 64725e446d..3a237664a8 100644
--- a/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngine.test.ts
+++ b/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngine.test.ts
@@ -937,7 +937,7 @@ describe('ElasticSearchSearchEngine', () => {
logger: getVoidLogger(),
config,
}),
- ).not.toThrowError();
+ ).not.toThrow();
});
});
});
diff --git a/plugins/search-backend-module-pg/CHANGELOG.md b/plugins/search-backend-module-pg/CHANGELOG.md
index f1d5e35b18..93d0abe0be 100644
--- a/plugins/search-backend-module-pg/CHANGELOG.md
+++ b/plugins/search-backend-module-pg/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-search-backend-module-pg
+## 0.4.0-next.1
+
+### Patch Changes
+
+- d669d89206: Minor API signatures cleanup
+- Updated dependencies
+ - @backstage/backend-common@0.15.1-next.1
+ - @backstage/plugin-search-backend-node@1.0.2-next.1
+
## 0.4.0-next.0
### Minor Changes
diff --git a/plugins/search-backend-module-pg/package.json b/plugins/search-backend-module-pg/package.json
index 23d7548809..c06dc94874 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.4.0-next.0",
+ "version": "0.4.0-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -23,17 +23,17 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.15.1-next.0",
+ "@backstage/backend-common": "^0.15.1-next.1",
"@backstage/config": "^1.0.1",
- "@backstage/plugin-search-backend-node": "^1.0.2-next.0",
+ "@backstage/plugin-search-backend-node": "^1.0.2-next.1",
"@backstage/plugin-search-common": "^1.0.1-next.0",
"lodash": "^4.17.21",
"knex": "^2.0.0",
"uuid": "^8.3.2"
},
"devDependencies": {
- "@backstage/backend-test-utils": "^0.1.28-next.0",
- "@backstage/cli": "^0.18.2-next.0"
+ "@backstage/backend-test-utils": "^0.1.28-next.1",
+ "@backstage/cli": "^0.19.0-next.1"
},
"files": [
"dist",
diff --git a/plugins/search-backend-module-pg/src/PgSearchEngine/PgSearchEngineIndexer.test.ts b/plugins/search-backend-module-pg/src/PgSearchEngine/PgSearchEngineIndexer.test.ts
index 1fc7e74fc4..03b9774751 100644
--- a/plugins/search-backend-module-pg/src/PgSearchEngine/PgSearchEngineIndexer.test.ts
+++ b/plugins/search-backend-module-pg/src/PgSearchEngine/PgSearchEngineIndexer.test.ts
@@ -77,7 +77,7 @@ describe('PgSearchEngineIndexer', () => {
expect(database.getTransaction).toHaveBeenCalledTimes(1);
expect(database.prepareInsert).toHaveBeenCalledTimes(1);
- expect(database.insertDocuments).toBeCalledTimes(4);
+ expect(database.insertDocuments).toHaveBeenCalledTimes(4);
expect(database.completeInsert).toHaveBeenCalledWith(tx, 'my-type');
});
diff --git a/plugins/search-backend-node/CHANGELOG.md b/plugins/search-backend-node/CHANGELOG.md
index e02f0fda0b..d5895611ab 100644
--- a/plugins/search-backend-node/CHANGELOG.md
+++ b/plugins/search-backend-node/CHANGELOG.md
@@ -1,5 +1,13 @@
# @backstage/plugin-search-backend-node
+## 1.0.2-next.1
+
+### Patch Changes
+
+- a1124adf5e: Fixed bug in LunrSearchEngine where stopwords in title is causing in-doc search not working
+- Updated dependencies
+ - @backstage/backend-common@0.15.1-next.1
+
## 1.0.2-next.0
### Patch Changes
diff --git a/plugins/search-backend-node/package.json b/plugins/search-backend-node/package.json
index 6f6125e85a..6899afb192 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.0.2-next.0",
+ "version": "1.0.2-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -23,7 +23,7 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.15.1-next.0",
+ "@backstage/backend-common": "^0.15.1-next.1",
"@backstage/backend-tasks": "^0.3.5-next.0",
"@backstage/config": "^1.0.1",
"@backstage/errors": "^1.1.0",
@@ -38,8 +38,8 @@
"winston": "^3.2.1"
},
"devDependencies": {
- "@backstage/backend-common": "^0.15.1-next.0",
- "@backstage/cli": "^0.18.2-next.0",
+ "@backstage/backend-common": "^0.15.1-next.1",
+ "@backstage/cli": "^0.19.0-next.1",
"@types/ndjson": "^2.0.1"
},
"files": [
diff --git a/plugins/search-backend-node/src/Scheduler.test.ts b/plugins/search-backend-node/src/Scheduler.test.ts
index 7eaa6e8c9d..30e5c7e416 100644
--- a/plugins/search-backend-node/src/Scheduler.test.ts
+++ b/plugins/search-backend-node/src/Scheduler.test.ts
@@ -55,7 +55,7 @@ describe('Scheduler', () => {
task: mockTask2,
scheduledRunner: mockScheduledTaskRunner2,
}),
- ).toThrowError();
+ ).toThrow();
expect(mockScheduledTaskRunner1.run).toHaveBeenCalledWith(
expect.objectContaining({
@@ -95,7 +95,7 @@ describe('Scheduler', () => {
task: mockTask2,
scheduledRunner: mockScheduledTaskRunner2,
}),
- ).toThrowError();
+ ).toThrow();
// Starts scheduling process
testScheduler.start();
@@ -144,7 +144,7 @@ describe('Scheduler', () => {
task: mockTask2,
scheduledRunner: mockScheduledTaskRunner2,
}),
- ).not.toThrowError();
+ ).not.toThrow();
// Starts scheduling process
testScheduler.start();
diff --git a/plugins/search-backend-node/src/collators/NewlineDelimitedJsonCollatorFactory.test.ts b/plugins/search-backend-node/src/collators/NewlineDelimitedJsonCollatorFactory.test.ts
index 198995b3cf..7120fc7ce5 100644
--- a/plugins/search-backend-node/src/collators/NewlineDelimitedJsonCollatorFactory.test.ts
+++ b/plugins/search-backend-node/src/collators/NewlineDelimitedJsonCollatorFactory.test.ts
@@ -72,7 +72,7 @@ describe('DefaultCatalogCollatorFactory', () => {
it('throws if url reader throws an error during search', async () => {
reader.search.mockRejectedValue(new Error('Expected error'));
- await expect(() => factory.getCollator()).rejects.toThrowError(
+ await expect(() => factory.getCollator()).rejects.toThrow(
'Expected error',
);
});
@@ -80,7 +80,7 @@ describe('DefaultCatalogCollatorFactory', () => {
it('throws if no matching files are found', async () => {
reader.search.mockResolvedValue({ files: [], etag: '' });
- await expect(() => factory.getCollator()).rejects.toThrowError(
+ await expect(() => factory.getCollator()).rejects.toThrow(
'Could not find an .ndjson file matching',
);
});
@@ -95,7 +95,7 @@ describe('DefaultCatalogCollatorFactory', () => {
stream: jest.fn().mockReturnValue(readable),
});
- await expect(() => factory.getCollator()).rejects.toThrowError(
+ await expect(() => factory.getCollator()).rejects.toThrow(
'Could not find an .ndjson file matching',
);
});
diff --git a/plugins/search-backend-node/src/engines/LunrSearchEngine.test.ts b/plugins/search-backend-node/src/engines/LunrSearchEngine.test.ts
index 1f69460448..f0518cd71d 100644
--- a/plugins/search-backend-node/src/engines/LunrSearchEngine.test.ts
+++ b/plugins/search-backend-node/src/engines/LunrSearchEngine.test.ts
@@ -133,16 +133,16 @@ describe('LunrSearchEngine', () => {
actualTranslatedQuery.lunrQueryBuilder.bind(query)(query);
- expect(query.term).toBeCalledWith(lunr.tokenizer('testTerm'), {
+ expect(query.term).toHaveBeenCalledWith(lunr.tokenizer('testTerm'), {
boost: 100,
usePipeline: true,
});
- expect(query.term).toBeCalledWith(lunr.tokenizer('testTerm'), {
+ expect(query.term).toHaveBeenCalledWith(lunr.tokenizer('testTerm'), {
boost: 10,
usePipeline: false,
wildcard: lunr.Query.wildcard.TRAILING,
});
- expect(query.term).toBeCalledWith(lunr.tokenizer('testTerm'), {
+ expect(query.term).toHaveBeenCalledWith(lunr.tokenizer('testTerm'), {
boost: 1,
usePipeline: false,
editDistance: 2,
@@ -174,16 +174,16 @@ describe('LunrSearchEngine', () => {
actualTranslatedQuery.lunrQueryBuilder.bind(query)(query);
- expect(query.term).toBeCalledWith(lunr.tokenizer('testTerm'), {
+ expect(query.term).toHaveBeenCalledWith(lunr.tokenizer('testTerm'), {
boost: 100,
usePipeline: true,
});
- expect(query.term).toBeCalledWith(lunr.tokenizer('testTerm'), {
+ expect(query.term).toHaveBeenCalledWith(lunr.tokenizer('testTerm'), {
boost: 10,
usePipeline: false,
wildcard: lunr.Query.wildcard.TRAILING,
});
- expect(query.term).toBeCalledWith(lunr.tokenizer('testTerm'), {
+ expect(query.term).toHaveBeenCalledWith(lunr.tokenizer('testTerm'), {
boost: 1,
usePipeline: false,
editDistance: 2,
@@ -215,21 +215,21 @@ describe('LunrSearchEngine', () => {
actualTranslatedQuery.lunrQueryBuilder.bind(query)(query);
- expect(query.term).toBeCalledWith(lunr.tokenizer('testTerm'), {
+ expect(query.term).toHaveBeenCalledWith(lunr.tokenizer('testTerm'), {
boost: 100,
usePipeline: true,
});
- expect(query.term).toBeCalledWith(lunr.tokenizer('testTerm'), {
+ expect(query.term).toHaveBeenCalledWith(lunr.tokenizer('testTerm'), {
boost: 10,
usePipeline: false,
wildcard: lunr.Query.wildcard.TRAILING,
});
- expect(query.term).toBeCalledWith(lunr.tokenizer('testTerm'), {
+ expect(query.term).toHaveBeenCalledWith(lunr.tokenizer('testTerm'), {
boost: 1,
usePipeline: false,
editDistance: 2,
});
- expect(query.term).toBeCalledWith(lunr.tokenizer('testKind'), {
+ expect(query.term).toHaveBeenCalledWith(lunr.tokenizer('testKind'), {
fields: ['kind'],
presence: lunr.Query.presence.REQUIRED,
});
@@ -260,7 +260,7 @@ describe('LunrSearchEngine', () => {
actualTranslatedQuery.lunrQueryBuilder.bind(query)(query);
- expect(query.term).toBeCalledWith(lunr.tokenizer('testKind'), {
+ expect(query.term).toHaveBeenCalledWith(lunr.tokenizer('testKind'), {
fields: ['kind'],
presence: lunr.Query.presence.REQUIRED,
});
@@ -291,25 +291,25 @@ describe('LunrSearchEngine', () => {
actualTranslatedQuery.lunrQueryBuilder.bind(query)(query);
- expect(query.term).toBeCalledWith(lunr.tokenizer('testTerm'), {
+ expect(query.term).toHaveBeenCalledWith(lunr.tokenizer('testTerm'), {
boost: 100,
usePipeline: true,
});
- expect(query.term).toBeCalledWith(lunr.tokenizer('testTerm'), {
+ expect(query.term).toHaveBeenCalledWith(lunr.tokenizer('testTerm'), {
boost: 10,
usePipeline: false,
wildcard: lunr.Query.wildcard.TRAILING,
});
- expect(query.term).toBeCalledWith(lunr.tokenizer('testTerm'), {
+ expect(query.term).toHaveBeenCalledWith(lunr.tokenizer('testTerm'), {
boost: 1,
usePipeline: false,
editDistance: 2,
});
- expect(query.term).toBeCalledWith(lunr.tokenizer('testKind'), {
+ expect(query.term).toHaveBeenCalledWith(lunr.tokenizer('testKind'), {
fields: ['kind'],
presence: lunr.Query.presence.REQUIRED,
});
- expect(query.term).toBeCalledWith(lunr.tokenizer('testNameSpace'), {
+ expect(query.term).toHaveBeenCalledWith(lunr.tokenizer('testNameSpace'), {
fields: ['namespace'],
presence: lunr.Query.presence.REQUIRED,
});
@@ -1092,3 +1092,123 @@ describe('parseHighlightFields', () => {
});
});
});
+
+describe('stopword testing', () => {
+ let testLunrSearchEngine: SearchEngine;
+
+ beforeEach(() => {
+ testLunrSearchEngine = new LunrSearchEngine({ logger: getVoidLogger() });
+ jest.clearAllMocks();
+ });
+
+ it('test with stopword in title', async () => {
+ const mockDocuments = [
+ {
+ title: 'a home',
+ text: 'mary had a little lamb at home',
+ location: 'test/location',
+ },
+ ];
+
+ const indexer = await getActualIndexer(testLunrSearchEngine, 'test-index');
+
+ await TestPipeline.withSubject(indexer)
+ .withDocuments(mockDocuments)
+ .execute();
+
+ const mockedSearchResult = await testLunrSearchEngine.query({
+ term: 'mary',
+ filters: {
+ title: 'a home',
+ },
+ });
+
+ expect(mockedSearchResult).toMatchObject({
+ results: [
+ {
+ document: {
+ title: 'a home',
+ text: 'mary had a little lamb at home',
+ location: 'test/location',
+ },
+ rank: 1,
+ },
+ ],
+ nextPageCursor: undefined,
+ });
+ });
+
+ it('test with stopword connected with dash', async () => {
+ const mockDocuments = [
+ {
+ title: 'a-home',
+ text: 'mary had a little lamb at home',
+ location: 'test/location',
+ },
+ ];
+
+ const indexer = await getActualIndexer(testLunrSearchEngine, 'test-index');
+
+ await TestPipeline.withSubject(indexer)
+ .withDocuments(mockDocuments)
+ .execute();
+
+ const mockedSearchResult = await testLunrSearchEngine.query({
+ term: 'mary',
+ filters: {
+ title: 'a-home',
+ },
+ });
+
+ expect(mockedSearchResult).toMatchObject({
+ results: [
+ {
+ document: {
+ title: 'a-home',
+ text: 'mary had a little lamb at home',
+ location: 'test/location',
+ },
+ rank: 1,
+ },
+ ],
+ nextPageCursor: undefined,
+ });
+ });
+
+ it('test with only stop word in title', async () => {
+ const mockDocuments = [
+ {
+ title: 'a',
+ text: 'mary had a little lamb at home',
+ location: 'test/location',
+ },
+ ];
+
+ const indexer = await getActualIndexer(testLunrSearchEngine, 'test-index');
+
+ await TestPipeline.withSubject(indexer)
+ .withDocuments(mockDocuments)
+ .execute();
+
+ const mockedSearchResult = await testLunrSearchEngine.query({
+ term: 'mary',
+ filters: {
+ title: 'a',
+ },
+ });
+
+ expect(mockedSearchResult).toMatchObject({
+ results: [
+ {
+ document: {
+ title: 'a',
+ text: 'mary had a little lamb at home',
+ location: 'test/location',
+ },
+ rank: 1,
+ },
+ ],
+ nextPageCursor: undefined,
+ });
+ });
+});
diff --git a/plugins/search-backend-node/src/engines/LunrSearchEngine.ts b/plugins/search-backend-node/src/engines/LunrSearchEngine.ts
index 4d6779950f..d65aa58b9d 100644
--- a/plugins/search-backend-node/src/engines/LunrSearchEngine.ts
+++ b/plugins/search-backend-node/src/engines/LunrSearchEngine.ts
@@ -114,10 +114,16 @@ export class LunrSearchEngine implements SearchEngine {
// Require that the given field has the given value
if (['string', 'number', 'boolean'].includes(typeof value)) {
- q.term(lunr.tokenizer(value?.toString()), {
- presence: lunr.Query.presence.REQUIRED,
- fields: [field],
- });
+ q.term(
+ lunr
+ .tokenizer(value?.toString())
+ .map(lunr.stopWordFilter)
+ .filter(element => element !== undefined),
+ {
+ presence: lunr.Query.presence.REQUIRED,
+ fields: [field],
+ },
+ );
} else if (Array.isArray(value)) {
// Illustrate how multi-value filters could work.
// But warn that Lurn supports this poorly.
diff --git a/plugins/search-backend/package.json b/plugins/search-backend/package.json
index 0e1ec070e3..c6a104b14e 100644
--- a/plugins/search-backend/package.json
+++ b/plugins/search-backend/package.json
@@ -23,13 +23,13 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.15.1-next.0",
+ "@backstage/backend-common": "^0.15.1-next.1",
"@backstage/config": "^1.0.1",
"@backstage/errors": "^1.1.0",
- "@backstage/plugin-auth-node": "^0.2.5-next.0",
+ "@backstage/plugin-auth-node": "^0.2.5-next.1",
"@backstage/plugin-permission-common": "^0.6.4-next.0",
- "@backstage/plugin-permission-node": "^0.6.5-next.0",
- "@backstage/plugin-search-backend-node": "^1.0.2-next.0",
+ "@backstage/plugin-permission-node": "^0.6.5-next.1",
+ "@backstage/plugin-search-backend-node": "^1.0.2-next.1",
"@backstage/plugin-search-common": "^1.0.1-next.0",
"@backstage/types": "^1.0.0",
"@types/express": "^4.17.6",
@@ -43,7 +43,7 @@
"zod": "^3.11.6"
},
"devDependencies": {
- "@backstage/cli": "^0.18.2-next.0",
+ "@backstage/cli": "^0.19.0-next.1",
"@types/supertest": "^2.0.8",
"supertest": "^6.1.3"
},
diff --git a/plugins/search-common/package.json b/plugins/search-common/package.json
index d0be6ddb43..61362e48b7 100644
--- a/plugins/search-common/package.json
+++ b/plugins/search-common/package.json
@@ -43,7 +43,7 @@
"@backstage/plugin-permission-common": "^0.6.4-next.0"
},
"devDependencies": {
- "@backstage/cli": "^0.18.2-next.0"
+ "@backstage/cli": "^0.19.0-next.1"
},
"jest": {
"roots": [
diff --git a/plugins/search-react/CHANGELOG.md b/plugins/search-react/CHANGELOG.md
index d5272d8410..fb597dcbc2 100644
--- a/plugins/search-react/CHANGELOG.md
+++ b/plugins/search-react/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-search-react
+## 1.0.2-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+
## 1.0.2-next.0
### Patch Changes
diff --git a/plugins/search-react/package.json b/plugins/search-react/package.json
index 80234670e7..b2cc6cc76e 100644
--- a/plugins/search-react/package.json
+++ b/plugins/search-react/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-search-react",
- "version": "1.0.2-next.0",
+ "version": "1.0.2-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -32,24 +32,24 @@
},
"dependencies": {
"@backstage/plugin-search-common": "^1.0.1-next.0",
- "@backstage/core-components": "^0.11.1-next.0",
- "@backstage/core-plugin-api": "^1.0.6-next.0",
+ "@backstage/core-components": "^0.11.1-next.1",
+ "@backstage/core-plugin-api": "^1.0.6-next.1",
"@backstage/version-bridge": "^1.0.1",
"@backstage/theme": "^0.2.16",
"@backstage/types": "^1.0.0",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.57",
- "react-router": "6.0.0-beta.0",
"react-use": "^17.3.2"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0",
- "react": "^16.13.1 || ^17.0.0"
+ "react": "^16.13.1 || ^17.0.0",
+ "react-router": "6.0.0-beta.0 || ^6.3.0"
},
"devDependencies": {
- "@backstage/core-app-api": "^1.0.6-next.0",
- "@backstage/test-utils": "^1.1.4-next.0",
+ "@backstage/core-app-api": "^1.1.0-next.1",
+ "@backstage/test-utils": "^1.2.0-next.1",
"@testing-library/react": "^12.1.3",
"@testing-library/react-hooks": "^8.0.0",
"@testing-library/jest-dom": "^5.10.1",
diff --git a/plugins/search-react/src/components/SearchResultPager/SearchResultPager.test.tsx b/plugins/search-react/src/components/SearchResultPager/SearchResultPager.test.tsx
index 24d9a76e51..2508604ca9 100644
--- a/plugins/search-react/src/components/SearchResultPager/SearchResultPager.test.tsx
+++ b/plugins/search-react/src/components/SearchResultPager/SearchResultPager.test.tsx
@@ -46,13 +46,13 @@ describe('SearchResultPager', () => {
expect(getByLabelText('previous page')).toBeInTheDocument();
});
await userEvent.click(getByLabelText('previous page'));
- expect(fetchPreviousPage).toBeCalled();
+ expect(fetchPreviousPage).toHaveBeenCalled();
await waitFor(() => {
expect(getByLabelText('next page')).toBeInTheDocument();
});
await userEvent.click(getByLabelText('next page'));
- expect(fetchNextPage).toBeCalled();
+ expect(fetchNextPage).toHaveBeenCalled();
});
});
diff --git a/plugins/search/CHANGELOG.md b/plugins/search/CHANGELOG.md
index 25fc0fbd8c..63ab2a5a73 100644
--- a/plugins/search/CHANGELOG.md
+++ b/plugins/search/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-search
+## 1.0.2-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+ - @backstage/plugin-search-react@1.0.2-next.1
+
## 1.0.2-next.0
### Patch Changes
diff --git a/plugins/search/package.json b/plugins/search/package.json
index a0b1370ec8..761566dca2 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.0.2-next.0",
+ "version": "1.0.2-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -35,12 +35,12 @@
"dependencies": {
"@backstage/catalog-model": "^1.1.0",
"@backstage/config": "^1.0.1",
- "@backstage/core-components": "^0.11.1-next.0",
- "@backstage/core-plugin-api": "^1.0.6-next.0",
+ "@backstage/core-components": "^0.11.1-next.1",
+ "@backstage/core-plugin-api": "^1.0.6-next.1",
"@backstage/errors": "^1.1.0",
- "@backstage/plugin-catalog-react": "^1.1.4-next.0",
+ "@backstage/plugin-catalog-react": "^1.1.4-next.1",
"@backstage/plugin-search-common": "^1.0.1-next.0",
- "@backstage/plugin-search-react": "^1.0.2-next.0",
+ "@backstage/plugin-search-react": "^1.0.2-next.1",
"@backstage/theme": "^0.2.16",
"@backstage/types": "^1.0.0",
"@backstage/version-bridge": "^1.0.1",
@@ -48,19 +48,19 @@
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.57",
"qs": "^6.9.4",
- "react-router": "6.0.0-beta.0",
- "react-router-dom": "6.0.0-beta.0",
"react-use": "^17.2.4"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0",
- "react": "^16.13.1 || ^17.0.0"
+ "react": "^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"
},
"devDependencies": {
- "@backstage/cli": "^0.18.2-next.0",
- "@backstage/core-app-api": "^1.0.6-next.0",
- "@backstage/dev-utils": "^1.0.6-next.0",
- "@backstage/test-utils": "^1.1.4-next.0",
+ "@backstage/cli": "^0.19.0-next.1",
+ "@backstage/core-app-api": "^1.1.0-next.1",
+ "@backstage/dev-utils": "^1.0.6-next.1",
+ "@backstage/test-utils": "^1.2.0-next.1",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/react-hooks": "^8.0.0",
diff --git a/plugins/search/src/components/util.test.tsx b/plugins/search/src/components/util.test.tsx
index 1b452a205e..74d5ec0b50 100644
--- a/plugins/search/src/components/util.test.tsx
+++ b/plugins/search/src/components/util.test.tsx
@@ -18,7 +18,6 @@ import React from 'react';
import { wrapInTestApp } from '@backstage/test-utils';
import { act, render } from '@testing-library/react';
import { useNavigateToQuery } from './util';
-import { Routes, Route } from 'react-router-dom';
import { rootRouteRef } from '../plugin';
const navigate = jest.fn();
@@ -38,16 +37,11 @@ describe('util', () => {
await act(async () => {
await render(
- wrapInTestApp(
-
- } />
- ,
- {
- mountedRoutes: {
- '/search': rootRouteRef,
- },
+ wrapInTestApp(, {
+ mountedRoutes: {
+ '/search': rootRouteRef,
},
- ),
+ }),
);
expect(navigate).toHaveBeenCalledTimes(1);
diff --git a/plugins/sentry/CHANGELOG.md b/plugins/sentry/CHANGELOG.md
index ddd7e4f358..2c083e4291 100644
--- a/plugins/sentry/CHANGELOG.md
+++ b/plugins/sentry/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-sentry
+## 0.4.2-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- d669d89206: Minor API signatures cleanup
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+
## 0.4.2-next.0
### Patch Changes
diff --git a/plugins/sentry/package.json b/plugins/sentry/package.json
index c0d3df778f..859efa5ecb 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.4.2-next.0",
+ "version": "0.4.2-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -36,27 +36,27 @@
},
"dependencies": {
"@backstage/catalog-model": "^1.1.0",
- "@backstage/core-components": "^0.11.1-next.0",
- "@backstage/core-plugin-api": "^1.0.6-next.0",
- "@backstage/plugin-catalog-react": "^1.1.4-next.0",
+ "@backstage/core-components": "^0.11.1-next.1",
+ "@backstage/core-plugin-api": "^1.0.6-next.1",
+ "@backstage/plugin-catalog-react": "^1.1.4-next.1",
"@backstage/theme": "^0.2.16",
"@material-table/core": "^3.1.0",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.57",
"luxon": "^3.0.0",
- "react-router": "6.0.0-beta.0",
"react-sparklines": "^1.7.0",
"react-use": "^17.2.4"
},
"peerDependencies": {
- "react": "^16.13.1 || ^17.0.0"
+ "react": "^16.13.1 || ^17.0.0",
+ "react-router": "6.0.0-beta.0 || ^6.3.0"
},
"devDependencies": {
- "@backstage/cli": "^0.18.2-next.0",
- "@backstage/core-app-api": "^1.0.6-next.0",
- "@backstage/dev-utils": "^1.0.6-next.0",
- "@backstage/test-utils": "^1.1.4-next.0",
+ "@backstage/cli": "^0.19.0-next.1",
+ "@backstage/core-app-api": "^1.1.0-next.1",
+ "@backstage/dev-utils": "^1.0.6-next.1",
+ "@backstage/test-utils": "^1.2.0-next.1",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/shortcuts/CHANGELOG.md b/plugins/shortcuts/CHANGELOG.md
index 4318da5fc1..a29879b34f 100644
--- a/plugins/shortcuts/CHANGELOG.md
+++ b/plugins/shortcuts/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-shortcuts
+## 0.3.1-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- d669d89206: Minor API signatures cleanup
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+
## 0.3.1-next.0
### Patch Changes
diff --git a/plugins/shortcuts/package.json b/plugins/shortcuts/package.json
index f02a7ba68a..e511fa71a8 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.1-next.0",
+ "version": "0.3.1-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -24,8 +24,8 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/core-components": "^0.11.1-next.0",
- "@backstage/core-plugin-api": "^1.0.6-next.0",
+ "@backstage/core-components": "^0.11.1-next.1",
+ "@backstage/core-plugin-api": "^1.0.6-next.1",
"@backstage/theme": "^0.2.16",
"@backstage/types": "^1.0.0",
"@material-ui/core": "^4.12.2",
@@ -33,19 +33,19 @@
"@material-ui/lab": "4.0.0-alpha.57",
"@types/zen-observable": "^0.8.2",
"react-hook-form": "^7.12.2",
- "react-router": "6.0.0-beta.0",
"react-use": "^17.2.4",
"uuid": "^8.3.2",
"zen-observable": "^0.8.15"
},
"peerDependencies": {
- "react": "^16.13.1 || ^17.0.0"
+ "react": "^16.13.1 || ^17.0.0",
+ "react-router": "6.0.0-beta.0 || ^6.3.0"
},
"devDependencies": {
- "@backstage/cli": "^0.18.2-next.0",
- "@backstage/core-app-api": "^1.0.6-next.0",
- "@backstage/dev-utils": "^1.0.6-next.0",
- "@backstage/test-utils": "^1.1.4-next.0",
+ "@backstage/cli": "^0.19.0-next.1",
+ "@backstage/core-app-api": "^1.1.0-next.1",
+ "@backstage/dev-utils": "^1.0.6-next.1",
+ "@backstage/test-utils": "^1.2.0-next.1",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/shortcuts/src/AddShortcut.test.tsx b/plugins/shortcuts/src/AddShortcut.test.tsx
index b35b4c588d..c6d89318b2 100644
--- a/plugins/shortcuts/src/AddShortcut.test.tsx
+++ b/plugins/shortcuts/src/AddShortcut.test.tsx
@@ -60,7 +60,7 @@ describe('AddShortcut', () => {
fireEvent.click(screen.getByText('Save'));
await waitFor(() => {
- expect(spy).toBeCalledWith({
+ expect(spy).toHaveBeenCalledWith({
title: 'some title',
url: '/some-url',
});
@@ -77,7 +77,7 @@ describe('AddShortcut', () => {
fireEvent.click(screen.getByText('Use current page'));
fireEvent.click(screen.getByText('Save'));
await waitFor(() => {
- expect(spy).toBeCalledWith({
+ expect(spy).toHaveBeenCalledWith({
title: 'some document title',
url: '/some-initial-url',
});
diff --git a/plugins/shortcuts/src/EditShortcut.test.tsx b/plugins/shortcuts/src/EditShortcut.test.tsx
index a08299055b..4d5128b0a8 100644
--- a/plugins/shortcuts/src/EditShortcut.test.tsx
+++ b/plugins/shortcuts/src/EditShortcut.test.tsx
@@ -66,7 +66,7 @@ describe('EditShortcut', () => {
fireEvent.click(screen.getByText('Save'));
await waitFor(() => {
- expect(spy).toBeCalledWith({
+ expect(spy).toHaveBeenCalledWith({
id: 'id',
title: 'some new title',
url: '/some-new-url',
@@ -81,7 +81,7 @@ describe('EditShortcut', () => {
await renderInTestApp();
fireEvent.click(screen.getByText('Remove'));
- expect(spy).toBeCalledWith('id');
+ expect(spy).toHaveBeenCalledWith('id');
});
it('displays errors', async () => {
diff --git a/plugins/sonarqube-backend/package.json b/plugins/sonarqube-backend/package.json
index 6f32e36331..b40977598b 100644
--- a/plugins/sonarqube-backend/package.json
+++ b/plugins/sonarqube-backend/package.json
@@ -23,7 +23,7 @@
"postpack": "backstage-cli package postpack"
},
"dependencies": {
- "@backstage/backend-common": "^0.15.1-next.0",
+ "@backstage/backend-common": "^0.15.1-next.1",
"@backstage/config": "^1.0.1",
"@backstage/errors": "^1.1.0",
"@types/express": "*",
@@ -34,8 +34,8 @@
"yn": "^5.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.18.2-next.0",
- "@backstage/test-utils": "^1.1.4-next.0",
+ "@backstage/cli": "^0.19.0-next.1",
+ "@backstage/test-utils": "^1.2.0-next.1",
"@types/supertest": "^2.0.12",
"msw": "^0.45.0",
"supertest": "^6.2.4"
diff --git a/plugins/sonarqube-backend/src/service/router.test.ts b/plugins/sonarqube-backend/src/service/router.test.ts
index 426066d897..7045cdf0d2 100644
--- a/plugins/sonarqube-backend/src/service/router.test.ts
+++ b/plugins/sonarqube-backend/src/service/router.test.ts
@@ -69,8 +69,8 @@ describe('createRouter', () => {
instanceKey: DUMMY_INSTANCE_KEY,
})
.send();
- expect(getFindingsMock).toBeCalledTimes(1);
- expect(getFindingsMock).toBeCalledWith({
+ expect(getFindingsMock).toHaveBeenCalledTimes(1);
+ expect(getFindingsMock).toHaveBeenCalledWith({
componentKey: DUMMY_COMPONENT_KEY,
instanceName: DUMMY_INSTANCE_KEY,
});
@@ -103,8 +103,8 @@ describe('createRouter', () => {
})
.send();
- expect(getFindingsMock).toBeCalledTimes(1);
- expect(getFindingsMock).toBeCalledWith({
+ expect(getFindingsMock).toHaveBeenCalledTimes(1);
+ expect(getFindingsMock).toHaveBeenCalledWith({
componentKey: DUMMY_COMPONENT_KEY,
instanceName: undefined,
});
@@ -123,8 +123,8 @@ describe('createRouter', () => {
instanceKey: DUMMY_INSTANCE_KEY,
})
.send();
- expect(getBaseUrlMock).toBeCalledTimes(1);
- expect(getBaseUrlMock).toBeCalledWith({
+ expect(getBaseUrlMock).toHaveBeenCalledTimes(1);
+ expect(getBaseUrlMock).toHaveBeenCalledWith({
instanceName: DUMMY_INSTANCE_KEY,
});
expect(response.status).toEqual(200);
@@ -134,8 +134,8 @@ describe('createRouter', () => {
it('query default instance when instanceKey not provided', async () => {
getBaseUrlMock.mockReturnValue({ baseUrl: DUMMY_INSTANCE_URL });
const response = await request(app).get('/instanceUrl').send();
- expect(getBaseUrlMock).toBeCalledTimes(1);
- expect(getBaseUrlMock).toBeCalledWith({
+ expect(getBaseUrlMock).toHaveBeenCalledTimes(1);
+ expect(getBaseUrlMock).toHaveBeenCalledWith({
instanceName: undefined,
});
expect(response.status).toEqual(200);
diff --git a/plugins/sonarqube-backend/src/service/sonarqubeInfoProvider.test.ts b/plugins/sonarqube-backend/src/service/sonarqubeInfoProvider.test.ts
index 64313e8fd2..5675d635e1 100644
--- a/plugins/sonarqube-backend/src/service/sonarqubeInfoProvider.test.ts
+++ b/plugins/sonarqube-backend/src/service/sonarqubeInfoProvider.test.ts
@@ -129,7 +129,7 @@ describe('SonarqubeConfig', () => {
},
}),
),
- ).toThrowError(Error);
+ ).toThrow(Error);
});
it('Throw an error if default config is partially provided', async () => {
@@ -141,7 +141,7 @@ describe('SonarqubeConfig', () => {
},
}),
),
- ).toThrowError(Error);
+ ).toThrow(Error);
});
});
@@ -208,7 +208,7 @@ describe('SonarqubeConfig', () => {
expect(() =>
config.getInstanceConfig({ sonarqubeName: 'default' }),
- ).toThrowError(Error);
+ ).toThrow(Error);
});
it('Throw an error if named instance could not be found', async () => {
@@ -218,7 +218,7 @@ describe('SonarqubeConfig', () => {
expect(() =>
config.getInstanceConfig({ sonarqubeName: 'other' }),
- ).toThrowError(Error);
+ ).toThrow(Error);
});
});
});
diff --git a/plugins/sonarqube/package.json b/plugins/sonarqube/package.json
index 5bd8a088a6..0c38eaa155 100644
--- a/plugins/sonarqube/package.json
+++ b/plugins/sonarqube/package.json
@@ -37,9 +37,9 @@
},
"dependencies": {
"@backstage/catalog-model": "^1.1.0",
- "@backstage/core-components": "^0.11.1-next.0",
- "@backstage/core-plugin-api": "^1.0.6-next.0",
- "@backstage/plugin-catalog-react": "^1.1.4-next.0",
+ "@backstage/core-components": "^0.11.1-next.1",
+ "@backstage/core-plugin-api": "^1.0.6-next.1",
+ "@backstage/plugin-catalog-react": "^1.1.4-next.1",
"@backstage/theme": "^0.2.16",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
@@ -53,10 +53,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.18.2-next.0",
- "@backstage/core-app-api": "^1.0.6-next.0",
- "@backstage/dev-utils": "^1.0.6-next.0",
- "@backstage/test-utils": "^1.1.4-next.0",
+ "@backstage/cli": "^0.19.0-next.1",
+ "@backstage/core-app-api": "^1.1.0-next.1",
+ "@backstage/dev-utils": "^1.0.6-next.1",
+ "@backstage/test-utils": "^1.2.0-next.1",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/splunk-on-call/CHANGELOG.md b/plugins/splunk-on-call/CHANGELOG.md
index 9dfaaf7751..5519911393 100644
--- a/plugins/splunk-on-call/CHANGELOG.md
+++ b/plugins/splunk-on-call/CHANGELOG.md
@@ -1,5 +1,16 @@
# @backstage/plugin-splunk-on-call
+## 0.3.33-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- d669d89206: Minor API signatures cleanup
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+
## 0.3.33-next.0
### Patch Changes
diff --git a/plugins/splunk-on-call/package.json b/plugins/splunk-on-call/package.json
index 0bf2d7daed..b32e682930 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.3.33-next.0",
+ "version": "0.3.33-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -35,26 +35,26 @@
},
"dependencies": {
"@backstage/catalog-model": "^1.1.0",
- "@backstage/core-components": "^0.11.1-next.0",
- "@backstage/core-plugin-api": "^1.0.6-next.0",
- "@backstage/plugin-catalog-react": "^1.1.4-next.0",
+ "@backstage/core-components": "^0.11.1-next.1",
+ "@backstage/core-plugin-api": "^1.0.6-next.1",
+ "@backstage/plugin-catalog-react": "^1.1.4-next.1",
"@backstage/theme": "^0.2.16",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.57",
"classnames": "^2.2.6",
"luxon": "^3.0.0",
- "react-router-dom": "6.0.0-beta.0",
"react-use": "^17.2.4"
},
"peerDependencies": {
- "react": "^16.13.1 || ^17.0.0"
+ "react": "^16.13.1 || ^17.0.0",
+ "react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"devDependencies": {
- "@backstage/cli": "^0.18.2-next.0",
- "@backstage/core-app-api": "^1.0.6-next.0",
- "@backstage/dev-utils": "^1.0.6-next.0",
- "@backstage/test-utils": "^1.1.4-next.0",
+ "@backstage/cli": "^0.19.0-next.1",
+ "@backstage/core-app-api": "^1.1.0-next.1",
+ "@backstage/dev-utils": "^1.0.6-next.1",
+ "@backstage/test-utils": "^1.2.0-next.1",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/stack-overflow-backend/CHANGELOG.md b/plugins/stack-overflow-backend/CHANGELOG.md
index cb83e3205f..0d47f9362e 100644
--- a/plugins/stack-overflow-backend/CHANGELOG.md
+++ b/plugins/stack-overflow-backend/CHANGELOG.md
@@ -1,5 +1,12 @@
# @backstage/plugin-stack-overflow-backend
+## 0.1.5-next.1
+
+### Patch Changes
+
+- 79040f73f7: Now requests all questions available using pagination. Default max page is set to 100, with a configurable `maxPage` option on the collator.
+- 148568b5c2: Switched to using node-fetch instead of cross-fetch as is standard for our backend packages
+
## 0.1.5-next.0
### Patch Changes
diff --git a/plugins/stack-overflow-backend/api-report.md b/plugins/stack-overflow-backend/api-report.md
index 1a21ff34ac..11bfbaadc9 100644
--- a/plugins/stack-overflow-backend/api-report.md
+++ b/plugins/stack-overflow-backend/api-report.md
@@ -41,6 +41,7 @@ export class StackOverflowQuestionsCollatorFactory
// @public
export type StackOverflowQuestionsCollatorFactoryOptions = {
baseUrl?: string;
+ maxPage?: number;
apiKey?: string;
requestParams: StackOverflowQuestionsRequestParams;
logger: Logger;
diff --git a/plugins/stack-overflow-backend/package.json b/plugins/stack-overflow-backend/package.json
index db883dbfd1..e16c2e0d3a 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.1.5-next.0",
+ "version": "0.1.5-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -33,10 +33,10 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/plugin-search-common": "^1.0.1-next.0",
"@backstage/config": "^1.0.1",
+ "@backstage/plugin-search-common": "^1.0.1-next.0",
+ "node-fetch": "^2.6.7",
"qs": "^6.9.4",
- "cross-fetch": "^3.1.5",
"winston": "^3.2.1"
},
"files": [
diff --git a/plugins/stack-overflow-backend/src/search/StackOverflowQuestionsCollatorFactory.ts b/plugins/stack-overflow-backend/src/search/StackOverflowQuestionsCollatorFactory.ts
index 45261ce546..688f54f005 100644
--- a/plugins/stack-overflow-backend/src/search/StackOverflowQuestionsCollatorFactory.ts
+++ b/plugins/stack-overflow-backend/src/search/StackOverflowQuestionsCollatorFactory.ts
@@ -20,7 +20,7 @@ import {
} from '@backstage/plugin-search-common';
import { Config } from '@backstage/config';
import { Readable } from 'stream';
-import fetch from 'cross-fetch';
+import fetch from 'node-fetch';
import qs from 'qs';
import { Logger } from 'winston';
@@ -50,6 +50,7 @@ export type StackOverflowQuestionsRequestParams = {
*/
export type StackOverflowQuestionsCollatorFactoryOptions = {
baseUrl?: string;
+ maxPage?: number;
apiKey?: string;
requestParams: StackOverflowQuestionsRequestParams;
logger: Logger;
@@ -66,12 +67,14 @@ export class StackOverflowQuestionsCollatorFactory
protected requestParams: StackOverflowQuestionsRequestParams;
private readonly baseUrl: string | undefined;
private readonly apiKey: string | undefined;
+ private readonly maxPage: number | undefined;
private readonly logger: Logger;
public readonly type: string = 'stack-overflow';
private constructor(options: StackOverflowQuestionsCollatorFactoryOptions) {
this.baseUrl = options.baseUrl;
this.apiKey = options.apiKey;
+ this.maxPage = options.maxPage;
this.requestParams = options.requestParams;
this.logger = options.logger;
}
@@ -84,9 +87,11 @@ export class StackOverflowQuestionsCollatorFactory
const baseUrl =
config.getOptionalString('stackoverflow.baseUrl') ||
'https://api.stackexchange.com/2.2';
+ const maxPage = options.maxPage || 100;
return new StackOverflowQuestionsCollatorFactory({
...options,
baseUrl,
+ maxPage,
apiKey,
});
}
@@ -122,17 +127,31 @@ export class StackOverflowQuestionsCollatorFactory
? `${params ? '&' : '?'}key=${this.apiKey}`
: '';
- const res = await fetch(`${this.baseUrl}/questions${params}${apiKeyParam}`);
- const data = await res.json();
+ let hasMorePages = true;
+ let page = 1;
+ while (hasMorePages) {
+ if (page === this.maxPage) {
+ this.logger.warn(
+ `Over ${this.maxPage} requests to the Stack Overflow API have been made, which may not have been intended. Either specify requestParams that limit the questions returned, or configure a higher maxPage if necessary.`,
+ );
+ break;
+ }
+ const res = await fetch(
+ `${this.baseUrl}/questions${params}${apiKeyParam}&page=${page}`,
+ );
- for (const question of data.items) {
- yield {
- title: question.title,
- location: question.link,
- text: question.owner.display_name,
- tags: question.tags,
- answers: question.answer_count,
- };
+ const data = await res.json();
+ for (const question of data.items) {
+ yield {
+ title: question.title,
+ location: question.link,
+ text: question.owner.display_name,
+ tags: question.tags,
+ answers: question.answer_count,
+ };
+ }
+ hasMorePages = data.has_more;
+ page = page + 1;
}
}
}
diff --git a/plugins/stack-overflow/CHANGELOG.md b/plugins/stack-overflow/CHANGELOG.md
index 2770402c01..e0192226ec 100644
--- a/plugins/stack-overflow/CHANGELOG.md
+++ b/plugins/stack-overflow/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-stack-overflow
+## 0.1.5-next.1
+
+### Patch Changes
+
+- a720c44070: Support showing HTML entity references from the API response before rendering the question title to the list component.
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-home@0.4.25-next.1
+
## 0.1.5-next.0
### Patch Changes
diff --git a/plugins/stack-overflow/package.json b/plugins/stack-overflow/package.json
index f6b7be12b9..07cdb9f58f 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.5-next.0",
+ "version": "0.1.5-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -24,9 +24,9 @@
},
"dependencies": {
"@backstage/config": "^1.0.1",
- "@backstage/core-components": "^0.11.1-next.0",
- "@backstage/core-plugin-api": "^1.0.6-next.0",
- "@backstage/plugin-home": "^0.4.25-next.0",
+ "@backstage/core-components": "^0.11.1-next.1",
+ "@backstage/core-plugin-api": "^1.0.6-next.1",
+ "@backstage/plugin-home": "^0.4.25-next.1",
"@backstage/plugin-search-common": "^1.0.1-next.0",
"@backstage/theme": "^0.2.16",
"@material-ui/core": "^4.12.2",
@@ -42,10 +42,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.18.2-next.0",
- "@backstage/core-app-api": "^1.0.6-next.0",
- "@backstage/dev-utils": "^1.0.6-next.0",
- "@backstage/test-utils": "^1.1.4-next.0",
+ "@backstage/cli": "^0.19.0-next.1",
+ "@backstage/core-app-api": "^1.1.0-next.1",
+ "@backstage/dev-utils": "^1.0.6-next.1",
+ "@backstage/test-utils": "^1.2.0-next.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
"@types/jest": "^26.0.7",
diff --git a/plugins/stack-overflow/src/api/StackOverflowApi.ts b/plugins/stack-overflow/src/api/StackOverflowApi.ts
new file mode 100644
index 0000000000..6e76f51409
--- /dev/null
+++ b/plugins/stack-overflow/src/api/StackOverflowApi.ts
@@ -0,0 +1,31 @@
+/*
+ * 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 { createApiRef } from '@backstage/core-plugin-api';
+import {
+ StackOverflowQuestion,
+ StackOverflowQuestionsRequestParams,
+} from '../types';
+
+export const stackOverflowApiRef = createApiRef({
+ id: 'plugin.stackoverflow.service',
+});
+
+export type StackOverflowApi = {
+ listQuestions(options?: {
+ requestParams: StackOverflowQuestionsRequestParams;
+ }): Promise;
+};
diff --git a/plugins/stack-overflow/src/api/StackOverflowClient.test.ts b/plugins/stack-overflow/src/api/StackOverflowClient.test.ts
new file mode 100644
index 0000000000..6574771350
--- /dev/null
+++ b/plugins/stack-overflow/src/api/StackOverflowClient.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 { setupRequestMockHandlers } from '@backstage/test-utils';
+import { rest } from 'msw';
+import { setupServer } from 'msw/node';
+import { StackOverflowClient } from './index';
+import { StackOverflowQuestion } from '../types';
+import { ConfigReader } from '@backstage/config';
+
+const server = setupServer();
+
+const backstageQuestions: StackOverflowQuestion[] = [
+ {
+ title: 'What is it?',
+ link: 'https://example.com:9191/questions/1',
+ tags: ['asdf'],
+ owner: { who: 'me' },
+ answer_count: 3,
+ },
+ {
+ title: 'Is it?',
+ link: 'https://example.com:9191/questions/2',
+ tags: ['asdf'],
+ owner: { who: 'me' },
+ answer_count: 4,
+ },
+];
+
+describe('StackOverflowClient', () => {
+ setupRequestMockHandlers(server);
+
+ const mockBaseUrl = 'https://example.com:9191';
+
+ const setupHandlers = () => {
+ server.use(
+ rest.get(`${mockBaseUrl}/questions`, (req, res, ctx) => {
+ return res(
+ ctx.json({
+ items:
+ req.url.searchParams.get('tagged') === 'backstage'
+ ? backstageQuestions
+ : [],
+ }),
+ );
+ }),
+ );
+ };
+
+ it('list questions should return all questions', async () => {
+ setupHandlers();
+ const client = StackOverflowClient.fromConfig(
+ new ConfigReader({
+ stackoverflow: {
+ baseUrl: 'https://example.com:9191',
+ },
+ }),
+ );
+
+ const responseQuestions = await client.listQuestions({
+ requestParams: { tagged: 'backstage' },
+ });
+ expect(responseQuestions.length).toEqual(2);
+ expect(responseQuestions).toEqual(backstageQuestions);
+ });
+});
diff --git a/plugins/stack-overflow/src/api/StackOverflowClient.ts b/plugins/stack-overflow/src/api/StackOverflowClient.ts
new file mode 100644
index 0000000000..f4ff5bf190
--- /dev/null
+++ b/plugins/stack-overflow/src/api/StackOverflowClient.ts
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2021 The 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 fetch from 'cross-fetch';
+import qs from 'qs';
+import { StackOverflowApi } from './StackOverflowApi';
+import {
+ StackOverflowQuestion,
+ StackOverflowQuestionsRequestParams,
+} from '../types';
+import { Config } from '@backstage/config';
+
+export class StackOverflowClient implements StackOverflowApi {
+ private baseUrl: string;
+
+ private constructor({ baseUrl }: { baseUrl: string }) {
+ this.baseUrl = baseUrl;
+ }
+
+ static fromConfig(config: Config) {
+ return new StackOverflowClient({
+ baseUrl:
+ config.getOptionalString('stackoverflow.baseUrl') ||
+ 'https://api.stackexchange.com/2.2',
+ });
+ }
+
+ /**
+ * List Questions in the StackOverflow instance
+ *
+ * */
+ async listQuestions(options: {
+ requestParams: StackOverflowQuestionsRequestParams;
+ }): Promise {
+ const params = qs.stringify(options.requestParams, {
+ addQueryPrefix: true,
+ });
+ const response = await fetch(`${this.baseUrl}/questions${params}`);
+ const data = await response.json();
+ return data.items;
+ }
+}
diff --git a/plugins/stack-overflow/src/api/index.ts b/plugins/stack-overflow/src/api/index.ts
new file mode 100644
index 0000000000..2d2db5f5cc
--- /dev/null
+++ b/plugins/stack-overflow/src/api/index.ts
@@ -0,0 +1,25 @@
+/*
+ * 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.
+ */
+
+/**
+ * An API definition and client for integrating with the StackOverflow Backend
+ * API
+ *
+ * @packageDocumentation
+ */
+
+export * from './StackOverflowApi';
+export * from './StackOverflowClient';
diff --git a/plugins/stack-overflow/src/home/StackOverflowQuestions/Content.tsx b/plugins/stack-overflow/src/home/StackOverflowQuestions/Content.tsx
index fbc3a90a9d..a5273ecff9 100644
--- a/plugins/stack-overflow/src/home/StackOverflowQuestions/Content.tsx
+++ b/plugins/stack-overflow/src/home/StackOverflowQuestions/Content.tsx
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-import { useApi, configApiRef } from '@backstage/core-plugin-api';
+import { useApi } from '@backstage/core-plugin-api';
import { Link } from '@backstage/core-components';
import {
IconButton,
@@ -26,12 +26,13 @@ import {
} from '@material-ui/core';
import OpenInNewIcon from '@material-ui/icons/OpenInNew';
import useAsync from 'react-use/lib/useAsync';
-import qs from 'qs';
+import _unescape from 'lodash/unescape';
import React from 'react';
import {
StackOverflowQuestion,
StackOverflowQuestionsContentProps,
} from '../../types';
+import { stackOverflowApiRef } from '../../api';
/**
* A component to display a list of stack overflow questions on the homepage.
@@ -41,18 +42,12 @@ import {
export const Content = (props: StackOverflowQuestionsContentProps) => {
const { requestParams } = props;
- const configApi = useApi(configApiRef);
- const baseUrl =
- configApi.getOptionalString('stackoverflow.baseUrl') ||
- 'https://api.stackexchange.com/2.2';
+ const stackOverflowApi = useApi(stackOverflowApiRef);
const { value, loading, error } = useAsync(async (): Promise<
StackOverflowQuestion[]
> => {
- const params = qs.stringify(requestParams, { addQueryPrefix: true });
- const response = await fetch(`${baseUrl}/questions${params}`);
- const data = await response.json();
- return data.items;
+ return await stackOverflowApi.listQuestions({ requestParams });
}, []);
if (loading) {
@@ -73,7 +68,7 @@ export const Content = (props: StackOverflowQuestionsContentProps) => {
{props.icon && {props.icon}}
diff --git a/plugins/stack-overflow/src/plugin.ts b/plugins/stack-overflow/src/plugin.ts
index dee48cdf8e..a837846708 100644
--- a/plugins/stack-overflow/src/plugin.ts
+++ b/plugins/stack-overflow/src/plugin.ts
@@ -17,9 +17,12 @@
import {
createPlugin,
createComponentExtension,
+ createApiFactory,
+ configApiRef,
} from '@backstage/core-plugin-api';
import { createCardExtension } from '@backstage/plugin-home';
import { StackOverflowQuestionsContentProps } from './types';
+import { stackOverflowApiRef, StackOverflowClient } from './api';
/**
* The Backstage plugin that holds stack overflow specific components
@@ -28,6 +31,13 @@ import { StackOverflowQuestionsContentProps } from './types';
*/
export const stackOverflowPlugin = createPlugin({
id: 'stack-overflow',
+ apis: [
+ createApiFactory({
+ api: stackOverflowApiRef,
+ deps: { configApi: configApiRef },
+ factory: ({ configApi }) => StackOverflowClient.fromConfig(configApi),
+ }),
+ ],
});
/**
diff --git a/plugins/tech-insights-backend-module-jsonfc/package.json b/plugins/tech-insights-backend-module-jsonfc/package.json
index 912834c049..5e98037862 100644
--- a/plugins/tech-insights-backend-module-jsonfc/package.json
+++ b/plugins/tech-insights-backend-module-jsonfc/package.json
@@ -34,7 +34,7 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.15.1-next.0",
+ "@backstage/backend-common": "^0.15.1-next.1",
"@backstage/config": "^1.0.1",
"@backstage/errors": "^1.1.0",
"@backstage/plugin-tech-insights-common": "^0.2.6",
@@ -46,7 +46,7 @@
"winston": "^3.2.1"
},
"devDependencies": {
- "@backstage/cli": "^0.18.2-next.0"
+ "@backstage/cli": "^0.19.0-next.1"
},
"files": [
"dist"
diff --git a/plugins/tech-insights-backend-module-jsonfc/src/service/JsonRulesEngineFactChecker.test.ts b/plugins/tech-insights-backend-module-jsonfc/src/service/JsonRulesEngineFactChecker.test.ts
index c808713c3b..0d651be178 100644
--- a/plugins/tech-insights-backend-module-jsonfc/src/service/JsonRulesEngineFactChecker.test.ts
+++ b/plugins/tech-insights-backend-module-jsonfc/src/service/JsonRulesEngineFactChecker.test.ts
@@ -219,14 +219,14 @@ describe('JsonRulesEngineFactChecker', () => {
describe('when running checks', () => {
it('should throw on incorrectly configured checks conditions', async () => {
const cur = async () => await factChecker.runChecks('a/a/a', ['broken']);
- await expect(cur()).rejects.toThrowError(
+ await expect(cur()).rejects.toThrow(
'Failed to run rules engine, Unknown operator: largerThan',
);
});
it('should handle cases where wrong facts are referenced', async () => {
const cur = async () => await factChecker.runChecks('a/a/a', ['broken2']);
- await expect(cur()).rejects.toThrowError(
+ await expect(cur()).rejects.toThrow(
'Failed to run rules engine, Undefined fact: somefact',
);
});
diff --git a/plugins/tech-insights-backend/CHANGELOG.md b/plugins/tech-insights-backend/CHANGELOG.md
index fcd617e04a..61a334770c 100644
--- a/plugins/tech-insights-backend/CHANGELOG.md
+++ b/plugins/tech-insights-backend/CHANGELOG.md
@@ -1,5 +1,13 @@
# @backstage/plugin-tech-insights-backend
+## 0.5.2-next.1
+
+### Patch Changes
+
+- 12c6a07c2a: Changed the description of the `techdocsAnnotationFactName` fact.
+- Updated dependencies
+ - @backstage/backend-common@0.15.1-next.1
+
## 0.5.2-next.0
### Patch Changes
diff --git a/plugins/tech-insights-backend/package.json b/plugins/tech-insights-backend/package.json
index e9ef5f0c83..23d6049ea2 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.2-next.0",
+ "version": "0.5.2-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -34,7 +34,7 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.15.1-next.0",
+ "@backstage/backend-common": "^0.15.1-next.1",
"@backstage/backend-tasks": "^0.3.5-next.0",
"@backstage/catalog-client": "^1.0.5-next.0",
"@backstage/catalog-model": "^1.1.0",
@@ -55,8 +55,8 @@
"yn": "^4.0.0"
},
"devDependencies": {
- "@backstage/backend-test-utils": "^0.1.28-next.0",
- "@backstage/cli": "^0.18.2-next.0",
+ "@backstage/backend-test-utils": "^0.1.28-next.1",
+ "@backstage/cli": "^0.19.0-next.1",
"@types/semver": "^7.3.8",
"@types/supertest": "^2.0.8",
"supertest": "^6.1.3",
diff --git a/plugins/tech-insights-backend/src/service/fact/FactRetrieverEngine.test.ts b/plugins/tech-insights-backend/src/service/fact/FactRetrieverEngine.test.ts
index 3a9506ed46..37c7cdf3ca 100644
--- a/plugins/tech-insights-backend/src/service/fact/FactRetrieverEngine.test.ts
+++ b/plugins/tech-insights-backend/src/service/fact/FactRetrieverEngine.test.ts
@@ -173,7 +173,7 @@ describe('FactRetrieverEngine', () => {
() => {},
schemaAssertionCallback,
);
- expect(schemaAssertionCallback).toBeCalled();
+ expect(schemaAssertionCallback).toHaveBeenCalled();
},
60_000,
);
diff --git a/plugins/tech-insights-backend/src/service/fact/factRetrievers/techdocsFactRetriever.ts b/plugins/tech-insights-backend/src/service/fact/factRetrievers/techdocsFactRetriever.ts
index dc14298a55..bd07bb3ecc 100644
--- a/plugins/tech-insights-backend/src/service/fact/factRetrievers/techdocsFactRetriever.ts
+++ b/plugins/tech-insights-backend/src/service/fact/factRetrievers/techdocsFactRetriever.ts
@@ -40,7 +40,7 @@ export const techdocsFactRetriever: FactRetriever = {
schema: {
[techdocsAnnotationFactName]: {
type: 'boolean',
- description: 'The entity has a title in metadata',
+ description: 'The entity has a TechDocs reference annotation',
},
},
handler: async ({
diff --git a/plugins/tech-insights-common/package.json b/plugins/tech-insights-common/package.json
index 9c38ddc8c1..bdf945042d 100644
--- a/plugins/tech-insights-common/package.json
+++ b/plugins/tech-insights-common/package.json
@@ -38,7 +38,7 @@
"@backstage/types": "^1.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.18.2-next.0"
+ "@backstage/cli": "^0.19.0-next.1"
},
"files": [
"dist"
diff --git a/plugins/tech-insights-node/package.json b/plugins/tech-insights-node/package.json
index afdc2c8c82..c08520ecee 100644
--- a/plugins/tech-insights-node/package.json
+++ b/plugins/tech-insights-node/package.json
@@ -33,7 +33,7 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.15.1-next.0",
+ "@backstage/backend-common": "^0.15.1-next.1",
"@backstage/backend-tasks": "^0.3.5-next.0",
"@backstage/config": "^1.0.1",
"@backstage/plugin-tech-insights-common": "^0.2.6",
@@ -43,7 +43,7 @@
"winston": "^3.2.1"
},
"devDependencies": {
- "@backstage/cli": "^0.18.2-next.0"
+ "@backstage/cli": "^0.19.0-next.1"
},
"files": [
"dist"
diff --git a/plugins/tech-insights/CHANGELOG.md b/plugins/tech-insights/CHANGELOG.md
index 040783d6eb..0b6c06d680 100644
--- a/plugins/tech-insights/CHANGELOG.md
+++ b/plugins/tech-insights/CHANGELOG.md
@@ -1,5 +1,31 @@
# @backstage/plugin-tech-insights
+## 0.3.0-next.1
+
+### Minor Changes
+
+- f7e99ac1d8: Added the possibility to display check results of different types on a single scorecard.
+
+ - **BREAKING** Removed the `getScorecardsDefinition` method from the `TechInsightsApi` interface. Added the `getCheckResultRenderers` method that returns rendering components for given types.
+ - **BREAKING** The `CheckResultRenderer` type now exposes the `component` factory method that creates a React component used to display a result of a provided check result.
+ - The `TechInsightsClient` constructor accepts now the optional `renderers` parameter that can be used to inject a custom renderer.
+ - **BREAKING** The `title` parameter in the `EntityTechInsightsScorecardContent` and `EntityTechInsightsScorecardCard` components is now mandatory.
+ - The `jsonRulesEngineCheckResultRenderer` used to render `json-rules-engine` check results is exported.
+ - The `BooleanCheck` component that can be used to render other check results types is also exported.
+
+ If you were overriding the `getScorecardsDefinition` method to adjust the rendering of check results, you should now provide a custom renderer using `renderers` parameter in the `TechInsightsClient` class.
+
+ See the [README](https://github.com/backstage/backstage/tree/master/plugins/tech-insights/README.md) for more details.
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- 763fb81e82: Internal refactor to use more type safe code when dealing with route parameters.
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+
## 0.2.5-next.0
### Patch Changes
diff --git a/plugins/tech-insights/README.md b/plugins/tech-insights/README.md
index 6c13622e1f..98d4777ba2 100644
--- a/plugins/tech-insights/README.md
+++ b/plugins/tech-insights/README.md
@@ -44,11 +44,11 @@ const serviceEntityPage = (
);
```
-It is not obligatory to pass title and description props to `EntityTechInsightsScorecardContent`. If those are left out, default values from `defaultCheckResultRenderers` in `CheckResultRenderer` will be taken, hence `Boolean scorecard` and `This card represents an overview of default boolean Backstage checks`.
+It is obligatory to pass `title` prop to `EntityTechInsightsScorecardContent`, `description` prop is optional.
If you like to display multiple cards in a `EntityLayout.Route` use `EntityTechInsightsScorecardCard`.
-You can pass an array `checksId` as a prop with the [Fact Retrievers ids](../tech-insights-backend#creating-fact-retrievers) to limit which checks you want to show in this card, If you don't pass, the default value is show all checks.
+You can pass an array `checksId` as a prop with the [Fact Retrievers ids](../tech-insights-backend#creating-fact-retrievers) to limit which checks you want to show in this card. If you don't pass, the default value is show all checks.
```tsx
+ new TechInsightsClient({
+ discoveryApi,
+ identityApi,
+ renderers: [
+ jsonRulesEngineCheckResultRenderer, // default json-rules-engine renderer
+ myCustomBooleanRenderer, // custom renderer
+ ],
+ }),
+ }),
+...
+];
+```
+
+```tsx
+// packages/app/src/components/myCustomBooleanRenderer.tsx
+
+export const myCustomBooleanRenderer: CheckResultRenderer = {
+ type: 'boolean',
+ component: (checkResult: CheckResult) => (
+
+ ),
+};
+```
diff --git a/plugins/tech-insights/api-report.md b/plugins/tech-insights/api-report.md
index 4f2687fa48..03155a5958 100644
--- a/plugins/tech-insights/api-report.md
+++ b/plugins/tech-insights/api-report.md
@@ -15,6 +15,13 @@ import { IdentityApi } from '@backstage/core-plugin-api';
import { default as React_2 } from 'react';
import { RouteRef } from '@backstage/core-plugin-api';
+// @public (undocumented)
+export const BooleanCheck: ({
+ checkResult,
+}: {
+ checkResult: CheckResult;
+}) => JSX.Element;
+
// @public
export type Check = {
id: string;
@@ -27,36 +34,32 @@ export type Check = {
// @public
export type CheckResultRenderer = {
type: string;
- title: string;
- description: string;
- component: React_2.ReactElement;
+ component: (check: CheckResult) => React_2.ReactElement;
};
// @public (undocumented)
export const EntityTechInsightsScorecardCard: (props: {
- title?: string | undefined;
+ title: string;
description?: string | undefined;
checksId?: string[] | undefined;
}) => JSX.Element;
// @public (undocumented)
export const EntityTechInsightsScorecardContent: (props: {
- title?: string | undefined;
+ title: string;
description?: string | undefined;
checksId?: string[] | undefined;
}) => JSX.Element;
+// @public
+export const jsonRulesEngineCheckResultRenderer: CheckResultRenderer;
+
// @public
export interface TechInsightsApi {
// (undocumented)
getAllChecks(): Promise;
// (undocumented)
- getScorecardsDefinition: (
- type: string,
- value: CheckResult[],
- title?: string,
- description?: string,
- ) => CheckResultRenderer | undefined;
+ getCheckResultRenderers: (types: string[]) => CheckResultRenderer[];
// (undocumented)
runBulkChecks(
entities: CompoundEntityRef[],
@@ -77,16 +80,12 @@ export class TechInsightsClient implements TechInsightsApi {
constructor(options: {
discoveryApi: DiscoveryApi;
identityApi: IdentityApi;
+ renderers?: CheckResultRenderer[];
});
// (undocumented)
getAllChecks(): Promise;
// (undocumented)
- getScorecardsDefinition(
- type: string,
- value: CheckResult[],
- title?: string,
- description?: string,
- ): CheckResultRenderer | undefined;
+ getCheckResultRenderers(types: string[]): CheckResultRenderer[];
// (undocumented)
runBulkChecks(
entities: CompoundEntityRef[],
diff --git a/plugins/tech-insights/dev/index.tsx b/plugins/tech-insights/dev/index.tsx
index 17b1fca00e..46337cf5fe 100644
--- a/plugins/tech-insights/dev/index.tsx
+++ b/plugins/tech-insights/dev/index.tsx
@@ -23,7 +23,7 @@ import {
createDevApp()
.registerPlugin(techInsightsPlugin)
.addPage({
- element: ,
+ element: ,
title: 'Root Page',
path: '/tech-insight-scorecard',
})
diff --git a/plugins/tech-insights/package.json b/plugins/tech-insights/package.json
index ab4477acf1..ed06f17fa3 100644
--- a/plugins/tech-insights/package.json
+++ b/plugins/tech-insights/package.json
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-tech-insights",
- "version": "0.2.5-next.0",
+ "version": "0.3.0-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -29,28 +29,28 @@
},
"dependencies": {
"@backstage/catalog-model": "^1.1.0",
- "@backstage/core-components": "^0.11.1-next.0",
- "@backstage/core-plugin-api": "^1.0.6-next.0",
+ "@backstage/core-components": "^0.11.1-next.1",
+ "@backstage/core-plugin-api": "^1.0.6-next.1",
"@backstage/errors": "^1.1.0",
- "@backstage/plugin-catalog-react": "^1.1.4-next.0",
+ "@backstage/plugin-catalog-react": "^1.1.4-next.1",
"@backstage/plugin-tech-insights-common": "^0.2.6",
"@backstage/theme": "^0.2.16",
"@backstage/types": "^1.0.0",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.57",
- "react-router-dom": "6.0.0-beta.0",
"react-use": "^17.2.4"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0",
- "react": "^16.13.1 || ^17.0.0"
+ "react": "^16.13.1 || ^17.0.0",
+ "react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"devDependencies": {
- "@backstage/cli": "^0.18.2-next.0",
- "@backstage/core-app-api": "^1.0.6-next.0",
- "@backstage/dev-utils": "^1.0.6-next.0",
- "@backstage/test-utils": "^1.1.4-next.0",
+ "@backstage/cli": "^0.19.0-next.1",
+ "@backstage/core-app-api": "^1.1.0-next.1",
+ "@backstage/dev-utils": "^1.0.6-next.1",
+ "@backstage/test-utils": "^1.2.0-next.1",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/tech-insights/src/api/TechInsightsApi.ts b/plugins/tech-insights/src/api/TechInsightsApi.ts
index a24bf74a01..8ab1090304 100644
--- a/plugins/tech-insights/src/api/TechInsightsApi.ts
+++ b/plugins/tech-insights/src/api/TechInsightsApi.ts
@@ -38,12 +38,7 @@ export const techInsightsApiRef = createApiRef({
* @public
*/
export interface TechInsightsApi {
- getScorecardsDefinition: (
- type: string,
- value: CheckResult[],
- title?: string,
- description?: string,
- ) => CheckResultRenderer | undefined;
+ getCheckResultRenderers: (types: string[]) => CheckResultRenderer[];
getAllChecks(): Promise;
runChecks(
entityParams: CompoundEntityRef,
diff --git a/plugins/tech-insights/src/api/TechInsightsClient.ts b/plugins/tech-insights/src/api/TechInsightsClient.ts
index aabb5a6297..8db5de3945 100644
--- a/plugins/tech-insights/src/api/TechInsightsClient.ts
+++ b/plugins/tech-insights/src/api/TechInsightsClient.ts
@@ -26,34 +26,28 @@ import { CompoundEntityRef } from '@backstage/catalog-model';
import {
CheckResultRenderer,
- defaultCheckResultRenderers,
+ jsonRulesEngineCheckResultRenderer,
} from '../components/CheckResultRenderer';
/** @public */
export class TechInsightsClient implements TechInsightsApi {
private readonly discoveryApi: DiscoveryApi;
private readonly identityApi: IdentityApi;
+ private readonly renderers?: CheckResultRenderer[];
constructor(options: {
discoveryApi: DiscoveryApi;
identityApi: IdentityApi;
+ renderers?: CheckResultRenderer[];
}) {
this.discoveryApi = options.discoveryApi;
this.identityApi = options.identityApi;
+ this.renderers = options.renderers;
}
- getScorecardsDefinition(
- type: string,
- value: CheckResult[],
- title?: string,
- description?: string,
- ): CheckResultRenderer | undefined {
- const resultRenderers = defaultCheckResultRenderers(
- value,
- title,
- description,
- );
- return resultRenderers.find(d => d.type === type);
+ getCheckResultRenderers(types: string[]): CheckResultRenderer[] {
+ const renderers = this.renderers ?? [jsonRulesEngineCheckResultRenderer];
+ return renderers.filter(d => types.includes(d.type));
}
async getAllChecks(): Promise {
diff --git a/plugins/tech-insights/src/components/BooleanCheck/BooleanCheck.tsx b/plugins/tech-insights/src/components/BooleanCheck/BooleanCheck.tsx
index a37a5ee0b4..47359a952e 100644
--- a/plugins/tech-insights/src/components/BooleanCheck/BooleanCheck.tsx
+++ b/plugins/tech-insights/src/components/BooleanCheck/BooleanCheck.tsx
@@ -15,46 +15,17 @@
*/
import React from 'react';
-import { makeStyles, List, ListItem, ListItemText } from '@material-ui/core';
import CheckCircleOutline from '@material-ui/icons/CheckCircleOutline';
import ErrorOutlineIcon from '@material-ui/icons/ErrorOutline';
import { CheckResult } from '@backstage/plugin-tech-insights-common';
-import { BackstageTheme } from '@backstage/theme';
-const useStyles = makeStyles((theme: BackstageTheme) => ({
- listItemText: {
- paddingRight: theme.spacing(0.5),
- flex: '0 1 auto',
- },
- icon: {
- marginLeft: 'auto',
- },
-}));
-
-type Prop = {
- checkResult: CheckResult[];
-};
-
-export const BooleanCheck = ({ checkResult }: Prop) => {
- const classes = useStyles();
-
- return (
-
- {checkResult.map((check, index) => (
-
-
- {check.result ? (
-
- ) : (
-
- )}
-
- ))}
-
+/**
+ * @public
+ */
+export const BooleanCheck = ({ checkResult }: { checkResult: CheckResult }) => {
+ return !!checkResult.result ? (
+
+ ) : (
+
);
};
diff --git a/plugins/tech-insights/src/components/CheckResultRenderer.tsx b/plugins/tech-insights/src/components/CheckResultRenderer.tsx
index f2a31c5ed6..452715ddeb 100644
--- a/plugins/tech-insights/src/components/CheckResultRenderer.tsx
+++ b/plugins/tech-insights/src/components/CheckResultRenderer.tsx
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 The Backstage Authors
+ * 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.
@@ -19,30 +19,23 @@ import React from 'react';
import { BooleanCheck } from './BooleanCheck';
/**
- * Defines a react component that is responsible for rendering a results of a given type.
+ * Defines a react component that is responsible for rendering a result of a given type.
*
* @public
*/
export type CheckResultRenderer = {
type: string;
- title: string;
- description: string;
- component: React.ReactElement;
+ component: (check: CheckResult) => React.ReactElement;
};
-export function defaultCheckResultRenderers(
- value: CheckResult[],
- title?: string,
- description?: string,
-): CheckResultRenderer[] {
- return [
- {
- type: 'json-rules-engine',
- title: title || 'Boolean scorecard',
- description:
- description ||
- 'This card represents an overview of default boolean Backstage checks:',
- component: ,
- },
- ];
-}
+/**
+ * Default renderer for json-rules-engine check results.
+ *
+ * @public
+ */
+export const jsonRulesEngineCheckResultRenderer: CheckResultRenderer = {
+ type: 'json-rules-engine',
+ component: (checkResult: CheckResult) => (
+
+ ),
+};
diff --git a/plugins/tech-insights/src/components/ScorecardsCard/ScorecardsCard.tsx b/plugins/tech-insights/src/components/ScorecardsCard/ScorecardsCard.tsx
index 57b8915b58..52909acad9 100644
--- a/plugins/tech-insights/src/components/ScorecardsCard/ScorecardsCard.tsx
+++ b/plugins/tech-insights/src/components/ScorecardsCard/ScorecardsCard.tsx
@@ -15,22 +15,23 @@
*/
import React from 'react';
-import { useParams } from 'react-router-dom';
import useAsync from 'react-use/lib/useAsync';
import { Progress } from '@backstage/core-components';
import { useApi } from '@backstage/core-plugin-api';
import { ScorecardInfo } from '../ScorecardsInfo';
import Alert from '@material-ui/lab/Alert';
import { techInsightsApiRef } from '../../api/TechInsightsApi';
+import { useEntity } from '@backstage/plugin-catalog-react';
+import { getCompoundEntityRef } from '@backstage/catalog-model';
export const ScorecardsCard = (props: {
- title?: string;
+ title: string;
description?: string;
checksId?: string[];
}) => {
const { title, description, checksId } = props;
const api = useApi(techInsightsApiRef);
- const { namespace, kind, name } = useParams();
+ const { namespace, kind, name } = getCompoundEntityRef(useEntity().entity);
const { value, loading, error } = useAsync(
async () => await api.runChecks({ namespace, kind, name }, checksId),
);
@@ -45,7 +46,7 @@ export const ScorecardsCard = (props: {
);
};
diff --git a/plugins/tech-insights/src/components/ScorecardsContent/ScorecardContent.tsx b/plugins/tech-insights/src/components/ScorecardsContent/ScorecardContent.tsx
index c3d02c938f..f8871b87c1 100644
--- a/plugins/tech-insights/src/components/ScorecardsContent/ScorecardContent.tsx
+++ b/plugins/tech-insights/src/components/ScorecardsContent/ScorecardContent.tsx
@@ -15,7 +15,6 @@
*/
import React from 'react';
-import { useParams } from 'react-router-dom';
import useAsync from 'react-use/lib/useAsync';
import { Content, Page, Progress } from '@backstage/core-components';
import { useApi } from '@backstage/core-plugin-api';
@@ -23,6 +22,8 @@ import { ScorecardInfo } from '../ScorecardsInfo';
import Alert from '@material-ui/lab/Alert';
import { techInsightsApiRef } from '../../api/TechInsightsApi';
import { makeStyles } from '@material-ui/core';
+import { useEntity } from '@backstage/plugin-catalog-react';
+import { getCompoundEntityRef } from '@backstage/catalog-model';
const useStyles = makeStyles(() => ({
contentScorecards: {
@@ -32,14 +33,14 @@ const useStyles = makeStyles(() => ({
}));
export const ScorecardsContent = (props: {
- title?: string;
+ title: string;
description?: string;
checksId?: string[];
}) => {
const { title, description, checksId } = props;
const classes = useStyles();
const api = useApi(techInsightsApiRef);
- const { namespace, kind, name } = useParams();
+ const { namespace, kind, name } = getCompoundEntityRef(useEntity().entity);
const { value, loading, error } = useAsync(
async () => await api.runChecks({ namespace, kind, name }, checksId),
);
@@ -56,7 +57,7 @@ export const ScorecardsContent = (props: {
diff --git a/plugins/tech-insights/src/components/ScorecardsInfo/ScorecardInfo.tsx b/plugins/tech-insights/src/components/ScorecardsInfo/ScorecardInfo.tsx
index 9d5fc5ac9e..8002784c9e 100644
--- a/plugins/tech-insights/src/components/ScorecardsInfo/ScorecardInfo.tsx
+++ b/plugins/tech-insights/src/components/ScorecardsInfo/ScorecardInfo.tsx
@@ -16,12 +16,11 @@
import React from 'react';
import { makeStyles, Grid, Typography } from '@material-ui/core';
-import { useApi } from '@backstage/core-plugin-api';
import { InfoCard } from '@backstage/core-components';
import { CheckResult } from '@backstage/plugin-tech-insights-common';
-import { techInsightsApiRef } from '../../api/TechInsightsApi';
import { BackstageTheme } from '@backstage/theme';
import { Alert } from '@material-ui/lab';
+import { ScorecardsList } from '../ScorecardsList';
const useStyles = makeStyles((theme: BackstageTheme) => ({
subheader: {
@@ -31,16 +30,18 @@ const useStyles = makeStyles((theme: BackstageTheme) => ({
}));
const infoCard = (
- title: string | undefined,
+ title: string,
description: string | undefined,
className: string,
element: JSX.Element,
) => (
-
- {description}
-
+ {description && (
+
+ {description}
+
+ )}
{element}
@@ -49,15 +50,14 @@ const infoCard = (
);
export const ScorecardInfo = (props: {
- checks: CheckResult[];
- title?: string;
+ checkResults: CheckResult[];
+ title: string;
description?: string;
}) => {
- const { checks, title, description } = props;
+ const { checkResults, title, description } = props;
const classes = useStyles();
- const api = useApi(techInsightsApiRef);
- if (!checks.length) {
+ if (!checkResults.length) {
return infoCard(
title,
description,
@@ -66,21 +66,10 @@ export const ScorecardInfo = (props: {
);
}
- const checkRenderType = api.getScorecardsDefinition(
- checks[0].check.type,
- checks,
+ return infoCard(
title,
description,
+ classes.subheader,
+ ,
);
-
- if (checkRenderType) {
- return infoCard(
- checkRenderType.title,
- checkRenderType.description,
- classes.subheader,
- checkRenderType.component,
- );
- }
-
- return <>>;
};
diff --git a/plugins/tech-insights/src/components/ScorecardsList/ScorecardsList.tsx b/plugins/tech-insights/src/components/ScorecardsList/ScorecardsList.tsx
new file mode 100644
index 0000000000..03dfa06abf
--- /dev/null
+++ b/plugins/tech-insights/src/components/ScorecardsList/ScorecardsList.tsx
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2021 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import React from 'react';
+import { useApi } from '@backstage/core-plugin-api';
+import { makeStyles, List, ListItem, ListItemText } from '@material-ui/core';
+import { techInsightsApiRef } from '../../api/TechInsightsApi';
+import { CheckResult } from '@backstage/plugin-tech-insights-common';
+import { BackstageTheme } from '@backstage/theme';
+import { Alert } from '@material-ui/lab';
+
+const useStyles = makeStyles((theme: BackstageTheme) => ({
+ listItemText: {
+ paddingRight: theme.spacing(0.5),
+ },
+}));
+
+export const ScorecardsList = (props: { checkResults: CheckResult[] }) => {
+ const { checkResults } = props;
+ const classes = useStyles();
+ const api = useApi(techInsightsApiRef);
+
+ const types = [...new Set(checkResults.map(({ check }) => check.type))];
+ const checkResultRenderers = api.getCheckResultRenderers(types);
+
+ return (
+
+ {checkResults.map((result, index) => (
+
+
+ {checkResultRenderers
+ .find(({ type }) => type === result.check.type)
+ ?.component(result) ?? (
+ Unknown type.
+ )}
+
+ ))}
+
+ );
+};
diff --git a/plugins/tech-insights/src/components/ScorecardsList/index.ts b/plugins/tech-insights/src/components/ScorecardsList/index.ts
new file mode 100644
index 0000000000..cc4ad3557b
--- /dev/null
+++ b/plugins/tech-insights/src/components/ScorecardsList/index.ts
@@ -0,0 +1,17 @@
+/*
+ * Copyright 2021 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export { ScorecardsList } from './ScorecardsList';
diff --git a/plugins/tech-insights/src/index.ts b/plugins/tech-insights/src/index.ts
index 97bdc95631..f3dd05c3aa 100644
--- a/plugins/tech-insights/src/index.ts
+++ b/plugins/tech-insights/src/index.ts
@@ -21,4 +21,6 @@ export {
export { techInsightsApiRef, TechInsightsClient } from './api';
export type { TechInsightsApi, Check } from './api';
+export { BooleanCheck } from './components/BooleanCheck';
+export { jsonRulesEngineCheckResultRenderer } from './components/CheckResultRenderer';
export type { CheckResultRenderer } from './components/CheckResultRenderer';
diff --git a/plugins/tech-radar/CHANGELOG.md b/plugins/tech-radar/CHANGELOG.md
index 9892f57f73..e2e8d0b5f0 100644
--- a/plugins/tech-radar/CHANGELOG.md
+++ b/plugins/tech-radar/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-tech-radar
+## 0.5.16-next.1
+
+### Patch Changes
+
+- d669d89206: Minor API signatures cleanup
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+
## 0.5.16-next.0
### Patch Changes
diff --git a/plugins/tech-radar/package.json b/plugins/tech-radar/package.json
index e637ca6720..bc4c16da8a 100644
--- a/plugins/tech-radar/package.json
+++ b/plugins/tech-radar/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-tech-radar",
"description": "A Backstage plugin that lets you display a Tech Radar for your organization",
- "version": "0.5.16-next.0",
+ "version": "0.5.16-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -34,8 +34,8 @@
"start": "backstage-cli package start"
},
"dependencies": {
- "@backstage/core-components": "^0.11.1-next.0",
- "@backstage/core-plugin-api": "^1.0.6-next.0",
+ "@backstage/core-components": "^0.11.1-next.1",
+ "@backstage/core-plugin-api": "^1.0.6-next.1",
"@backstage/theme": "^0.2.16",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
@@ -49,10 +49,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.18.2-next.0",
- "@backstage/core-app-api": "^1.0.6-next.0",
- "@backstage/dev-utils": "^1.0.6-next.0",
- "@backstage/test-utils": "^1.1.4-next.0",
+ "@backstage/cli": "^0.19.0-next.1",
+ "@backstage/core-app-api": "^1.1.0-next.1",
+ "@backstage/dev-utils": "^1.0.6-next.1",
+ "@backstage/test-utils": "^1.2.0-next.1",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/tech-radar/src/components/RadarPage.test.tsx b/plugins/tech-radar/src/components/RadarPage.test.tsx
index c0ebde17c8..f0c2a04590 100644
--- a/plugins/tech-radar/src/components/RadarPage.test.tsx
+++ b/plugins/tech-radar/src/components/RadarPage.test.tsx
@@ -98,7 +98,7 @@ describe('RadarPage', () => {
expect(
getByText('Pick the recommended technologies for your projects'),
).toBeInTheDocument();
- expect(mockClient.load).toBeCalledWith(undefined);
+ expect(mockClient.load).toHaveBeenCalledWith(undefined);
});
it('should call load with id', async () => {
@@ -119,7 +119,7 @@ describe('RadarPage', () => {
);
await expect(findByTestId('tech-radar-svg')).resolves.toBeInTheDocument();
- expect(mockClient.load).toBeCalledWith('myId');
+ expect(mockClient.load).toHaveBeenCalledWith('myId');
});
it('should call the errorApi if load fails', async () => {
diff --git a/plugins/techdocs-addons-test-utils/CHANGELOG.md b/plugins/techdocs-addons-test-utils/CHANGELOG.md
index 872898aa96..2012878066 100644
--- a/plugins/techdocs-addons-test-utils/CHANGELOG.md
+++ b/plugins/techdocs-addons-test-utils/CHANGELOG.md
@@ -1,5 +1,20 @@
# @backstage/plugin-techdocs-addons-test-utils
+## 1.0.4-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- Updated dependencies
+ - @backstage/core-app-api@1.1.0-next.1
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/test-utils@1.2.0-next.1
+ - @backstage/plugin-catalog@1.5.1-next.1
+ - @backstage/plugin-search-react@1.0.2-next.1
+ - @backstage/plugin-techdocs-react@1.0.4-next.1
+ - @backstage/plugin-techdocs@1.3.2-next.1
+
## 1.0.4-next.0
### Patch Changes
diff --git a/plugins/techdocs-addons-test-utils/package.json b/plugins/techdocs-addons-test-utils/package.json
index 7d87ca2e52..0183058639 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.4-next.0",
+ "version": "1.0.4-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -32,32 +32,32 @@
"postpack": "backstage-cli package postpack"
},
"dependencies": {
- "@backstage/core-components": "^0.11.1-next.0",
- "@backstage/core-app-api": "^1.0.6-next.0",
- "@backstage/core-plugin-api": "^1.0.6-next.0",
+ "@backstage/core-components": "^0.11.1-next.1",
+ "@backstage/core-app-api": "^1.1.0-next.1",
+ "@backstage/core-plugin-api": "^1.0.6-next.1",
"@backstage/integration-react": "^1.1.4-next.0",
- "@backstage/plugin-catalog": "^1.5.1-next.0",
- "@backstage/plugin-search-react": "^1.0.2-next.0",
- "@backstage/plugin-techdocs": "^1.3.2-next.0",
- "@backstage/plugin-techdocs-react": "^1.0.4-next.0",
- "@backstage/test-utils": "^1.1.4-next.0",
+ "@backstage/plugin-catalog": "^1.5.1-next.1",
+ "@backstage/plugin-search-react": "^1.0.2-next.1",
+ "@backstage/plugin-techdocs": "^1.3.2-next.1",
+ "@backstage/plugin-techdocs-react": "^1.0.4-next.1",
+ "@backstage/test-utils": "^1.2.0-next.1",
"@backstage/theme": "^0.2.16",
"@material-ui/core": "^4.9.13",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.57",
"react-use": "^17.2.4",
- "react-router-dom": "6.0.0-beta.0",
"@testing-library/react": "^12.1.3",
"testing-library__dom": "^7.29.4-beta.1"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0",
"react": "^16.13.1 || ^17.0.0",
- "react-dom": "^16.13.1 || ^17.0.0"
+ "react-dom": "^16.13.1 || ^17.0.0",
+ "react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"devDependencies": {
- "@backstage/cli": "^0.18.2-next.0",
- "@backstage/dev-utils": "^1.0.6-next.0",
+ "@backstage/cli": "^0.19.0-next.1",
+ "@backstage/dev-utils": "^1.0.6-next.1",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/techdocs-backend/package.json b/plugins/techdocs-backend/package.json
index 46b7d062dd..92bc104867 100644
--- a/plugins/techdocs-backend/package.json
+++ b/plugins/techdocs-backend/package.json
@@ -34,7 +34,7 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/backend-common": "^0.15.1-next.0",
+ "@backstage/backend-common": "^0.15.1-next.1",
"@backstage/catalog-client": "^1.0.5-next.0",
"@backstage/catalog-model": "^1.1.0",
"@backstage/config": "^1.0.1",
@@ -56,9 +56,9 @@
"winston": "^3.2.1"
},
"devDependencies": {
- "@backstage/backend-test-utils": "^0.1.28-next.0",
- "@backstage/cli": "^0.18.2-next.0",
- "@backstage/plugin-search-backend-node": "1.0.2-next.0",
+ "@backstage/backend-test-utils": "^0.1.28-next.1",
+ "@backstage/cli": "^0.19.0-next.1",
+ "@backstage/plugin-search-backend-node": "1.0.2-next.1",
"@types/dockerode": "^3.3.0",
"msw": "^0.45.0",
"supertest": "^6.1.3"
diff --git a/plugins/techdocs-backend/src/cache/TechDocsCache.test.ts b/plugins/techdocs-backend/src/cache/TechDocsCache.test.ts
index 17613e1b58..039f1db09f 100644
--- a/plugins/techdocs-backend/src/cache/TechDocsCache.test.ts
+++ b/plugins/techdocs-backend/src/cache/TechDocsCache.test.ts
@@ -151,7 +151,7 @@ describe('TechDocsCache', () => {
await expect(
CacheUnderTest.invalidateMultiple(expectedPaths),
- ).rejects.toThrowError(CacheInvalidationError);
+ ).rejects.toThrow(CacheInvalidationError);
expect(MockClient.delete).toHaveBeenCalledTimes(2);
});
diff --git a/plugins/techdocs-backend/src/service/CachedEntityLoader.test.ts b/plugins/techdocs-backend/src/service/CachedEntityLoader.test.ts
index 19684486dc..57e4dccbd4 100644
--- a/plugins/techdocs-backend/src/service/CachedEntityLoader.test.ts
+++ b/plugins/techdocs-backend/src/service/CachedEntityLoader.test.ts
@@ -58,7 +58,7 @@ describe('CachedEntityLoader', () => {
const result = await loader.load(entityName, token);
expect(result).toEqual(entity);
- expect(cache.set).toBeCalledWith(
+ expect(cache.set).toHaveBeenCalledWith(
'catalog:component:default/test:test-token',
entity,
{ ttl: 5000 },
@@ -71,7 +71,7 @@ describe('CachedEntityLoader', () => {
const result = await loader.load(entityName, token);
expect(result).toEqual(entity);
- expect(catalog.getEntityByRef).not.toBeCalled();
+ expect(catalog.getEntityByRef).not.toHaveBeenCalled();
});
it('does not cache missing entites', async () => {
@@ -81,7 +81,7 @@ describe('CachedEntityLoader', () => {
const result = await loader.load(entityName, token);
expect(result).toBeUndefined();
- expect(cache.set).not.toBeCalled();
+ expect(cache.set).not.toHaveBeenCalled();
});
it('uses entity ref as cache key for anonymous users', async () => {
@@ -91,9 +91,13 @@ describe('CachedEntityLoader', () => {
const result = await loader.load(entityName, undefined);
expect(result).toEqual(entity);
- expect(cache.set).toBeCalledWith('catalog:component:default/test', entity, {
- ttl: 5000,
- });
+ expect(cache.set).toHaveBeenCalledWith(
+ 'catalog:component:default/test',
+ entity,
+ {
+ ttl: 5000,
+ },
+ );
});
it('calls the catalog if the cache read takes too long', async () => {
diff --git a/plugins/techdocs-backend/src/service/DocsSynchronizer.test.ts b/plugins/techdocs-backend/src/service/DocsSynchronizer.test.ts
index 0ab124c26d..1445079d12 100644
--- a/plugins/techdocs-backend/src/service/DocsSynchronizer.test.ts
+++ b/plugins/techdocs-backend/src/service/DocsSynchronizer.test.ts
@@ -144,19 +144,21 @@ describe('DocsSynchronizer', () => {
generators,
});
- expect(mockResponseHandler.log).toBeCalledTimes(3);
- expect(mockResponseHandler.log).toBeCalledWith('Some log');
- expect(mockResponseHandler.log).toBeCalledWith('Another log');
- expect(mockResponseHandler.log).toBeCalledWith(
+ expect(mockResponseHandler.log).toHaveBeenCalledTimes(3);
+ expect(mockResponseHandler.log).toHaveBeenCalledWith('Some log');
+ expect(mockResponseHandler.log).toHaveBeenCalledWith('Another log');
+ expect(mockResponseHandler.log).toHaveBeenCalledWith(
expect.stringMatching(/info.*Some more log/),
);
- expect(mockResponseHandler.finish).toBeCalledWith({ updated: true });
+ expect(mockResponseHandler.finish).toHaveBeenCalledWith({
+ updated: true,
+ });
- expect(mockResponseHandler.error).toBeCalledTimes(0);
+ expect(mockResponseHandler.error).toHaveBeenCalledTimes(0);
- expect(shouldCheckForUpdate).toBeCalledTimes(1);
- expect(DocsBuilder.prototype.build).toBeCalledTimes(1);
+ expect(shouldCheckForUpdate).toHaveBeenCalledTimes(1);
+ expect(DocsBuilder.prototype.build).toHaveBeenCalledTimes(1);
});
it('should limit concurrent updates', async () => {
@@ -210,13 +212,15 @@ describe('DocsSynchronizer', () => {
generators,
});
- expect(mockResponseHandler.finish).toBeCalledWith({ updated: false });
+ expect(mockResponseHandler.finish).toHaveBeenCalledWith({
+ updated: false,
+ });
- expect(mockResponseHandler.log).toBeCalledTimes(0);
- expect(mockResponseHandler.error).toBeCalledTimes(0);
+ expect(mockResponseHandler.log).toHaveBeenCalledTimes(0);
+ expect(mockResponseHandler.error).toHaveBeenCalledTimes(0);
- expect(shouldCheckForUpdate).toBeCalledTimes(1);
- expect(DocsBuilder.prototype.build).toBeCalledTimes(0);
+ expect(shouldCheckForUpdate).toHaveBeenCalledTimes(1);
+ expect(DocsBuilder.prototype.build).toHaveBeenCalledTimes(0);
});
it('should forward build errors', async () => {
@@ -242,15 +246,15 @@ describe('DocsSynchronizer', () => {
generators,
});
- expect(mockResponseHandler.log).toBeCalledTimes(1);
- expect(mockResponseHandler.log).toBeCalledWith(
+ expect(mockResponseHandler.log).toHaveBeenCalledTimes(1);
+ expect(mockResponseHandler.log).toHaveBeenCalledWith(
expect.stringMatching(
/error.*: Failed to build the docs page: Some random error/,
),
);
- expect(mockResponseHandler.finish).toBeCalledTimes(0);
- expect(mockResponseHandler.error).toBeCalledTimes(1);
- expect(mockResponseHandler.error).toBeCalledWith(error);
+ expect(mockResponseHandler.finish).toHaveBeenCalledTimes(0);
+ expect(mockResponseHandler.error).toHaveBeenCalledTimes(1);
+ expect(mockResponseHandler.error).toHaveBeenCalledWith(error);
});
});
@@ -275,8 +279,10 @@ describe('DocsSynchronizer', () => {
entity,
});
- expect(mockResponseHandler.finish).toBeCalledWith({ updated: false });
- expect(shouldCheckForUpdate).toBeCalledTimes(1);
+ expect(mockResponseHandler.finish).toHaveBeenCalledWith({
+ updated: false,
+ });
+ expect(shouldCheckForUpdate).toHaveBeenCalledTimes(1);
});
it('should do nothing if source/cached metadata matches', async () => {
@@ -292,7 +298,9 @@ describe('DocsSynchronizer', () => {
entity,
});
- expect(mockResponseHandler.finish).toBeCalledWith({ updated: false });
+ expect(mockResponseHandler.finish).toHaveBeenCalledWith({
+ updated: false,
+ });
});
it('should invalidate expected files when source/cached metadata differ', async () => {
@@ -309,7 +317,9 @@ describe('DocsSynchronizer', () => {
entity,
});
- expect(mockResponseHandler.finish).toBeCalledWith({ updated: true });
+ expect(mockResponseHandler.finish).toHaveBeenCalledWith({
+ updated: true,
+ });
expect(cache.invalidateMultiple).toHaveBeenCalledWith([
'default/component/test/index.html',
]);
@@ -342,7 +352,9 @@ describe('DocsSynchronizer', () => {
entity,
});
- expect(mockResponseHandler.finish).toBeCalledWith({ updated: true });
+ expect(mockResponseHandler.finish).toHaveBeenCalledWith({
+ updated: true,
+ });
expect(cache.invalidateMultiple).toHaveBeenCalledWith([
'default/Component/test/index.html',
]);
@@ -361,7 +373,9 @@ describe('DocsSynchronizer', () => {
entity,
});
- expect(mockResponseHandler.finish).toBeCalledWith({ updated: false });
+ expect(mockResponseHandler.finish).toHaveBeenCalledWith({
+ updated: false,
+ });
});
it("adds the build log transport to the logger's list of transports", async () => {
diff --git a/plugins/techdocs-backend/src/service/router.test.ts b/plugins/techdocs-backend/src/service/router.test.ts
index 9edd2e3edc..0c049c00f2 100644
--- a/plugins/techdocs-backend/src/service/router.test.ts
+++ b/plugins/techdocs-backend/src/service/router.test.ts
@@ -231,7 +231,7 @@ data: "Invalid configuration. docsBuildStrategy.shouldBuild returned 'true', but
`,
);
- expect(MockDocsSynchronizer.prototype.doSync).toBeCalledTimes(0);
+ expect(MockDocsSynchronizer.prototype.doSync).toHaveBeenCalledTimes(0);
});
it('should execute synchronization', async () => {
@@ -249,8 +249,8 @@ data: "Invalid configuration. docsBuildStrategy.shouldBuild returned 'true', but
.set('accept', 'text/event-stream')
.send();
- expect(MockDocsSynchronizer.prototype.doSync).toBeCalledTimes(1);
- expect(MockDocsSynchronizer.prototype.doSync).toBeCalledWith({
+ expect(MockDocsSynchronizer.prototype.doSync).toHaveBeenCalledTimes(1);
+ expect(MockDocsSynchronizer.prototype.doSync).toHaveBeenCalledWith({
responseHandler: {
log: expect.any(Function),
error: expect.any(Function),
@@ -313,7 +313,7 @@ data: {"updated":true}
.send();
expect(response.status).toBe(200);
- expect(docsRouter).toBeCalled();
+ expect(docsRouter).toHaveBeenCalled();
});
it('should return assets from cache', async () => {
@@ -328,7 +328,7 @@ data: {"updated":true}
.send();
expect(response.status).toBe(200);
- expect(MockTechDocsCache.get).toBeCalled();
+ expect(MockTechDocsCache.get).toHaveBeenCalled();
});
it('should check entity access when permissions are enabled', async () => {
@@ -347,7 +347,7 @@ data: {"updated":true}
.send();
expect(response.status).toBe(200);
- expect(MockCachedEntityLoader.prototype.load).toBeCalled();
+ expect(MockCachedEntityLoader.prototype.load).toHaveBeenCalled();
});
it('should not return assets without corresponding entity access', async () => {
@@ -387,8 +387,8 @@ describe('createEventStream', () => {
it('should return correct event stream', async () => {
// called in beforeEach
- expect(res.writeHead).toBeCalledTimes(1);
- expect(res.writeHead).toBeCalledWith(200, {
+ expect(res.writeHead).toHaveBeenCalledTimes(1);
+ expect(res.writeHead).toHaveBeenCalledWith(200, {
'Cache-Control': 'no-cache',
Connection: 'keep-alive',
'Content-Type': 'text/event-stream',
@@ -400,45 +400,45 @@ describe('createEventStream', () => {
handlers.log('A Message');
- expect(res.write).toBeCalledTimes(1);
- expect(res.write).toBeCalledWith(`event: log
+ expect(res.write).toHaveBeenCalledTimes(1);
+ expect(res.write).toHaveBeenCalledWith(`event: log
data: "A Message"
`);
- expect(res.flush).toBeCalledTimes(1);
+ expect(res.flush).toHaveBeenCalledTimes(1);
});
it('should write log', async () => {
handlers.log('A Message');
- expect(res.write).toBeCalledTimes(1);
- expect(res.write).toBeCalledWith(`event: log
+ expect(res.write).toHaveBeenCalledTimes(1);
+ expect(res.write).toHaveBeenCalledWith(`event: log
data: "A Message"
`);
- expect(res.end).toBeCalledTimes(0);
+ expect(res.end).toHaveBeenCalledTimes(0);
});
it('should write error and end the connection', async () => {
handlers.error(new Error('Some Error'));
- expect(res.write).toBeCalledTimes(1);
- expect(res.write).toBeCalledWith(`event: error
+ expect(res.write).toHaveBeenCalledTimes(1);
+ expect(res.write).toHaveBeenCalledWith(`event: error
data: "Some Error"
`);
- expect(res.end).toBeCalledTimes(1);
+ expect(res.end).toHaveBeenCalledTimes(1);
});
it('should finish and end the connection', async () => {
handlers.finish({ updated: true });
- expect(res.write).toBeCalledTimes(1);
- expect(res.write).toBeCalledWith(`event: finish
+ expect(res.write).toHaveBeenCalledTimes(1);
+ expect(res.write).toHaveBeenCalledWith(`event: finish
data: {"updated":true}
`);
- expect(res.end).toBeCalledTimes(1);
+ expect(res.end).toHaveBeenCalledTimes(1);
});
});
diff --git a/plugins/techdocs-module-addons-contrib/package.json b/plugins/techdocs-module-addons-contrib/package.json
index 2bacd57513..259b730d0b 100644
--- a/plugins/techdocs-module-addons-contrib/package.json
+++ b/plugins/techdocs-module-addons-contrib/package.json
@@ -34,11 +34,11 @@
"postpack": "backstage-cli package postpack"
},
"dependencies": {
- "@backstage/core-components": "^0.11.1-next.0",
- "@backstage/core-plugin-api": "^1.0.6-next.0",
+ "@backstage/core-components": "^0.11.1-next.1",
+ "@backstage/core-plugin-api": "^1.0.6-next.1",
"@backstage/integration": "^1.3.1-next.0",
"@backstage/integration-react": "^1.1.4-next.0",
- "@backstage/plugin-techdocs-react": "^1.0.4-next.0",
+ "@backstage/plugin-techdocs-react": "^1.0.4-next.1",
"@backstage/theme": "^0.2.16",
"@material-ui/core": "^4.9.13",
"@material-ui/icons": "^4.9.1",
@@ -51,11 +51,11 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.18.2-next.0",
- "@backstage/core-app-api": "^1.0.6-next.0",
- "@backstage/dev-utils": "^1.0.6-next.0",
- "@backstage/plugin-techdocs-addons-test-utils": "^1.0.4-next.0",
- "@backstage/test-utils": "^1.1.4-next.0",
+ "@backstage/cli": "^0.19.0-next.1",
+ "@backstage/core-app-api": "^1.1.0-next.1",
+ "@backstage/dev-utils": "^1.0.6-next.1",
+ "@backstage/plugin-techdocs-addons-test-utils": "^1.0.4-next.1",
+ "@backstage/test-utils": "^1.2.0-next.1",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/techdocs-node/package.json b/plugins/techdocs-node/package.json
index f858329058..0a2e4a130c 100644
--- a/plugins/techdocs-node/package.json
+++ b/plugins/techdocs-node/package.json
@@ -42,7 +42,7 @@
"dependencies": {
"@azure/identity": "^2.0.1",
"@azure/storage-blob": "^12.5.0",
- "@backstage/backend-common": "^0.15.1-next.0",
+ "@backstage/backend-common": "^0.15.1-next.1",
"@backstage/catalog-model": "^1.1.0",
"@backstage/config": "^1.0.1",
"@backstage/errors": "^1.1.0",
@@ -64,7 +64,7 @@
"winston": "^3.2.1"
},
"devDependencies": {
- "@backstage/cli": "^0.18.2-next.0",
+ "@backstage/cli": "^0.19.0-next.1",
"@types/fs-extra": "^9.0.5",
"@types/js-yaml": "^4.0.0",
"@types/mime-types": "^2.1.0",
diff --git a/plugins/techdocs-node/src/stages/generate/generators.test.ts b/plugins/techdocs-node/src/stages/generate/generators.test.ts
index 56343763e9..a1c585e795 100644
--- a/plugins/techdocs-node/src/stages/generate/generators.test.ts
+++ b/plugins/techdocs-node/src/stages/generate/generators.test.ts
@@ -37,7 +37,7 @@ describe('generators', () => {
it('should return error if no generator is registered', async () => {
const generators = new Generators();
- expect(() => generators.get(mockEntity)).toThrowError(
+ expect(() => generators.get(mockEntity)).toThrow(
'No generator registered for entity: "techdocs"',
);
});
diff --git a/plugins/techdocs-node/src/stages/generate/helpers.test.ts b/plugins/techdocs-node/src/stages/generate/helpers.test.ts
index 3deb17173a..b98a219eac 100644
--- a/plugins/techdocs-node/src/stages/generate/helpers.test.ts
+++ b/plugins/techdocs-node/src/stages/generate/helpers.test.ts
@@ -462,7 +462,7 @@ describe('helpers', () => {
// Check if the file exists
await expect(
fs.access(filePath, fs.constants.F_OK),
- ).resolves.not.toThrowError();
+ ).resolves.not.toThrow();
});
it('should throw error when the JSON is invalid', async () => {
@@ -470,7 +470,7 @@ describe('helpers', () => {
await expect(
createOrUpdateMetadata(filePath, mockLogger),
- ).rejects.toThrowError('Unexpected token d in JSON at position 0');
+ ).rejects.toThrow('Unexpected token d in JSON at position 0');
});
it('should add build timestamp to the metadata json', async () => {
@@ -511,9 +511,9 @@ describe('helpers', () => {
it('should throw error when the JSON is invalid', async () => {
const filePath = path.join(rootDir, 'invalid_techdocs_metadata.json');
- await expect(
- storeEtagMetadata(filePath, 'etag123abc'),
- ).rejects.toThrowError('Unexpected token d in JSON at position 0');
+ await expect(storeEtagMetadata(filePath, 'etag123abc')).rejects.toThrow(
+ 'Unexpected token d in JSON at position 0',
+ );
});
it('should add etag to the metadata json', async () => {
@@ -552,7 +552,7 @@ describe('helpers', () => {
it('throws when neither .yml nor .yaml file is present', async () => {
const invalidInputDir = resolvePath(__filename);
- await expect(getMkdocsYml(invalidInputDir)).rejects.toThrowError(
+ await expect(getMkdocsYml(invalidInputDir)).rejects.toThrow(
/Could not read MkDocs YAML config file mkdocs.yml or mkdocs.yaml for validation/,
);
});
diff --git a/plugins/techdocs-node/src/stages/publish/helpers.test.ts b/plugins/techdocs-node/src/stages/publish/helpers.test.ts
index ceb1b02a20..fa934d6dd9 100644
--- a/plugins/techdocs-node/src/stages/publish/helpers.test.ts
+++ b/plugins/techdocs-node/src/stages/publish/helpers.test.ts
@@ -102,9 +102,9 @@ describe('lowerCaseEntityTripletInStoragePath', () => {
it('throws error when there is no triplet', () => {
const originalPath = '/default/component/IMAGE.png';
const error = `Encountered file unmanaged by TechDocs ${originalPath}. Skipping.`;
- expect(() =>
- lowerCaseEntityTripletInStoragePath(originalPath),
- ).toThrowError(error);
+ expect(() => lowerCaseEntityTripletInStoragePath(originalPath)).toThrow(
+ error,
+ );
});
});
diff --git a/plugins/techdocs-node/src/stages/publish/local.test.ts b/plugins/techdocs-node/src/stages/publish/local.test.ts
index ce2e0c3ccd..f2f2b1e526 100644
--- a/plugins/techdocs-node/src/stages/publish/local.test.ts
+++ b/plugins/techdocs-node/src/stages/publish/local.test.ts
@@ -131,7 +131,7 @@ describe('local publisher', () => {
await expect(() =>
publisher.publish({ entity: mockEntity, directory: tmpDir }),
- ).rejects.toThrowError('Unable to publish TechDocs site');
+ ).rejects.toThrow('Unable to publish TechDocs site');
});
it('should throw with unsafe name', async () => {
@@ -154,7 +154,7 @@ describe('local publisher', () => {
await expect(() =>
publisher.publish({ entity: mockEntity, directory: tmpDir }),
- ).rejects.toThrowError('Unable to publish TechDocs site');
+ ).rejects.toThrow('Unable to publish TechDocs site');
});
});
diff --git a/plugins/techdocs-node/src/stages/publish/openStackSwift.test.ts b/plugins/techdocs-node/src/stages/publish/openStackSwift.test.ts
index 51b67d6167..b183065230 100644
--- a/plugins/techdocs-node/src/stages/publish/openStackSwift.test.ts
+++ b/plugins/techdocs-node/src/stages/publish/openStackSwift.test.ts
@@ -284,7 +284,7 @@ describe('OpenStackSwiftPublish', () => {
entity,
directory: wrongPathToGeneratedDirectory,
}),
- ).rejects.toThrowError();
+ ).rejects.toThrow();
const fails = publisher.publish({
entity,
diff --git a/plugins/techdocs-react/CHANGELOG.md b/plugins/techdocs-react/CHANGELOG.md
index bffa6af98e..07599edc75 100644
--- a/plugins/techdocs-react/CHANGELOG.md
+++ b/plugins/techdocs-react/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-techdocs-react
+## 1.0.4-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+
## 1.0.4-next.0
### Patch Changes
diff --git a/plugins/techdocs-react/package.json b/plugins/techdocs-react/package.json
index 452838284e..bf3cd0e996 100644
--- a/plugins/techdocs-react/package.json
+++ b/plugins/techdocs-react/package.json
@@ -1,7 +1,7 @@
{
"name": "@backstage/plugin-techdocs-react",
"description": "Shared frontend utilities for TechDocs and Addons",
- "version": "1.0.4-next.0",
+ "version": "1.0.4-next.1",
"private": false,
"publishConfig": {
"access": "public",
@@ -37,8 +37,8 @@
"dependencies": {
"@backstage/catalog-model": "^1.1.0",
"@backstage/config": "^1.0.1",
- "@backstage/core-components": "^0.11.1-next.0",
- "@backstage/core-plugin-api": "^1.0.6-next.0",
+ "@backstage/core-components": "^0.11.1-next.1",
+ "@backstage/core-plugin-api": "^1.0.6-next.1",
"@backstage/version-bridge": "^1.0.1",
"@material-ui/core": "^4.12.2",
"@material-ui/lab": "4.0.0-alpha.57",
@@ -46,18 +46,18 @@
"jss": "~10.8.2",
"lodash": "^4.17.21",
"react-helmet": "6.1.0",
- "react-router-dom": "6.0.0-beta.0",
"react-use": "^17.2.4"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0",
- "react": "^16.13.1 || ^17.0.0"
+ "react": "^16.13.1 || ^17.0.0",
+ "react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"devDependencies": {
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/react-hooks": "^8.0.0",
- "@backstage/test-utils": "^1.1.4-next.0",
+ "@backstage/test-utils": "^1.2.0-next.1",
"@backstage/theme": "^0.2.16"
},
"files": [
diff --git a/plugins/techdocs/CHANGELOG.md b/plugins/techdocs/CHANGELOG.md
index 72460db23b..adffea86a4 100644
--- a/plugins/techdocs/CHANGELOG.md
+++ b/plugins/techdocs/CHANGELOG.md
@@ -1,5 +1,19 @@
# @backstage/plugin-techdocs
+## 1.3.2-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- 763fb81e82: Internal refactor to use more type safe code when dealing with route parameters.
+- 817f3196f6: Updated the `TechDocsReaderPage` to be compatible with React Router v6 stable.
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+ - @backstage/plugin-search-react@1.0.2-next.1
+ - @backstage/plugin-techdocs-react@1.0.4-next.1
+
## 1.3.2-next.0
### Patch Changes
diff --git a/plugins/techdocs/package.json b/plugins/techdocs/package.json
index 604fec15ed..ead2c1025c 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.3.2-next.0",
+ "version": "1.3.2-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -37,15 +37,15 @@
"dependencies": {
"@backstage/catalog-model": "^1.1.0",
"@backstage/config": "^1.0.1",
- "@backstage/core-components": "^0.11.1-next.0",
- "@backstage/core-plugin-api": "^1.0.6-next.0",
+ "@backstage/core-components": "^0.11.1-next.1",
+ "@backstage/core-plugin-api": "^1.0.6-next.1",
"@backstage/errors": "^1.1.0",
"@backstage/integration": "^1.3.1-next.0",
"@backstage/integration-react": "^1.1.4-next.0",
- "@backstage/plugin-catalog-react": "^1.1.4-next.0",
+ "@backstage/plugin-catalog-react": "^1.1.4-next.1",
"@backstage/plugin-search-common": "^1.0.1-next.0",
- "@backstage/plugin-search-react": "^1.0.2-next.0",
- "@backstage/plugin-techdocs-react": "^1.0.4-next.0",
+ "@backstage/plugin-search-react": "^1.0.2-next.1",
+ "@backstage/plugin-techdocs-react": "^1.0.4-next.1",
"@backstage/theme": "^0.2.16",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
@@ -57,20 +57,20 @@
"jss": "~10.8.2",
"lodash": "^4.17.21",
"react-helmet": "6.1.0",
- "react-router": "6.0.0-beta.0",
- "react-router-dom": "6.0.0-beta.0",
"react-use": "^17.2.4"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0",
"react": "^16.13.1 || ^17.0.0",
- "react-dom": "^16.13.1 || ^17.0.0"
+ "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"
},
"devDependencies": {
- "@backstage/cli": "^0.18.2-next.0",
- "@backstage/core-app-api": "^1.0.6-next.0",
- "@backstage/dev-utils": "^1.0.6-next.0",
- "@backstage/test-utils": "^1.1.4-next.0",
+ "@backstage/cli": "^0.19.0-next.1",
+ "@backstage/core-app-api": "^1.1.0-next.1",
+ "@backstage/dev-utils": "^1.0.6-next.1",
+ "@backstage/test-utils": "^1.2.0-next.1",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/react-hooks": "^8.0.0",
diff --git a/plugins/techdocs/src/client.test.ts b/plugins/techdocs/src/client.test.ts
index 8236b93c55..dde52cda49 100644
--- a/plugins/techdocs/src/client.test.ts
+++ b/plugins/techdocs/src/client.test.ts
@@ -103,7 +103,7 @@ describe('TechDocsStorageClient', () => {
identityApi.getCredentials.mockResolvedValue({});
await storageApi.syncEntityDocs(mockEntity);
- expect(MockedEventSource).toBeCalledWith(
+ expect(MockedEventSource).toHaveBeenCalledWith(
'http://backstage:9191/api/techdocs/sync/default/Component/test-component',
{ withCredentials: true, headers: {} },
);
@@ -128,7 +128,7 @@ describe('TechDocsStorageClient', () => {
identityApi.getCredentials.mockResolvedValue({ token: 'token' });
await storageApi.syncEntityDocs(mockEntity);
- expect(MockedEventSource).toBeCalledWith(
+ expect(MockedEventSource).toHaveBeenCalledWith(
'http://backstage:9191/api/techdocs/sync/default/Component/test-component',
{ withCredentials: true, headers: { Authorization: 'Bearer token' } },
);
@@ -204,8 +204,8 @@ describe('TechDocsStorageClient', () => {
storageApi.syncEntityDocs(mockEntity, logHandler),
).resolves.toEqual('cached');
- expect(logHandler).toBeCalledTimes(1);
- expect(logHandler).toBeCalledWith('A log message');
+ expect(logHandler).toHaveBeenCalledTimes(1);
+ expect(logHandler).toHaveBeenCalledWith('A log message');
});
it('should throw NotFoundError', async () => {
@@ -232,7 +232,7 @@ describe('TechDocsStorageClient', () => {
} as any);
await expect(promise).rejects.toThrow(NotFoundError);
- await expect(promise).rejects.toThrowError('Some not found warning');
+ await expect(promise).rejects.toThrow('Some not found warning');
});
it('should throw generic errors', async () => {
@@ -259,7 +259,7 @@ describe('TechDocsStorageClient', () => {
} as any);
await expect(promise).rejects.toThrow(Error);
- await expect(promise).rejects.toThrowError('Some other error');
+ await expect(promise).rejects.toThrow('Some other error');
});
});
});
diff --git a/plugins/techdocs/src/reader/components/TechDocsBuildLogs.test.tsx b/plugins/techdocs/src/reader/components/TechDocsBuildLogs.test.tsx
index ea24a3627f..afdac63a99 100644
--- a/plugins/techdocs/src/reader/components/TechDocsBuildLogs.test.tsx
+++ b/plugins/techdocs/src/reader/components/TechDocsBuildLogs.test.tsx
@@ -54,7 +54,7 @@ describe('', () => {
await rendered.findByText(/Waiting for logs.../i),
).toBeInTheDocument();
- expect(onClose).toBeCalledTimes(0);
+ expect(onClose).toHaveBeenCalledTimes(0);
});
it('should render logs', async () => {
@@ -69,7 +69,7 @@ describe('', () => {
expect(await rendered.findByText(/Line 1/i)).toBeInTheDocument();
expect(await rendered.findByText(/Line 2/i)).toBeInTheDocument();
- expect(onClose).toBeCalledTimes(0);
+ expect(onClose).toHaveBeenCalledTimes(0);
});
it('should call onClose', async () => {
@@ -79,6 +79,6 @@ describe('', () => {
);
rendered.getByTitle('Close the drawer').click();
- expect(onClose).toBeCalledTimes(1);
+ expect(onClose).toHaveBeenCalledTimes(1);
});
});
diff --git a/plugins/techdocs/src/reader/components/TechDocsReaderPage/TechDocsReaderPage.tsx b/plugins/techdocs/src/reader/components/TechDocsReaderPage/TechDocsReaderPage.tsx
index 9f69dcb8d8..1c276b87a1 100644
--- a/plugins/techdocs/src/reader/components/TechDocsReaderPage/TechDocsReaderPage.tsx
+++ b/plugins/techdocs/src/reader/components/TechDocsReaderPage/TechDocsReaderPage.tsx
@@ -14,8 +14,8 @@
* limitations under the License.
*/
-import React, { ReactNode, ReactChild, Children } from 'react';
-import { useOutlet, useParams } from 'react-router-dom';
+import React, { ReactNode, Children, ReactElement } from 'react';
+import { useOutlet } from 'react-router-dom';
import { Page } from '@backstage/core-components';
import { CompoundEntityRef } from '@backstage/catalog-model';
@@ -29,14 +29,11 @@ import { TechDocsReaderPageRenderFunction } from '../../../types';
import { TechDocsReaderPageContent } from '../TechDocsReaderPageContent';
import { TechDocsReaderPageHeader } from '../TechDocsReaderPageHeader';
import { TechDocsReaderPageSubheader } from '../TechDocsReaderPageSubheader';
-
-type Extension = ReactChild & {
- type: {
- __backstage_data: {
- map: Map;
- };
- };
-};
+import { rootDocsRouteRef } from '../../../routes';
+import {
+ getComponentData,
+ useRouteRefParams,
+} from '@backstage/core-plugin-api';
/**
* Props for {@link TechDocsReaderLayout}
@@ -83,7 +80,7 @@ export type TechDocsReaderPageProps = {
* @public
*/
export const TechDocsReaderPage = (props: TechDocsReaderPageProps) => {
- const { kind, name, namespace } = useParams();
+ const { kind, name, namespace } = useRouteRefParams(rootDocsRouteRef);
const { children, entityRef = { kind, name, namespace } } = props;
const outlet = useOutlet();
@@ -92,8 +89,18 @@ export const TechDocsReaderPage = (props: TechDocsReaderPageProps) => {
const childrenList = outlet ? Children.toArray(outlet.props.children) : [];
const page = childrenList.find(child => {
- const { type } = child as Extension;
- return !type?.__backstage_data?.map?.get(TECHDOCS_ADDONS_WRAPPER_KEY);
+ if (getComponentData(child, TECHDOCS_ADDONS_WRAPPER_KEY)) {
+ return false;
+ }
+
+ // react-router 6 stable wraps children in a routing context provider, so check one level deeper
+ const nestedChildren = (child as ReactElement)?.props?.children;
+ if (nestedChildren) {
+ return !Children.toArray(nestedChildren).some(nested =>
+ getComponentData(nested, TECHDOCS_ADDONS_WRAPPER_KEY),
+ );
+ }
+ return true;
});
return (
diff --git a/plugins/techdocs/src/reader/components/useReaderState.test.tsx b/plugins/techdocs/src/reader/components/useReaderState.test.tsx
index e41a114dbe..08bfa8f9ad 100644
--- a/plugins/techdocs/src/reader/components/useReaderState.test.tsx
+++ b/plugins/techdocs/src/reader/components/useReaderState.test.tsx
@@ -312,11 +312,11 @@ describe('useReaderState', () => {
contentReload: expect.any(Function),
});
- expect(techdocsStorageApi.getEntityDocs).toBeCalledWith(
+ expect(techdocsStorageApi.getEntityDocs).toHaveBeenCalledWith(
{ kind: 'Component', namespace: 'default', name: 'backstage' },
'/example',
);
- expect(techdocsStorageApi.syncEntityDocs).toBeCalledWith(
+ expect(techdocsStorageApi.syncEntityDocs).toHaveBeenCalledWith(
{
kind: 'Component',
namespace: 'default',
@@ -397,13 +397,13 @@ describe('useReaderState', () => {
contentReload: expect.any(Function),
});
- expect(techdocsStorageApi.getEntityDocs).toBeCalledTimes(2);
- expect(techdocsStorageApi.getEntityDocs).toBeCalledWith(
+ expect(techdocsStorageApi.getEntityDocs).toHaveBeenCalledTimes(2);
+ expect(techdocsStorageApi.getEntityDocs).toHaveBeenCalledWith(
{ kind: 'Component', namespace: 'default', name: 'backstage' },
'/example',
);
- expect(techdocsStorageApi.syncEntityDocs).toBeCalledTimes(1);
- expect(techdocsStorageApi.syncEntityDocs).toBeCalledWith(
+ expect(techdocsStorageApi.syncEntityDocs).toHaveBeenCalledTimes(1);
+ expect(techdocsStorageApi.syncEntityDocs).toHaveBeenCalledWith(
{
kind: 'Component',
namespace: 'default',
@@ -511,12 +511,12 @@ describe('useReaderState', () => {
contentReload: expect.any(Function),
});
- expect(techdocsStorageApi.getEntityDocs).toBeCalledTimes(2);
- expect(techdocsStorageApi.getEntityDocs).toBeCalledWith(
+ expect(techdocsStorageApi.getEntityDocs).toHaveBeenCalledTimes(2);
+ expect(techdocsStorageApi.getEntityDocs).toHaveBeenCalledWith(
{ kind: 'Component', namespace: 'default', name: 'backstage' },
'/example',
);
- expect(techdocsStorageApi.syncEntityDocs).toBeCalledWith(
+ expect(techdocsStorageApi.syncEntityDocs).toHaveBeenCalledWith(
{
kind: 'Component',
namespace: 'default',
@@ -607,15 +607,15 @@ describe('useReaderState', () => {
contentReload: expect.any(Function),
});
- expect(techdocsStorageApi.getEntityDocs).toBeCalledWith(
+ expect(techdocsStorageApi.getEntityDocs).toHaveBeenCalledWith(
{ kind: 'Component', namespace: 'default', name: 'backstage' },
'/example',
);
- expect(techdocsStorageApi.getEntityDocs).toBeCalledWith(
+ expect(techdocsStorageApi.getEntityDocs).toHaveBeenCalledWith(
{ kind: 'Component', namespace: 'default', name: 'backstage' },
'/new',
);
- expect(techdocsStorageApi.syncEntityDocs).toBeCalledWith(
+ expect(techdocsStorageApi.syncEntityDocs).toHaveBeenCalledWith(
{
kind: 'Component',
namespace: 'default',
@@ -660,11 +660,11 @@ describe('useReaderState', () => {
contentReload: expect.any(Function),
});
- expect(techdocsStorageApi.getEntityDocs).toBeCalledWith(
+ expect(techdocsStorageApi.getEntityDocs).toHaveBeenCalledWith(
{ kind: 'Component', namespace: 'default', name: 'backstage' },
'/example',
);
- expect(techdocsStorageApi.syncEntityDocs).toBeCalledWith(
+ expect(techdocsStorageApi.syncEntityDocs).toHaveBeenCalledWith(
{
kind: 'Component',
namespace: 'default',
diff --git a/plugins/techdocs/src/search/components/TechDocsSearch.test.tsx b/plugins/techdocs/src/search/components/TechDocsSearch.test.tsx
index 5957aecc4d..28d2346c61 100644
--- a/plugins/techdocs/src/search/components/TechDocsSearch.test.tsx
+++ b/plugins/techdocs/src/search/components/TechDocsSearch.test.tsx
@@ -66,7 +66,7 @@ describe('', () => {
);
await emptyResults;
- expect(querySpy).toBeCalled();
+ expect(querySpy).toHaveBeenCalled();
expect(rendered.getByTestId('techdocs-search-bar')).toBeInTheDocument();
});
});
@@ -88,7 +88,7 @@ describe('', () => {
);
await singleResult;
- expect(querySpy).toBeCalledWith({
+ expect(querySpy).toHaveBeenCalledWith({
filters: {
kind: 'Testable',
name: 'test',
@@ -107,7 +107,7 @@ describe('', () => {
await singleResult;
await waitFor(() =>
- expect(querySpy).toBeCalledWith({
+ expect(querySpy).toHaveBeenCalledWith({
filters: {
kind: 'Testable',
name: 'test',
@@ -148,7 +148,7 @@ describe('', () => {
const rendered = render();
await singleResult;
- expect(querySpy).toBeCalledWith({
+ expect(querySpy).toHaveBeenCalledWith({
filters: {
kind: 'Testable',
name: 'test',
@@ -164,7 +164,7 @@ describe('', () => {
await singleResult;
await waitFor(() =>
- expect(querySpy).toBeCalledWith({
+ expect(querySpy).toHaveBeenCalledWith({
filters: {
kind: 'TestableDiff',
name: 'test-diff',
diff --git a/plugins/todo-backend/package.json b/plugins/todo-backend/package.json
index 359f63c12e..2c7f028b98 100644
--- a/plugins/todo-backend/package.json
+++ b/plugins/todo-backend/package.json
@@ -29,7 +29,7 @@
"start": "backstage-cli package start"
},
"dependencies": {
- "@backstage/backend-common": "^0.15.1-next.0",
+ "@backstage/backend-common": "^0.15.1-next.1",
"@backstage/catalog-client": "^1.0.5-next.0",
"@backstage/catalog-model": "^1.1.0",
"@backstage/config": "^1.0.1",
@@ -43,7 +43,7 @@
"yn": "^4.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.18.2-next.0",
+ "@backstage/cli": "^0.19.0-next.1",
"@types/supertest": "^2.0.8",
"msw": "^0.45.0",
"supertest": "^6.1.3"
diff --git a/plugins/todo/CHANGELOG.md b/plugins/todo/CHANGELOG.md
index 40c9f2a2f0..0e9d0619a9 100644
--- a/plugins/todo/CHANGELOG.md
+++ b/plugins/todo/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-todo
+## 0.2.11-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+ - @backstage/plugin-catalog-react@1.1.4-next.1
+
## 0.2.11-next.0
### Patch Changes
diff --git a/plugins/todo/package.json b/plugins/todo/package.json
index 66f367f189..8ddf0c3615 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.11-next.0",
+ "version": "0.2.11-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -31,10 +31,10 @@
},
"dependencies": {
"@backstage/catalog-model": "^1.1.0",
- "@backstage/core-components": "^0.11.1-next.0",
- "@backstage/core-plugin-api": "^1.0.6-next.0",
+ "@backstage/core-components": "^0.11.1-next.1",
+ "@backstage/core-plugin-api": "^1.0.6-next.1",
"@backstage/errors": "^1.1.0",
- "@backstage/plugin-catalog-react": "^1.1.4-next.0",
+ "@backstage/plugin-catalog-react": "^1.1.4-next.1",
"@backstage/theme": "^0.2.16",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
@@ -42,21 +42,21 @@
"react-use": "^17.2.4"
},
"peerDependencies": {
- "react": "^16.13.1 || ^17.0.0"
+ "react": "^16.13.1 || ^17.0.0",
+ "react-router": "6.0.0-beta.0 || ^6.3.0"
},
"devDependencies": {
- "@backstage/cli": "^0.18.2-next.0",
- "@backstage/core-app-api": "^1.0.6-next.0",
- "@backstage/dev-utils": "^1.0.6-next.0",
- "@backstage/test-utils": "^1.1.4-next.0",
+ "@backstage/cli": "^0.19.0-next.1",
+ "@backstage/core-app-api": "^1.1.0-next.1",
+ "@backstage/dev-utils": "^1.0.6-next.1",
+ "@backstage/test-utils": "^1.2.0-next.1",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
"@types/jest": "^26.0.7",
"@types/node": "^16.11.26",
"cross-fetch": "^3.1.5",
- "msw": "^0.45.0",
- "react-router": "6.0.0-beta.0"
+ "msw": "^0.45.0"
},
"files": [
"dist"
diff --git a/plugins/todo/src/plugin.test.tsx b/plugins/todo/src/plugin.test.tsx
index af4704c16f..40dfdfbff2 100644
--- a/plugins/todo/src/plugin.test.tsx
+++ b/plugins/todo/src/plugin.test.tsx
@@ -15,7 +15,7 @@
*/
import React from 'react';
-import { Route } from 'react-router';
+import { Route, Routes } from 'react-router';
import { renderInTestApp, TestApiProvider } from '@backstage/test-utils';
import { todoPlugin, EntityTodoContent } from './plugin';
import { todoApiRef } from './api';
@@ -55,7 +55,9 @@ describe('todo', () => {
metadata: { name: 'Test TODO' },
}}
>
- } />
+
+ } />
+
,
);
diff --git a/plugins/user-settings/CHANGELOG.md b/plugins/user-settings/CHANGELOG.md
index ed080a12ba..24341e01b9 100644
--- a/plugins/user-settings/CHANGELOG.md
+++ b/plugins/user-settings/CHANGELOG.md
@@ -1,5 +1,15 @@
# @backstage/plugin-user-settings
+## 0.4.8-next.1
+
+### Patch Changes
+
+- 817f3196f6: Updated React Router dependencies to be peer dependencies.
+- d669d89206: Minor API signatures cleanup
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+
## 0.4.8-next.0
### Patch Changes
diff --git a/plugins/user-settings/package.json b/plugins/user-settings/package.json
index 6e73ba6499..c204d369ab 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.4.8-next.0",
+ "version": "0.4.8-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -34,24 +34,24 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/core-components": "^0.11.1-next.0",
- "@backstage/core-plugin-api": "^1.0.6-next.0",
+ "@backstage/core-components": "^0.11.1-next.1",
+ "@backstage/core-plugin-api": "^1.0.6-next.1",
"@backstage/theme": "^0.2.16",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.57",
"@types/react": "^16.13.1 || ^17.0.0",
- "react-router": "6.0.0-beta.0",
"react-use": "^17.2.4"
},
"peerDependencies": {
- "react": "^16.13.1 || ^17.0.0"
+ "react": "^16.13.1 || ^17.0.0",
+ "react-router": "6.0.0-beta.0 || ^6.3.0"
},
"devDependencies": {
- "@backstage/cli": "^0.18.2-next.0",
- "@backstage/core-app-api": "^1.0.6-next.0",
- "@backstage/dev-utils": "^1.0.6-next.0",
- "@backstage/test-utils": "^1.1.4-next.0",
+ "@backstage/cli": "^0.19.0-next.1",
+ "@backstage/core-app-api": "^1.1.0-next.1",
+ "@backstage/dev-utils": "^1.0.6-next.1",
+ "@backstage/test-utils": "^1.2.0-next.1",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/vault-backend/CHANGELOG.md b/plugins/vault-backend/CHANGELOG.md
index 63dc693cc6..fa159c695b 100644
--- a/plugins/vault-backend/CHANGELOG.md
+++ b/plugins/vault-backend/CHANGELOG.md
@@ -1,5 +1,21 @@
# @backstage/plugin-vault-backend
+## 0.2.2-next.1
+
+### Patch Changes
+
+- 148568b5c2: Switched to using node-fetch instead of cross-fetch as is standard for our backend packages
+- 60b85d8ade: Updated dependency `helmet` to `^6.0.0`.
+
+ Please note that these policies are no longer applied by default:
+
+ helmet.contentSecurityPolicy no longer sets block-all-mixed-content directive by default
+ helmet.expectCt is no longer set by default. It can, however, be explicitly enabled. It will be removed in Helmet 7.
+
+- Updated dependencies
+ - @backstage/backend-common@0.15.1-next.1
+ - @backstage/backend-test-utils@0.1.28-next.1
+
## 0.2.2-next.0
### Patch Changes
diff --git a/plugins/vault-backend/package.json b/plugins/vault-backend/package.json
index 27ca7069fe..4722a6ce90 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.2.2-next.0",
+ "version": "0.2.2-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -34,24 +34,24 @@
"postpack": "backstage-cli package postpack"
},
"dependencies": {
- "@backstage/backend-common": "^0.15.1-next.0",
+ "@backstage/backend-common": "^0.15.1-next.1",
"@backstage/backend-tasks": "^0.3.5-next.0",
- "@backstage/backend-test-utils": "^0.1.28-next.0",
+ "@backstage/backend-test-utils": "^0.1.28-next.1",
"@backstage/config": "^1.0.1",
"@backstage/errors": "^1.1.0",
"@types/express": "*",
"compression": "^1.7.4",
"cors": "^2.8.5",
- "cross-fetch": "^3.1.5",
- "express": "^4.17.1",
"express-promise-router": "^4.1.0",
- "helmet": "^5.0.2",
+ "express": "^4.17.1",
+ "helmet": "^6.0.0",
+ "node-fetch": "^2.6.7",
"p-limit": "^3.1.0",
"winston": "^3.7.2",
"yn": "^5.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.18.2-next.0",
+ "@backstage/cli": "^0.19.0-next.1",
"@types/compression": "^1.7.2",
"@types/supertest": "^2.0.8",
"msw": "^0.45.0",
diff --git a/plugins/vault-backend/src/service/vaultApi.ts b/plugins/vault-backend/src/service/vaultApi.ts
index 16aa39ae03..785352fea8 100644
--- a/plugins/vault-backend/src/service/vaultApi.ts
+++ b/plugins/vault-backend/src/service/vaultApi.ts
@@ -16,7 +16,7 @@
import { Config } from '@backstage/config';
import { NotFoundError } from '@backstage/errors';
-import fetch from 'cross-fetch';
+import fetch from 'node-fetch';
import plimit from 'p-limit';
import { getVaultConfig, VaultConfig } from '../config';
diff --git a/plugins/vault/package.json b/plugins/vault/package.json
index 3c1265901f..41c84a5505 100644
--- a/plugins/vault/package.json
+++ b/plugins/vault/package.json
@@ -35,10 +35,10 @@
},
"dependencies": {
"@backstage/catalog-model": "^1.1.0",
- "@backstage/core-components": "^0.11.1-next.0",
- "@backstage/core-plugin-api": "^1.0.6-next.0",
+ "@backstage/core-components": "^0.11.1-next.1",
+ "@backstage/core-plugin-api": "^1.0.6-next.1",
"@backstage/errors": "^1.1.0",
- "@backstage/plugin-catalog-react": "^1.1.4-next.0",
+ "@backstage/plugin-catalog-react": "^1.1.4-next.1",
"@backstage/theme": "^0.2.16",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
@@ -49,10 +49,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.18.2-next.0",
- "@backstage/core-app-api": "^1.0.6-next.0",
- "@backstage/dev-utils": "^1.0.6-next.0",
- "@backstage/test-utils": "^1.1.4-next.0",
+ "@backstage/cli": "^0.19.0-next.1",
+ "@backstage/core-app-api": "^1.1.0-next.1",
+ "@backstage/dev-utils": "^1.0.6-next.1",
+ "@backstage/test-utils": "^1.2.0-next.1",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/xcmetrics/CHANGELOG.md b/plugins/xcmetrics/CHANGELOG.md
index 46701e0e11..70c9aada91 100644
--- a/plugins/xcmetrics/CHANGELOG.md
+++ b/plugins/xcmetrics/CHANGELOG.md
@@ -1,5 +1,14 @@
# @backstage/plugin-xcmetrics
+## 0.2.29-next.1
+
+### Patch Changes
+
+- d669d89206: Minor API signatures cleanup
+- Updated dependencies
+ - @backstage/core-components@0.11.1-next.1
+ - @backstage/core-plugin-api@1.0.6-next.1
+
## 0.2.29-next.0
### Patch Changes
diff --git a/plugins/xcmetrics/package.json b/plugins/xcmetrics/package.json
index a12c2bc64a..16898a42ad 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.29-next.0",
+ "version": "0.2.29-next.1",
"main": "src/index.ts",
"types": "src/index.ts",
"license": "Apache-2.0",
@@ -24,8 +24,8 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
- "@backstage/core-components": "^0.11.1-next.0",
- "@backstage/core-plugin-api": "^1.0.6-next.0",
+ "@backstage/core-components": "^0.11.1-next.1",
+ "@backstage/core-plugin-api": "^1.0.6-next.1",
"@backstage/errors": "^1.1.0",
"@backstage/theme": "^0.2.16",
"@material-ui/core": "^4.12.2",
@@ -40,10 +40,10 @@
"react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
- "@backstage/cli": "^0.18.2-next.0",
- "@backstage/core-app-api": "^1.0.6-next.0",
- "@backstage/dev-utils": "^1.0.6-next.0",
- "@backstage/test-utils": "^1.1.4-next.0",
+ "@backstage/cli": "^0.19.0-next.1",
+ "@backstage/core-app-api": "^1.1.0-next.1",
+ "@backstage/dev-utils": "^1.0.6-next.1",
+ "@backstage/test-utils": "^1.2.0-next.1",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^14.0.0",
diff --git a/plugins/xcmetrics/src/components/BuildListFilter/BuildListFilter.test.tsx b/plugins/xcmetrics/src/components/BuildListFilter/BuildListFilter.test.tsx
index fd9fee0f15..5062da4749 100644
--- a/plugins/xcmetrics/src/components/BuildListFilter/BuildListFilter.test.tsx
+++ b/plugins/xcmetrics/src/components/BuildListFilter/BuildListFilter.test.tsx
@@ -103,13 +103,13 @@ describe('BuildListFilter', () => {
const rendered = await renderWithFiltersVisible(callback);
await setStatusFilter(rendered, 'Succeeded');
- expect(callback).toBeCalledWith({
+ expect(callback).toHaveBeenCalledWith({
...initialValues,
buildStatus: 'succeeded',
});
await setStatusFilter(rendered, 'All');
- expect(callback).toBeCalledWith(initialValues);
+ expect(callback).toHaveBeenCalledWith(initialValues);
});
it('should call back with a project when project is selected', async () => {
@@ -117,13 +117,13 @@ describe('BuildListFilter', () => {
const rendered = await renderWithFiltersVisible(callback);
await setProjectFilter(rendered, client.mockBuild.projectName);
- expect(callback).toBeCalledWith({
+ expect(callback).toHaveBeenCalledWith({
...initialValues,
project: client.mockBuild.projectName,
});
await setProjectFilter(rendered, 'All');
- expect(callback).toBeCalledWith(initialValues);
+ expect(callback).toHaveBeenCalledWith(initialValues);
});
it('should display a count of active (changed) filters', async () => {
diff --git a/plugins/xcmetrics/src/components/DatePicker/DatePicker.test.tsx b/plugins/xcmetrics/src/components/DatePicker/DatePicker.test.tsx
index c9acf5ac51..7c5dc618f6 100644
--- a/plugins/xcmetrics/src/components/DatePicker/DatePicker.test.tsx
+++ b/plugins/xcmetrics/src/components/DatePicker/DatePicker.test.tsx
@@ -34,7 +34,7 @@ describe('DatePicker', () => {
const input = rendered.getByLabelText(label);
await userEvent.type(input, '2020-02-02');
- expect(callback).toBeCalledWith('2020-02-02');
+ expect(callback).toHaveBeenCalledWith('2020-02-02');
});
it('should not accept non date', async () => {
diff --git a/scripts/generate-changeset-feedback.js b/scripts/generate-changeset-feedback.js
index b34147798d..965f80907f 100644
--- a/scripts/generate-changeset-feedback.js
+++ b/scripts/generate-changeset-feedback.js
@@ -73,11 +73,20 @@ async function listChangedFiles(ref) {
}
async function listPackages() {
- const { stdout } = await execFile('yarn', ['-s', 'workspaces', 'info']);
- return Object.entries(JSON.parse(stdout)).map(([name, info]) => ({
- name,
- path: info.location,
- }));
+ const { stdout: version } = await execFile('yarn', ['--version']);
+ if (version.match(/^1\./)) {
+ const { stdout } = await execFile('yarn', ['-s', 'workspaces', 'info']);
+ return Object.entries(JSON.parse(stdout)).map(([name, info]) => ({
+ name,
+ path: info.location,
+ }));
+ }
+ const { stdout } = await execFile('yarn', ['workspaces', 'list', '--json']);
+ return stdout
+ .split(/\r?\n/)
+ .filter(line => line)
+ .map(line => JSON.parse(line))
+ .map(({ name, location }) => ({ name, path: location }));
}
async function loadChangesets(filePaths) {
diff --git a/storybook/yarn.lock b/storybook/yarn.lock
index 7e80518c55..44e983b917 100644
--- a/storybook/yarn.lock
+++ b/storybook/yarn.lock
@@ -2094,101 +2094,101 @@
regenerator-runtime "^0.13.7"
resolve-from "^5.0.0"
-"@swc/core-android-arm-eabi@1.2.239":
- version "1.2.239"
- resolved "https://registry.npmjs.org/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.239.tgz#4b9848b9dbeefb9c3de413f668d6c5a2b3f74333"
- integrity sha512-v316u9E517XQ48YwtkvfwN3nKw6oirJrBOmniA0IM5qhZYOIHDvm3YEhD+hmlEXWbRJ2iwK3ecN3J/HN725I8g==
+"@swc/core-android-arm-eabi@1.2.244":
+ version "1.2.244"
+ resolved "https://registry.npmjs.org/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.244.tgz#f45c5560a471b867f780ed9bd0799620ff8afd04"
+ integrity sha512-bQN6SY78bFIm6lz46ss4+ZDU9owevVjF95Cm+3KB/13ZOPF+m5Pdm8WQLoBYTLgJ0r4/XukEe9XXjba/6Kf8kw==
dependencies:
"@swc/wasm" "1.2.122"
-"@swc/core-android-arm64@1.2.239":
- version "1.2.239"
- resolved "https://registry.npmjs.org/@swc/core-android-arm64/-/core-android-arm64-1.2.239.tgz#6f44c684924a62fb22474af49feabd2d33581ead"
- integrity sha512-HZRYhiRpTetnABVZIVEVnDDBSu+O/FP8sD1g+/dnYx8RZzbfbAsxvnauTRRuWDaqr3wcjDxGYCHiNf8Chaf2LQ==
+"@swc/core-android-arm64@1.2.244":
+ version "1.2.244"
+ resolved "https://registry.npmjs.org/@swc/core-android-arm64/-/core-android-arm64-1.2.244.tgz#92d6cc1829d621fa1aa88d84d30a85112a82d148"
+ integrity sha512-CJeL/EeOIzrH+77otNT6wfGF8uadOHo4rEaBN/xvmtnpdADjYJ8Wt85X4nRK0G929bMke/QdJm5ilPNJdmgCTg==
dependencies:
"@swc/wasm" "1.2.130"
-"@swc/core-darwin-arm64@1.2.239":
- version "1.2.239"
- resolved "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.239.tgz#c7339507d9ff62dd89d2e0e9c6c12be964ed6e9d"
- integrity sha512-qucvHgJ5VQVZNdQacqbloWDYqZyD1pttBqyRWo3Wqr5mC+JAIJl+JsflFpV8QEgY52aMgk/cLVhTa46Si3L3Jw==
+"@swc/core-darwin-arm64@1.2.244":
+ version "1.2.244"
+ resolved "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.244.tgz#7e068d14c357771f7ca23d7e1941e8bd577d2b5f"
+ integrity sha512-ZhRK8L/lpPCerUxtrW48cRJtpsUG5xVTUXu3N0TrYuxRzzapHgK+61g1JdtcwdNvEV7l00X4vfCBRYO0S2nsmw==
-"@swc/core-darwin-x64@1.2.239":
- version "1.2.239"
- resolved "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.2.239.tgz#957d9a6dd4e7ee748c8d76d47e3d91079932b8bf"
- integrity sha512-0iunP9diQpjtacY+YQDwWmUANe4nA54aPDcum4O2vnhFeAXWoYX0b7FmYdq7UqxpP5IxcBgQAl7QhEfDnGrvoA==
+"@swc/core-darwin-x64@1.2.244":
+ version "1.2.244"
+ resolved "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.2.244.tgz#bdf3c8150a3e18c392f3d30749a24f71bbd381cd"
+ integrity sha512-4mY8Gkq2ZMUpXYCLceGp7w0Jnxp75N1gQswNFhMBU4k90ElDuBtPoUSnB1v8MwlQtK7WA25MdvwFnBaEJnfxOg==
-"@swc/core-freebsd-x64@1.2.239":
- version "1.2.239"
- resolved "https://registry.npmjs.org/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.239.tgz#cb824b681f6efb9456387083990556ac2e2ca16d"
- integrity sha512-CA5yf6hd6czwIHlp/89Y03B+19+3EWCAPESjAPmJFjiNv4aGtzkSH+cYljmKYSkkQlYXGdKAc3d5GwL0sUaQgQ==
+"@swc/core-freebsd-x64@1.2.244":
+ version "1.2.244"
+ resolved "https://registry.npmjs.org/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.244.tgz#0941dd18745cc19ed35bc8b5f4c06f62fe91240d"
+ integrity sha512-k/NEZfkgtZ4S96woYArZ89jwJ/L1zyxihTgFFu7SxDt+WRE1EPmY42Gt4y874zi1JiSEFSRHiiueDUfRPu7C0Q==
dependencies:
"@swc/wasm" "1.2.130"
-"@swc/core-linux-arm-gnueabihf@1.2.239":
- version "1.2.239"
- resolved "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.239.tgz#c88aca1b8bcb36eff80a3f6668c80e3a97c2a806"
- integrity sha512-/GsCHvbPcsFF6kYiWyDan8zq1t/Jc5/ksMTWuENmokMBGdTECffFZAtx44V25Iw6Ip6Oe5Uzo7Mdabh4U6sbmA==
+"@swc/core-linux-arm-gnueabihf@1.2.244":
+ version "1.2.244"
+ resolved "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.244.tgz#e60536c2c7e858940138366d9438d33c80a119e3"
+ integrity sha512-tE9b/oZWhMXwoXHkgHFckMrLrlczvG7HgQAdtDuA6g30Xd/3XmdVzC4NbXR+1HoaGVDh7cf0EFE3aKdfPvPQwA==
dependencies:
"@swc/wasm" "1.2.130"
-"@swc/core-linux-arm64-gnu@1.2.239":
- version "1.2.239"
- resolved "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.239.tgz#3e1d113c57d3b031aff78b140dcf3d5bb0b96ec9"
- integrity sha512-VZ/oShno1H+ElO5FuhIacSvSgv5Ftzifkv1iAy9pi8e9cV6Y5RCxIEm6C28nCXNiyrSo5/AqqejGEZKt2pEblA==
+"@swc/core-linux-arm64-gnu@1.2.244":
+ version "1.2.244"
+ resolved "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.244.tgz#daa61051c971c30dd3bb5414be98ca7392b08c06"
+ integrity sha512-zrpVKUeQxZnzorOp3aXhjK1X2/6xuVZcdyxAUDzItP6G4nLbgPBEQLUi6aUjOjquFiihokXoKWaMPQjF/LqH+g==
-"@swc/core-linux-arm64-musl@1.2.239":
- version "1.2.239"
- resolved "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.239.tgz#f7aacbdd2797a35ec5a0c55a128119735f9a0b8e"
- integrity sha512-d24/2NEuvRAVFEFNRwwjlzuZhe442oUnhLuWRqh13bRBY7cRde3KIrxl4IMiVd5GvVKUy4JlhClmiV7Su9nVKw==
+"@swc/core-linux-arm64-musl@1.2.244":
+ version "1.2.244"
+ resolved "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.244.tgz#177ea7e8ba74309c2a08e165f147e63b7420a5d8"
+ integrity sha512-gI6bntk+HDe2witOsQgBDyDDpRmF5dfxbygvVsEdCI+Ko9yj5S9aCsc8WhhbtdcEG1Fo3v/sM/F/9pGatCAwzQ==
-"@swc/core-linux-x64-gnu@1.2.239":
- version "1.2.239"
- resolved "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.239.tgz#84d64156ccd513319ff30474c5d5feec1f2d30ef"
- integrity sha512-OKjj99kfCSrMEvWbWftSAgj29v5TxII+KCAuA284NoGYVcezzaO37C4TfrDjOW5/wtvDfWk97w8FfsOmrWKl0A==
+"@swc/core-linux-x64-gnu@1.2.244":
+ version "1.2.244"
+ resolved "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.244.tgz#c4f00359567fdb25ab5616bf000168f4fcf30534"
+ integrity sha512-hwJ5HrDj7asmVGjzaT6SFdhPVxVUIYm9LCuE3yu89+6C5aR9YrCXvpgIjGcHJvEO2PLAtff72FsX7sbXbzzYGQ==
-"@swc/core-linux-x64-musl@1.2.239":
- version "1.2.239"
- resolved "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.239.tgz#d40c6b98eab92aea3920c3b63055f661491c1403"
- integrity sha512-BsX/ivpDmYFeqOHz5gA5OqtskO5mkEKyBRhhVnzc9AG9tbhz8X5zZMLPV398RCn48lmS/uS8MPXHkJKAlYA1BA==
+"@swc/core-linux-x64-musl@1.2.244":
+ version "1.2.244"
+ resolved "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.244.tgz#f4d07fbd6c73f54dfa351caf8263a81245882a1f"
+ integrity sha512-P8d4AIVN63xaS3t5WhOo0Ejy/X7XaDxXe9sJpEbGQP7CGofhURvgXwe8Q6uhPeWC9AwEPu35ArFQ0ZUmOCY0rg==
-"@swc/core-win32-arm64-msvc@1.2.239":
- version "1.2.239"
- resolved "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.239.tgz#2aa64338bf111109bef89e42f12e57cb2812edea"
- integrity sha512-C5es8Aou6+PnZmk+h+Kay/UCctkwCPRonwRajLDa88x2elhmxE1pdLIPAJVp5RpOlFoPRbJAkc5I+4fV5njZ9g==
+"@swc/core-win32-arm64-msvc@1.2.244":
+ version "1.2.244"
+ resolved "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.244.tgz#38167a47c1cd8c73d0621a14d46b7982d1d314ff"
+ integrity sha512-PZUhgooqPDo+NUo+tIxWI1jKnYVV2ACs8eUkSE++Qf7E4/9Igy79XHbG4/G5ERlCudhdcw4XkYiRN8GJQg6P5w==
dependencies:
"@swc/wasm" "1.2.130"
-"@swc/core-win32-ia32-msvc@1.2.239":
- version "1.2.239"
- resolved "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.239.tgz#842d747ec3c864f4f9217f1b1964cb814ee51dc7"
- integrity sha512-24VMplxQTtOJk7cxpBViq9HozSc6Pg6MxBMuudTmGh6z3L//VxLn0wpUR9jLEvRUk/2i1p1DKpc6RQ0tYcNf9A==
+"@swc/core-win32-ia32-msvc@1.2.244":
+ version "1.2.244"
+ resolved "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.244.tgz#7d6cb0ab95358dc56bd92ca85ac06687a732fa51"
+ integrity sha512-w7v8fND4E8wOHoVVNJIDjOh8EQiedI9HCsCTEDM/z/dVPsk/rxi6iHYnZG6gv+X/d0aCLeZQOkW9khfyy128cg==
dependencies:
"@swc/wasm" "1.2.130"
-"@swc/core-win32-x64-msvc@1.2.239":
- version "1.2.239"
- resolved "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.239.tgz#e0bbbedfcebf2dcf876cdfb438318407cbe4b288"
- integrity sha512-qktIdFdGS6dpDnOGnImrOA9GpNMsVaGAycGcvoqoUYEkPf8dFCLKthEOzqA1fU01wKn3r1M5mi1eluM1ld5Hng==
+"@swc/core-win32-x64-msvc@1.2.244":
+ version "1.2.244"
+ resolved "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.244.tgz#fed9dd48b3ac1269c7dc62e23fa875ec3f2356b4"
+ integrity sha512-/A9ssLtqXEQrdHnJ9SvZSBF7zQM/0ydz8B3p5BT9kUbAhmNqbfE4/Wy3d2zd7nrF16n6tRm4giCzcIdzd/7mvw==
"@swc/core@^1.2.239":
- version "1.2.239"
- resolved "https://registry.npmjs.org/@swc/core/-/core-1.2.239.tgz#4a28f9962f5e7ae1094368243c52168d36258eef"
- integrity sha512-U3tbnOBykfLGIJRQ+bSxVsgyTPQ5l9zTe2YQq3GULnxe6rfsgEYN54Uelp9vr3w7LXfW0k+bteXS6YGLpmnEfw==
+ version "1.2.244"
+ resolved "https://registry.npmjs.org/@swc/core/-/core-1.2.244.tgz#d8ba46113c35f2e33dad6663ba8ce178542e24a3"
+ integrity sha512-/UguNMvKgVeR8wGFb53h+Y9hFSiEpeUhC4Cr1neN15wvWZD3lfvN4qAdqNifZiiPKXrCwYy8NTKlHVtHMYzpXw==
optionalDependencies:
- "@swc/core-android-arm-eabi" "1.2.239"
- "@swc/core-android-arm64" "1.2.239"
- "@swc/core-darwin-arm64" "1.2.239"
- "@swc/core-darwin-x64" "1.2.239"
- "@swc/core-freebsd-x64" "1.2.239"
- "@swc/core-linux-arm-gnueabihf" "1.2.239"
- "@swc/core-linux-arm64-gnu" "1.2.239"
- "@swc/core-linux-arm64-musl" "1.2.239"
- "@swc/core-linux-x64-gnu" "1.2.239"
- "@swc/core-linux-x64-musl" "1.2.239"
- "@swc/core-win32-arm64-msvc" "1.2.239"
- "@swc/core-win32-ia32-msvc" "1.2.239"
- "@swc/core-win32-x64-msvc" "1.2.239"
+ "@swc/core-android-arm-eabi" "1.2.244"
+ "@swc/core-android-arm64" "1.2.244"
+ "@swc/core-darwin-arm64" "1.2.244"
+ "@swc/core-darwin-x64" "1.2.244"
+ "@swc/core-freebsd-x64" "1.2.244"
+ "@swc/core-linux-arm-gnueabihf" "1.2.244"
+ "@swc/core-linux-arm64-gnu" "1.2.244"
+ "@swc/core-linux-arm64-musl" "1.2.244"
+ "@swc/core-linux-x64-gnu" "1.2.244"
+ "@swc/core-linux-x64-musl" "1.2.244"
+ "@swc/core-win32-arm64-msvc" "1.2.244"
+ "@swc/core-win32-ia32-msvc" "1.2.244"
+ "@swc/core-win32-x64-msvc" "1.2.244"
"@swc/wasm@1.2.122":
version "1.2.122"
diff --git a/yarn.lock b/yarn.lock
index 1abe2a17c7..d04b935438 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -951,6 +951,11 @@
resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz#f2dde0c682ccc264a9a8595efd030a5cc8fd2539"
integrity sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg==
+"@babel/parser@^7.9.4":
+ version "7.18.13"
+ resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.18.13.tgz#5b2dd21cae4a2c5145f1fbd8ca103f9313d3b7e4"
+ integrity sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg==
+
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6":
version "7.18.6"
resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2"
@@ -1929,7 +1934,7 @@
core-js-pure "^3.20.2"
regenerator-runtime "^0.13.4"
-"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.15.4", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.0", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
+"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.15.4", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.0", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
version "7.17.7"
resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.7.tgz#a5f3328dc41ff39d803f311cfe17703418cf9825"
integrity sha512-L6rvG9GDxaLgFjg41K+5Yv9OMrU98sWe+Ykmc6FDJW/+vYZMhdOMKkISgzptMaERHvS2Y2lw9MDRm2gHhlQQoA==
@@ -2258,10 +2263,10 @@
resolved "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.0.tgz#fe364f025ba74f6de6c837a84ef44bdb1d61e68f"
integrity sha512-mgmE7XBYY/21erpzhexk4Cj1cyTQ9LzvnTxtzM17BJ7ERMNE6W72mQRo0I1Ud8eFJ+RVVIcBNhLFZ3GX4XFz5w==
-"@changesets/apply-release-plan@^6.0.4":
- version "6.0.4"
- resolved "https://registry.npmjs.org/@changesets/apply-release-plan/-/apply-release-plan-6.0.4.tgz#c08628cf5381be1aad3de69e255c68f658b4ca1a"
- integrity sha512-PutV/ymf8cZMqvaLe/Lh5cP3kBQ9FZl6oGQ3qRDxWD1ML+/uH3jrCE7S7Zw7IVSXkD0lnMD+1dAX7fsOJ6ZvgA==
+"@changesets/apply-release-plan@^6.1.0":
+ version "6.1.0"
+ resolved "https://registry.npmjs.org/@changesets/apply-release-plan/-/apply-release-plan-6.1.0.tgz#97d755a7725bdcc1152aa54d8c7fbc85a5bf1e40"
+ integrity sha512-fMNBUAEc013qaA4KUVjdwgYMmKrf5Mlgf6o+f97MJVNzVnikwpWY47Lc3YR1jhC874Fonn5MkjkWK9DAZsdQ5g==
dependencies:
"@babel/runtime" "^7.10.4"
"@changesets/config" "^2.1.1"
@@ -2273,7 +2278,7 @@
fs-extra "^7.0.1"
lodash.startcase "^4.4.0"
outdent "^0.5.0"
- prettier "^1.19.1"
+ prettier "^2.7.1"
resolve-from "^5.0.0"
semver "^5.4.1"
@@ -2297,12 +2302,12 @@
"@changesets/types" "^5.1.0"
"@changesets/cli@^2.14.0":
- version "2.24.3"
- resolved "https://registry.npmjs.org/@changesets/cli/-/cli-2.24.3.tgz#e6d8ab5d831d2249ca482955232a9a1c9ff02c21"
- integrity sha512-okhRV+0WCQJa2Kmil/WvN5TK1o3+1JYSjrsGHqhjv+PYcDgDDgQ6I9J9OMBO9lfmNIpN7xSO80/BzxgvReO4Wg==
+ version "2.24.4"
+ resolved "https://registry.npmjs.org/@changesets/cli/-/cli-2.24.4.tgz#35b200d49403342cb657b5a941d5c8ef32583eb1"
+ integrity sha512-87JSwMv38zS3QW3062jXZYLsCNRtA08wa7vt3VnMmkGLfUMn2TTSfD+eSGVnKPJ/ycDCvAcCDnrv/B+gSX5KVA==
dependencies:
"@babel/runtime" "^7.10.4"
- "@changesets/apply-release-plan" "^6.0.4"
+ "@changesets/apply-release-plan" "^6.1.0"
"@changesets/assemble-release-plan" "^5.2.1"
"@changesets/changelog-git" "^0.1.12"
"@changesets/config" "^2.1.1"
@@ -2314,7 +2319,7 @@
"@changesets/pre" "^1.0.12"
"@changesets/read" "^0.5.7"
"@changesets/types" "^5.1.0"
- "@changesets/write" "^0.1.9"
+ "@changesets/write" "^0.2.0"
"@manypkg/get-packages" "^1.1.3"
"@types/is-ci" "^3.0.0"
"@types/semver" "^6.0.0"
@@ -2446,16 +2451,16 @@
resolved "https://registry.npmjs.org/@changesets/types/-/types-5.1.0.tgz#e0733b69ddc3efb68524d374d3c44f53a543c8d5"
integrity sha512-uUByGATZCdaPkaO9JkBsgGDjEvHyY2Sb0e/J23+cwxBi5h0fxpLF/HObggO/Fw8T2nxK6zDfJbPsdQt5RwYFJA==
-"@changesets/write@^0.1.9":
- version "0.1.9"
- resolved "https://registry.npmjs.org/@changesets/write/-/write-0.1.9.tgz#ac9315d5985f83b251820b8a046155c14a9d21f4"
- integrity sha512-E90ZrsrfJVOOQaP3Mm5Xd7uDwBAqq3z5paVEavTHKA8wxi7NAL8CmjgbGxSFuiP7ubnJA2BuHlrdE4z86voGOg==
+"@changesets/write@^0.2.0":
+ version "0.2.0"
+ resolved "https://registry.npmjs.org/@changesets/write/-/write-0.2.0.tgz#59821dc811d04c0c1908ae6ee6ce346dfa312420"
+ integrity sha512-iKHqGYXZvneRzRfvEBpPqKfpGELOEOEP63MKdM/SdSRon40rsUijkTmsGCHT1ueLi3iJPZPmYuZJvjjKrMzumA==
dependencies:
"@babel/runtime" "^7.10.4"
"@changesets/types" "^5.1.0"
fs-extra "^7.0.1"
human-id "^1.0.2"
- prettier "^1.19.1"
+ prettier "^2.7.1"
"@codemirror/autocomplete@^6.0.0":
version "6.0.2"
@@ -2530,9 +2535,9 @@
"@lezer/highlight" "^1.0.0"
"@codemirror/view@^6.0.0":
- version "6.2.0"
- resolved "https://registry.npmjs.org/@codemirror/view/-/view-6.2.0.tgz#bae4c486a84174bd9656af9c9d2bd709d5b26c9f"
- integrity sha512-3emW1symh+GoteFMBPsltjmF790U/trouLILATh3JodbF/z98HvcQh2g3+H6dfNIHx16uNonsAF4mNzVr1TJNA==
+ version "6.2.1"
+ resolved "https://registry.npmjs.org/@codemirror/view/-/view-6.2.1.tgz#299698639c658c738f10021c5ea78a513c63977b"
+ integrity sha512-r1svbtAj2Lp/86F3yy1TfDAOAtJRGLINLSEqByETyUaGo1EnLS+P+bbGCVHV62z46BzZYm16noDid69+4bzn0g==
dependencies:
"@codemirror/state" "^6.0.0"
style-mod "^4.0.0"
@@ -2671,29 +2676,19 @@
resolved "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed"
integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==
-"@endemolshinegroup/cosmiconfig-typescript-loader@3.0.2":
- version "3.0.2"
- resolved "https://registry.npmjs.org/@endemolshinegroup/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-3.0.2.tgz#eea4635828dde372838b0909693ebd9aafeec22d"
- integrity sha512-QRVtqJuS1mcT56oHpVegkKBlgtWjXw/gHNWO3eL9oyB5Sc7HBoc2OLG/nYpVfT/Jejvo3NUrD0Udk7XgoyDKkA==
- dependencies:
- lodash.get "^4"
- make-error "^1"
- ts-node "^9"
- tslib "^2"
-
"@esbuild/linux-loong64@0.14.54":
version "0.14.54"
resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz#de2a4be678bd4d0d1ffbb86e6de779cde5999028"
integrity sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==
-"@eslint/eslintrc@^1.3.0":
- version "1.3.0"
- resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz#29f92c30bb3e771e4a2048c95fa6855392dfac4f"
- integrity sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==
+"@eslint/eslintrc@^1.3.1":
+ version "1.3.1"
+ resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.1.tgz#de0807bfeffc37b964a7d0400e0c348ce5a2543d"
+ integrity sha512-OhSY22oQQdw3zgPOOwdoj01l/Dzl1Z+xyUP33tkSN+aqyEhymJCcPHyXt+ylW8FSe0TfRC2VG+ROQOapD0aZSQ==
dependencies:
ajv "^6.12.4"
debug "^4.3.2"
- espree "^9.3.2"
+ espree "^9.4.0"
globals "^13.15.0"
ignore "^5.2.0"
import-fresh "^3.2.1"
@@ -2761,11 +2756,11 @@
xcase "^2.0.1"
"@google-cloud/container@^4.0.0":
- version "4.1.0"
- resolved "https://registry.npmjs.org/@google-cloud/container/-/container-4.1.0.tgz#cf929184f668fc40ca8b864b7f638228ae67fc98"
- integrity sha512-LpVT3wxG73iX/5deF4a2KIEZ7sULF2mksrzyA25OVGtyxFclSZT2Gs5uho5USSLkoKg/Ou+l+ekGMrgBQbLDag==
+ version "4.1.1"
+ resolved "https://registry.npmjs.org/@google-cloud/container/-/container-4.1.1.tgz#44c0fa87f228b33259d482e48127fe9eda896814"
+ integrity sha512-+qODGqShqh88bNQov7hqtteXk1ZZwCob1Ckhq6wSx53k9S0tisczTRLch6KE2XDCi20N95M0PfMoiOyw27PtgQ==
dependencies:
- google-gax "^3.0.1"
+ google-gax "^3.3.0"
"@google-cloud/firestore@^6.0.0":
version "6.0.0"
@@ -2842,9 +2837,9 @@
meros "^1.1.4"
"@graphql-codegen/cli@^2.3.1":
- version "2.11.6"
- resolved "https://registry.npmjs.org/@graphql-codegen/cli/-/cli-2.11.6.tgz#3acfd7cd3bac40999ba1262063d84ca7c96172dc"
- integrity sha512-0R2Bhgjt3XZTSdsn8MGGuJjDEN2z+KCo7920zLZz9boy6bQ0EyuxS9AUATePS9aC3djy2POAIPCHz8iHK68IlQ==
+ version "2.11.8"
+ resolved "https://registry.npmjs.org/@graphql-codegen/cli/-/cli-2.11.8.tgz#6dfe2efe701f6f35eba8a817f13aa79d64fc5af7"
+ integrity sha512-LFEgDk+ShNsuy8GVR8bkLcfvvq6ugq3NmDsHYzCtJO/NW/8InQeqoH2X4e+7YhS/4M9iA2vdzSk0hSsv610Oww==
dependencies:
"@graphql-codegen/core" "2.6.2"
"@graphql-codegen/plugin-helpers" "^2.6.2"
@@ -2858,14 +2853,14 @@
"@graphql-tools/prisma-loader" "^7.2.7"
"@graphql-tools/url-loader" "^7.13.2"
"@graphql-tools/utils" "^8.9.0"
- "@whatwg-node/fetch" "^0.2.3"
+ "@whatwg-node/fetch" "^0.3.0"
ansi-escapes "^4.3.1"
chalk "^4.1.0"
chokidar "^3.5.2"
cosmiconfig "^7.0.0"
debounce "^1.2.0"
detect-indent "^6.0.0"
- graphql-config "^4.3.1"
+ graphql-config "^4.3.4"
inquirer "^8.0.0"
is-glob "^4.0.1"
json-to-pretty-yaml "^1.2.2"
@@ -3186,12 +3181,12 @@
"@graphql-tools/utils" "8.9.0"
tslib "^2.4.0"
-"@graphql-tools/merge@8.3.3":
- version "8.3.3"
- resolved "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.3.tgz#74dd4816c3fc7af38730fc59d1cba6e687d7fb2d"
- integrity sha512-EfULshN2s2s2mhBwbV9WpGnoehRLe7eIMdZrKfHhxlBWOvtNUd3KSCN0PUdAMd7lj1jXUW9KYdn624JrVn6qzg==
+"@graphql-tools/merge@8.3.4":
+ version "8.3.4"
+ resolved "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.4.tgz#749f710d3a930512e6ca36e3bb053c12e22ef332"
+ integrity sha512-2z1UpHvvI52nQZIYArU+rPq1lOENWetsdb+6vu8yLGyCRP4CpKMBvtmiHkbrlPBO8dItpZ08szXEoaStfJHBxQ==
dependencies:
- "@graphql-tools/utils" "8.10.0"
+ "@graphql-tools/utils" "8.10.1"
tslib "^2.4.0"
"@graphql-tools/mock@^8.1.2":
@@ -3276,12 +3271,12 @@
value-or-promise "1.0.11"
"@graphql-tools/schema@^9.0.0":
- version "9.0.1"
- resolved "https://registry.npmjs.org/@graphql-tools/schema/-/schema-9.0.1.tgz#ba8629107c1f0b9ffad14c08c2a85961967682fd"
- integrity sha512-Y6apeiBmvXEz082IAuS/ainnEEQrzMECP1MRIV72eo2WPa6ZtLYPycvIbd56Z5uU2LKP4XcWRgK6WUbCyN16Rw==
+ version "9.0.2"
+ resolved "https://registry.npmjs.org/@graphql-tools/schema/-/schema-9.0.2.tgz#f00dcd2600c25a2e8d69e3a4ab279ea150aab0c4"
+ integrity sha512-FnBM1PMKQ6y8KlzeFocnEwcGA/IT++z4v+hvvwwXL+IUYDNqmrp9XYNklpQRb/KKSbTtKnQapCWNiVNex7jl+Q==
dependencies:
- "@graphql-tools/merge" "8.3.3"
- "@graphql-tools/utils" "8.10.0"
+ "@graphql-tools/merge" "8.3.4"
+ "@graphql-tools/utils" "8.10.1"
tslib "^2.4.0"
value-or-promise "1.0.11"
@@ -3327,10 +3322,10 @@
value-or-promise "^1.0.11"
ws "^8.3.0"
-"@graphql-tools/utils@8.10.0":
- version "8.10.0"
- resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.10.0.tgz#8e76db7487e19b60cf99fb90c2d6343b2105b331"
- integrity sha512-yI+V373FdXQbYfqdarehn9vRWDZZYuvyQ/xwiv5ez2BbobHrqsexF7qs56plLRaQ8ESYpVAjMQvJWe9s23O0Jg==
+"@graphql-tools/utils@8.10.1":
+ version "8.10.1"
+ resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.10.1.tgz#3224fe0611c9bb51e6a5c16472ae17afbd6c5465"
+ integrity sha512-UYi/afPvxZ8mz0LjplMxOSmGDPenVS/Q0zJ/6LOyF9yZdJYIDe+J+Qr/I9+rCYQmgBW4BJeRUUc7VoUzZPfZDA==
dependencies:
tslib "^2.4.0"
@@ -3412,6 +3407,17 @@
protobufjs "^6.10.0"
yargs "^16.2.0"
+"@grpc/proto-loader@^0.7.0":
+ version "0.7.2"
+ resolved "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.2.tgz#fa63178853afe1473c50cff89fe572f7c8b20154"
+ integrity sha512-jCdyLIT/tdQ1zhrbTQnJNK5nbDf0GoBpy5jVNywBzzMDF+Vs6uEaHnfz46dMtDxkvwrF2hzk5Z67goliceH0sA==
+ dependencies:
+ "@types/long" "^4.0.1"
+ lodash.camelcase "^4.3.0"
+ long "^4.0.0"
+ protobufjs "^7.0.0"
+ yargs "^16.2.0"
+
"@hapi/hoek@^9.0.0":
version "9.0.4"
resolved "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.0.4.tgz#e80ad4e8e8d2adc6c77d985f698447e8628b6010"
@@ -3438,6 +3444,11 @@
resolved "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz#316b0a63b91c10e53f242efb4ace5c3b34e8728d"
integrity sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==
+"@humanwhocodes/module-importer@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
+ integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
+
"@humanwhocodes/object-schema@^1.2.1":
version "1.2.1"
resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
@@ -5053,9 +5064,9 @@
typescript "~4.6.3"
"@microsoft/microsoft-graph-types@^2.6.0":
- version "2.23.0"
- resolved "https://registry.npmjs.org/@microsoft/microsoft-graph-types/-/microsoft-graph-types-2.23.0.tgz#075cd5bbd523a414bb98ab97fb2207bcccbfa532"
- integrity sha512-4TwjVg/A28K5Df1br17gRmv7Z0iWqYArdUo77xPz+bEtMpDD1hwmKUNj7O7a8r3sN7WIC2nKp6Atb6LXTr1LEA==
+ version "2.24.0"
+ resolved "https://registry.npmjs.org/@microsoft/microsoft-graph-types/-/microsoft-graph-types-2.24.0.tgz#a3485645df12fad721008c9d5b423b30fa60068c"
+ integrity sha512-wbzU11JFt9s+tVqmECKaP0BgoQhfkXDykDSffdp5WPrr2lxWyqbKrXjmbiFxD6MgSENRFsdUeCXSULCM7Pcjzw==
"@microsoft/tsdoc-config@~0.16.1":
version "0.16.1"
@@ -6443,106 +6454,106 @@
"@svgr/plugin-jsx" "^6.3.1"
"@svgr/plugin-svgo" "^6.3.1"
-"@swc/core-android-arm-eabi@1.2.242":
- version "1.2.242"
- resolved "https://registry.npmjs.org/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.242.tgz#3ae5d8b178a0835ae0878094175d943f2d894bec"
- integrity sha512-Ukx1LQAUbPRJdREF9FMgeUwIuRtWJNpPyPF7BWl4hIkw024q75mohMbp3S2wgrF1TsSsEGW37q0DkFxPJ2uJbQ==
+"@swc/core-android-arm-eabi@1.2.244":
+ version "1.2.244"
+ resolved "https://registry.npmjs.org/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.244.tgz#f45c5560a471b867f780ed9bd0799620ff8afd04"
+ integrity sha512-bQN6SY78bFIm6lz46ss4+ZDU9owevVjF95Cm+3KB/13ZOPF+m5Pdm8WQLoBYTLgJ0r4/XukEe9XXjba/6Kf8kw==
dependencies:
"@swc/wasm" "1.2.122"
-"@swc/core-android-arm64@1.2.242":
- version "1.2.242"
- resolved "https://registry.npmjs.org/@swc/core-android-arm64/-/core-android-arm64-1.2.242.tgz#2c1885c08dd5720991a6fa7585d39a93df98e773"
- integrity sha512-4E/y+reQWHVCV/0Sn174gsLQyqIKlBWKnwUfPa7MA53VBacp8HTYoPY+iwKPrngsH16gEOC7iByiTJHR/4kirg==
+"@swc/core-android-arm64@1.2.244":
+ version "1.2.244"
+ resolved "https://registry.npmjs.org/@swc/core-android-arm64/-/core-android-arm64-1.2.244.tgz#92d6cc1829d621fa1aa88d84d30a85112a82d148"
+ integrity sha512-CJeL/EeOIzrH+77otNT6wfGF8uadOHo4rEaBN/xvmtnpdADjYJ8Wt85X4nRK0G929bMke/QdJm5ilPNJdmgCTg==
dependencies:
"@swc/wasm" "1.2.130"
-"@swc/core-darwin-arm64@1.2.242":
- version "1.2.242"
- resolved "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.242.tgz#1b8b16a132cc354ea3b31d26c46908dae2fe41ed"
- integrity sha512-nIqtjxdbz0Fe0gFZwCygBwUrGEXj3c4mjHjNeveidVX/6U0HE/EAj+0iXuw8zjJLof8HCMnxq8CzzvhA6gd3ZA==
+"@swc/core-darwin-arm64@1.2.244":
+ version "1.2.244"
+ resolved "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.244.tgz#7e068d14c357771f7ca23d7e1941e8bd577d2b5f"
+ integrity sha512-ZhRK8L/lpPCerUxtrW48cRJtpsUG5xVTUXu3N0TrYuxRzzapHgK+61g1JdtcwdNvEV7l00X4vfCBRYO0S2nsmw==
-"@swc/core-darwin-x64@1.2.242":
- version "1.2.242"
- resolved "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.2.242.tgz#cde041d520fcfb0865f49b395bb2c76af8ec3f3a"
- integrity sha512-iZKzI76vYYHD/t8wkQ/uIVuIyxN1eift2nLvUU7/jtmoa6b8DH/45ykB/C3vkuvYVNMiGA8HIjJIzw7RJz5XIQ==
+"@swc/core-darwin-x64@1.2.244":
+ version "1.2.244"
+ resolved "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.2.244.tgz#bdf3c8150a3e18c392f3d30749a24f71bbd381cd"
+ integrity sha512-4mY8Gkq2ZMUpXYCLceGp7w0Jnxp75N1gQswNFhMBU4k90ElDuBtPoUSnB1v8MwlQtK7WA25MdvwFnBaEJnfxOg==
-"@swc/core-freebsd-x64@1.2.242":
- version "1.2.242"
- resolved "https://registry.npmjs.org/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.242.tgz#a95827311424dd86190fdb73bec996d24188c6d3"
- integrity sha512-6JNi5/6JDvcTQzBkndELiIlJufWowoI2ZEmXlGIJpiGoj28PEDPwy5LO7KkXa4DnY5L4CSh15idFO/DxV0rGAQ==
+"@swc/core-freebsd-x64@1.2.244":
+ version "1.2.244"
+ resolved "https://registry.npmjs.org/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.244.tgz#0941dd18745cc19ed35bc8b5f4c06f62fe91240d"
+ integrity sha512-k/NEZfkgtZ4S96woYArZ89jwJ/L1zyxihTgFFu7SxDt+WRE1EPmY42Gt4y874zi1JiSEFSRHiiueDUfRPu7C0Q==
dependencies:
"@swc/wasm" "1.2.130"
-"@swc/core-linux-arm-gnueabihf@1.2.242":
- version "1.2.242"
- resolved "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.242.tgz#1b0bd0ba96c59a9c4b87668521ce8ba55c8c7f55"
- integrity sha512-NGL9A3cv8PCbeQ1SvPfApNlHvFbf7Jn305sCAy3iZYsmwm+EU4JNlOWXGgRioP7ABhz2kwLhfYs8UMYCDIVq8Q==
+"@swc/core-linux-arm-gnueabihf@1.2.244":
+ version "1.2.244"
+ resolved "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.244.tgz#e60536c2c7e858940138366d9438d33c80a119e3"
+ integrity sha512-tE9b/oZWhMXwoXHkgHFckMrLrlczvG7HgQAdtDuA6g30Xd/3XmdVzC4NbXR+1HoaGVDh7cf0EFE3aKdfPvPQwA==
dependencies:
"@swc/wasm" "1.2.130"
-"@swc/core-linux-arm64-gnu@1.2.242":
- version "1.2.242"
- resolved "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.242.tgz#f97c1b655779788fff9a035f6a80180b1545423b"
- integrity sha512-OJ0kAjgeoRDJlo6Rvd2GnJ92tiIndmC/8krD9gfnQEyAgpR+jajOxbKhyBN/QZPyD2q/TG2LPqxhGYZ79q5mWQ==
+"@swc/core-linux-arm64-gnu@1.2.244":
+ version "1.2.244"
+ resolved "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.244.tgz#daa61051c971c30dd3bb5414be98ca7392b08c06"
+ integrity sha512-zrpVKUeQxZnzorOp3aXhjK1X2/6xuVZcdyxAUDzItP6G4nLbgPBEQLUi6aUjOjquFiihokXoKWaMPQjF/LqH+g==
-"@swc/core-linux-arm64-musl@1.2.242":
- version "1.2.242"
- resolved "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.242.tgz#ad77a5c7fc79d42d64970ca1886eb9d626388ca2"
- integrity sha512-VqnHSYb1a6xW5ARUx9kq88s1S3XvCw9TvQXsPcN4e5qsugrLzxWLnqIM6VnWW06prxN7pYlWo9QtrtdPfbppmA==
+"@swc/core-linux-arm64-musl@1.2.244":
+ version "1.2.244"
+ resolved "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.244.tgz#177ea7e8ba74309c2a08e165f147e63b7420a5d8"
+ integrity sha512-gI6bntk+HDe2witOsQgBDyDDpRmF5dfxbygvVsEdCI+Ko9yj5S9aCsc8WhhbtdcEG1Fo3v/sM/F/9pGatCAwzQ==
-"@swc/core-linux-x64-gnu@1.2.242":
- version "1.2.242"
- resolved "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.242.tgz#4c7f2c483876a4b0755a263133c25413fa69df88"
- integrity sha512-DDqVJh0KpgHb+E0563+6PqAYDzYTSwgZXF/fOULwlHC7Yt50a9+ecisTFSHkWc74zPMtq27kMTuZyyLeD3gu7A==
+"@swc/core-linux-x64-gnu@1.2.244":
+ version "1.2.244"
+ resolved "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.244.tgz#c4f00359567fdb25ab5616bf000168f4fcf30534"
+ integrity sha512-hwJ5HrDj7asmVGjzaT6SFdhPVxVUIYm9LCuE3yu89+6C5aR9YrCXvpgIjGcHJvEO2PLAtff72FsX7sbXbzzYGQ==
-"@swc/core-linux-x64-musl@1.2.242":
- version "1.2.242"
- resolved "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.242.tgz#48f8769094cfde9d78dc32936666575470583b2a"
- integrity sha512-P+9sWgd5eZ6kS1WxOJbCeSgWY7mLP742PhwAzpFrJqCq5nx8Q4FYo4L5mOVNAheYDWldsxR1nKXR1RIMK3S2Lw==
+"@swc/core-linux-x64-musl@1.2.244":
+ version "1.2.244"
+ resolved "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.244.tgz#f4d07fbd6c73f54dfa351caf8263a81245882a1f"
+ integrity sha512-P8d4AIVN63xaS3t5WhOo0Ejy/X7XaDxXe9sJpEbGQP7CGofhURvgXwe8Q6uhPeWC9AwEPu35ArFQ0ZUmOCY0rg==
-"@swc/core-win32-arm64-msvc@1.2.242":
- version "1.2.242"
- resolved "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.242.tgz#e421a5a7a49d1effa71a22fea22a65256b447108"
- integrity sha512-W5cevrf5aDJzdE++XeQi1BJKuigC3dlG2NaBUyt3inmep7nli6eoBJdj9Vyg5EPfFOdeI6wQiwOpFvQRoAle8Q==
+"@swc/core-win32-arm64-msvc@1.2.244":
+ version "1.2.244"
+ resolved "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.244.tgz#38167a47c1cd8c73d0621a14d46b7982d1d314ff"
+ integrity sha512-PZUhgooqPDo+NUo+tIxWI1jKnYVV2ACs8eUkSE++Qf7E4/9Igy79XHbG4/G5ERlCudhdcw4XkYiRN8GJQg6P5w==
dependencies:
"@swc/wasm" "1.2.130"
-"@swc/core-win32-ia32-msvc@1.2.242":
- version "1.2.242"
- resolved "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.242.tgz#1b836f5872195fef506a094eae7734b5fd28a1b5"
- integrity sha512-XRQcgChvY9333hBre9F53EbiVfVu5MkSH4+XIiNMK14Jg8EqQ1nOcd+jvv2sEdEVbufCmBbWNjofUrCoQey60w==
+"@swc/core-win32-ia32-msvc@1.2.244":
+ version "1.2.244"
+ resolved "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.244.tgz#7d6cb0ab95358dc56bd92ca85ac06687a732fa51"
+ integrity sha512-w7v8fND4E8wOHoVVNJIDjOh8EQiedI9HCsCTEDM/z/dVPsk/rxi6iHYnZG6gv+X/d0aCLeZQOkW9khfyy128cg==
dependencies:
"@swc/wasm" "1.2.130"
-"@swc/core-win32-x64-msvc@1.2.242":
- version "1.2.242"
- resolved "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.242.tgz#61a6c7d4da1dec1188b912785bd8e0bb16ff8440"
- integrity sha512-Cz1hZOxcfEVgzEr2sYIW9MxT+wEEbYz7aB87ZDmTUpr7vuvBiLMwsYItm8qG847wZeJfa+J7CC+tty5GJOBOOQ==
+"@swc/core-win32-x64-msvc@1.2.244":
+ version "1.2.244"
+ resolved "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.244.tgz#fed9dd48b3ac1269c7dc62e23fa875ec3f2356b4"
+ integrity sha512-/A9ssLtqXEQrdHnJ9SvZSBF7zQM/0ydz8B3p5BT9kUbAhmNqbfE4/Wy3d2zd7nrF16n6tRm4giCzcIdzd/7mvw==
"@swc/core@^1.2.239":
- version "1.2.242"
- resolved "https://registry.npmjs.org/@swc/core/-/core-1.2.242.tgz#4392ef0012fe9667440c6eb5a419b6cc86a0a786"
- integrity sha512-JQqSYVoLtHtztCNBgeCKyxmqw6AksHsC4WvVSSErLXJx6JXKaog1HFVuzd6rwx2lLCV+zBnbqJFug5OX0g2knw==
+ version "1.2.244"
+ resolved "https://registry.npmjs.org/@swc/core/-/core-1.2.244.tgz#d8ba46113c35f2e33dad6663ba8ce178542e24a3"
+ integrity sha512-/UguNMvKgVeR8wGFb53h+Y9hFSiEpeUhC4Cr1neN15wvWZD3lfvN4qAdqNifZiiPKXrCwYy8NTKlHVtHMYzpXw==
optionalDependencies:
- "@swc/core-android-arm-eabi" "1.2.242"
- "@swc/core-android-arm64" "1.2.242"
- "@swc/core-darwin-arm64" "1.2.242"
- "@swc/core-darwin-x64" "1.2.242"
- "@swc/core-freebsd-x64" "1.2.242"
- "@swc/core-linux-arm-gnueabihf" "1.2.242"
- "@swc/core-linux-arm64-gnu" "1.2.242"
- "@swc/core-linux-arm64-musl" "1.2.242"
- "@swc/core-linux-x64-gnu" "1.2.242"
- "@swc/core-linux-x64-musl" "1.2.242"
- "@swc/core-win32-arm64-msvc" "1.2.242"
- "@swc/core-win32-ia32-msvc" "1.2.242"
- "@swc/core-win32-x64-msvc" "1.2.242"
+ "@swc/core-android-arm-eabi" "1.2.244"
+ "@swc/core-android-arm64" "1.2.244"
+ "@swc/core-darwin-arm64" "1.2.244"
+ "@swc/core-darwin-x64" "1.2.244"
+ "@swc/core-freebsd-x64" "1.2.244"
+ "@swc/core-linux-arm-gnueabihf" "1.2.244"
+ "@swc/core-linux-arm64-gnu" "1.2.244"
+ "@swc/core-linux-arm64-musl" "1.2.244"
+ "@swc/core-linux-x64-gnu" "1.2.244"
+ "@swc/core-linux-x64-musl" "1.2.244"
+ "@swc/core-win32-arm64-msvc" "1.2.244"
+ "@swc/core-win32-ia32-msvc" "1.2.244"
+ "@swc/core-win32-x64-msvc" "1.2.244"
"@swc/helpers@^0.4.7":
- version "0.4.9"
- resolved "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.9.tgz#09ab44feae456adaa1acb00f59254b9d0f89ba72"
- integrity sha512-VQBBIInp9++WQaRsXbi05XwnH0qhNCJ99iMzdh5WmA9eXhXKNc4NnMB8GEOL1aaRju+E+vQA4rGYFM1jmb3BXA==
+ version "0.4.11"
+ resolved "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.11.tgz#db23a376761b3d31c26502122f349a21b592c8de"
+ integrity sha512-rEUrBSGIoSFuYxwBYtlUFMlE2CwGhmW+w9355/5oduSw8e5h2+Tj4UrAGNNgP9915++wj5vkQo0UuOBqOAq4nw==
dependencies:
tslib "^2.4.0"
@@ -6570,6 +6581,20 @@
dependencies:
defer-to-connect "^2.0.0"
+"@tanstack/query-core@4.2.3":
+ version "4.2.3"
+ resolved "https://registry.npmjs.org/@tanstack/query-core/-/query-core-4.2.3.tgz#52d75430c9662cc85c160761c1421de483c7791f"
+ integrity sha512-zdt5lYWs1dZaA3IxJbCgtAfHZJScRZONpiLL7YkeOkrme5MfjQqTpjq7LYbzpyuwPOh2Jx68le0PLl57JFv5hQ==
+
+"@tanstack/react-query@^4.1.3":
+ version "4.2.3"
+ resolved "https://registry.npmjs.org/@tanstack/react-query/-/react-query-4.2.3.tgz#782fd0f84553ba6219f1137a12ea28ab8cd3a3f3"
+ integrity sha512-JLaMOxoJTkiAu7QpevRCt2uI/0vd3E8K/rSlCuRgWlcW5DeJDFpDS5kfzmLO5MOcD97fgsJRrDbxDORxR1FdJA==
+ dependencies:
+ "@tanstack/query-core" "4.2.3"
+ "@types/use-sync-external-store" "^0.0.3"
+ use-sync-external-store "^1.2.0"
+
"@testing-library/cypress@^8.0.2":
version "8.0.3"
resolved "https://registry.npmjs.org/@testing-library/cypress/-/cypress-8.0.3.tgz#24ab34df34d7896866603ade705afbdd186e273c"
@@ -7018,9 +7043,9 @@
"@types/d3-selection" "*"
"@types/dagre@^0.7.44":
- version "0.7.47"
- resolved "https://registry.npmjs.org/@types/dagre/-/dagre-0.7.47.tgz#1d1b89e1fac36aaf5ef5ed6274bb123073095ac5"
- integrity sha512-oX+3aRf7L6Cqq1MvbWmmD7FpAU/T8URwFFuHBagAiyHILn3i+RNZ35/tvyq28de+lZGY3W19BxJ7FeITQDO7aA==
+ version "0.7.48"
+ resolved "https://registry.npmjs.org/@types/dagre/-/dagre-0.7.48.tgz#e3ff1962df959c22af44d58d4275d35bd9309043"
+ integrity sha512-rF3yXSwHIrDxEkN6edCE4TXknb5YSEpiXfLaspw1I08grC49ZFuAVGOQCmZGIuLUGoFgcqGlUFBL/XrpgYpQgw==
"@types/debug@^4.0.0":
version "4.1.7"
@@ -7051,9 +7076,9 @@
"@types/node" "*"
"@types/dompurify@^2.1.0", "@types/dompurify@^2.2.2", "@types/dompurify@^2.3.3":
- version "2.3.3"
- resolved "https://registry.npmjs.org/@types/dompurify/-/dompurify-2.3.3.tgz#c24c92f698f77ed9cc9d9fa7888f90cf2bfaa23f"
- integrity sha512-nnVQSgRVuZ/843oAfhA25eRSNzUFcBPk/LOiw5gm8mD9/X7CNcbRkQu/OsjCewO8+VIYfPxUnXvPEVGenw14+w==
+ version "2.3.4"
+ resolved "https://registry.npmjs.org/@types/dompurify/-/dompurify-2.3.4.tgz#94e997e30338ea24d4c8d08beca91ce4dd17a1b4"
+ integrity sha512-EXzDatIb5EspL2eb/xPGmaC8pePcTHrkDCONjeisusLFrVfl38Pjea/R0YJGu3k9ZQadSvMqW0WXPI2hEo2Ajg==
dependencies:
"@types/trusted-types" "*"
@@ -7387,6 +7412,11 @@
dependencies:
"@types/node" "*"
+"@types/linkify-it@*":
+ version "3.0.2"
+ resolved "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.2.tgz#fd2cd2edbaa7eaac7e7f3c1748b52a19143846c9"
+ integrity sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==
+
"@types/lodash@^4.14.151", "@types/lodash@^4.14.173", "@types/lodash@^4.14.175":
version "4.14.184"
resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.184.tgz#23f96cd2a21a28e106dc24d825d4aa966de7a9fe"
@@ -7412,6 +7442,14 @@
resolved "https://registry.npmjs.org/@types/luxon/-/luxon-3.0.0.tgz#47fb7891e41875fce7018a8bd3d09b204c5621f5"
integrity sha512-Lx+EZoJxUKw4dp8uei9XiUVNlgkYmax5+ovqt6Xf3LzJOnWhlfJw/jLBmqfGVwOP/pDr4HT8bI1WtxK0IChMLw==
+"@types/markdown-it@^12.2.3":
+ version "12.2.3"
+ resolved "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz#0d6f6e5e413f8daaa26522904597be3d6cd93b51"
+ integrity sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==
+ dependencies:
+ "@types/linkify-it" "*"
+ "@types/mdurl" "*"
+
"@types/marked@^4.0.0":
version "4.0.6"
resolved "https://registry.npmjs.org/@types/marked/-/marked-4.0.6.tgz#9ca544c1057f3c8b3f649b5e8e56d9241e3ca22d"
@@ -7424,7 +7462,7 @@
dependencies:
"@types/unist" "*"
-"@types/mdurl@^1.0.0":
+"@types/mdurl@*", "@types/mdurl@^1.0.0":
version "1.0.2"
resolved "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.2.tgz#e2ce9d83a613bacf284c7be7d491945e39e1f8e9"
integrity sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==
@@ -7444,17 +7482,22 @@
resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40"
integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==
+"@types/minimatch@^5.0.0":
+ version "5.1.1"
+ resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.1.tgz#b1429c0c016cd50e105f3166bf179f6918b7365f"
+ integrity sha512-v55NF6Dz0wrj14Rn8iEABTWrhYRmgkJYuokduunSiq++t3hZ9VZ6dvcDt+850Pm5sGJZk8RaHzkFCXPxVINZ+g==
+
"@types/minimist@^1.2.0":
version "1.2.2"
resolved "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c"
integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==
"@types/minipass@*":
- version "2.2.0"
- resolved "https://registry.npmjs.org/@types/minipass/-/minipass-2.2.0.tgz#51ad404e8eb1fa961f75ec61205796807b6f9651"
- integrity sha512-wuzZksN4w4kyfoOv/dlpov4NOunwutLA/q7uc00xU02ZyUY+aoM5PWIXEKBMnm0NHd4a+N71BMjq+x7+2Af1fg==
+ version "3.3.5"
+ resolved "https://registry.npmjs.org/@types/minipass/-/minipass-3.3.5.tgz#ba65aaae3fe7318520bd4a40bc71c53fc8826e45"
+ integrity sha512-M2BLHQdEmDmH671h0GIlOQQJrgezd1vNqq7PVj1VOsHZ2uQQb4iPiQIl0SlMdhxZPUsLIfEklmeEHXg8DJRewA==
dependencies:
- "@types/node" "*"
+ minipass "*"
"@types/mock-fs@^4.10.0", "@types/mock-fs@^4.13.0":
version "4.13.1"
@@ -7527,9 +7570,9 @@
integrity sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==
"@types/node@^16.0.0", "@types/node@^16.11.26", "@types/node@^16.9.2":
- version "16.11.52"
- resolved "https://registry.npmjs.org/@types/node/-/node-16.11.52.tgz#d797437435455f237800c171d05639f0335c37b9"
- integrity sha512-GnstYouCa9kbYokBCWEVrszJ1P2rGAQpKrqACHKuixkaT8XGu8nsqHvEUIGqDs5vwtsJ7LrYqnPDKRD1V+M39A==
+ version "16.11.56"
+ resolved "https://registry.npmjs.org/@types/node/-/node-16.11.56.tgz#dcbb617669481e158e0f1c6204d1c768cd675901"
+ integrity sha512-aFcUkv7EddxxOa/9f74DINReQ/celqH8DiB3fRYgVDM2Xm5QJL8sl80QKuAnGvwAsMn+H3IFA6WCrQh1CY7m1A==
"@types/normalize-package-data@^2.4.0":
version "2.4.1"
@@ -7693,9 +7736,9 @@
"@types/react" "*"
"@types/react-syntax-highlighter@^15.0.0":
- version "15.5.4"
- resolved "https://registry.npmjs.org/@types/react-syntax-highlighter/-/react-syntax-highlighter-15.5.4.tgz#c76dd9cab769484bb7360849074eb340421183ca"
- integrity sha512-GYXA4nRBG4jTGFfYMLO2/yuqyOyaQ415oeJWw6akE5gipOEsGhvXFvWhsctGVMHzAfRI7e/J0B9cpqrfMOwZhA==
+ version "15.5.5"
+ resolved "https://registry.npmjs.org/@types/react-syntax-highlighter/-/react-syntax-highlighter-15.5.5.tgz#4d3b51f8956195f1f63360ff03f8822c5d74c516"
+ integrity sha512-QH3JZQXa2usAvJvSsdSUJ4Yu4j8ReuZpgRrEW+XP+Rmosbn425YshW9iGEb/pAARm8496axHhHUPRH3UmTiB6A==
dependencies:
"@types/react" "*"
@@ -8022,6 +8065,11 @@
resolved "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d"
integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==
+"@types/use-sync-external-store@^0.0.3":
+ version "0.0.3"
+ resolved "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz#b6725d5f4af24ace33b36fafd295136e75509f43"
+ integrity sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==
+
"@types/uuid@^8.0.0":
version "8.3.4"
resolved "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc"
@@ -8119,13 +8167,13 @@
integrity sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw==
"@typescript-eslint/eslint-plugin@^5.9.0":
- version "5.34.0"
- resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.34.0.tgz#d690f60e335596f38b01792e8f4b361d9bd0cb35"
- integrity sha512-eRfPPcasO39iwjlUAMtjeueRGuIrW3TQ9WseIDl7i5UWuFbf83yYaU7YPs4j8+4CxUMIsj1k+4kV+E+G+6ypDQ==
+ version "5.36.1"
+ resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.36.1.tgz#471f64dc53600025e470dad2ca4a9f2864139019"
+ integrity sha512-iC40UK8q1tMepSDwiLbTbMXKDxzNy+4TfPWgIL661Ym0sD42vRcQU93IsZIrmi+x292DBr60UI/gSwfdVYexCA==
dependencies:
- "@typescript-eslint/scope-manager" "5.34.0"
- "@typescript-eslint/type-utils" "5.34.0"
- "@typescript-eslint/utils" "5.34.0"
+ "@typescript-eslint/scope-manager" "5.36.1"
+ "@typescript-eslint/type-utils" "5.36.1"
+ "@typescript-eslint/utils" "5.36.1"
debug "^4.3.4"
functional-red-black-tree "^1.0.1"
ignore "^5.2.0"
@@ -8146,13 +8194,13 @@
eslint-utils "^3.0.0"
"@typescript-eslint/parser@^5.9.0":
- version "5.34.0"
- resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.34.0.tgz#ca710858ea85dbfd30c9b416a335dc49e82dbc07"
- integrity sha512-SZ3NEnK4usd2CXkoV3jPa/vo1mWX1fqRyIVUQZR4As1vyp4fneknBNJj+OFtV8WAVgGf+rOHMSqQbs2Qn3nFZQ==
+ version "5.36.1"
+ resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.36.1.tgz#931c22c7bacefd17e29734628cdec8b2acdcf1ce"
+ integrity sha512-/IsgNGOkBi7CuDfUbwt1eOqUXF9WGVBW9dwEe1pi+L32XrTsZIgmDFIi2RxjzsvB/8i+MIf5JIoTEH8LOZ368A==
dependencies:
- "@typescript-eslint/scope-manager" "5.34.0"
- "@typescript-eslint/types" "5.34.0"
- "@typescript-eslint/typescript-estree" "5.34.0"
+ "@typescript-eslint/scope-manager" "5.36.1"
+ "@typescript-eslint/types" "5.36.1"
+ "@typescript-eslint/typescript-estree" "5.36.1"
debug "^4.3.4"
"@typescript-eslint/scope-manager@5.20.0":
@@ -8163,13 +8211,13 @@
"@typescript-eslint/types" "5.20.0"
"@typescript-eslint/visitor-keys" "5.20.0"
-"@typescript-eslint/scope-manager@5.34.0":
- version "5.34.0"
- resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.34.0.tgz#14efd13dc57602937e25f188fd911f118781e527"
- integrity sha512-HNvASMQlah5RsBW6L6c7IJ0vsm+8Sope/wu5sEAf7joJYWNb1LDbJipzmdhdUOnfrDFE6LR1j57x1EYVxrY4ow==
+"@typescript-eslint/scope-manager@5.36.1":
+ version "5.36.1"
+ resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.36.1.tgz#23c49b7ddbcffbe09082e6694c2524950766513f"
+ integrity sha512-pGC2SH3/tXdu9IH3ItoqciD3f3RRGCh7hb9zPdN2Drsr341zgd6VbhP5OHQO/reUqihNltfPpMpTNihFMarP2w==
dependencies:
- "@typescript-eslint/types" "5.34.0"
- "@typescript-eslint/visitor-keys" "5.34.0"
+ "@typescript-eslint/types" "5.36.1"
+ "@typescript-eslint/visitor-keys" "5.36.1"
"@typescript-eslint/scope-manager@5.9.0":
version "5.9.0"
@@ -8179,12 +8227,13 @@
"@typescript-eslint/types" "5.9.0"
"@typescript-eslint/visitor-keys" "5.9.0"
-"@typescript-eslint/type-utils@5.34.0":
- version "5.34.0"
- resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.34.0.tgz#7a324ab9ddd102cd5e1beefc94eea6f3eb32d32d"
- integrity sha512-Pxlno9bjsQ7hs1pdWRUv9aJijGYPYsHpwMeCQ/Inavhym3/XaKt1ZKAA8FIw4odTBfowBdZJDMxf2aavyMDkLg==
+"@typescript-eslint/type-utils@5.36.1":
+ version "5.36.1"
+ resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.36.1.tgz#016fc2bff6679f54c0b2df848a493f0ca3d4f625"
+ integrity sha512-xfZhfmoQT6m3lmlqDvDzv9TiCYdw22cdj06xY0obSznBsT///GK5IEZQdGliXpAOaRL34o8phEvXzEo/VJx13Q==
dependencies:
- "@typescript-eslint/utils" "5.34.0"
+ "@typescript-eslint/typescript-estree" "5.36.1"
+ "@typescript-eslint/utils" "5.36.1"
debug "^4.3.4"
tsutils "^3.21.0"
@@ -8193,10 +8242,10 @@
resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.20.0.tgz#fa39c3c2aa786568302318f1cb51fcf64258c20c"
integrity sha512-+d8wprF9GyvPwtoB4CxBAR/s0rpP25XKgnOvMf/gMXYDvlUC3rPFHupdTQ/ow9vn7UDe5rX02ovGYQbv/IUCbg==
-"@typescript-eslint/types@5.34.0":
- version "5.34.0"
- resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.34.0.tgz#217bf08049e9e7b86694d982e88a2c1566330c78"
- integrity sha512-49fm3xbbUPuzBIOcy2CDpYWqy/X7VBkxVN+DC21e0zIm3+61Z0NZi6J9mqPmSW1BDVk9FIOvuCFyUPjXz93sjA==
+"@typescript-eslint/types@5.36.1":
+ version "5.36.1"
+ resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.36.1.tgz#1cf0e28aed1cb3ee676917966eb23c2f8334ce2c"
+ integrity sha512-jd93ShpsIk1KgBTx9E+hCSEuLCUFwi9V/urhjOWnOaksGZFbTOxAT47OH2d4NLJnLhkVD+wDbB48BuaycZPLBg==
"@typescript-eslint/types@5.9.0":
version "5.9.0"
@@ -8216,13 +8265,13 @@
semver "^7.3.5"
tsutils "^3.21.0"
-"@typescript-eslint/typescript-estree@5.34.0":
- version "5.34.0"
- resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.34.0.tgz#ba7b83f4bf8ccbabf074bbf1baca7a58de3ccb9a"
- integrity sha512-mXHAqapJJDVzxauEkfJI96j3D10sd567LlqroyCeJaHnu42sDbjxotGb3XFtGPYKPD9IyLjhsoULML1oI3M86A==
+"@typescript-eslint/typescript-estree@5.36.1":
+ version "5.36.1"
+ resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.36.1.tgz#b857f38d6200f7f3f4c65cd0a5afd5ae723f2adb"
+ integrity sha512-ih7V52zvHdiX6WcPjsOdmADhYMDN15SylWRZrT2OMy80wzKbc79n8wFW0xpWpU0x3VpBz/oDgTm2xwDAnFTl+g==
dependencies:
- "@typescript-eslint/types" "5.34.0"
- "@typescript-eslint/visitor-keys" "5.34.0"
+ "@typescript-eslint/types" "5.36.1"
+ "@typescript-eslint/visitor-keys" "5.36.1"
debug "^4.3.4"
globby "^11.1.0"
is-glob "^4.0.3"
@@ -8242,15 +8291,15 @@
semver "^7.3.5"
tsutils "^3.21.0"
-"@typescript-eslint/utils@5.34.0":
- version "5.34.0"
- resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.34.0.tgz#0cae98f48d8f9e292e5caa9343611b6faf49e743"
- integrity sha512-kWRYybU4Rn++7lm9yu8pbuydRyQsHRoBDIo11k7eqBWTldN4xUdVUMCsHBiE7aoEkFzrUEaZy3iH477vr4xHAQ==
+"@typescript-eslint/utils@5.36.1":
+ version "5.36.1"
+ resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.36.1.tgz#136d5208cc7a3314b11c646957f8f0b5c01e07ad"
+ integrity sha512-lNj4FtTiXm5c+u0pUehozaUWhh7UYKnwryku0nxJlYUEWetyG92uw2pr+2Iy4M/u0ONMKzfrx7AsGBTCzORmIg==
dependencies:
"@types/json-schema" "^7.0.9"
- "@typescript-eslint/scope-manager" "5.34.0"
- "@typescript-eslint/types" "5.34.0"
- "@typescript-eslint/typescript-estree" "5.34.0"
+ "@typescript-eslint/scope-manager" "5.36.1"
+ "@typescript-eslint/types" "5.36.1"
+ "@typescript-eslint/typescript-estree" "5.36.1"
eslint-scope "^5.1.1"
eslint-utils "^3.0.0"
@@ -8274,12 +8323,12 @@
"@typescript-eslint/types" "5.20.0"
eslint-visitor-keys "^3.0.0"
-"@typescript-eslint/visitor-keys@5.34.0":
- version "5.34.0"
- resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.34.0.tgz#d0fb3e31033e82ddd5de048371ad39eb342b2d40"
- integrity sha512-O1moYjOSrab0a2fUvFpsJe0QHtvTC+cR+ovYpgKrAVXzqQyc74mv76TgY6z+aEtjQE2vgZux3CQVtGryqdcOAw==
+"@typescript-eslint/visitor-keys@5.36.1":
+ version "5.36.1"
+ resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.36.1.tgz#7731175312d65738e501780f923896d200ad1615"
+ integrity sha512-ojB9aRyRFzVMN3b5joSYni6FAS10BBSCAfKJhjJAV08t/a95aM6tAhz+O1jF+EtgxktuSO3wJysp2R+Def/IWQ==
dependencies:
- "@typescript-eslint/types" "5.34.0"
+ "@typescript-eslint/types" "5.36.1"
eslint-visitor-keys "^3.3.0"
"@typescript-eslint/visitor-keys@5.9.0":
@@ -8290,10 +8339,10 @@
"@typescript-eslint/types" "5.9.0"
eslint-visitor-keys "^3.0.0"
-"@uiw/codemirror-extensions-basic-setup@4.11.5":
- version "4.11.5"
- resolved "https://registry.npmjs.org/@uiw/codemirror-extensions-basic-setup/-/codemirror-extensions-basic-setup-4.11.5.tgz#e66462bda16bb635948a6faa8ee354f5db22f0b5"
- integrity sha512-aHtdF1JEzHmBVuWXemr8OH7SQP/LbXXZdiOo/4tcxjFpyTuVGzPteBdfQU0xPOk0m+5Oc1LPqM+HaNPXNzX6aA==
+"@uiw/codemirror-extensions-basic-setup@4.11.6":
+ version "4.11.6"
+ resolved "https://registry.npmjs.org/@uiw/codemirror-extensions-basic-setup/-/codemirror-extensions-basic-setup-4.11.6.tgz#a1fd89ac39a16ba750fff5e73e219ff32624aed7"
+ integrity sha512-VW9tmkHvdD5u3osksBrDU/DQYNGcifK3qJPmmMKmje106pZTgIhvxABVhNCEJlDIrG5zYV5cqLtwb9TPbkd5qQ==
dependencies:
"@codemirror/autocomplete" "^6.0.0"
"@codemirror/commands" "^6.0.0"
@@ -8304,13 +8353,13 @@
"@codemirror/view" "^6.0.0"
"@uiw/react-codemirror@^4.9.3":
- version "4.11.5"
- resolved "https://registry.npmjs.org/@uiw/react-codemirror/-/react-codemirror-4.11.5.tgz#9efead5e0f9496bda6eeb1118b67687b3b82861a"
- integrity sha512-Bf8l3nVV4ekHbv4U0VrzUibl8+ucAY3UV0gk0xckbFnV1AlUxHcrYFiXSgy/rkyWBD7enHQENtM888B/3qBiwg==
+ version "4.11.6"
+ resolved "https://registry.npmjs.org/@uiw/react-codemirror/-/react-codemirror-4.11.6.tgz#99267c5128912e7daf01c3bdcda70c1a7a7a9c68"
+ integrity sha512-xPBOHtWE1MqHp8H/hTnOTxnz1ZQiQ2CHi1neiTpnjUxQUNv5mm5vTSgw2POxPh1AJqAVFuS6L1p3EZZPiVyehQ==
dependencies:
"@babel/runtime" "^7.18.6"
"@codemirror/theme-one-dark" "^6.0.0"
- "@uiw/codemirror-extensions-basic-setup" "4.11.5"
+ "@uiw/codemirror-extensions-basic-setup" "4.11.6"
codemirror "^6.0.0"
"@webassemblyjs/ast@1.11.1":
@@ -8434,7 +8483,7 @@
"@webassemblyjs/ast" "1.11.1"
"@xtuc/long" "4.2.2"
-"@whatwg-node/fetch@^0.2.3", "@whatwg-node/fetch@^0.2.4":
+"@whatwg-node/fetch@^0.2.4":
version "0.2.6"
resolved "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.2.6.tgz#eb8e68624c55aecfa4c6d7ea36b3ce3ad5d5f79e"
integrity sha512-NhHiqeGcKjgqUZvJTZSou9qsFEPBBG1LPm2Npz0cmcPvukhhQfjX+p3quRx6b9AyjNPp1f73VB1z4ApHy9FcNg==
@@ -8449,6 +8498,21 @@
undici "^5.8.0"
web-streams-polyfill "^3.2.0"
+"@whatwg-node/fetch@^0.3.0":
+ version "0.3.2"
+ resolved "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.3.2.tgz#da4323795c26c135563ba01d49dc16037bec4287"
+ integrity sha512-Bs5zAWQs0tXsLa4mRmLw7Psps1EN78vPtgcLpw3qPY8s6UYPUM67zFZ9cy+7tZ64PXhfwzxJn+m7RH2Lq48RNQ==
+ dependencies:
+ "@peculiar/webcrypto" "^1.4.0"
+ abort-controller "^3.0.0"
+ busboy "^1.6.0"
+ event-target-polyfill "^0.0.3"
+ form-data-encoder "^1.7.1"
+ formdata-node "^4.3.1"
+ node-fetch "^2.6.7"
+ undici "^5.8.0"
+ web-streams-polyfill "^3.2.0"
+
"@xmldom/xmldom@^0.7.0", "@xmldom/xmldom@^0.7.5":
version "0.7.5"
resolved "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.5.tgz#09fa51e356d07d0be200642b0e4f91d8e6dd408d"
@@ -8475,12 +8539,12 @@
integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==
"@yarnpkg/parsers@^3.0.0-rc.4":
- version "3.0.0-rc.14"
- resolved "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.14.tgz#3ce7fb8f9b7ecdda0531d382909c29140b11d723"
- integrity sha512-vLwjxSdmRNF/pPsubkmpkAgRHBbBylRDn13gv2fyTkHjeT2257NBNefjR7Dx5gSy8PM93VZitnmtWCnXEsSvkA==
+ version "3.0.0-rc.15"
+ resolved "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.15.tgz#6d7ae39c67e20b4947d27a6dff9a0e9bc7f078e0"
+ integrity sha512-eVqfw2v7tcMZbYTfuF4vAWga/zIAhMJIuWJyOb+opNmQh1mi81XKJIU6eC8D6Ue5WIkDGf05cuzB6rFwO1hf+g==
dependencies:
js-yaml "^3.10.0"
- tslib "^1.13.0"
+ tslib "^2.4.0"
"@zxing/text-encoding@0.9.0":
version "0.9.0"
@@ -8783,10 +8847,10 @@ apollo-reporting-protobuf@^3.3.2:
dependencies:
"@apollo/protobufjs" "1.2.4"
-apollo-server-core@^3.10.1:
- version "3.10.1"
- resolved "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.10.1.tgz#01f9ffc57c7d15c27bd7f89d65f45522aa3f3c3d"
- integrity sha512-UFFziv6h15QbKRZOA6wLyr1Sle9kns3JuQ5DEB7OYe5AIoOJNjZkWXX/tmLFUrSmlnDDryi6Sf5pDzpYmUC/UA==
+apollo-server-core@^3.10.2:
+ version "3.10.2"
+ resolved "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.10.2.tgz#04c5c3fc96b6c7d7f84fdc7356cf9830de4db561"
+ integrity sha512-/1o9KPoAMgcjJJ9Y0IH1665wf9d02L/m/mcfBOHiFmRgeGkNgrhTy59BxQTBK241USAWMhwMpp171cv/hM5Dng==
dependencies:
"@apollo/utils.keyvaluecache" "^1.0.1"
"@apollo/utils.logger" "^1.0.0"
@@ -8823,10 +8887,10 @@ apollo-server-errors@^3.3.1:
resolved "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-3.3.1.tgz#ba5c00cdaa33d4cbd09779f8cb6f47475d1cd655"
integrity sha512-xnZJ5QWs6FixHICXHxUfm+ZWqqxrNuPlQ+kj5m6RtEgIpekOPssH/SD9gf2B4HuWV0QozorrygwZnux8POvyPA==
-apollo-server-express@^3.0.0, apollo-server-express@^3.10.1:
- version "3.10.1"
- resolved "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-3.10.1.tgz#b0262d3c4919b554cff5872639bb13b694b5a217"
- integrity sha512-r0esst3YGNdlphYiOrflfBqJ15VAZAhYhWSFo2kPF4knsIGK5HUkeqwjMr+fFDBn4DEfYzC+I1+LnsF/hFN8VQ==
+apollo-server-express@^3.0.0, apollo-server-express@^3.10.2:
+ version "3.10.2"
+ resolved "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-3.10.2.tgz#df7cb81eab10d84db55297a2820cf3bd8814eb80"
+ integrity sha512-TUpnh23qAP3NqMp3/2TxcCpOxhvT64H6teOM5W+t5ncdHZ85aEMDrbfIhNwqkdsya+UyMn9IoBmn25h5TW93ZQ==
dependencies:
"@types/accepts" "^1.3.5"
"@types/body-parser" "1.19.2"
@@ -8834,7 +8898,7 @@ apollo-server-express@^3.0.0, apollo-server-express@^3.10.1:
"@types/express" "4.17.13"
"@types/express-serve-static-core" "4.17.30"
accepts "^1.3.5"
- apollo-server-core "^3.10.1"
+ apollo-server-core "^3.10.2"
apollo-server-types "^3.6.2"
body-parser "^1.19.0"
cors "^2.8.5"
@@ -8858,13 +8922,13 @@ apollo-server-types@^3.6.2:
apollo-server-env "^4.2.1"
apollo-server@^3.0.0:
- version "3.10.1"
- resolved "https://registry.npmjs.org/apollo-server/-/apollo-server-3.10.1.tgz#ed0c39d706a6a232885680c001df3b90c5cb0902"
- integrity sha512-2e7EN7Pw+vV7vP236zozuFVMLjeY6Q8lF1VzT+j32pZ2oYuTrDv+9lFjMjTBPK2yV5kzuOwJU4dWkWx5OKDEiQ==
+ version "3.10.2"
+ resolved "https://registry.npmjs.org/apollo-server/-/apollo-server-3.10.2.tgz#8d7859ba27f3d94c57a0a7065ae776f32dfc697a"
+ integrity sha512-iKYcbCGl32TxmV2YShiBbQqU8uJrwTopNi82KphKXcwgPyaZnMlNbVQOqiZSHVH4DtANAR4bB1cx8ORG+29NhQ==
dependencies:
"@types/express" "4.17.13"
- apollo-server-core "^3.10.1"
- apollo-server-express "^3.10.1"
+ apollo-server-core "^3.10.2"
+ apollo-server-express "^3.10.2"
express "^4.17.1"
aproba@^1.0.3:
@@ -9251,9 +9315,9 @@ aws-sdk-mock@^5.2.1:
traverse "^0.6.6"
aws-sdk@^2.1122.0, aws-sdk@^2.814.0, aws-sdk@^2.840.0, aws-sdk@^2.948.0:
- version "2.1200.0"
- resolved "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1200.0.tgz#79d14b342bed68ea07629bbc06f05f5959e4d491"
- integrity sha512-rS16H3j40ba2ZDFNxEdC5qzJ09gpQM0f71rYw47IAOlAycvOkCCAIL/6FqCPRWevmL5X/bkULvM+OG7s31oPrg==
+ version "2.1205.0"
+ resolved "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1205.0.tgz#606d9317c57c7ec18ab3f89a5c856185fc107fd1"
+ integrity sha512-L/ndK2cwWfj1peFO1cMtXeey7rMrbE3bksiQjaa96TZi9C70qMYqhrBy4XKok1AC84dcTsHrEOjFTFWr8rvmdg==
dependencies:
buffer "4.9.2"
events "1.1.1"
@@ -9610,11 +9674,6 @@ bfj@^7.0.2:
hoopy "^0.1.4"
tryer "^1.0.1"
-big-integer@^1.6.16:
- version "1.6.51"
- resolved "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686"
- integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==
-
big.js@^5.2.2:
version "5.2.2"
resolved "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
@@ -9807,20 +9866,6 @@ breakword@^1.0.5:
dependencies:
wcwidth "^1.0.1"
-broadcast-channel@^3.4.1:
- version "3.7.0"
- resolved "https://registry.npmjs.org/broadcast-channel/-/broadcast-channel-3.7.0.tgz#2dfa5c7b4289547ac3f6705f9c00af8723889937"
- integrity sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg==
- dependencies:
- "@babel/runtime" "^7.7.2"
- detect-node "^2.1.0"
- js-sha3 "0.8.0"
- microseconds "0.2.0"
- nano-time "1.0.0"
- oblivious-set "1.0.0"
- rimraf "3.0.2"
- unload "2.2.0"
-
brorand@^1.0.1, brorand@^1.1.0:
version "1.1.0"
resolved "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
@@ -10231,6 +10276,13 @@ caseless@~0.12.0:
resolved "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
+catharsis@^0.9.0:
+ version "0.9.0"
+ resolved "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz#40382a168be0e6da308c277d3a2b3eb40c7d2121"
+ integrity sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==
+ dependencies:
+ lodash "^4.17.15"
+
ccount@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/ccount/-/ccount-2.0.0.tgz#3d6fb55803832766a24c6f339abc507297eb5d25"
@@ -11209,9 +11261,9 @@ core-js@^2.4.0, core-js@^2.5.0, core-js@^2.6.10:
integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==
core-js@^3.4.1, core-js@^3.6.5:
- version "3.22.8"
- resolved "https://registry.npmjs.org/core-js/-/core-js-3.22.8.tgz#23f860b1fe60797cc4f704d76c93fea8a2f60631"
- integrity sha512-UoGQ/cfzGYIuiq6Z7vWL1HfkE9U9IZ4Ub+0XSiJTCzvbZzgPA69oDF2f+lgJ6dFFLEdjW5O6svvoKzXX23xFkA==
+ version "3.25.0"
+ resolved "https://registry.npmjs.org/core-js/-/core-js-3.25.0.tgz#be71d9e0dd648ffd70c44a7ec2319d039357eceb"
+ integrity sha512-CVU1xvJEfJGhyCpBrzzzU1kjCfgsGUxhEvwUV2e/cOedYWHdmluamx+knDnmhqALddMG16fZvIqvs9aijsHHaA==
core-util-is@1.0.2, core-util-is@~1.0.0:
version "1.0.2"
@@ -11233,6 +11285,11 @@ cosmiconfig-toml-loader@1.0.0:
dependencies:
"@iarna/toml" "^2.2.5"
+cosmiconfig-typescript-loader@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-3.1.1.tgz#9cdc2ae1a219cf52b0bc0647596c6691b9ab56a3"
+ integrity sha512-SR5/NciF0vyYqcGsmB9WJ4QOKkcSSSzcBPLrnT6094BYahMy0eImWvlH3zoEOYqpF2zgiyAKHtWTXTo+fqgxPg==
+
cosmiconfig@7.0.1, cosmiconfig@^7.0.0, cosmiconfig@^7.0.1:
version "7.0.1"
resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d"
@@ -11338,7 +11395,7 @@ cross-env@^7.0.0:
dependencies:
cross-spawn "^7.0.1"
-cross-fetch@3.1.5, cross-fetch@^3.0.4, cross-fetch@^3.0.6, cross-fetch@^3.1.3, cross-fetch@^3.1.5:
+cross-fetch@3.1.5, cross-fetch@^3.0.4, cross-fetch@^3.1.3, cross-fetch@^3.1.5:
version "3.1.5"
resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f"
integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==
@@ -12240,11 +12297,6 @@ detect-node@^2.0.4:
resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c"
integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==
-detect-node@^2.1.0:
- version "2.1.0"
- resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1"
- integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==
-
detect-port-alt@^1.1.6:
version "1.1.6"
resolved "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275"
@@ -12683,10 +12735,10 @@ engine.io@~3.5.0:
engine.io-parser "~2.2.0"
ws "~7.4.2"
-enhanced-resolve@^5.9.2:
- version "5.9.3"
- resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz#44a342c012cbc473254af5cc6ae20ebd0aae5d88"
- integrity sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==
+enhanced-resolve@^5.10.0:
+ version "5.10.0"
+ resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz#0dc579c3bb2a1032e357ac45b8f3a6f3ad4fb1e6"
+ integrity sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==
dependencies:
graceful-fs "^4.2.4"
tapable "^2.2.0"
@@ -13002,6 +13054,18 @@ escape-string-regexp@^5.0.0:
resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8"
integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==
+escodegen@^1.13.0:
+ version "1.14.3"
+ resolved "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503"
+ integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==
+ dependencies:
+ esprima "^4.0.1"
+ estraverse "^4.2.0"
+ esutils "^2.0.2"
+ optionator "^0.8.1"
+ optionalDependencies:
+ source-map "~0.6.1"
+
escodegen@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd"
@@ -13081,10 +13145,10 @@ eslint-plugin-import@^2.25.4:
resolve "^1.22.0"
tsconfig-paths "^3.14.1"
-eslint-plugin-jest@^26.1.2:
- version "26.8.7"
- resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-26.8.7.tgz#f38f067d0a69483d64578eb43508ca7b29c8a4b7"
- integrity sha512-nJJVv3VY6ZZvJGDMC8h1jN/TIGT4We1JkNn1lvstPURicr/eZPVnlFULQ4W2qL9ByCuCr1hPmlBOc2aZ1ktw4Q==
+eslint-plugin-jest@^27.0.0:
+ version "27.0.1"
+ resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.0.1.tgz#3e67ee2051411540988c62075e8788702a1064da"
+ integrity sha512-LosUsrkwVSs/8Z/I8Hqn5vWgTEsHrfIquDEKOsV8/cl+gbFR4tiRCE1AimEotsHjSC0Rx1tYm6vPhw8C3ktmmg==
dependencies:
"@typescript-eslint/utils" "^5.10.0"
@@ -13135,9 +13199,9 @@ eslint-plugin-react-hooks@^4.3.0:
integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==
eslint-plugin-react@^7.28.0:
- version "7.30.1"
- resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.30.1.tgz#2be4ab23ce09b5949c6631413ba64b2810fd3e22"
- integrity sha512-NbEvI9jtqO46yJA3wcRF9Mo0lF9T/jhdHqhCHXiXtD+Zcb98812wvokjWpU7Q4QH5edo6dmqrukxVvWWXHlsUg==
+ version "7.31.1"
+ resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.1.tgz#d29793ed27743f3ed8a473c347b1bf5a0a8fb9af"
+ integrity sha512-j4/2xWqt/R7AZzG8CakGHA6Xa/u7iR8Q3xCxY+AUghdT92bnIDOBEefV456OeH0QvBcroVc0eyvrrLSyQGYIfg==
dependencies:
array-includes "^3.1.5"
array.prototype.flatmap "^1.3.0"
@@ -13199,13 +13263,14 @@ eslint-webpack-plugin@^3.1.1:
schema-utils "^4.0.0"
eslint@^8.6.0:
- version "8.22.0"
- resolved "https://registry.npmjs.org/eslint/-/eslint-8.22.0.tgz#78fcb044196dfa7eef30a9d65944f6f980402c48"
- integrity sha512-ci4t0sz6vSRKdmkOGmprBo6fmI4PrphDFMy5JEq/fNS0gQkJM3rLmrqcp8ipMcdobH3KtUP40KniAE9W19S4wA==
+ version "8.23.0"
+ resolved "https://registry.npmjs.org/eslint/-/eslint-8.23.0.tgz#a184918d288820179c6041bb3ddcc99ce6eea040"
+ integrity sha512-pBG/XOn0MsJcKcTRLr27S5HpzQo4kLr+HjLQIyK4EiCsijDl/TB+h5uEuJU6bQ8Edvwz1XWOjpaP2qgnXGpTcA==
dependencies:
- "@eslint/eslintrc" "^1.3.0"
+ "@eslint/eslintrc" "^1.3.1"
"@humanwhocodes/config-array" "^0.10.4"
"@humanwhocodes/gitignore-to-minimatch" "^1.0.2"
+ "@humanwhocodes/module-importer" "^1.0.1"
ajv "^6.10.0"
chalk "^4.0.0"
cross-spawn "^7.0.2"
@@ -13215,7 +13280,7 @@ eslint@^8.6.0:
eslint-scope "^7.1.1"
eslint-utils "^3.0.0"
eslint-visitor-keys "^3.3.0"
- espree "^9.3.3"
+ espree "^9.4.0"
esquery "^1.4.0"
esutils "^2.0.2"
fast-deep-equal "^3.1.3"
@@ -13241,26 +13306,16 @@ eslint@^8.6.0:
strip-ansi "^6.0.1"
strip-json-comments "^3.1.0"
text-table "^0.2.0"
- v8-compile-cache "^2.0.3"
esm@^3.2.25:
version "3.2.25"
resolved "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10"
integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==
-espree@^9.3.2:
- version "9.3.2"
- resolved "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz#f58f77bd334731182801ced3380a8cc859091596"
- integrity sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==
- dependencies:
- acorn "^8.7.1"
- acorn-jsx "^5.3.2"
- eslint-visitor-keys "^3.3.0"
-
-espree@^9.3.3:
- version "9.3.3"
- resolved "https://registry.npmjs.org/espree/-/espree-9.3.3.tgz#2dd37c4162bb05f433ad3c1a52ddf8a49dc08e9d"
- integrity sha512-ORs1Rt/uQTqUKjDdGCyrtYxbazf5umATSf/K4qxjmZHORR6HJk+2s/2Pqe+Kk49HHINC/xNIrGfgh8sZcll0ng==
+espree@^9.0.0, espree@^9.4.0:
+ version "9.4.0"
+ resolved "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz#cd4bc3d6e9336c433265fc0aa016fc1aaf182f8a"
+ integrity sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==
dependencies:
acorn "^8.8.0"
acorn-jsx "^5.3.2"
@@ -13285,7 +13340,7 @@ esrecurse@^4.3.0:
dependencies:
estraverse "^5.2.0"
-estraverse@^4.1.1:
+estraverse@^4.1.1, estraverse@^4.2.0:
version "4.3.0"
resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
@@ -13382,61 +13437,61 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
safe-buffer "^5.1.1"
"example-app@link:packages/app":
- version "0.2.75-next.0"
+ version "0.2.75-next.1"
dependencies:
- "@backstage/app-defaults" "^1.0.6-next.0"
+ "@backstage/app-defaults" "^1.0.6-next.1"
"@backstage/catalog-model" "^1.1.0"
- "@backstage/cli" "^0.18.2-next.0"
+ "@backstage/cli" "^0.19.0-next.1"
"@backstage/config" "^1.0.1"
- "@backstage/core-app-api" "^1.0.6-next.0"
- "@backstage/core-components" "^0.11.1-next.0"
- "@backstage/core-plugin-api" "^1.0.6-next.0"
+ "@backstage/core-app-api" "^1.1.0-next.1"
+ "@backstage/core-components" "^0.11.1-next.1"
+ "@backstage/core-plugin-api" "^1.0.6-next.1"
"@backstage/integration-react" "^1.1.4-next.0"
- "@backstage/plugin-airbrake" "^0.3.9-next.0"
- "@backstage/plugin-apache-airflow" "^0.2.2-next.0"
- "@backstage/plugin-api-docs" "^0.8.9-next.0"
- "@backstage/plugin-azure-devops" "^0.2.0-next.0"
- "@backstage/plugin-badges" "^0.2.33-next.0"
+ "@backstage/plugin-airbrake" "^0.3.9-next.1"
+ "@backstage/plugin-apache-airflow" "^0.2.2-next.1"
+ "@backstage/plugin-api-docs" "^0.8.9-next.1"
+ "@backstage/plugin-azure-devops" "^0.2.0-next.1"
+ "@backstage/plugin-badges" "^0.2.33-next.1"
"@backstage/plugin-catalog-common" "^1.0.6-next.0"
- "@backstage/plugin-catalog-graph" "^0.2.21-next.0"
- "@backstage/plugin-catalog-import" "^0.8.12-next.0"
- "@backstage/plugin-catalog-react" "^1.1.4-next.0"
- "@backstage/plugin-circleci" "^0.3.9-next.0"
- "@backstage/plugin-cloudbuild" "^0.3.9-next.0"
- "@backstage/plugin-code-coverage" "^0.2.2-next.0"
- "@backstage/plugin-cost-insights" "^0.11.31-next.0"
- "@backstage/plugin-dynatrace" "^0.2.0-next.0"
- "@backstage/plugin-explore" "^0.3.40-next.0"
- "@backstage/plugin-gcalendar" "^0.3.5-next.0"
- "@backstage/plugin-gcp-projects" "^0.3.28-next.0"
- "@backstage/plugin-github-actions" "^0.5.9-next.0"
+ "@backstage/plugin-catalog-graph" "^0.2.21-next.1"
+ "@backstage/plugin-catalog-import" "^0.8.12-next.1"
+ "@backstage/plugin-catalog-react" "^1.1.4-next.1"
+ "@backstage/plugin-circleci" "^0.3.9-next.1"
+ "@backstage/plugin-cloudbuild" "^0.3.9-next.1"
+ "@backstage/plugin-code-coverage" "^0.2.2-next.1"
+ "@backstage/plugin-cost-insights" "^0.11.31-next.1"
+ "@backstage/plugin-dynatrace" "^0.2.0-next.1"
+ "@backstage/plugin-explore" "^0.3.40-next.1"
+ "@backstage/plugin-gcalendar" "^0.3.5-next.1"
+ "@backstage/plugin-gcp-projects" "^0.3.28-next.1"
+ "@backstage/plugin-github-actions" "^0.5.9-next.1"
"@backstage/plugin-gocd" "^0.1.15-next.0"
- "@backstage/plugin-graphiql" "^0.2.41-next.0"
- "@backstage/plugin-home" "^0.4.25-next.0"
- "@backstage/plugin-jenkins" "^0.7.8-next.0"
- "@backstage/plugin-kafka" "^0.3.9-next.0"
- "@backstage/plugin-kubernetes" "^0.7.2-next.0"
- "@backstage/plugin-lighthouse" "^0.3.9-next.0"
- "@backstage/plugin-newrelic" "^0.3.27-next.0"
- "@backstage/plugin-newrelic-dashboard" "^0.2.2-next.0"
- "@backstage/plugin-org" "^0.5.9-next.0"
- "@backstage/plugin-pagerduty" "0.5.2-next.0"
- "@backstage/plugin-permission-react" "^0.4.5-next.0"
- "@backstage/plugin-rollbar" "^0.4.9-next.0"
- "@backstage/plugin-scaffolder" "^1.6.0-next.0"
- "@backstage/plugin-search" "^1.0.2-next.0"
+ "@backstage/plugin-graphiql" "^0.2.41-next.1"
+ "@backstage/plugin-home" "^0.4.25-next.1"
+ "@backstage/plugin-jenkins" "^0.7.8-next.1"
+ "@backstage/plugin-kafka" "^0.3.9-next.1"
+ "@backstage/plugin-kubernetes" "^0.7.2-next.1"
+ "@backstage/plugin-lighthouse" "^0.3.9-next.1"
+ "@backstage/plugin-newrelic" "^0.3.27-next.1"
+ "@backstage/plugin-newrelic-dashboard" "^0.2.2-next.1"
+ "@backstage/plugin-org" "^0.5.9-next.1"
+ "@backstage/plugin-pagerduty" "0.5.2-next.1"
+ "@backstage/plugin-permission-react" "^0.4.5-next.1"
+ "@backstage/plugin-rollbar" "^0.4.9-next.1"
+ "@backstage/plugin-scaffolder" "^1.6.0-next.1"
+ "@backstage/plugin-search" "^1.0.2-next.1"
"@backstage/plugin-search-common" "^1.0.1-next.0"
- "@backstage/plugin-search-react" "^1.0.2-next.0"
- "@backstage/plugin-sentry" "^0.4.2-next.0"
- "@backstage/plugin-shortcuts" "^0.3.1-next.0"
- "@backstage/plugin-stack-overflow" "^0.1.5-next.0"
- "@backstage/plugin-tech-insights" "^0.2.5-next.0"
- "@backstage/plugin-tech-radar" "^0.5.16-next.0"
- "@backstage/plugin-techdocs" "^1.3.2-next.0"
+ "@backstage/plugin-search-react" "^1.0.2-next.1"
+ "@backstage/plugin-sentry" "^0.4.2-next.1"
+ "@backstage/plugin-shortcuts" "^0.3.1-next.1"
+ "@backstage/plugin-stack-overflow" "^0.1.5-next.1"
+ "@backstage/plugin-tech-insights" "^0.3.0-next.1"
+ "@backstage/plugin-tech-radar" "^0.5.16-next.1"
+ "@backstage/plugin-techdocs" "^1.3.2-next.1"
"@backstage/plugin-techdocs-module-addons-contrib" "^1.0.4-next.0"
- "@backstage/plugin-techdocs-react" "^1.0.4-next.0"
- "@backstage/plugin-todo" "^0.2.11-next.0"
- "@backstage/plugin-user-settings" "^0.4.8-next.0"
+ "@backstage/plugin-techdocs-react" "^1.0.4-next.1"
+ "@backstage/plugin-todo" "^0.2.11-next.1"
+ "@backstage/plugin-user-settings" "^0.4.8-next.1"
"@backstage/theme" "^0.2.16"
"@internal/plugin-catalog-customized" "0.0.2-next.0"
"@material-ui/core" "^4.12.2"
@@ -13451,8 +13506,8 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
prop-types "^15.7.2"
react "^17.0.2"
react-dom "^17.0.2"
- react-router "6.0.0-beta.0"
- react-router-dom "6.0.0-beta.0"
+ react-router "^6.3.0"
+ react-router-dom "^6.3.0"
react-use "^17.2.4"
zen-observable "^0.8.15"
@@ -14375,17 +14430,6 @@ gauge@~2.7.3:
strip-ansi "^3.0.1"
wide-align "^1.1.0"
-gaxios@^4.0.0:
- version "4.0.1"
- resolved "https://registry.npmjs.org/gaxios/-/gaxios-4.0.1.tgz#bc7b205a89d883452822cc75e138620c35e3291e"
- integrity sha512-jOin8xRZ/UytQeBpSXFqIzqU7Fi5TqgPNLlUsSB8kjJ76+FiGBfImF8KJu++c6J4jOldfJUtt0YmkRj2ZpSHTQ==
- dependencies:
- abort-controller "^3.0.0"
- extend "^3.0.2"
- https-proxy-agent "^5.0.0"
- is-stream "^2.0.0"
- node-fetch "^2.3.0"
-
gaxios@^5.0.0:
version "5.0.0"
resolved "https://registry.npmjs.org/gaxios/-/gaxios-5.0.0.tgz#df11e5d0a45831dd39eb5fbbba0d6a6b09815e70"
@@ -14397,6 +14441,16 @@ gaxios@^5.0.0:
is-stream "^2.0.0"
node-fetch "^2.6.7"
+gaxios@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.npmjs.org/gaxios/-/gaxios-5.0.1.tgz#50fc76a2d04bc1700ed8c3ff1561e52255dfc6e0"
+ integrity sha512-keK47BGKHyyOVQxgcUaSaFvr3ehZYAlvhvpHXy0YB2itzZef+GqZR8TBsfVRWghdwlKrYsn+8L8i3eblF7Oviw==
+ dependencies:
+ extend "^3.0.2"
+ https-proxy-agent "^5.0.0"
+ is-stream "^2.0.0"
+ node-fetch "^2.6.7"
+
gcp-metadata@^5.0.0:
version "5.0.0"
resolved "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.0.0.tgz#a00f999f60a4461401e7c515f8a3267cfb401ee7"
@@ -14640,6 +14694,17 @@ glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, gl
once "^1.3.0"
path-is-absolute "^1.0.0"
+glob@^8.0.0:
+ version "8.0.3"
+ resolved "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e"
+ integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^5.0.1"
+ once "^1.3.0"
+
glob@^8.0.1:
version "8.0.1"
resolved "https://registry.npmjs.org/glob/-/glob-8.0.1.tgz#00308f5c035aa0b2a447cd37ead267ddff1577d3"
@@ -14739,9 +14804,9 @@ globby@^7.1.1:
slash "^1.0.0"
google-auth-library@^8.0.0, google-auth-library@^8.0.1, google-auth-library@^8.0.2:
- version "8.3.0"
- resolved "https://registry.npmjs.org/google-auth-library/-/google-auth-library-8.3.0.tgz#9286a613ee089f1d1728c07b9a302a22acf2dc2a"
- integrity sha512-rXasaUScggvyD5ELpQC7SIOUOdqyOIifCK9TRDOLFEcuw1JxuyewKAwDs2QiKzMf8uLa0L360W0bVlV+sJDc8g==
+ version "8.4.0"
+ resolved "https://registry.npmjs.org/google-auth-library/-/google-auth-library-8.4.0.tgz#3a5414344bb313ee64ceeef1f7e5162cc1fdf04b"
+ integrity sha512-cg/usxyQEmq4PPDBQRt+kGIrfL3k+mOrAoS9Xv1hitQL66AoY7iWvRBcYo3Rb0w4V1t9e/GqW2/D4honlAtMDg==
dependencies:
arrify "^2.0.0"
base64-js "^1.3.0"
@@ -14749,7 +14814,7 @@ google-auth-library@^8.0.0, google-auth-library@^8.0.1, google-auth-library@^8.0
fast-text-encoding "^1.0.0"
gaxios "^5.0.0"
gcp-metadata "^5.0.0"
- gtoken "^6.0.0"
+ gtoken "^6.1.0"
jws "^4.0.0"
lru-cache "^6.0.0"
@@ -14772,6 +14837,26 @@ google-gax@^3.0.1:
protobufjs "6.11.3"
retry-request "^5.0.0"
+google-gax@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.npmjs.org/google-gax/-/google-gax-3.3.0.tgz#114d93ff3c0fb7006b3509614d2182157e7bbaea"
+ integrity sha512-rLjcMzyikqL3524yFTNC0HJ/s86nUSGgrR3zo189DIaG0N4NhO6IGXic7cYhR2R/X7HqLiZzzBIdW/wdNwEtyA==
+ dependencies:
+ "@grpc/grpc-js" "~1.6.0"
+ "@grpc/proto-loader" "^0.7.0"
+ "@types/long" "^4.0.0"
+ abort-controller "^3.0.0"
+ duplexify "^4.0.0"
+ fast-text-encoding "^1.0.3"
+ google-auth-library "^8.0.2"
+ is-stream-ended "^0.1.4"
+ node-fetch "^2.6.7"
+ object-hash "^3.0.0"
+ proto3-json-serializer "^1.0.0"
+ protobufjs "7.0.0"
+ protobufjs-cli "1.0.0"
+ retry-request "^5.0.0"
+
google-p12-pem@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-4.0.0.tgz#f46581add1dc6ea0b96160cda6ce37ee35ab8ca3"
@@ -14806,7 +14891,7 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.2.4, graceful-fs@^4.2.6
resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96"
integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==
-graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.2.0:
+graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0:
version "4.2.10"
resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c"
integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
@@ -14834,12 +14919,11 @@ graphlib@^2.1.8:
dependencies:
lodash "^4.17.15"
-graphql-config@^4.3.1:
- version "4.3.1"
- resolved "https://registry.npmjs.org/graphql-config/-/graphql-config-4.3.1.tgz#636b539b1acc06fb48012d0e0f228014ccb0325f"
- integrity sha512-czBWzJSGaLJfOHBLuUTZVRTjfgohPfvlaeN1B5nXBVptFARpiFuS7iI4FnRhCGwm6qt1h2j1g05nkg0OIGA6bg==
+graphql-config@^4.3.4:
+ version "4.3.4"
+ resolved "https://registry.npmjs.org/graphql-config/-/graphql-config-4.3.4.tgz#6d2df477bb83bf05b800fe4d80214e2ccae0cd11"
+ integrity sha512-TAUEs+NOrECotpQM89bDyg2laTCDtGjH7zv6CAdLG0l8NhybqChVQszvSpHIKJJbJdmrLkYbLmyA1WdxDaz3wA==
dependencies:
- "@endemolshinegroup/cosmiconfig-typescript-loader" "3.0.2"
"@graphql-tools/graphql-file-loader" "^7.3.7"
"@graphql-tools/json-file-loader" "^7.3.7"
"@graphql-tools/load" "^7.5.5"
@@ -14848,8 +14932,11 @@ graphql-config@^4.3.1:
"@graphql-tools/utils" "^8.6.5"
cosmiconfig "7.0.1"
cosmiconfig-toml-loader "1.0.0"
+ cosmiconfig-typescript-loader "^3.1.0"
minimatch "4.2.1"
string-env-interpolation "1.0.1"
+ ts-node "^10.8.1"
+ tslib "^2.4.0"
graphql-executor@0.0.23:
version "0.0.23"
@@ -14949,12 +15036,12 @@ gson-query@^5.1.0:
gson-conform "^1.0.3"
gson-pointer "4.1.1"
-gtoken@^6.0.0:
- version "6.0.1"
- resolved "https://registry.npmjs.org/gtoken/-/gtoken-6.0.1.tgz#1276371d51e93c4eface76e3f30f9e8f1cad3f1a"
- integrity sha512-J0vebk6u6i4rLTM0lQq25SdusCLMvujYNZeAouyPvSbGlcjw7P8L3W9INIFnlXUx+AUD7TDoM1mgdhzH+XX7DQ==
+gtoken@^6.1.0:
+ version "6.1.1"
+ resolved "https://registry.npmjs.org/gtoken/-/gtoken-6.1.1.tgz#29ebf3e6893719176d180f5694f1cad525ce3c04"
+ integrity sha512-HPM4VzzPEGxjQ7T2xLrdSYBs+h1c0yHAUiN+8RHPDoiZbndlpg9Sx3SjWcrTt9+N3FHsSABEpjvdQVan5AAuZQ==
dependencies:
- gaxios "^4.0.0"
+ gaxios "^5.0.1"
google-p12-pem "^4.0.0"
jws "^4.0.0"
@@ -15154,10 +15241,10 @@ headers-polyfill@^3.0.4:
resolved "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-3.0.7.tgz#725c4f591e6748f46b036197eae102c92b959ff4"
integrity sha512-JoLCAdCEab58+2/yEmSnOlficyHFpIl0XJqwu3l+Unkm1gXpFUYsThz6Yha3D6tNhocWkCPfyW0YVIGWFqTi7w==
-helmet@^5.0.2:
- version "5.1.1"
- resolved "https://registry.npmjs.org/helmet/-/helmet-5.1.1.tgz#609823c5c2e78aea62dd9afc8f544ca409da5e85"
- integrity sha512-/yX0oVZBggA9cLJh8aw3PPCfedBnbd7J2aowjzsaWwZh7/UFY0nccn/aHAggIgWUFfnykX8GKd3a1pSbrmlcVQ==
+helmet@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.npmjs.org/helmet/-/helmet-6.0.0.tgz#8e183820ddccd7729a206ad73c577b264f495595"
+ integrity sha512-FO9RpR1wNJepH/GbLPQVtkE2eESglXL641p7SdyoT4LngHFJcZheHMoyUcjCZF4qpuMMO1u5q6RK0l9Ux8JBcg==
hexoid@1.0.0:
version "1.0.0"
@@ -15442,9 +15529,9 @@ human-signals@^3.0.1:
integrity sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==
humanize-duration@^3.25.1, humanize-duration@^3.26.0, humanize-duration@^3.27.0, humanize-duration@^3.27.1:
- version "3.27.2"
- resolved "https://registry.npmjs.org/humanize-duration/-/humanize-duration-3.27.2.tgz#4b4e565bec098d22c9a54344e16156d1c649f160"
- integrity sha512-A15OmA3FLFRnehvF4ZMocsxTZYvHq4ze7L+AgR1DeHw0xC9vMd4euInY83uqGU9/XXKNnVIEeKc1R8G8nKqtzg==
+ version "3.27.3"
+ resolved "https://registry.npmjs.org/humanize-duration/-/humanize-duration-3.27.3.tgz#db654e72ebf5ccfe232c7f56bc58aa3a6fe4df88"
+ integrity sha512-iimHkHPfIAQ8zCDQLgn08pRqSVioyWvnGfaQ8gond2wf7Jq2jJ+24ykmnRyiz3fIldcn4oUuQXpjqKLhSVR7lw==
humanize-ms@^1.2.1:
version "1.2.1"
@@ -16485,9 +16572,9 @@ isomorphic-form-data@^2.0.0:
form-data "^2.3.2"
isomorphic-git@^1.8.0:
- version "1.19.2"
- resolved "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.19.2.tgz#e8f57443c63a58054f65f42e5cb189a2df31bd0d"
- integrity sha512-14Tbf3GRFNoXw+fy6ssK7gpDZQxF+NytHmg7p+5L38IAVUafHnfjzJ0ZnEmLz3SAG20wYYyB+HufkRAFRttYxQ==
+ version "1.19.3"
+ resolved "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.19.3.tgz#a59c03bc56e1f7c6dc59ebfe71c465f8e8e4bf17"
+ integrity sha512-s48mkkojyH98CpnXXN78vOV21Gl5s/6xVnwxZhP1TiXRkJsoi1kCqzNxFxyID9gQ0WFAPw0pNHRxqyb4DtJUfg==
dependencies:
async-lock "^1.1.0"
clean-git-ref "^2.0.1"
@@ -16583,12 +16670,12 @@ jake@^10.8.5:
filelist "^1.0.1"
minimatch "^3.0.4"
-jenkins@^0.28.1:
- version "0.28.1"
- resolved "https://registry.npmjs.org/jenkins/-/jenkins-0.28.1.tgz#f7951798ee5d2bb501a831979b6b5ecc1a922a64"
- integrity sha512-gcC4QUrP4VzdqOMHoVzh36XlJprxJkI2HGLQSY7w84KoCTVNDcR/8O00tYyXp9vrZOx4wl5zCXLVKMgH2IoyJQ==
+jenkins@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/jenkins/-/jenkins-1.0.1.tgz#cf782afd5bf756036aea63bdcbcc89f6e4674c5a"
+ integrity sha512-AIcd38CBzro7fnjqUhuBlDXwIR/C1dhRNVz5pzKsHyEEGUk3zwHw1v5vouBap/y6FkNMxAMB7nwiesidOGXnqw==
dependencies:
- papi "^0.29.0"
+ papi "^1.1.0"
jest-changed-files@^27.5.1:
version "27.5.1"
@@ -17121,11 +17208,6 @@ js-levenshtein@^1.1.6:
resolved "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d"
integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==
-js-sha3@0.8.0:
- version "0.8.0"
- resolved "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840"
- integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==
-
"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
@@ -17154,6 +17236,13 @@ js-yaml@~3.13.1:
argparse "^1.0.7"
esprima "^4.0.0"
+js2xmlparser@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz#2a1fdf01e90585ef2ae872a01bc169c6a8d5e60a"
+ integrity sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==
+ dependencies:
+ xmlcreate "^2.0.4"
+
jsbn@~0.1.0:
version "0.1.1"
resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
@@ -17197,6 +17286,27 @@ jscodeshift@^0.13.0:
temp "^0.8.4"
write-file-atomic "^2.3.0"
+jsdoc@^3.6.3:
+ version "3.6.11"
+ resolved "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.11.tgz#8bbb5747e6f579f141a5238cbad4e95e004458ce"
+ integrity sha512-8UCU0TYeIYD9KeLzEcAu2q8N/mx9O3phAGl32nmHlE0LpaJL71mMkP4d+QE5zWfNt50qheHtOZ0qoxVrsX5TUg==
+ dependencies:
+ "@babel/parser" "^7.9.4"
+ "@types/markdown-it" "^12.2.3"
+ bluebird "^3.7.2"
+ catharsis "^0.9.0"
+ escape-string-regexp "^2.0.0"
+ js2xmlparser "^4.0.2"
+ klaw "^3.0.0"
+ markdown-it "^12.3.2"
+ markdown-it-anchor "^8.4.1"
+ marked "^4.0.10"
+ mkdirp "^1.0.4"
+ requizzle "^0.2.3"
+ strip-json-comments "^3.1.0"
+ taffydb "2.6.2"
+ underscore "~1.13.2"
+
jsdom@^16.5.2, jsdom@^16.6.0:
version "16.7.0"
resolved "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710"
@@ -17252,7 +17362,7 @@ json-buffer@3.0.1, json-buffer@^3.0.1, json-buffer@~3.0.1:
resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13"
integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==
-json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2:
+json-parse-better-errors@^1.0.1:
version "1.0.2"
resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
@@ -17669,6 +17779,13 @@ kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3:
resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
+klaw@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz#b11bec9cf2492f06756d6e809ab73a2910259146"
+ integrity sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==
+ dependencies:
+ graceful-fs "^4.1.9"
+
kleur@^3.0.3:
version "3.0.3"
resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
@@ -18091,7 +18208,7 @@ lodash.flattendeep@^4.0.0:
resolved "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2"
integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=
-lodash.get@^4, lodash.get@^4.4.2:
+lodash.get@^4.4.2:
version "4.4.2"
resolved "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=
@@ -18236,7 +18353,7 @@ lodash.uniq@^4.5.0:
resolved "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
-lodash@4.17.21, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.7.0, lodash@~4.17.0, lodash@~4.17.15, lodash@~4.17.4:
+lodash@4.17.21, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.7.0, lodash@~4.17.0, lodash@~4.17.15, lodash@~4.17.4:
version "4.17.21"
resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
@@ -18410,7 +18527,7 @@ make-dir@^3.0.0, make-dir@^3.1.0:
dependencies:
semver "^6.0.0"
-make-error@^1, make-error@^1.1.1:
+make-error@^1.1.1:
version "1.3.6"
resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
@@ -18536,7 +18653,12 @@ map-visit@^1.0.0:
dependencies:
object-visit "^1.0.0"
-markdown-it@^12.2.0:
+markdown-it-anchor@^8.4.1:
+ version "8.6.4"
+ resolved "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.4.tgz#affb8aa0910a504c114e9fcad53ac3a5b907b0e6"
+ integrity sha512-Ul4YVYZNxMJYALpKtu+ZRdrryYt/GlQ5CK+4l1bp/gWXOG2QWElt6AqF3Mih/wfUKdZbNAZVXGR73/n6U/8img==
+
+markdown-it@^12.2.0, markdown-it@^12.3.2:
version "12.3.2"
resolved "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz#bf92ac92283fe983fe4de8ff8abfb5ad72cd0c90"
integrity sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==
@@ -18552,19 +18674,11 @@ markdown-table@^3.0.0:
resolved "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.1.tgz#88c48957aaf2a8014ccb2ba026776a1d736fe3dc"
integrity sha512-CBbaYXKSGnE1uLRpKA1SWgIRb2PQrpkllNWpZtZe6VojOJ4ysqiq7/2glYcmKsOYN09QgH/HEBX5hIshAeiK6A==
-marked@^4.0.14:
+marked@^4.0.10, marked@^4.0.14:
version "4.0.19"
resolved "https://registry.npmjs.org/marked/-/marked-4.0.19.tgz#d36198d1ac1255525153c351c68c75bc1d7aee46"
integrity sha512-rgQF/OxOiLcvgUAj1Q1tAf4Bgxn5h5JZTp04Fx4XUkVhs7B+7YA9JEWJhJpoO8eJt8MkZMwqLCNeNqj1bCREZQ==
-match-sorter@^6.0.2:
- version "6.3.1"
- resolved "https://registry.npmjs.org/match-sorter/-/match-sorter-6.3.1.tgz#98cc37fda756093424ddf3cbc62bfe9c75b92bda"
- integrity sha512-mxybbo3pPNuA+ZuCUhm5bwNkXrJTbsk5VWbR5wiwz/GC6LIiegBGn2w3O08UG/jdbYLinw51fSQ5xNU1U3MgBw==
- dependencies:
- "@babel/runtime" "^7.12.5"
- remove-accents "0.4.2"
-
matcher@^3.0.0:
version "3.0.0"
resolved "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz#bd9060f4c5b70aa8041ccc6f80368760994f30ca"
@@ -19152,11 +19266,6 @@ micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5:
braces "^3.0.2"
picomatch "^2.3.1"
-microseconds@0.2.0:
- version "0.2.0"
- resolved "https://registry.npmjs.org/microseconds/-/microseconds-0.2.0.tgz#233b25f50c62a65d861f978a4a4f8ec18797dc39"
- integrity sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA==
-
miller-rabin@^4.0.0:
version "4.0.1"
resolved "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d"
@@ -19365,6 +19474,13 @@ minipass-sized@^1.0.3:
dependencies:
minipass "^3.0.0"
+minipass@*:
+ version "3.3.4"
+ resolved "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz#ca99f95dd77c43c7a76bf51e6d200025eee0ffae"
+ integrity sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==
+ dependencies:
+ yallist "^4.0.0"
+
minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3, minipass@^3.1.6:
version "3.1.6"
resolved "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz#3b8150aa688a711a1521af5e8779c1d3bb4f45ee"
@@ -19610,13 +19726,6 @@ nano-css@^5.3.1:
stacktrace-js "^2.0.2"
stylis "^4.0.6"
-nano-time@1.0.0:
- version "1.0.0"
- resolved "https://registry.npmjs.org/nano-time/-/nano-time-1.0.0.tgz#b0554f69ad89e22d0907f7a12b0993a5d96137ef"
- integrity sha1-sFVPaa2J4i0JB/ehKwmTpdlhN+8=
- dependencies:
- big-integer "^1.6.16"
-
nanoclone@^0.2.1:
version "0.2.1"
resolved "https://registry.npmjs.org/nanoclone/-/nanoclone-0.2.1.tgz#dd4090f8f1a110d26bb32c49ed2f5b9235209ed4"
@@ -19730,7 +19839,7 @@ node-domexception@1.0.0:
resolved "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5"
integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==
-node-fetch@2.6.7, node-fetch@^2.3.0, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.5, node-fetch@^2.6.7:
+node-fetch@2.6.7, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.5, node-fetch@^2.6.7:
version "2.6.7"
resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad"
integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==
@@ -19889,13 +19998,20 @@ normalize-url@^6.0.1, normalize-url@^6.1.0:
resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a"
integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==
-npm-bundled@^1.1.1, npm-bundled@^1.1.2:
+npm-bundled@^1.1.1:
version "1.1.2"
resolved "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1"
integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==
dependencies:
npm-normalize-package-bin "^1.0.1"
+npm-bundled@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/npm-bundled/-/npm-bundled-2.0.1.tgz#94113f7eb342cd7a67de1e789f896b04d2c600f4"
+ integrity sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==
+ dependencies:
+ npm-normalize-package-bin "^2.0.0"
+
npm-install-checks@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz#a37facc763a2fde0497ef2c6d0ac7c3fbe00d7b4"
@@ -19915,6 +20031,11 @@ npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1:
resolved "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2"
integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==
+npm-normalize-package-bin@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz#9447a1adaaf89d8ad0abe24c6c84ad614a675fff"
+ integrity sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==
+
npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-package-arg@^8.1.0, npm-package-arg@^8.1.2, npm-package-arg@^8.1.5:
version "8.1.5"
resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz#3369b2d5fe8fdc674baa7f1786514ddc15466e44"
@@ -19954,14 +20075,14 @@ npm-packlist@^3.0.0:
npm-normalize-package-bin "^1.0.1"
npm-packlist@^5.0.0, npm-packlist@^5.1.0:
- version "5.1.1"
- resolved "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.1.tgz#79bcaf22a26b6c30aa4dd66b976d69cc286800e0"
- integrity sha512-UfpSvQ5YKwctmodvPPkK6Fwk603aoVsf8AEbmVKAEECrfvL8SSe1A2YIwrJ6xmTHAITKPwwZsWo7WwEbNk0kxw==
+ version "5.1.3"
+ resolved "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.3.tgz#69d253e6fd664b9058b85005905012e00e69274b"
+ integrity sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==
dependencies:
glob "^8.0.1"
ignore-walk "^5.0.1"
- npm-bundled "^1.1.2"
- npm-normalize-package-bin "^1.0.1"
+ npm-bundled "^2.0.0"
+ npm-normalize-package-bin "^2.0.0"
npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.0, npm-pick-manifest@^6.1.1:
version "6.1.1"
@@ -20169,9 +20290,9 @@ object.assign@^4.1.0:
object-keys "^1.1.1"
object.assign@^4.1.2:
- version "4.1.3"
- resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.3.tgz#d36b7700ddf0019abb6b1df1bb13f6445f79051f"
- integrity sha512-ZFJnX3zltyjcYJL0RoCJuzb+11zWGyaDbjgxZbdV7rFEcHQuYxrZqhow67aA7xpes6LhojyFDaBKAFfogQrikA==
+ version "4.1.4"
+ resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f"
+ integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==
dependencies:
call-bind "^1.0.2"
define-properties "^1.1.4"
@@ -20220,11 +20341,6 @@ object.values@^1.1.5:
define-properties "^1.1.3"
es-abstract "^1.19.1"
-oblivious-set@1.0.0:
- version "1.0.0"
- resolved "https://registry.npmjs.org/oblivious-set/-/oblivious-set-1.0.0.tgz#c8316f2c2fb6ff7b11b6158db3234c49f733c566"
- integrity sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw==
-
obuf@^1.0.0, obuf@^1.1.2:
version "1.1.2"
resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
@@ -20331,9 +20447,9 @@ openapi-types@^12.0.0:
integrity sha512-6Wd9k8nmGQHgCbehZCP6wwWcfXcvinhybUTBatuhjRsCxUIujuYFZc9QnGeae75CyHASewBtxs0HX/qwREReUw==
openid-client@^5.1.3, openid-client@^5.1.6:
- version "5.1.8"
- resolved "https://registry.npmjs.org/openid-client/-/openid-client-5.1.8.tgz#3a24910288b32c32f548fb6e391f44178ce6370f"
- integrity sha512-EPxJY6bT7YIYQEXSGxRC5flQ3GUhLy98ufdto6+BVBrFGPmwjUpy4xBcYuU/Wt9nPkO/3EgljBrr6Ezx4lp1RQ==
+ version "5.1.9"
+ resolved "https://registry.npmjs.org/openid-client/-/openid-client-5.1.9.tgz#6887e75ad3fa8d0c78d0ed693a5ea107d39b54de"
+ integrity sha512-o/11Xos2fRPpK1zQrPfSIhIusFrAkqGSPwkD0UlUB+CCuRzd7zrrBJwIjgnVv3VUSif9ZGXh2d3GSJNH2Koh5g==
dependencies:
jose "^4.1.4"
lru-cache "^6.0.0"
@@ -20633,10 +20749,10 @@ pako@^1.0.10, pako@^1.0.5, pako@~1.0.5:
resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==
-papi@^0.29.0:
- version "0.29.1"
- resolved "https://registry.npmjs.org/papi/-/papi-0.29.1.tgz#7373e2c527f5117d61fd2a0e6c6b1dd72bf7f180"
- integrity sha512-Y9ipSMfWuuVFO3zY9PlxOmEg+bQ7CeJ28sa9/a0veYNynLf9fwjR3+3fld5otEy7okUaEOUuCHVH62MyTmACXQ==
+papi@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmjs.org/papi/-/papi-1.1.0.tgz#15eb3f10b219f478544d51b1b4da394062c67e65"
+ integrity sha512-w02EYhPtKYAGB8XJz+yi5WJPfSev1Zfo3vZrqqvHN6LvkIIJKfJ+VwAnL9EanBMcg6G8Bbwgxh7cqirfsJn2IQ==
param-case@^3.0.4:
version "3.0.4"
@@ -21102,10 +21218,10 @@ pg-int8@1.0.1:
resolved "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c"
integrity sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==
-pg-pool@^3.5.1:
- version "3.5.1"
- resolved "https://registry.npmjs.org/pg-pool/-/pg-pool-3.5.1.tgz#f499ce76f9bf5097488b3b83b19861f28e4ed905"
- integrity sha512-6iCR0wVrro6OOHFsyavV+i6KYL4lVNyYAB9RD18w66xSzN+d8b66HiwuP30Gp1SH5O9T82fckkzsRjlrhD0ioQ==
+pg-pool@^3.5.2:
+ version "3.5.2"
+ resolved "https://registry.npmjs.org/pg-pool/-/pg-pool-3.5.2.tgz#ed1bed1fb8d79f1c6fd5fb1c99e990fbf9ddf178"
+ integrity sha512-His3Fh17Z4eg7oANLob6ZvH8xIVen3phEZh2QuyrIl4dQSDVEabNducv6ysROKpDNPSD+12tONZVWfSgMvDD9w==
pg-protocol@^1.5.0:
version "1.5.0"
@@ -21124,14 +21240,14 @@ pg-types@^2.1.0:
postgres-interval "^1.1.0"
pg@^8.3.0, pg@^8.4.0:
- version "8.7.3"
- resolved "https://registry.npmjs.org/pg/-/pg-8.7.3.tgz#8a5bdd664ca4fda4db7997ec634c6e5455b27c44"
- integrity sha512-HPmH4GH4H3AOprDJOazoIcpI49XFsHCe8xlrjHkWiapdbHK+HLtbm/GQzXYAZwmPju/kzKhjaSfMACG+8cgJcw==
+ version "8.8.0"
+ resolved "https://registry.npmjs.org/pg/-/pg-8.8.0.tgz#a77f41f9d9ede7009abfca54667c775a240da686"
+ integrity sha512-UXYN0ziKj+AeNNP7VDMwrehpACThH7LUl/p8TDFpEUuSejCUIwGSfxpHsPvtM6/WXFy6SU4E5RG4IJV/TZAGjw==
dependencies:
buffer-writer "2.0.0"
packet-reader "1.0.0"
pg-connection-string "^2.5.0"
- pg-pool "^3.5.1"
+ pg-pool "^3.5.2"
pg-protocol "^1.5.0"
pg-types "^2.1.0"
pgpass "1.x"
@@ -21664,12 +21780,12 @@ prelude-ls@~1.1.2:
resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
-prettier@^1.16.4, prettier@^1.19.1:
+prettier@^1.16.4:
version "1.19.1"
resolved "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb"
integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==
-prettier@^2.2.1:
+prettier@^2.2.1, prettier@^2.7.1:
version "2.7.1"
resolved "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64"
integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==
@@ -21752,9 +21868,9 @@ progress@2.0.3:
integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
prom-client@^14.0.1:
- version "14.0.1"
- resolved "https://registry.npmjs.org/prom-client/-/prom-client-14.0.1.tgz#bdd9583e02ec95429677c0e013712d42ef1f86a8"
- integrity sha512-HxTArb6fkOntQHoRGvv4qd/BkorjliiuO2uSWC2KC17MUTKYttWdDoXX/vxOhQdkoECEM9BBH0pj2l8G8kev6w==
+ version "14.1.0"
+ resolved "https://registry.npmjs.org/prom-client/-/prom-client-14.1.0.tgz#049609859483d900844924df740722c76ed1fdbb"
+ integrity sha512-iFWCchQmi4170omLpFXbzz62SQTmPhtBL35v0qGEVRHKcqIeiexaoYeP0vfZTujxEq3tA87iqOdRbC9svS1B9A==
dependencies:
tdigest "^0.1.1"
@@ -21858,6 +21974,22 @@ proto3-json-serializer@^1.0.0:
dependencies:
protobufjs "^6.11.2"
+protobufjs-cli@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/protobufjs-cli/-/protobufjs-cli-1.0.0.tgz#62f99de142118f34c7b4ee53c2dc122612d2711c"
+ integrity sha512-7NZEBrFuuU2ZdzlhmAmvh8fdU7A4OFhzYX9AB7a5vXjopAeiks6ZgUSjOlOO7ItCDJQm3y9RWjk7spUbHc4X0w==
+ dependencies:
+ chalk "^4.0.0"
+ escodegen "^1.13.0"
+ espree "^9.0.0"
+ estraverse "^5.1.0"
+ glob "^8.0.0"
+ jsdoc "^3.6.3"
+ minimist "^1.2.0"
+ semver "^7.1.2"
+ tmp "^0.2.1"
+ uglify-js "^3.7.7"
+
protobufjs@6.11.3, protobufjs@^6.10.0, protobufjs@^6.11.2:
version "6.11.3"
resolved "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz#637a527205a35caa4f3e2a9a4a13ddffe0e7af74"
@@ -21877,7 +22009,7 @@ protobufjs@6.11.3, protobufjs@^6.10.0, protobufjs@^6.11.2:
"@types/node" ">=13.7.0"
long "^4.0.0"
-protobufjs@^7.0.0:
+protobufjs@7.0.0, protobufjs@^7.0.0:
version "7.0.0"
resolved "https://registry.npmjs.org/protobufjs/-/protobufjs-7.0.0.tgz#8c678e1351fd926178fce5a4213913e8d990974f"
integrity sha512-ffNIEm+quOcYtQvHdW406v1NQmZSuqVklxsXk076BtuFnlYZfigLU+JOMrTD8TUOyqHYbRI/fSVNvgd25YeN3w==
@@ -21981,10 +22113,10 @@ punycode@^2.1.0, punycode@^2.1.1:
resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
-puppeteer@^16.0.0:
- version "16.2.0"
- resolved "https://registry.npmjs.org/puppeteer/-/puppeteer-16.2.0.tgz#3fc9cc0c461d3166a98562a7dcd0bf3424a0523c"
- integrity sha512-7Au6iC98rS6WEAD110V4Bxd0iIbqoFtzz9XzkG1BSofidS1VAJ881E1+GFR7Xn2Yea0hbj8n0ErzRyseMp1Ctg==
+puppeteer@^17.0.0:
+ version "17.0.0"
+ resolved "https://registry.npmjs.org/puppeteer/-/puppeteer-17.0.0.tgz#85fea801a7b8b8c9e2913b1491e98c867be49a6b"
+ integrity sha512-T2rdzlPxnPezF218kywFP3O+0YI5/8Kl8riNUicGb+KuMyDTrqRjhSOSDp6coQ1T4QYPBARTFp4EMBepMOzAQA==
dependencies:
cross-fetch "3.1.5"
debug "4.3.4"
@@ -22375,15 +22507,6 @@ react-markdown@^8.0.0:
unist-util-visit "^4.0.0"
vfile "^5.0.0"
-react-query@^3.34.16:
- version "3.39.2"
- resolved "https://registry.npmjs.org/react-query/-/react-query-3.39.2.tgz#9224140f0296f01e9664b78ed6e4f69a0cc9216f"
- integrity sha512-F6hYDKyNgDQfQOuR1Rsp3VRzJnWHx6aRnnIZHMNGGgbL3SBgpZTDg8MQwmxOgpCAoqZJA+JSNCydF1xGJqKOCA==
- dependencies:
- "@babel/runtime" "^7.5.5"
- broadcast-channel "^3.4.1"
- match-sorter "^6.0.2"
-
react-redux@^7.1.1, react-redux@^7.2.4:
version "7.2.5"
resolved "https://registry.npmjs.org/react-redux/-/react-redux-7.2.5.tgz#213c1b05aa1187d9c940ddfc0b29450957f6a3b8"
@@ -22420,7 +22543,16 @@ react-resize-detector@^6.6.3:
lodash "^4.17.21"
resize-observer-polyfill "^1.5.1"
-react-router-dom@6.0.0-beta.0:
+"react-router-beta@npm:react-router@6.0.0-beta.0", react-router@6.0.0-beta.0:
+ name react-router-beta
+ version "6.0.0-beta.0"
+ resolved "https://registry.npmjs.org/react-router/-/react-router-6.0.0-beta.0.tgz#3e11f39b6ded4412c2fed9e4f989dd4c8156724d"
+ integrity sha512-VgMdfpVcmFQki/LZuLh8E/MNACekDetz4xqft+a6fBZvvJnVqKbLqebF7hyoawGrV1HcO5tVaUang2Og4W2j1Q==
+ dependencies:
+ prop-types "^15.7.2"
+
+"react-router-dom-beta@npm:react-router-dom@6.0.0-beta.0", react-router-dom@6.0.0-beta.0:
+ name react-router-dom-beta
version "6.0.0-beta.0"
resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.0.0-beta.0.tgz#9dcc8555365f22f7fbd09f26b6b82543f3eb97d6"
integrity sha512-36yNNGMT8RB9FRPL9nKJi6HKDkgOakU+o/2hHpSzR6e37gN70MpOU6QQlmif4oAWWBwjyGc3ZNOMFCsFuHUY5w==
@@ -22428,17 +22560,18 @@ react-router-dom@6.0.0-beta.0:
prop-types "^15.7.2"
react-router "6.0.0-beta.0"
-react-router@6.0.0-beta.0:
- version "6.0.0-beta.0"
- resolved "https://registry.npmjs.org/react-router/-/react-router-6.0.0-beta.0.tgz#3e11f39b6ded4412c2fed9e4f989dd4c8156724d"
- integrity sha512-VgMdfpVcmFQki/LZuLh8E/MNACekDetz4xqft+a6fBZvvJnVqKbLqebF7hyoawGrV1HcO5tVaUang2Og4W2j1Q==
+"react-router-dom-stable@npm:react-router-dom@^6.3.0", react-router-dom@^6.3.0:
+ version "6.3.0"
+ resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.3.0.tgz#a0216da813454e521905b5fa55e0e5176123f43d"
+ integrity sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==
dependencies:
- prop-types "^15.7.2"
+ history "^5.2.0"
+ react-router "6.3.0"
-react-router@^6.0.0-beta.0:
- version "6.2.1"
- resolved "https://registry.npmjs.org/react-router/-/react-router-6.2.1.tgz#be2a97a6006ce1d9123c28934e604faef51448a3"
- integrity sha512-2fG0udBtxou9lXtK97eJeET2ki5//UWfQSl1rlJ7quwe6jrktK9FCCc8dQb5QY6jAv3jua8bBQRhhDOM/kVRsg==
+"react-router-stable@npm:react-router@^6.3.0", react-router@6.3.0, react-router@^6.0.0-beta.0, react-router@^6.3.0:
+ version "6.3.0"
+ resolved "https://registry.npmjs.org/react-router/-/react-router-6.3.0.tgz#3970cc64b4cb4eae0c1ea5203a80334fdd175557"
+ integrity sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ==
dependencies:
history "^5.2.0"
@@ -23045,11 +23178,6 @@ remedial@^1.0.7:
resolved "https://registry.npmjs.org/remedial/-/remedial-1.0.8.tgz#a5e4fd52a0e4956adbaf62da63a5a46a78c578a0"
integrity sha512-/62tYiOe6DzS5BqVsNpH/nkGlX45C/Sp6V+NtiN6JQNS1Viay7cWkazmRkrQrdFj2eshDe96SIQNIoMxqhzBOg==
-remove-accents@0.4.2:
- version "0.4.2"
- resolved "https://registry.npmjs.org/remove-accents/-/remove-accents-0.4.2.tgz#0a43d3aaae1e80db919e07ae254b285d9e1c7bb5"
- integrity sha1-CkPTqq4egNuRngeuJUsoXZ4ce7U=
-
remove-trailing-separator@^1.0.1:
version "1.1.0"
resolved "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
@@ -23153,6 +23281,13 @@ requires-port@^1.0.0:
resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=
+requizzle@^0.2.3:
+ version "0.2.3"
+ resolved "https://registry.npmjs.org/requizzle/-/requizzle-0.2.3.tgz#4675c90aacafb2c036bd39ba2daa4a1cb777fded"
+ integrity sha512-YanoyJjykPxGHii0fZP0uUPEXpvqfBDxWV7s6GKAiiOsiqhX6vHNyW3Qzdmqp/iq/ExbhaGbVrjB4ruEVSM4GQ==
+ dependencies:
+ lodash "^4.17.14"
+
reselect@^4.1.5:
version "4.1.5"
resolved "https://registry.npmjs.org/reselect/-/reselect-4.1.5.tgz#852c361247198da6756d07d9296c2b51eddb79f6"
@@ -23361,9 +23496,9 @@ rollup-plugin-dts@^4.0.1:
"@babel/code-frame" "^7.16.7"
rollup-plugin-esbuild@^4.7.2:
- version "4.9.3"
- resolved "https://registry.npmjs.org/rollup-plugin-esbuild/-/rollup-plugin-esbuild-4.9.3.tgz#8c62042bdda9f33d18b1c280914394e5a842dd53"
- integrity sha512-bxfUNYTa9Tw/4kdFfT9gtidDtqXyRdCW11ctZM7D8houCCVqp5qHzQF7hhIr31rqMA0APbG47fgVbbCGXgM49Q==
+ version "4.10.0"
+ resolved "https://registry.npmjs.org/rollup-plugin-esbuild/-/rollup-plugin-esbuild-4.10.0.tgz#37036a28ab5637b9dec6cd30285ee18c52b44652"
+ integrity sha512-wXsooS93cmD5+1NlOrPQaoacdcoqo65q5UJLKQ/lhS6BorNSD+arh/CDRQFdFZvbPCC4kYruZ292OfHXhi/XFw==
dependencies:
"@rollup/pluginutils" "^4.1.1"
debug "^4.3.3"
@@ -23647,7 +23782,7 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0:
resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
-semver@^7.0.0, semver@^7.1.1, semver@^7.1.3, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@~7.3.0:
+semver@^7.0.0, semver@^7.1.1, semver@^7.1.2, semver@^7.1.3, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@~7.3.0:
version "7.3.7"
resolved "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f"
integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==
@@ -24162,7 +24297,7 @@ source-map-resolve@^0.5.0:
source-map-url "^0.4.0"
urix "^0.1.0"
-source-map-support@^0.5.10, source-map-support@^0.5.16, source-map-support@^0.5.17, source-map-support@^0.5.6, source-map-support@~0.5.20:
+source-map-support@^0.5.10, source-map-support@^0.5.16, source-map-support@^0.5.6, source-map-support@~0.5.20:
version "0.5.21"
resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
@@ -24245,9 +24380,9 @@ spdx-expression-parse@^3.0.0:
spdx-license-ids "^3.0.0"
spdx-license-ids@^3.0.0:
- version "3.0.11"
- resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz#50c0d8c40a14ec1bf449bae69a0ea4685a9d9f95"
- integrity sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==
+ version "3.0.12"
+ resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz#69077835abe2710b65f03969898b6637b505a779"
+ integrity sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==
spdy-transport@^3.0.0:
version "3.0.0"
@@ -24990,6 +25125,11 @@ sync-fetch@^0.4.0:
buffer "^5.7.1"
node-fetch "^2.6.1"
+taffydb@2.6.2:
+ version "2.6.2"
+ resolved "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz#7cbcb64b5a141b6a2efc2c5d2c67b4e150b2a268"
+ integrity sha512-y3JaeRSplks6NYQuCOj3ZFMO3j60rTwbuKCvZxsAraGYH2epusatvZ0baZYA01WsGqJBq/Dl6vOrMUJqyMj8kA==
+
tapable@^1.0.0:
version "1.1.3"
resolved "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
@@ -25056,28 +25196,28 @@ tdigest@^0.1.1:
bintrees "1.0.1"
"techdocs-cli-embedded-app@link:packages/techdocs-cli-embedded-app":
- version "0.2.74-next.0"
+ version "0.2.74-next.1"
dependencies:
- "@backstage/app-defaults" "^1.0.6-next.0"
+ "@backstage/app-defaults" "^1.0.6-next.1"
"@backstage/catalog-model" "^1.1.0"
- "@backstage/cli" "^0.18.2-next.0"
+ "@backstage/cli" "^0.19.0-next.1"
"@backstage/config" "^1.0.1"
- "@backstage/core-app-api" "^1.0.6-next.0"
- "@backstage/core-components" "^0.11.1-next.0"
- "@backstage/core-plugin-api" "^1.0.6-next.0"
+ "@backstage/core-app-api" "^1.1.0-next.1"
+ "@backstage/core-components" "^0.11.1-next.1"
+ "@backstage/core-plugin-api" "^1.0.6-next.1"
"@backstage/integration-react" "^1.1.4-next.0"
- "@backstage/plugin-catalog" "^1.5.1-next.0"
- "@backstage/plugin-techdocs" "^1.3.2-next.0"
- "@backstage/plugin-techdocs-react" "^1.0.4-next.0"
- "@backstage/test-utils" "^1.1.4-next.0"
+ "@backstage/plugin-catalog" "^1.5.1-next.1"
+ "@backstage/plugin-techdocs" "^1.3.2-next.1"
+ "@backstage/plugin-techdocs-react" "^1.0.4-next.1"
+ "@backstage/test-utils" "^1.2.0-next.1"
"@backstage/theme" "^0.2.16"
"@material-ui/core" "^4.11.0"
"@material-ui/icons" "^4.9.1"
history "^5.0.0"
react "^17.0.2"
react-dom "^17.0.2"
- react-router "6.0.0-beta.0"
- react-router-dom "6.0.0-beta.0"
+ react-router "^6.3.0"
+ react-router-dom "^6.3.0"
react-use "^17.2.4"
teeny-request@^8.0.0:
@@ -25117,9 +25257,9 @@ terminal-link@^2.0.0:
supports-hyperlinks "^2.0.0"
terser-webpack-plugin@*, terser-webpack-plugin@^5.1.3:
- version "5.3.5"
- resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.5.tgz#f7d82286031f915a4f8fb81af4bd35d2e3c011bc"
- integrity sha512-AOEDLDxD2zylUGf/wxHxklEkOe2/r+seuyOWujejFrIxHf11brA1/dWQNIgXa1c6/Wkxgu7zvv0JhOWfc2ELEA==
+ version "5.3.6"
+ resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz#5590aec31aa3c6f771ce1b1acca60639eab3195c"
+ integrity sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==
dependencies:
"@jridgewell/trace-mapping" "^0.3.14"
jest-worker "^27.4.5"
@@ -25306,7 +25446,7 @@ tmp@^0.0.33:
dependencies:
os-tmpdir "~1.0.2"
-tmp@^0.2.0, tmp@~0.2.1:
+tmp@^0.2.0, tmp@^0.2.1, tmp@~0.2.1:
version "0.2.1"
resolved "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14"
integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==
@@ -25504,7 +25644,7 @@ ts-morph@^15.0.0:
"@ts-morph/common" "~0.16.0"
code-block-writer "^11.0.0"
-ts-node@^10.0.0, ts-node@^10.2.1, ts-node@^10.4.0:
+ts-node@^10.0.0, ts-node@^10.2.1, ts-node@^10.4.0, ts-node@^10.8.1:
version "10.9.1"
resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b"
integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==
@@ -25523,18 +25663,6 @@ ts-node@^10.0.0, ts-node@^10.2.1, ts-node@^10.4.0:
v8-compile-cache-lib "^3.0.1"
yn "3.1.1"
-ts-node@^9:
- version "9.1.1"
- resolved "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz#51a9a450a3e959401bda5f004a72d54b936d376d"
- integrity sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==
- dependencies:
- arg "^4.1.0"
- create-require "^1.1.0"
- diff "^4.0.1"
- make-error "^1.1.1"
- source-map-support "^0.5.17"
- yn "3.1.1"
-
tsconfig-paths@^3.14.1:
version "3.14.1"
resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a"
@@ -25550,12 +25678,12 @@ tslib@2.0.3:
resolved "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz#8e0741ac45fc0c226e58a17bfc3e64b9bc6ca61c"
integrity sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==
-tslib@2.3.1, tslib@^2, tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.2.0, tslib@^2.3.1, tslib@~2.3.0:
+tslib@2.3.1, tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.2.0, tslib@^2.3.1, tslib@~2.3.0:
version "2.3.1"
resolved "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==
-tslib@^1.13.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3:
+tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3:
version "1.14.1"
resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
@@ -25734,6 +25862,11 @@ uglify-js@^3.1.4:
resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.3.tgz#c0f25dfea1e8e5323eccf59610be08b6043c15cf"
integrity sha512-mic3aOdiq01DuSVx0TseaEzMIVqebMZ0Z3vaeDhFEh9bsc24hV1TFvN74reA2vs08D0ZWfNjAcJ3UbVLaBss+g==
+uglify-js@^3.7.7:
+ version "3.17.0"
+ resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.0.tgz#55bd6e9d19ce5eef0d5ad17cd1f587d85b180a85"
+ integrity sha512-aTeNPVmgIMPpm1cxXr2Q/nEbvkmV8yq66F3om7X3P/cvOXQ0TMQ64Wk63iyT1gPlmdmGzjGpyLh1f3y8MZWXGg==
+
uid-safe@~2.1.5:
version "2.1.5"
resolved "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz#2b3d5c7240e8fc2e58f8aa269e5ee49c0857bd3a"
@@ -25784,6 +25917,11 @@ underscore@^1.12.1, underscore@^1.9.1:
resolved "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz#0c1c6bd2df54b6b69f2314066d65b6cde6fcf9d1"
integrity sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==
+underscore@~1.13.2:
+ version "1.13.4"
+ resolved "https://registry.npmjs.org/underscore/-/underscore-1.13.4.tgz#7886b46bbdf07f768e0052f1828e1dcab40c0dee"
+ integrity sha512-BQFnUDuAQ4Yf/cYY5LNrK9NCJFKriaRbD9uR1fTeXnBeoa97W0i41qkZfGO9pSo8I5KzjAcSY2XYtdf0oKd7KQ==
+
undici@5.5.1:
version "5.5.1"
resolved "https://registry.npmjs.org/undici/-/undici-5.5.1.tgz#baaf25844a99eaa0b22e1ef8d205bffe587c8f43"
@@ -25982,14 +26120,6 @@ unixify@^1.0.0:
dependencies:
normalize-path "^2.1.1"
-unload@2.2.0:
- version "2.2.0"
- resolved "https://registry.npmjs.org/unload/-/unload-2.2.0.tgz#ccc88fdcad345faa06a92039ec0f80b488880ef7"
- integrity sha512-B60uB5TNBLtN6/LsgAf3udH9saB5p7gqJwcFfbOEZ8BcBHnGwCf6G/TGiEqkRAxX7zAFIUtzdrXQSdL3Q/wqNA==
- dependencies:
- "@babel/runtime" "^7.6.2"
- detect-node "^2.0.4"
-
unpipe@1.0.0, unpipe@~1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
@@ -26101,6 +26231,11 @@ use-resize-observer@^8.0.0:
dependencies:
"@juggle/resize-observer" "^3.3.1"
+use-sync-external-store@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a"
+ integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==
+
use@^3.1.0:
version "3.1.1"
resolved "https://registry.npmjs.org/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
@@ -26189,11 +26324,6 @@ v8-compile-cache-lib@^3.0.1:
resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf"
integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==
-v8-compile-cache@^2.0.3:
- version "2.1.0"
- resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e"
- integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==
-
v8-to-istanbul@^8.1.0:
version "8.1.1"
resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz#77b752fd3975e31bbcef938f85e9bd1c7a8d60ed"
@@ -26337,10 +26467,10 @@ vm-browserify@^1.0.1:
resolved "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0"
integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==
-vm2@^3.9.6:
- version "3.9.10"
- resolved "https://registry.npmjs.org/vm2/-/vm2-3.9.10.tgz#c66543096b5c44c8861a6465805c23c7cc996a44"
- integrity sha512-AuECTSvwu2OHLAZYhG716YzwodKCIJxB6u1zG7PgSQwIgAlEaoXH52bxdcvT8GkGjnYK7r7yWDW0m0sOsPuBjQ==
+vm2@^3.9.11:
+ version "3.9.11"
+ resolved "https://registry.npmjs.org/vm2/-/vm2-3.9.11.tgz#a880f510a606481719ec3f9803b940c5805a06fe"
+ integrity sha512-PFG8iJRSjvvBdisowQ7iVF580DXb1uCIiGaXgm7tynMR1uTBlv7UJlB1zdv5KJ+Tmq1f0Upnj3fayoEOPpCBKg==
dependencies:
acorn "^8.7.0"
acorn-walk "^8.2.0"
@@ -26397,7 +26527,7 @@ walker@^1.0.7:
dependencies:
makeerror "1.0.x"
-watchpack@^2.0.0-beta.10, watchpack@^2.3.1:
+watchpack@^2.0.0-beta.10, watchpack@^2.4.0:
version "2.4.0"
resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d"
integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==
@@ -26476,9 +26606,9 @@ webpack-dev-middleware@^5.3.1:
schema-utils "^4.0.0"
webpack-dev-server@^4.7.3:
- version "4.10.0"
- resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.10.0.tgz#de270d0009eba050546912be90116e7fd740a9ca"
- integrity sha512-7dezwAs+k6yXVFZ+MaL8VnE+APobiO3zvpp3rBHe/HmWQ+avwh0Q3d0xxacOiBybZZ3syTZw9HXzpa3YNbAZDQ==
+ version "4.10.1"
+ resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.10.1.tgz#124ac9ac261e75303d74d95ab6712b4aec3e12ed"
+ integrity sha512-FIzMq3jbBarz3ld9l7rbM7m6Rj1lOsgq/DyLGMX/fPEB1UBUPtf5iL/4eNfhx8YYJTRlzfv107UfWSWcBK5Odw==
dependencies:
"@types/bonjour" "^3.5.9"
"@types/connect-history-api-fallback" "^1.3.5"
@@ -26529,33 +26659,33 @@ webpack-sources@^3.2.3:
integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
webpack@^5, webpack@^5.70.0:
- version "5.70.0"
- resolved "https://registry.npmjs.org/webpack/-/webpack-5.70.0.tgz#3461e6287a72b5e6e2f4872700bc8de0d7500e6d"
- integrity sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw==
+ version "5.74.0"
+ resolved "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz#02a5dac19a17e0bb47093f2be67c695102a55980"
+ integrity sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==
dependencies:
"@types/eslint-scope" "^3.7.3"
"@types/estree" "^0.0.51"
"@webassemblyjs/ast" "1.11.1"
"@webassemblyjs/wasm-edit" "1.11.1"
"@webassemblyjs/wasm-parser" "1.11.1"
- acorn "^8.4.1"
+ acorn "^8.7.1"
acorn-import-assertions "^1.7.6"
browserslist "^4.14.5"
chrome-trace-event "^1.0.2"
- enhanced-resolve "^5.9.2"
+ enhanced-resolve "^5.10.0"
es-module-lexer "^0.9.0"
eslint-scope "5.1.1"
events "^3.2.0"
glob-to-regexp "^0.4.1"
graceful-fs "^4.2.9"
- json-parse-better-errors "^1.0.2"
+ json-parse-even-better-errors "^2.3.1"
loader-runner "^4.2.0"
mime-types "^2.1.27"
neo-async "^2.6.2"
schema-utils "^3.1.0"
tapable "^2.1.1"
terser-webpack-plugin "^5.1.3"
- watchpack "^2.3.1"
+ watchpack "^2.4.0"
webpack-sources "^3.2.3"
websocket-driver@>=0.5.1, websocket-driver@^0.7.4:
@@ -26920,6 +27050,11 @@ xmlchars@^2.2.0:
resolved "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb"
integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==
+xmlcreate@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz#0c5ab0f99cdd02a81065fa9cd8f8ae87624889be"
+ integrity sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==
+
xmlhttprequest-ssl@~1.6.2:
version "1.6.3"
resolved "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz#03b713873b01659dfa2c1c5d056065b27ddc2de6"