From b74962217bbdca9e2f4e27d01c66f2126d761317 Mon Sep 17 00:00:00 2001 From: Nick Marinelli Date: Thu, 25 Aug 2022 18:57:57 -0400 Subject: [PATCH 001/117] Local SSL tutorial Signed-off-by: Nick Marinelli --- .../docs/tutorials/enable-ssl-self-signed.md | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 contrib/docs/tutorials/enable-ssl-self-signed.md diff --git a/contrib/docs/tutorials/enable-ssl-self-signed.md b/contrib/docs/tutorials/enable-ssl-self-signed.md new file mode 100644 index 0000000000..8169e277fb --- /dev/null +++ b/contrib/docs/tutorials/enable-ssl-self-signed.md @@ -0,0 +1,46 @@ +# Enabling SSL for Local Testing + +If you need to use an `https:` URL for local testing (i.e. if an OAuth provider requires a "secure" callback URL), you can use a self-signed certificate by following these steps. + +## Backend + +1. Generate a self-signed certificate and key for localhost. One approach uses OpenSSL: + ```bash + mkdir certs ; + openssl req -x509 -newkey rsa:2048 -nodes -keyout certs/localhost.key -out certs/localhost.crt -sha256 -days 3650 -subj '/CN=localhost' ; + ``` +1. Update `backend.baseUrl` in app-config.local.yaml to use an `https:` address, and copy the contents of the certificate and key files into `backend.https.certificate.cert` and `backend.https.certificate.cert`, respectively. Your app-config.local.yaml should look something like: + ```yaml + backend: + baseUrl: https://localhost:7007 + https: + certificate: + cert: | + -----BEGIN CERTIFICATE----- + MIIDCTCCAfGgAwIBAgIUZ9VhZckcy690L + ... + -----END CERTIFICATE----- + key: | + -----BEGIN PRIVATE KEY----- + MIIEvAIBADANBgkqhkiG9w0BAQ + ... + -----END PRIVATE KEY----- + ``` +1. Convince your browser to trust the certificate. In Windows this might mean adding the certificate to your Trusted Root CAs, or you may use a browser-specific configuration like Chrome's flag `chrome://flags/#allow-insecure-localhost`. +1. Start the backend with `NODE_EXTRA_CA_CERTS=/absolute/path/to/certs/localhost.crt yarn start-backend` + +## Frontend + +Webpack will generate a self signed certificate automatically in development environments when the protocol in the `baseUrl` is `https`. Therefore, simply add this to your local config: + +```yaml +app: + baseUrl: https://localhost:3000 +backend: + cors: + origin: https://localhost:3000 +``` + +and start the app with `yarn start`. As with the backend instructions above, the certificate must be trusted. + +Depending on what plugins are in use, you may need to override additional URLs to use `https` for those endpoints to work. From 928e31bfdc0fcddf2ef4c5004e0873348c9aca69 Mon Sep 17 00:00:00 2001 From: Nick Marinelli Date: Fri, 26 Aug 2022 15:25:38 -0400 Subject: [PATCH 002/117] adapt for mkcert Signed-off-by: Nick Marinelli --- contrib/docs/tutorials/enable-ssl-self-signed.md | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/contrib/docs/tutorials/enable-ssl-self-signed.md b/contrib/docs/tutorials/enable-ssl-self-signed.md index 8169e277fb..589e96dc80 100644 --- a/contrib/docs/tutorials/enable-ssl-self-signed.md +++ b/contrib/docs/tutorials/enable-ssl-self-signed.md @@ -4,11 +4,7 @@ If you need to use an `https:` URL for local testing (i.e. if an OAuth provider ## Backend -1. Generate a self-signed certificate and key for localhost. One approach uses OpenSSL: - ```bash - mkdir certs ; - openssl req -x509 -newkey rsa:2048 -nodes -keyout certs/localhost.key -out certs/localhost.crt -sha256 -days 3650 -subj '/CN=localhost' ; - ``` +1. Generate a self-signed certificate and key for localhost and configure your system to trust it. [mkcert](https://github.com/FiloSottile/mkcert) is a helpful tool to accomplish this. 1. Update `backend.baseUrl` in app-config.local.yaml to use an `https:` address, and copy the contents of the certificate and key files into `backend.https.certificate.cert` and `backend.https.certificate.cert`, respectively. Your app-config.local.yaml should look something like: ```yaml backend: @@ -26,8 +22,7 @@ If you need to use an `https:` URL for local testing (i.e. if an OAuth provider ... -----END PRIVATE KEY----- ``` -1. Convince your browser to trust the certificate. In Windows this might mean adding the certificate to your Trusted Root CAs, or you may use a browser-specific configuration like Chrome's flag `chrome://flags/#allow-insecure-localhost`. -1. Start the backend with `NODE_EXTRA_CA_CERTS=/absolute/path/to/certs/localhost.crt yarn start-backend` +1. Start the backend with `NODE_EXTRA_CA_CERTS=/absolute/path/to/cert.pem yarn start-backend` ## Frontend From 9acd95709ef1342f6d56788aac94dc613ebd52ab Mon Sep 17 00:00:00 2001 From: Nick Marinelli Date: Fri, 26 Aug 2022 18:25:33 -0400 Subject: [PATCH 003/117] spellcheck workaround? Signed-off-by: Nick Marinelli --- contrib/docs/tutorials/enable-ssl-self-signed.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/docs/tutorials/enable-ssl-self-signed.md b/contrib/docs/tutorials/enable-ssl-self-signed.md index 589e96dc80..18d9752ba2 100644 --- a/contrib/docs/tutorials/enable-ssl-self-signed.md +++ b/contrib/docs/tutorials/enable-ssl-self-signed.md @@ -4,7 +4,7 @@ If you need to use an `https:` URL for local testing (i.e. if an OAuth provider ## Backend -1. Generate a self-signed certificate and key for localhost and configure your system to trust it. [mkcert](https://github.com/FiloSottile/mkcert) is a helpful tool to accomplish this. +1. Generate a self-signed certificate and key for localhost and configure your system to trust it. The application ["mkcert"](https://github.com/FiloSottile/mkcert) is a helpful tool to accomplish this. 1. Update `backend.baseUrl` in app-config.local.yaml to use an `https:` address, and copy the contents of the certificate and key files into `backend.https.certificate.cert` and `backend.https.certificate.cert`, respectively. Your app-config.local.yaml should look something like: ```yaml backend: From 5fa831ce551eda0fb14ac4d05a372b8450048e07 Mon Sep 17 00:00:00 2001 From: Marcus Eide Date: Tue, 6 Sep 2022 13:12:50 +0200 Subject: [PATCH 004/117] Add optional SameSite attribute to CookieConfigurer and return from defaultCookieConfigurer for secure contexts. Signed-off-by: Marcus Eide --- .changeset/kind-penguins-report.md | 5 ++++ plugins/auth-backend/api-report.md | 5 ++-- .../src/lib/oauth/OAuthAdapter.test.ts | 15 ++++++++--- .../src/lib/oauth/OAuthAdapter.ts | 16 ++++-------- .../src/lib/oauth/helpers.test.ts | 25 +++++++++++++++++++ plugins/auth-backend/src/lib/oauth/helpers.ts | 3 ++- plugins/auth-backend/src/providers/types.ts | 7 +++++- 7 files changed, 57 insertions(+), 19 deletions(-) create mode 100644 .changeset/kind-penguins-report.md diff --git a/.changeset/kind-penguins-report.md b/.changeset/kind-penguins-report.md new file mode 100644 index 0000000000..6596f727d2 --- /dev/null +++ b/.changeset/kind-penguins-report.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-auth-backend': patch +--- + +Allow CookieConfigurer to optionally return the SameSite cookie attribute. Return `SameSite=None` in `defaultCookieConfigurer` for secure contexts to allow cookies to be included in third-party requests. diff --git a/plugins/auth-backend/api-report.md b/plugins/auth-backend/api-report.md index d47abeee83..ed3561d37c 100644 --- a/plugins/auth-backend/api-report.md +++ b/plugins/auth-backend/api-report.md @@ -187,6 +187,7 @@ export type CookieConfigurer = (ctx: { domain: string; path: string; secure: boolean; + sameSite?: 'none' | 'lax' | 'strict'; }; // @public @@ -280,11 +281,9 @@ export class OAuthAdapter implements AuthProviderRouteHandlers { // @public (undocumented) export type OAuthAdapterOptions = { providerId: string; - secure: boolean; persistScopes?: boolean; - cookieDomain: string; - cookiePath: string; appOrigin: string; + cookieConfig: ReturnType; isOriginAllowed: (origin: string) => boolean; callbackUrl: string; }; diff --git a/plugins/auth-backend/src/lib/oauth/OAuthAdapter.test.ts b/plugins/auth-backend/src/lib/oauth/OAuthAdapter.test.ts index 9dcd76e92e..a61554b600 100644 --- a/plugins/auth-backend/src/lib/oauth/OAuthAdapter.test.ts +++ b/plugins/auth-backend/src/lib/oauth/OAuthAdapter.test.ts @@ -18,6 +18,7 @@ import express from 'express'; import { THOUSAND_DAYS_MS, TEN_MINUTES_MS, OAuthAdapter } from './OAuthAdapter'; import { encodeState } from './helpers'; import { OAuthHandlers, OAuthState } from './types'; +import { CookieConfigurer } from '../../providers/types'; const mockResponseData = { providerInfo: { @@ -57,12 +58,17 @@ describe('OAuthAdapter', () => { } } const providerInstance = new MyAuthProvider(); + const cookieConfig = { + domain: 'example.com', + path: '/auth/test-provider', + secure: false, + sameSite: 'lax', + } as ReturnType; + const oAuthProviderOptions = { providerId: 'test-provider', - secure: false, appOrigin: 'http://localhost:3000', - cookieDomain: 'example.com', - cookiePath: '/auth/test-provider', + cookieConfig, tokenIssuer: { issueToken: async () => 'my-id-token', listPublicKeys: async () => ({ keys: [] }), @@ -136,6 +142,8 @@ describe('OAuthAdapter', () => { expect.objectContaining({ path: '/auth/test-provider', maxAge: THOUSAND_DAYS_MS, + secure: false, + sameSite: 'lax', }), ); }); @@ -331,6 +339,7 @@ describe('OAuthAdapter', () => { domain: 'authdomain.org', path: '/auth/test-provider/handler', secure: true, + sameSite: 'none', }), ); }); diff --git a/plugins/auth-backend/src/lib/oauth/OAuthAdapter.ts b/plugins/auth-backend/src/lib/oauth/OAuthAdapter.ts index 6caa9fed12..c021104010 100644 --- a/plugins/auth-backend/src/lib/oauth/OAuthAdapter.ts +++ b/plugins/auth-backend/src/lib/oauth/OAuthAdapter.ts @@ -24,6 +24,7 @@ import { import { AuthProviderRouteHandlers, AuthProviderConfig, + CookieConfigurer, } from '../../providers/types'; import { AuthenticationError, @@ -47,11 +48,9 @@ export const TEN_MINUTES_MS = 600 * 1000; /** @public */ export type OAuthAdapterOptions = { providerId: string; - secure: boolean; persistScopes?: boolean; - cookieDomain: string; - cookiePath: string; appOrigin: string; + cookieConfig: ReturnType; isOriginAllowed: (origin: string) => boolean; callbackUrl: string; }; @@ -78,9 +77,7 @@ export class OAuthAdapter implements AuthProviderRouteHandlers { return new OAuthAdapter(handlers, { ...options, appOrigin, - cookieDomain: cookieConfig.domain, - cookiePath: cookieConfig.path, - secure: cookieConfig.secure, + cookieConfig, isOriginAllowed: config.isOriginAllowed, }); } @@ -93,10 +90,7 @@ export class OAuthAdapter implements AuthProviderRouteHandlers { ) { this.baseCookieOptions = { httpOnly: true, - sameSite: 'lax', - secure: this.options.secure, - path: this.options.cookiePath, - domain: this.options.cookieDomain, + ...this.options.cookieConfig, }; } @@ -265,7 +259,7 @@ export class OAuthAdapter implements AuthProviderRouteHandlers { res.cookie(`${this.options.providerId}-nonce`, nonce, { maxAge: TEN_MINUTES_MS, ...this.baseCookieOptions, - path: `${this.options.cookiePath}/handler`, + path: `${this.options.cookieConfig.path}/handler`, }); }; diff --git a/plugins/auth-backend/src/lib/oauth/helpers.test.ts b/plugins/auth-backend/src/lib/oauth/helpers.test.ts index b3052c93e1..2202fa60ea 100644 --- a/plugins/auth-backend/src/lib/oauth/helpers.test.ts +++ b/plugins/auth-backend/src/lib/oauth/helpers.test.ts @@ -150,5 +150,30 @@ describe('OAuthProvider Utils', () => { secure: true, }); }); + + it('should set sameSite to none for https', () => { + expect( + defaultCookieConfigurer({ + baseUrl: '', + providerId: 'test-provider', + callbackUrl: 'https://domain.org/auth', + }), + ).toMatchObject({ + sameSite: 'none', + secure: true, + }); + }); + it('should set sameSite to lax for http', () => { + expect( + defaultCookieConfigurer({ + baseUrl: '', + providerId: 'test-provider', + callbackUrl: 'http://domain.org/auth', + }), + ).toMatchObject({ + sameSite: 'lax', + secure: false, + }); + }); }); }); diff --git a/plugins/auth-backend/src/lib/oauth/helpers.ts b/plugins/auth-backend/src/lib/oauth/helpers.ts index 63d5d62ef9..b18db59ca7 100644 --- a/plugins/auth-backend/src/lib/oauth/helpers.ts +++ b/plugins/auth-backend/src/lib/oauth/helpers.ts @@ -68,6 +68,7 @@ export const defaultCookieConfigurer: CookieConfigurer = ({ }) => { const { hostname: domain, pathname, protocol } = new URL(callbackUrl); const secure = protocol === 'https:'; + const sameSite = secure ? 'none' : 'lax'; // If the provider supports callbackUrls, the pathname will // contain the complete path to the frame handler so we need @@ -76,5 +77,5 @@ export const defaultCookieConfigurer: CookieConfigurer = ({ ? pathname.slice(0, -'/handler/frame'.length) : `${pathname}/${providerId}`; - return { domain, path, secure }; + return { domain, path, secure, sameSite }; }; diff --git a/plugins/auth-backend/src/providers/types.ts b/plugins/auth-backend/src/providers/types.ts index 574afade79..f22e6b0492 100644 --- a/plugins/auth-backend/src/providers/types.ts +++ b/plugins/auth-backend/src/providers/types.ts @@ -100,7 +100,12 @@ export type CookieConfigurer = (ctx: { baseUrl: string; /** The configured callback URL of the auth provider */ callbackUrl: string; -}) => { domain: string; path: string; secure: boolean }; +}) => { + domain: string; + path: string; + secure: boolean; + sameSite?: 'none' | 'lax' | 'strict'; +}; /** @public */ export type AuthProviderConfig = { From 7531aef58b36c60255ebed1c9273cc6646971ac7 Mon Sep 17 00:00:00 2001 From: Vladimir Masarik Date: Thu, 1 Sep 2022 10:21:05 +0200 Subject: [PATCH 005/117] Fix settings page not displaying sing in properly Signed-off-by: Vladimir Masarik --- .../AuthProviders/ProviderSettingsItem.tsx | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/plugins/user-settings/src/components/AuthProviders/ProviderSettingsItem.tsx b/plugins/user-settings/src/components/AuthProviders/ProviderSettingsItem.tsx index e170aa2daa..6de5f9ad73 100644 --- a/plugins/user-settings/src/components/AuthProviders/ProviderSettingsItem.tsx +++ b/plugins/user-settings/src/components/AuthProviders/ProviderSettingsItem.tsx @@ -26,9 +26,10 @@ import { import { ApiRef, SessionApi, + ProfileInfoApi, + ProfileInfo, useApi, IconComponent, - SessionState, } from '@backstage/core-plugin-api'; /** @public */ @@ -36,23 +37,27 @@ export const ProviderSettingsItem = (props: { title: string; description: string; icon: IconComponent; - apiRef: ApiRef; + apiRef: ApiRef; }) => { const { title, description, icon: Icon, apiRef } = props; const api = useApi(apiRef); const [signedIn, setSignedIn] = useState(false); + const [profileEmail, setProfileEmail] = useState(''); useEffect(() => { let didCancel = false; - const subscription = api - .sessionState$() - .subscribe((sessionState: SessionState) => { - if (!didCancel) { - setSignedIn(sessionState === SessionState.SignedIn); - } - }); + const subscription = api.sessionState$().subscribe(() => { + if (!didCancel) { + api + .getProfile({ optional: false }) + .then((profile: ProfileInfo | undefined) => { + setSignedIn(profile !== undefined); + setProfileEmail(profile?.email ?? ''); + }); + } + }); return () => { didCancel = true; @@ -69,7 +74,9 @@ export const ProviderSettingsItem = (props: { primary={title} secondary={ - {description} + + {description}. Signed in as {profileEmail} + } secondaryTypographyProps={{ noWrap: true, style: { width: '80%' } }} From 4ce0c846cccae75c682643e0ba3f5f71d514a8fa Mon Sep 17 00:00:00 2001 From: Vladimir Masarik Date: Fri, 2 Sep 2022 14:00:12 +0200 Subject: [PATCH 006/117] fix optional to true Signed-off-by: Vladimir Masarik --- .../src/components/AuthProviders/ProviderSettingsItem.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/user-settings/src/components/AuthProviders/ProviderSettingsItem.tsx b/plugins/user-settings/src/components/AuthProviders/ProviderSettingsItem.tsx index 6de5f9ad73..7ff13a11d4 100644 --- a/plugins/user-settings/src/components/AuthProviders/ProviderSettingsItem.tsx +++ b/plugins/user-settings/src/components/AuthProviders/ProviderSettingsItem.tsx @@ -51,7 +51,7 @@ export const ProviderSettingsItem = (props: { const subscription = api.sessionState$().subscribe(() => { if (!didCancel) { api - .getProfile({ optional: false }) + .getProfile({ optional: true }) .then((profile: ProfileInfo | undefined) => { setSignedIn(profile !== undefined); setProfileEmail(profile?.email ?? ''); From 5e00eb69c5b79f686f27a248136d6f52e80d61bd Mon Sep 17 00:00:00 2001 From: Vladimir Masarik Date: Fri, 2 Sep 2022 14:00:38 +0200 Subject: [PATCH 007/117] check sessions state as well Signed-off-by: Vladimir Masarik --- .../AuthProviders/ProviderSettingsItem.tsx | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/plugins/user-settings/src/components/AuthProviders/ProviderSettingsItem.tsx b/plugins/user-settings/src/components/AuthProviders/ProviderSettingsItem.tsx index 7ff13a11d4..4a3b28b335 100644 --- a/plugins/user-settings/src/components/AuthProviders/ProviderSettingsItem.tsx +++ b/plugins/user-settings/src/components/AuthProviders/ProviderSettingsItem.tsx @@ -26,6 +26,7 @@ import { import { ApiRef, SessionApi, + SessionState, ProfileInfoApi, ProfileInfo, useApi, @@ -48,16 +49,22 @@ export const ProviderSettingsItem = (props: { useEffect(() => { let didCancel = false; - const subscription = api.sessionState$().subscribe(() => { - if (!didCancel) { - api - .getProfile({ optional: true }) - .then((profile: ProfileInfo | undefined) => { - setSignedIn(profile !== undefined); - setProfileEmail(profile?.email ?? ''); - }); - } - }); + const subscription = api + .sessionState$() + .subscribe((sessionState: SessionState) => { + if (!didCancel) { + api + .getProfile({ optional: true }) + .then((profile: ProfileInfo | undefined) => { + if (sessionState === SessionState.SignedIn) { + setSignedIn(true); + } else { + setSignedIn(profile !== undefined); + } + setProfileEmail(profile?.email ?? ''); + }); + } + }); return () => { didCancel = true; From 0d25d297a33841b8e8e0c24c0d48c60a37fa784a Mon Sep 17 00:00:00 2001 From: Vladimir Masarik Date: Mon, 5 Sep 2022 16:46:08 +0200 Subject: [PATCH 008/117] add more info into providers Signed-off-by: Vladimir Masarik --- .../AuthProviders/ProviderSettingsAvatar.tsx | 38 +++++++++++++++++++ .../AuthProviders/ProviderSettingsItem.tsx | 37 +++++++++++++++--- 2 files changed, 70 insertions(+), 5 deletions(-) create mode 100644 plugins/user-settings/src/components/AuthProviders/ProviderSettingsAvatar.tsx diff --git a/plugins/user-settings/src/components/AuthProviders/ProviderSettingsAvatar.tsx b/plugins/user-settings/src/components/AuthProviders/ProviderSettingsAvatar.tsx new file mode 100644 index 0000000000..e92b0efe15 --- /dev/null +++ b/plugins/user-settings/src/components/AuthProviders/ProviderSettingsAvatar.tsx @@ -0,0 +1,38 @@ +/* + * Copyright 2020 The 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 { BackstageTheme } from '@backstage/theme'; +import { makeStyles, Avatar } from '@material-ui/core'; +import { sidebarConfig } from '@backstage/core-components'; + +const useStyles = makeStyles(theme => ({ + avatar: { + width: ({ size }) => size, + height: ({ size }) => size, + fontSize: ({ size }) => size * 0.7, + border: `1px solid ${theme.palette.textSubtle}`, + }, +})); + +type Props = { size?: number; picture: string | undefined }; + +export const ProviderSettingsAvatar = ({ size, picture }: Props) => { + const { iconSize } = sidebarConfig; + const classes = useStyles(size ? { size } : { size: iconSize }); + + return ; +}; diff --git a/plugins/user-settings/src/components/AuthProviders/ProviderSettingsItem.tsx b/plugins/user-settings/src/components/AuthProviders/ProviderSettingsItem.tsx index 4a3b28b335..ef31e70d81 100644 --- a/plugins/user-settings/src/components/AuthProviders/ProviderSettingsItem.tsx +++ b/plugins/user-settings/src/components/AuthProviders/ProviderSettingsItem.tsx @@ -17,11 +17,13 @@ import React, { useEffect, useState } from 'react'; import { Button, + Grid, ListItem, ListItemIcon, ListItemSecondaryAction, ListItemText, Tooltip, + Typography, } from '@material-ui/core'; import { ApiRef, @@ -32,6 +34,7 @@ import { useApi, IconComponent, } from '@backstage/core-plugin-api'; +import { ProviderSettingsAvatar } from './ProviderSettingsAvatar'; /** @public */ export const ProviderSettingsItem = (props: { @@ -44,7 +47,8 @@ export const ProviderSettingsItem = (props: { const api = useApi(apiRef); const [signedIn, setSignedIn] = useState(false); - const [profileEmail, setProfileEmail] = useState(''); + const emptyProfile: ProfileInfo = {}; + const [profile, setProfile] = useState(emptyProfile); useEffect(() => { let didCancel = false; @@ -55,13 +59,13 @@ export const ProviderSettingsItem = (props: { if (!didCancel) { api .getProfile({ optional: true }) - .then((profile: ProfileInfo | undefined) => { + .then((profileResponse: ProfileInfo | undefined) => { if (sessionState === SessionState.SignedIn) { setSignedIn(true); } else { - setSignedIn(profile !== undefined); + setSignedIn(profileResponse !== undefined); } - setProfileEmail(profile?.email ?? ''); + setProfile(profileResponse ?? {}); }); } }); @@ -82,7 +86,30 @@ export const ProviderSettingsItem = (props: { secondary={ - {description}. Signed in as {profileEmail} + + + + + + + + + {profile.displayName} + + + {profile.email} + + + {description} + + + + + } From 5543e866602cd6fd67ee8cf04c2233b7b8d1a8e3 Mon Sep 17 00:00:00 2001 From: Vladimir Masarik Date: Tue, 6 Sep 2022 19:09:59 +0200 Subject: [PATCH 009/117] add change set Signed-off-by: Vladimir Masarik --- .changeset/soft-falcons-love.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/soft-falcons-love.md diff --git a/.changeset/soft-falcons-love.md b/.changeset/soft-falcons-love.md new file mode 100644 index 0000000000..5f2d282158 --- /dev/null +++ b/.changeset/soft-falcons-love.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-user-settings': patch +--- + +Fixed settings page showing providers as logged out when the user is using more than one provider, and displayed some additional login information. From 2ecbd7cbdfca9c11269649501378629e5d5ffef6 Mon Sep 17 00:00:00 2001 From: Nick Marinelli Date: Tue, 6 Sep 2022 16:59:29 -0400 Subject: [PATCH 010/117] update for #13338 changes, and option Signed-off-by: Nick Marinelli --- .../docs/tutorials/enable-ssl-self-signed.md | 38 +++++++++++-------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/contrib/docs/tutorials/enable-ssl-self-signed.md b/contrib/docs/tutorials/enable-ssl-self-signed.md index 18d9752ba2..67c7091341 100644 --- a/contrib/docs/tutorials/enable-ssl-self-signed.md +++ b/contrib/docs/tutorials/enable-ssl-self-signed.md @@ -5,37 +5,45 @@ If you need to use an `https:` URL for local testing (i.e. if an OAuth provider ## Backend 1. Generate a self-signed certificate and key for localhost and configure your system to trust it. The application ["mkcert"](https://github.com/FiloSottile/mkcert) is a helpful tool to accomplish this. -1. Update `backend.baseUrl` in app-config.local.yaml to use an `https:` address, and copy the contents of the certificate and key files into `backend.https.certificate.cert` and `backend.https.certificate.cert`, respectively. Your app-config.local.yaml should look something like: +1. Update `backend.baseUrl` in app-config.local.yaml to use an `https:` address. +1. Add the certificate and key to `backend.https.certificate.cert` and `backend.https.certificate.cert`, respectively. ```yaml backend: baseUrl: https://localhost:7007 https: certificate: + # You may copy the contents of the file... cert: | -----BEGIN CERTIFICATE----- MIIDCTCCAfGgAwIBAgIUZ9VhZckcy690L ... -----END CERTIFICATE----- - key: | - -----BEGIN PRIVATE KEY----- - MIIEvAIBADANBgkqhkiG9w0BAQ - ... - -----END PRIVATE KEY----- + # ... or use a path + key: + $file: ./certs/localhost-key.pem ``` 1. Start the backend with `NODE_EXTRA_CA_CERTS=/absolute/path/to/cert.pem yarn start-backend` ## Frontend -Webpack will generate a self signed certificate automatically in development environments when the protocol in the `baseUrl` is `https`. Therefore, simply add this to your local config: +1. As with the backend instructions above, a trusted certificate and key are needed. +1. Update `app.baseUrl` and `backend.cors.origin` in app-config.local.yaml to use an `https:` address. +1. Add the certificate and key to `app.https.certificate.cert` and `app.https.certificate.cert`, respectively. -```yaml -app: - baseUrl: https://localhost:3000 -backend: - cors: - origin: https://localhost:3000 -``` + ```yaml + app: + baseUrl: https://localhost:3000 + https: + certificate: + cert: + $file: ./certs/localhost.pem + key: + $file: ./certs/localhost-key.pem + backend: + cors: + origin: https://localhost:3000 + ``` -and start the app with `yarn start`. As with the backend instructions above, the certificate must be trusted. +1. and start the app with `yarn start`. Depending on what plugins are in use, you may need to override additional URLs to use `https` for those endpoints to work. From 8bf6ce022348b9923f9fcc7a01cfe11de89a15ec Mon Sep 17 00:00:00 2001 From: Nick Marinelli Date: Tue, 6 Sep 2022 17:28:33 -0400 Subject: [PATCH 011/117] further vale appeasement Signed-off-by: Nick Marinelli --- contrib/docs/tutorials/enable-ssl-self-signed.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/docs/tutorials/enable-ssl-self-signed.md b/contrib/docs/tutorials/enable-ssl-self-signed.md index 67c7091341..27e0c82063 100644 --- a/contrib/docs/tutorials/enable-ssl-self-signed.md +++ b/contrib/docs/tutorials/enable-ssl-self-signed.md @@ -4,7 +4,7 @@ If you need to use an `https:` URL for local testing (i.e. if an OAuth provider ## Backend -1. Generate a self-signed certificate and key for localhost and configure your system to trust it. The application ["mkcert"](https://github.com/FiloSottile/mkcert) is a helpful tool to accomplish this. +1. Generate a self-signed certificate and key for localhost and configure your system to trust it. The application [`mkcert`](https://github.com/FiloSottile/mkcert) is a helpful tool to accomplish this. 1. Update `backend.baseUrl` in app-config.local.yaml to use an `https:` address. 1. Add the certificate and key to `backend.https.certificate.cert` and `backend.https.certificate.cert`, respectively. ```yaml From d419784c8bf7faae959ae35cf72aa1342da5616c Mon Sep 17 00:00:00 2001 From: Nick Marinelli Date: Tue, 6 Sep 2022 17:31:43 -0400 Subject: [PATCH 012/117] whitespace Signed-off-by: Nick Marinelli --- contrib/docs/tutorials/enable-ssl-self-signed.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/contrib/docs/tutorials/enable-ssl-self-signed.md b/contrib/docs/tutorials/enable-ssl-self-signed.md index 27e0c82063..80f5d36a98 100644 --- a/contrib/docs/tutorials/enable-ssl-self-signed.md +++ b/contrib/docs/tutorials/enable-ssl-self-signed.md @@ -29,7 +29,6 @@ If you need to use an `https:` URL for local testing (i.e. if an OAuth provider 1. As with the backend instructions above, a trusted certificate and key are needed. 1. Update `app.baseUrl` and `backend.cors.origin` in app-config.local.yaml to use an `https:` address. 1. Add the certificate and key to `app.https.certificate.cert` and `app.https.certificate.cert`, respectively. - ```yaml app: baseUrl: https://localhost:3000 @@ -43,7 +42,6 @@ If you need to use an `https:` URL for local testing (i.e. if an OAuth provider cors: origin: https://localhost:3000 ``` - 1. and start the app with `yarn start`. Depending on what plugins are in use, you may need to override additional URLs to use `https` for those endpoints to work. From 12943d1ade5a7658a05148d7a8a676ce98a43c40 Mon Sep 17 00:00:00 2001 From: Marcus Eide Date: Fri, 9 Sep 2022 11:16:04 +0200 Subject: [PATCH 013/117] Calculate SameSite attribute more carefully, defaulting to lax in most cases Signed-off-by: Marcus Eide --- .changeset/kind-penguins-report.md | 7 +- plugins/auth-backend/api-report.md | 3 + .../src/lib/oauth/OAuthAdapter.test.ts | 121 +++++++++++++++++- .../src/lib/oauth/OAuthAdapter.ts | 25 +++- .../src/lib/oauth/helpers.test.ts | 40 +++++- plugins/auth-backend/src/lib/oauth/helpers.ts | 11 +- plugins/auth-backend/src/providers/types.ts | 2 + 7 files changed, 193 insertions(+), 16 deletions(-) diff --git a/.changeset/kind-penguins-report.md b/.changeset/kind-penguins-report.md index 6596f727d2..9f2401491e 100644 --- a/.changeset/kind-penguins-report.md +++ b/.changeset/kind-penguins-report.md @@ -1,5 +1,8 @@ --- -'@backstage/plugin-auth-backend': patch +'@backstage/plugin-auth-backend': minor --- -Allow CookieConfigurer to optionally return the SameSite cookie attribute. Return `SameSite=None` in `defaultCookieConfigurer` for secure contexts to allow cookies to be included in third-party requests. +CookieConfigurer can optionally return the `SameSite` cookie attribute. +CookieConfigurer now requires an additional argument `appOrigin` - the origin URL of the app - which is used to calculate the `SameSite` attribute. +defaultCookieConfigurer returns the `SameSite` attribute which defaults to `Lax`. In cases where an auth-backend is running on a different domain than the App, `SameSite=None` is used - but only for secure contexts. This is so that cookies can be included in third-party requests. +OAuthAdapterOptions has been modified to require additional arguments, `baseUrl`, `cookieConfigurer` and `cookieConfig`. diff --git a/plugins/auth-backend/api-report.md b/plugins/auth-backend/api-report.md index ed3561d37c..8cb7e35e9b 100644 --- a/plugins/auth-backend/api-report.md +++ b/plugins/auth-backend/api-report.md @@ -183,6 +183,7 @@ export type CookieConfigurer = (ctx: { providerId: string; baseUrl: string; callbackUrl: string; + appOrigin: string; }) => { domain: string; path: string; @@ -283,7 +284,9 @@ export type OAuthAdapterOptions = { providerId: string; persistScopes?: boolean; appOrigin: string; + baseUrl: string; cookieConfig: ReturnType; + cookieConfigurer: CookieConfigurer; isOriginAllowed: (origin: string) => boolean; callbackUrl: string; }; diff --git a/plugins/auth-backend/src/lib/oauth/OAuthAdapter.test.ts b/plugins/auth-backend/src/lib/oauth/OAuthAdapter.test.ts index a61554b600..d59a712205 100644 --- a/plugins/auth-backend/src/lib/oauth/OAuthAdapter.test.ts +++ b/plugins/auth-backend/src/lib/oauth/OAuthAdapter.test.ts @@ -37,6 +37,10 @@ const mockResponseData = { }; describe('OAuthAdapter', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + class MyAuthProvider implements OAuthHandlers { async start() { return { @@ -58,17 +62,19 @@ describe('OAuthAdapter', () => { } } const providerInstance = new MyAuthProvider(); - const cookieConfig = { + const mockCookieConfig: ReturnType = { domain: 'example.com', path: '/auth/test-provider', secure: false, - sameSite: 'lax', - } as ReturnType; + }; + const mockCookieConfigurer = jest.fn().mockReturnValue(mockCookieConfig); const oAuthProviderOptions = { providerId: 'test-provider', appOrigin: 'http://localhost:3000', - cookieConfig, + cookieConfig: mockCookieConfig, + cookieConfigurer: mockCookieConfigurer, + baseUrl: 'http://example.com:7007', tokenIssuer: { issueToken: async () => 'my-id-token', listPublicKeys: async () => ({ keys: [] }), @@ -135,11 +141,13 @@ describe('OAuthAdapter', () => { } as unknown as express.Response; await oauthProvider.frameHandler(mockRequest, mockResponse); + expect(mockCookieConfigurer).toHaveBeenCalledTimes(1); expect(mockResponse.cookie).toHaveBeenCalledTimes(1); expect(mockResponse.cookie).toHaveBeenCalledWith( expect.stringContaining('test-provider-refresh-token'), expect.stringContaining('token'), expect.objectContaining({ + httpOnly: true, path: '/auth/test-provider', maxAge: THOUSAND_DAYS_MS, secure: false, @@ -210,6 +218,7 @@ describe('OAuthAdapter', () => { } as unknown as express.Response; await oauthProvider.frameHandler(mockHandleReq, mockHandleRes); + expect(mockCookieConfigurer).toHaveBeenCalledTimes(1); expect(mockHandleRes.cookie).toHaveBeenCalledTimes(1); expect(mockHandleRes.cookie).toHaveBeenCalledWith( 'test-provider-granted-scope', @@ -303,7 +312,7 @@ describe('OAuthAdapter', () => { }); }); - it('sets the correct cookie configuration using a callbackUrl', async () => { + it('sets the correct cookie configuration using an unsecure callbackUrl', async () => { const config = { baseUrl: 'http://domain.org/auth', appUrl: 'http://domain.org', @@ -312,7 +321,7 @@ describe('OAuthAdapter', () => { const oauthProvider = OAuthAdapter.fromConfig(config, providerInstance, { ...oAuthProviderOptions, - callbackUrl: 'https://authdomain.org/auth/test-provider/handler/frame', + callbackUrl: 'http://authdomain.org/auth/test-provider/handler/frame', }); const mockRequest = { @@ -330,14 +339,112 @@ describe('OAuthAdapter', () => { } as unknown as express.Response; await oauthProvider.start(mockRequest, mockResponse); - + expect(mockCookieConfigurer).not.toHaveBeenCalled(); expect(mockResponse.cookie).toHaveBeenCalledTimes(1); expect(mockResponse.cookie).toHaveBeenCalledWith( `${oAuthProviderOptions.providerId}-nonce`, expect.any(String), expect.objectContaining({ + httpOnly: true, domain: 'authdomain.org', path: '/auth/test-provider/handler', + secure: false, + sameSite: 'lax', + }), + ); + }); + + it('sets the correct cookie configuration using an secure callbackUrl', async () => { + const config = { + baseUrl: 'https://domain.org/auth', + appUrl: 'http://domain.org', + isOriginAllowed: () => false, + }; + + const oauthProvider = OAuthAdapter.fromConfig(config, providerInstance, { + ...oAuthProviderOptions, + callbackUrl: 'https://authdomain.org/auth/test-provider/handler/frame', + }); + + const state = { + nonce: 'nonce', + env: 'development', + }; + + const mockRequest = { + cookies: { + 'test-provider-nonce': 'nonce', + }, + query: { + state: encodeState(state), + }, + } as unknown as express.Request; + + const mockResponse = { + cookie: jest.fn().mockReturnThis(), + setHeader: jest.fn().mockReturnThis(), + end: jest.fn().mockReturnThis(), + } as unknown as express.Response; + + await oauthProvider.frameHandler(mockRequest, mockResponse); + expect(mockCookieConfigurer).not.toHaveBeenCalled(); + expect(mockResponse.cookie).toHaveBeenCalledTimes(1); + expect(mockResponse.cookie).toHaveBeenCalledWith( + expect.stringContaining('test-provider-refresh-token'), + expect.stringContaining('token'), + expect.objectContaining({ + httpOnly: true, + domain: 'authdomain.org', + path: '/auth/test-provider', + secure: true, + sameSite: 'none', + }), + ); + }); + + it('sets the correct cookie configuration using state', async () => { + const config = { + baseUrl: 'https://domain.org/auth', + appUrl: 'http://domain.org', + isOriginAllowed: () => true, + }; + + const oauthProvider = OAuthAdapter.fromConfig(config, providerInstance, { + ...oAuthProviderOptions, + callbackUrl: 'https://domain.org/auth/test-provider/handler/frame', + }); + + const state = { + nonce: 'nonce', + env: 'development', + origin: 'http://other.domain', + }; + + const mockRequest = { + cookies: { + 'test-provider-nonce': 'nonce', + }, + query: { + state: encodeState(state), + }, + } as unknown as express.Request; + + const mockResponse = { + cookie: jest.fn().mockReturnThis(), + setHeader: jest.fn().mockReturnThis(), + end: jest.fn().mockReturnThis(), + } as unknown as express.Response; + + await oauthProvider.frameHandler(mockRequest, mockResponse); + expect(mockCookieConfigurer).not.toHaveBeenCalled(); + expect(mockResponse.cookie).toHaveBeenCalledTimes(1); + expect(mockResponse.cookie).toHaveBeenCalledWith( + expect.stringContaining('test-provider-refresh-token'), + expect.stringContaining('token'), + expect.objectContaining({ + httpOnly: true, + domain: 'domain.org', + path: '/auth/test-provider', secure: true, sameSite: 'none', }), diff --git a/plugins/auth-backend/src/lib/oauth/OAuthAdapter.ts b/plugins/auth-backend/src/lib/oauth/OAuthAdapter.ts index c021104010..64dc4f70e3 100644 --- a/plugins/auth-backend/src/lib/oauth/OAuthAdapter.ts +++ b/plugins/auth-backend/src/lib/oauth/OAuthAdapter.ts @@ -50,7 +50,9 @@ export type OAuthAdapterOptions = { providerId: string; persistScopes?: boolean; appOrigin: string; + baseUrl: string; cookieConfig: ReturnType; + cookieConfigurer: CookieConfigurer; isOriginAllowed: (origin: string) => boolean; callbackUrl: string; }; @@ -65,24 +67,28 @@ export class OAuthAdapter implements AuthProviderRouteHandlers { 'providerId' | 'persistScopes' | 'callbackUrl' >, ): OAuthAdapter { - const { origin: appOrigin } = new URL(config.appUrl); + const { appUrl, baseUrl, isOriginAllowed } = config; + const { origin: appOrigin } = new URL(appUrl); const cookieConfigurer = config.cookieConfigurer ?? defaultCookieConfigurer; const cookieConfig = cookieConfigurer({ providerId: options.providerId, baseUrl: config.baseUrl, callbackUrl: options.callbackUrl, + appOrigin, }); return new OAuthAdapter(handlers, { ...options, appOrigin, + baseUrl, cookieConfig, - isOriginAllowed: config.isOriginAllowed, + cookieConfigurer, + isOriginAllowed, }); } - private readonly baseCookieOptions: CookieOptions; + private baseCookieOptions: CookieOptions; constructor( private readonly handlers: OAuthHandlers, @@ -90,6 +96,7 @@ export class OAuthAdapter implements AuthProviderRouteHandlers { ) { this.baseCookieOptions = { httpOnly: true, + sameSite: 'lax', ...this.options.cookieConfig, }; } @@ -147,6 +154,18 @@ export class OAuthAdapter implements AuthProviderRouteHandlers { } } + // Update cookie options to reflect any changes for the appOrigin + const updatedCookieOptions = this.options.cookieConfigurer({ + providerId: this.options.providerId, + baseUrl: this.options.baseUrl, + callbackUrl: this.options.callbackUrl, + appOrigin, + }); + this.baseCookieOptions = { + ...this.baseCookieOptions, + ...updatedCookieOptions, + }; + // verify nonce cookie and state cookie on callback verifyNonce(req, this.options.providerId); diff --git a/plugins/auth-backend/src/lib/oauth/helpers.test.ts b/plugins/auth-backend/src/lib/oauth/helpers.test.ts index 2202fa60ea..58a3dcab05 100644 --- a/plugins/auth-backend/src/lib/oauth/helpers.test.ts +++ b/plugins/auth-backend/src/lib/oauth/helpers.test.ts @@ -117,6 +117,7 @@ describe('OAuthProvider Utils', () => { baseUrl: '', providerId: 'test-provider', callbackUrl: 'http://domain.org/auth', + appOrigin: 'http://domain.org', }), ).toMatchObject({ domain: 'domain.org', @@ -131,6 +132,7 @@ describe('OAuthProvider Utils', () => { baseUrl: '', providerId: 'test-provider', callbackUrl: 'http://domain.org/auth/test-provider/handler/frame', + appOrigin: 'http://domain.org', }), ).toMatchObject({ domain: 'domain.org', @@ -145,35 +147,67 @@ describe('OAuthProvider Utils', () => { baseUrl: '', providerId: 'test-provider', callbackUrl: 'https://domain.org/auth', + appOrigin: 'http://domain.org', }), ).toMatchObject({ secure: true, }); }); - it('should set sameSite to none for https', () => { + it('should set sameSite to lax for https on the same domain', () => { expect( defaultCookieConfigurer({ baseUrl: '', providerId: 'test-provider', callbackUrl: 'https://domain.org/auth', + appOrigin: 'http://domain.org', }), ).toMatchObject({ - sameSite: 'none', + sameSite: 'lax', secure: true, }); }); - it('should set sameSite to lax for http', () => { + + it('should set sameSite to lax for http on the same domain', () => { expect( defaultCookieConfigurer({ baseUrl: '', providerId: 'test-provider', callbackUrl: 'http://domain.org/auth', + appOrigin: 'http://domain.org', }), ).toMatchObject({ sameSite: 'lax', secure: false, }); }); + + it('should set sameSite to lax if not secure and on different domains', () => { + expect( + defaultCookieConfigurer({ + baseUrl: '', + providerId: 'test-provider', + callbackUrl: 'http://authdomain.org/auth', + appOrigin: 'http://domain.org', + }), + ).toMatchObject({ + sameSite: 'lax', + secure: false, + }); + }); + + it('should set sameSite to none if secure and on different domains', () => { + expect( + defaultCookieConfigurer({ + baseUrl: '', + providerId: 'test-provider', + callbackUrl: 'https://authdomain.org/auth', + appOrigin: 'http://domain.org', + }), + ).toMatchObject({ + sameSite: 'none', + secure: true, + }); + }); }); }); diff --git a/plugins/auth-backend/src/lib/oauth/helpers.ts b/plugins/auth-backend/src/lib/oauth/helpers.ts index b18db59ca7..2b4e50b477 100644 --- a/plugins/auth-backend/src/lib/oauth/helpers.ts +++ b/plugins/auth-backend/src/lib/oauth/helpers.ts @@ -65,10 +65,19 @@ export const verifyNonce = (req: express.Request, providerId: string) => { export const defaultCookieConfigurer: CookieConfigurer = ({ callbackUrl, providerId, + appOrigin, }) => { const { hostname: domain, pathname, protocol } = new URL(callbackUrl); const secure = protocol === 'https:'; - const sameSite = secure ? 'none' : 'lax'; + + // For situations where the auth-backend is running on a + // different domain than the app, we set the SameSite attribute + // to 'none' to allow third-party access to the cookie, but + // only if it's in a secure context (https). + let sameSite: ReturnType['sameSite'] = 'lax'; + if (new URL(appOrigin).hostname !== domain && secure) { + sameSite = 'none'; + } // If the provider supports callbackUrls, the pathname will // contain the complete path to the frame handler so we need diff --git a/plugins/auth-backend/src/providers/types.ts b/plugins/auth-backend/src/providers/types.ts index f22e6b0492..1459cff484 100644 --- a/plugins/auth-backend/src/providers/types.ts +++ b/plugins/auth-backend/src/providers/types.ts @@ -100,6 +100,8 @@ export type CookieConfigurer = (ctx: { baseUrl: string; /** The configured callback URL of the auth provider */ callbackUrl: string; + /** The origin URL of the app */ + appOrigin: string; }) => { domain: string; path: string; From bc329bab90ebb1e409888069155e4bcde1111275 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 9 Sep 2022 11:17:47 +0000 Subject: [PATCH 014/117] fix(deps): update dependency @codemirror/view to v6.2.3 Signed-off-by: Renovate Bot --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index b1f3cc567f..dc5dd6dfee 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7814,13 +7814,13 @@ __metadata: linkType: hard "@codemirror/view@npm:^6.0.0": - version: 6.2.2 - resolution: "@codemirror/view@npm:6.2.2" + version: 6.2.3 + resolution: "@codemirror/view@npm:6.2.3" dependencies: "@codemirror/state": ^6.0.0 style-mod: ^4.0.0 w3c-keyname: ^2.2.4 - checksum: 6983c51362367d3885961fa233d302e75dfb103cd83ec78e6a044c2420e61466b5e94cfb73a9e840b04765577e8bbb269eb1ad45fa21abd28efda4ae780791db + checksum: 93d6f159c49ffd9276e9b6ba28cef2c41934be7eb68aa49acf1971dede97ee2684bde6daeb7494da8e15f2ef937933c3fa076253127b230c6996db0fe7a79ef2 languageName: node linkType: hard From 01e9214ab23cb64b1d62b9bee29b630a56f596b8 Mon Sep 17 00:00:00 2001 From: Vladimir Masarik Date: Sun, 11 Sep 2022 15:34:24 +0200 Subject: [PATCH 015/117] Chang changeset to minor Signed-off-by: Vladimir Masarik --- .changeset/soft-falcons-love.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.changeset/soft-falcons-love.md b/.changeset/soft-falcons-love.md index 5f2d282158..9fbc8f1419 100644 --- a/.changeset/soft-falcons-love.md +++ b/.changeset/soft-falcons-love.md @@ -1,5 +1,5 @@ --- -'@backstage/plugin-user-settings': patch +'@backstage/plugin-user-settings': minor --- -Fixed settings page showing providers as logged out when the user is using more than one provider, and displayed some additional login information. +**BREAKING** Fixed settings page showing providers as logged out when the user is using more than one provider, and displayed some additional login information. From 2282c9936ceed5b34efbd6a0993e1a8a38ca0b16 Mon Sep 17 00:00:00 2001 From: Vladimir Masarik Date: Sun, 11 Sep 2022 15:34:35 +0200 Subject: [PATCH 016/117] Generate API report Signed-off-by: Vladimir Masarik --- plugins/user-settings/api-report.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/user-settings/api-report.md b/plugins/user-settings/api-report.md index bc5c3a9c70..e2f3d46e24 100644 --- a/plugins/user-settings/api-report.md +++ b/plugins/user-settings/api-report.md @@ -10,6 +10,7 @@ import { BackstagePlugin } from '@backstage/core-plugin-api'; import { BackstageUserIdentity } from '@backstage/core-plugin-api'; import { IconComponent } from '@backstage/core-plugin-api'; import { ProfileInfo } from '@backstage/core-plugin-api'; +import { ProfileInfoApi } from '@backstage/core-plugin-api'; import { PropsWithChildren } from 'react'; import { RouteRef } from '@backstage/core-plugin-api'; import { SessionApi } from '@backstage/core-plugin-api'; @@ -24,7 +25,7 @@ export const ProviderSettingsItem: (props: { title: string; description: string; icon: IconComponent; - apiRef: ApiRef; + apiRef: ApiRef; }) => JSX.Element; // @public (undocumented) From cc538eccc20eca3102ad0332dda8ef97cafb117c Mon Sep 17 00:00:00 2001 From: Vladimir Masarik Date: Sun, 11 Sep 2022 15:34:56 +0200 Subject: [PATCH 017/117] Dont set to empty profile Signed-off-by: Vladimir Masarik --- .../src/components/AuthProviders/ProviderSettingsItem.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/user-settings/src/components/AuthProviders/ProviderSettingsItem.tsx b/plugins/user-settings/src/components/AuthProviders/ProviderSettingsItem.tsx index ef31e70d81..b5d056eed2 100644 --- a/plugins/user-settings/src/components/AuthProviders/ProviderSettingsItem.tsx +++ b/plugins/user-settings/src/components/AuthProviders/ProviderSettingsItem.tsx @@ -62,10 +62,10 @@ export const ProviderSettingsItem = (props: { .then((profileResponse: ProfileInfo | undefined) => { if (sessionState === SessionState.SignedIn) { setSignedIn(true); - } else { - setSignedIn(profileResponse !== undefined); } - setProfile(profileResponse ?? {}); + if (profileResponse) { + setProfile(profileResponse); + } }); } }); From 05f22193c5a57796079890952624b55ec582ce80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Tunkl?= Date: Tue, 13 Sep 2022 13:46:32 +0200 Subject: [PATCH 018/117] Update of EntityPickers to support flags which control omit of default namespace in result. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tomáš Tunkl --- .changeset/selfish-turkeys-exist.md | 5 +++++ plugins/scaffolder/api-report.md | 6 ++++++ .../src/components/fields/EntityPicker/EntityPicker.tsx | 4 +++- .../fields/OwnedEntityPicker/OwnedEntityPicker.tsx | 4 +++- .../src/components/fields/OwnerPicker/OwnerPicker.tsx | 2 ++ 5 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 .changeset/selfish-turkeys-exist.md diff --git a/.changeset/selfish-turkeys-exist.md b/.changeset/selfish-turkeys-exist.md new file mode 100644 index 0000000000..f99b92d976 --- /dev/null +++ b/.changeset/selfish-turkeys-exist.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder': minor +--- + +EntityPickers now support flags to control ommit of default namespace diff --git a/plugins/scaffolder/api-report.md b/plugins/scaffolder/api-report.md index 9541098934..bc7a277ddb 100644 --- a/plugins/scaffolder/api-report.md +++ b/plugins/scaffolder/api-report.md @@ -66,6 +66,8 @@ export interface EntityPickerUiOptions { allowedKinds?: string[]; // (undocumented) defaultKind?: string; + // (undocumented) + defaultNamespace?: string | false; } // @public @@ -163,6 +165,8 @@ export interface OwnedEntityPickerUiOptions { allowedKinds?: string[]; // (undocumented) defaultKind?: string; + // (undocumented) + defaultNamespace?: string | false; } // @public @@ -177,6 +181,8 @@ export interface OwnerPickerUiOptions { allowArbitraryValues?: boolean; // (undocumented) allowedKinds?: string[]; + // (undocumented) + defaultNamespace?: string | false; } // @public diff --git a/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx b/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx index 2aa72550c3..e7883a4721 100644 --- a/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx +++ b/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx @@ -35,6 +35,7 @@ export interface EntityPickerUiOptions { allowedKinds?: string[]; defaultKind?: string; allowArbitraryValues?: boolean; + defaultNamespace?: string | false; } /** @@ -57,6 +58,7 @@ export const EntityPicker = ( } = props; const allowedKinds = uiSchema['ui:options']?.allowedKinds; const defaultKind = uiSchema['ui:options']?.defaultKind; + const defaultNamespace = uiSchema['ui:options']?.defaultNamespace; const catalogApi = useApi(catalogApiRef); @@ -67,7 +69,7 @@ export const EntityPicker = ( ); const entityRefs = entities?.items.map(e => - humanizeEntityRef(e, { defaultKind }), + humanizeEntityRef(e, { defaultKind, defaultNamespace }), ); const onSelect = useCallback( diff --git a/plugins/scaffolder/src/components/fields/OwnedEntityPicker/OwnedEntityPicker.tsx b/plugins/scaffolder/src/components/fields/OwnedEntityPicker/OwnedEntityPicker.tsx index a280ebad6a..2446883a86 100644 --- a/plugins/scaffolder/src/components/fields/OwnedEntityPicker/OwnedEntityPicker.tsx +++ b/plugins/scaffolder/src/components/fields/OwnedEntityPicker/OwnedEntityPicker.tsx @@ -38,6 +38,7 @@ export interface OwnedEntityPickerUiOptions { allowedKinds?: string[]; defaultKind?: string; allowArbitraryValues?: boolean; + defaultNamespace?: string | false; } /** @@ -61,12 +62,13 @@ export const OwnedEntityPicker = ( const allowedKinds = uiSchema['ui:options']?.allowedKinds; const defaultKind = uiSchema['ui:options']?.defaultKind; + const defaultNamespace = uiSchema['ui:options']?.defaultNamespace; const allowArbitraryValues = uiSchema['ui:options']?.allowArbitraryValues ?? true; const { ownedEntities, loading } = useOwnedEntities(allowedKinds); const entityRefs = ownedEntities?.items - .map(e => humanizeEntityRef(e, { defaultKind })) + .map(e => humanizeEntityRef(e, { defaultKind, defaultNamespace })) .filter(n => n); const onSelect = (_: any, value: string | null) => { diff --git a/plugins/scaffolder/src/components/fields/OwnerPicker/OwnerPicker.tsx b/plugins/scaffolder/src/components/fields/OwnerPicker/OwnerPicker.tsx index 10425c17ff..1cb95c4d3e 100644 --- a/plugins/scaffolder/src/components/fields/OwnerPicker/OwnerPicker.tsx +++ b/plugins/scaffolder/src/components/fields/OwnerPicker/OwnerPicker.tsx @@ -26,6 +26,7 @@ import { FieldExtensionComponentProps } from '../../../extensions'; export interface OwnerPickerUiOptions { allowedKinds?: string[]; allowArbitraryValues?: boolean; + defaultNamespace?: string | false; } /** @@ -53,6 +54,7 @@ export const OwnerPicker = ( defaultKind: 'Group', allowArbitraryValues: uiSchema['ui:options']?.allowArbitraryValues ?? true, + defaultNamespace: uiSchema['ui:options']?.defaultNamespace ?? '', }, }; From aa49202de03e9e5591f9bd5d74ea9e6316aa9698 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Tunkl?= Date: Tue, 13 Sep 2022 14:17:49 +0200 Subject: [PATCH 019/117] Update of EntityPickers to support flags which control omit of default namespace in result. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tomáš Tunkl --- .changeset/selfish-turkeys-exist.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.changeset/selfish-turkeys-exist.md b/.changeset/selfish-turkeys-exist.md index f99b92d976..3530b3a864 100644 --- a/.changeset/selfish-turkeys-exist.md +++ b/.changeset/selfish-turkeys-exist.md @@ -2,4 +2,5 @@ '@backstage/plugin-scaffolder': minor --- -EntityPickers now support flags to control ommit of default namespace +EntityPickers now support flags to control when to include default namespace +in result From b6de0abf85cfc7c1c75626466f1242e665f12cd7 Mon Sep 17 00:00:00 2001 From: Taras Date: Thu, 15 Sep 2022 09:15:57 -0400 Subject: [PATCH 020/117] Add failing test Signed-off-by: Taras --- .../modules/core/PlaceholderProcessor.test.ts | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/plugins/catalog-backend/src/modules/core/PlaceholderProcessor.test.ts b/plugins/catalog-backend/src/modules/core/PlaceholderProcessor.test.ts index 8fd8114760..e0f7d81968 100644 --- a/plugins/catalog-backend/src/modules/core/PlaceholderProcessor.test.ts +++ b/plugins/catalog-backend/src/modules/core/PlaceholderProcessor.test.ts @@ -387,6 +387,44 @@ describe('PlaceholderProcessor', () => { key: 'url:http://example.com/path-to-file.json', }); }); + + it('accepts arbitrary object as value', async () => { + read.mockResolvedValue( + Buffer.from(JSON.stringify({ a: ['b', 7] }), 'utf-8'), + ); + + const processor = new PlaceholderProcessor({ + resolvers: { + merge: async ({ value }) => { + console.log({ value }); + if (value instanceof Object) { + return { merged: 'value', ...value }; + } + return value; + }, + }, + reader, + integrations, + }); + + const result = await processor.preProcessEntity( + { + apiVersion: 'a', + kind: 'k', + metadata: { name: 'n' }, + spec: { a: { $merge: { passed: 'value' } } }, + }, + { type: 'fake', target: 'http://example.com' }, + () => {}, + ); + + expect(result).toMatchObject({ + apiVersion: 'a', + kind: 'k', + metadata: { name: 'n' }, + spec: { a: { passed: 'value', merged: 'value' } }, + }); + }); }); describe('yamlPlaceholderResolver', () => { From f2f2df9a731491a55bdf530244f21e706af88866 Mon Sep 17 00:00:00 2001 From: Taras Date: Thu, 15 Sep 2022 09:23:07 -0400 Subject: [PATCH 021/117] Allow value to be non-string Signed-off-by: Taras --- .../modules/core/PlaceholderProcessor.test.ts | 1 - .../src/modules/core/PlaceholderProcessor.ts | 16 ++++++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/plugins/catalog-backend/src/modules/core/PlaceholderProcessor.test.ts b/plugins/catalog-backend/src/modules/core/PlaceholderProcessor.test.ts index e0f7d81968..aa0d6c4766 100644 --- a/plugins/catalog-backend/src/modules/core/PlaceholderProcessor.test.ts +++ b/plugins/catalog-backend/src/modules/core/PlaceholderProcessor.test.ts @@ -396,7 +396,6 @@ describe('PlaceholderProcessor', () => { const processor = new PlaceholderProcessor({ resolvers: { merge: async ({ value }) => { - console.log({ value }); if (value instanceof Object) { return { merged: 'value', ...value }; } diff --git a/plugins/catalog-backend/src/modules/core/PlaceholderProcessor.ts b/plugins/catalog-backend/src/modules/core/PlaceholderProcessor.ts index 39c9dc59ec..cf5679058d 100644 --- a/plugins/catalog-backend/src/modules/core/PlaceholderProcessor.ts +++ b/plugins/catalog-backend/src/modules/core/PlaceholderProcessor.ts @@ -111,15 +111,19 @@ export class PlaceholderProcessor implements CatalogProcessor { const resolverValue = data[keys[0]]; const resolver = this.options.resolvers[resolverKey]; - if (!resolver || typeof resolverValue !== 'string') { - // If there was no such placeholder resolver or if the value was not a - // string, we err on the side of safety and assume that this is - // something that's best left alone. For example, if the input contains - // JSONSchema, there may be "$ref": "#/definitions/node" nodes in the - // document. + if (!resolver) { + // If there was no such placeholder resolver, we err on the side of safety + // and assume that this is something that's best left alone. For example, if + // the input contains JSONSchema, there may be "$ref": "#/definitions/node" + // nodes in the document. return [data, false]; } + // if (typeof resolverValue !== 'string') { + // treat it as an argument to resolver function + // TODO: make this recursive, but it should resolve from bottom up + // } + const read = async (url: string): Promise => { if (this.options.reader.readUrl) { const response = await this.options.reader.readUrl(url); From 63296ebcd4191c58d11fb168c953440c1871bfd5 Mon Sep 17 00:00:00 2001 From: Taras Date: Thu, 15 Sep 2022 09:44:14 -0400 Subject: [PATCH 022/117] Added changeset Signed-off-by: Taras --- .changeset/rude-bulldogs-sleep.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/rude-bulldogs-sleep.md diff --git a/.changeset/rude-bulldogs-sleep.md b/.changeset/rude-bulldogs-sleep.md new file mode 100644 index 0000000000..8a2a0590b3 --- /dev/null +++ b/.changeset/rude-bulldogs-sleep.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend': patch +--- + +Allow Placeholder value to be any value, not only string. From 95376dd679e66df3c2b464e8b62cb018a8d859a5 Mon Sep 17 00:00:00 2001 From: Taras Date: Thu, 15 Sep 2022 14:50:43 -0400 Subject: [PATCH 023/117] Remove unnecessary mock Signed-off-by: Taras --- .../src/modules/core/PlaceholderProcessor.test.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/plugins/catalog-backend/src/modules/core/PlaceholderProcessor.test.ts b/plugins/catalog-backend/src/modules/core/PlaceholderProcessor.test.ts index aa0d6c4766..105ab03d90 100644 --- a/plugins/catalog-backend/src/modules/core/PlaceholderProcessor.test.ts +++ b/plugins/catalog-backend/src/modules/core/PlaceholderProcessor.test.ts @@ -389,10 +389,6 @@ describe('PlaceholderProcessor', () => { }); it('accepts arbitrary object as value', async () => { - read.mockResolvedValue( - Buffer.from(JSON.stringify({ a: ['b', 7] }), 'utf-8'), - ); - const processor = new PlaceholderProcessor({ resolvers: { merge: async ({ value }) => { From 06bd9581778ad435e9f39c20ed54af9d9be4a8ec Mon Sep 17 00:00:00 2001 From: Taras Date: Thu, 15 Sep 2022 15:08:56 -0400 Subject: [PATCH 024/117] Add some minimal documentation on how to use the PlaceholderProcessor Signed-off-by: Taras --- .../software-templates/writing-templates.md | 93 +++++++++++++++++++ 1 file changed, 93 insertions(+) diff --git a/docs/features/software-templates/writing-templates.md b/docs/features/software-templates/writing-templates.md index a1cd50f271..2ce7c27bc1 100644 --- a/docs/features/software-templates/writing-templates.md +++ b/docs/features/software-templates/writing-templates.md @@ -581,3 +581,96 @@ output things. You can grab that output using `steps.$stepId.output.$property`. You can read more about all the `inputs` and `outputs` defined in the actions in code part of the `JSONSchema`, or you can read more about our [built in actions](./builtin-actions.md). + +## Creating reusable templates + +We can use the PlaceholderProcessor to create reusable portions of a template. A placeholder is a property on an entity object that starts with `$`. Backstage has some built in placeholders including `$text`, `$json` and `$yaml`. Each placeholder has a resolver. A resolver is an asyncronous function that receives the value assigned to the placeholder. A resolver is expected to return a promise that resolves to a value. The resolved value will replace the object where the placeholder was defined. + +Let's say we want to reuse a portion of the template that asks user to specify a host name and we want to be able to add other fields to that form step. + +```yaml +apiVersion: scaffolder.backstage.io/v1beta3 +kind: Template +metadata: + name: v1beta3-demo + title: Microservice example + description: scaffolder v1beta3 template demo +spec: + owner: backstage/techdocs-core + type: service + parameters: + - title: Specify a host + parameters: + name: + title: Hostname + type: string + description: Specify host name +``` + +Our placeholder is going to be called `$specifyHostname`. We'd use it like this, + +```yaml +apiVersion: scaffolder.backstage.io/v1beta3 +kind: Template +metadata: + name: v1beta3-demo + title: Microservice example + description: scaffolder v1beta3 template demo +spec: + owner: backstage/techdocs-core + type: service + parameters: + - $specifyHostname: + domainExt: + name: Domain extension + type: string + description: Specify domain extension like .com, .ca, .co.uk or something else. +``` + +The result after the placeholder is applied will look like this, + +```yaml +apiVersion: scaffolder.backstage.io/v1beta3 +kind: Template +metadata: + name: v1beta3-demo + title: Microservice example + description: scaffolder v1beta3 template demo +spec: + owner: backstage/techdocs-core + type: service + parameters: + - title: Specify a host + parameters: + name: + title: Hostname + type: string + description: Specify host name + domainExt: + name: Domain extension + type: string + description: Specify domain extension like .com, .ca, .co.uk or something else. +``` + +To implement this, you have to modify the catalog plugin to create a `specifyHostname` resolver. In `/packages/backend/src/plugins/catalog.ts`. Add the following code, + +```ts +const builder = await CatalogBuilder.create(env); + +builder.setPlaceholderResolver( + 'specifyHostname', + async specifyHostnameResolver({ value }) => { + return { + "title": "Specify a host", + "parameters": { + "name": { + "title": "Hostname", + "type": "string", + "description": "Specify host name" + }, + ...value + } + } + }, + );` +``` From 04c50e297d8a0e4fb0ad78fe9f5912ce1794f543 Mon Sep 17 00:00:00 2001 From: Marcus Eide Date: Fri, 16 Sep 2022 09:57:44 +0200 Subject: [PATCH 025/117] Resolve cookie configuration per request Signed-off-by: Marcus Eide --- .changeset/kind-penguins-report.md | 4 +- plugins/auth-backend/api-report.md | 1 - .../src/lib/oauth/OAuthAdapter.test.ts | 164 ++++++++++++++++-- .../src/lib/oauth/OAuthAdapter.ts | 74 ++++---- 4 files changed, 200 insertions(+), 43 deletions(-) diff --git a/.changeset/kind-penguins-report.md b/.changeset/kind-penguins-report.md index 9f2401491e..4023ea5976 100644 --- a/.changeset/kind-penguins-report.md +++ b/.changeset/kind-penguins-report.md @@ -5,4 +5,6 @@ CookieConfigurer can optionally return the `SameSite` cookie attribute. CookieConfigurer now requires an additional argument `appOrigin` - the origin URL of the app - which is used to calculate the `SameSite` attribute. defaultCookieConfigurer returns the `SameSite` attribute which defaults to `Lax`. In cases where an auth-backend is running on a different domain than the App, `SameSite=None` is used - but only for secure contexts. This is so that cookies can be included in third-party requests. -OAuthAdapterOptions has been modified to require additional arguments, `baseUrl`, `cookieConfigurer` and `cookieConfig`. + +OAuthAdapterOptions has been modified to require additional arguments, `baseUrl`, and `cookieConfigurer`. +OAuthAdapter now resolves cookie configuration using its supplied CookieConfigurer for each request to make sure that the proper attributes always are set. diff --git a/plugins/auth-backend/api-report.md b/plugins/auth-backend/api-report.md index 8cb7e35e9b..f4e8415266 100644 --- a/plugins/auth-backend/api-report.md +++ b/plugins/auth-backend/api-report.md @@ -285,7 +285,6 @@ export type OAuthAdapterOptions = { persistScopes?: boolean; appOrigin: string; baseUrl: string; - cookieConfig: ReturnType; cookieConfigurer: CookieConfigurer; isOriginAllowed: (origin: string) => boolean; callbackUrl: string; diff --git a/plugins/auth-backend/src/lib/oauth/OAuthAdapter.test.ts b/plugins/auth-backend/src/lib/oauth/OAuthAdapter.test.ts index d59a712205..6521519808 100644 --- a/plugins/auth-backend/src/lib/oauth/OAuthAdapter.test.ts +++ b/plugins/auth-backend/src/lib/oauth/OAuthAdapter.test.ts @@ -63,7 +63,7 @@ describe('OAuthAdapter', () => { } const providerInstance = new MyAuthProvider(); const mockCookieConfig: ReturnType = { - domain: 'example.com', + domain: 'domain.org', path: '/auth/test-provider', secure: false, }; @@ -72,15 +72,14 @@ describe('OAuthAdapter', () => { const oAuthProviderOptions = { providerId: 'test-provider', appOrigin: 'http://localhost:3000', - cookieConfig: mockCookieConfig, + baseUrl: 'http://domain.org/auth', cookieConfigurer: mockCookieConfigurer, - baseUrl: 'http://example.com:7007', tokenIssuer: { issueToken: async () => 'my-id-token', listPublicKeys: async () => ({ keys: [] }), }, isOriginAllowed: () => false, - callbackUrl: 'http://example.com:7007/auth/test-provider/frame/handler', + callbackUrl: 'http://domain.org/auth/test-provider/handler/frame', }; it('sets the correct headers in start', async () => { @@ -108,7 +107,14 @@ describe('OAuthAdapter', () => { expect(mockResponse.cookie).toHaveBeenCalledWith( `${oAuthProviderOptions.providerId}-nonce`, expect.any(String), - expect.objectContaining({ maxAge: TEN_MINUTES_MS }), + expect.objectContaining({ + httpOnly: true, + path: '/auth/test-provider/handler', + maxAge: TEN_MINUTES_MS, + domain: 'domain.org', + sameSite: 'lax', + secure: false, + }), ); // redirect checks expect(mockResponse.setHeader).toHaveBeenCalledTimes(2); @@ -150,6 +156,7 @@ describe('OAuthAdapter', () => { httpOnly: true, path: '/auth/test-provider', maxAge: THOUSAND_DAYS_MS, + domain: 'domain.org', secure: false, sameSite: 'lax', }), @@ -218,14 +225,17 @@ describe('OAuthAdapter', () => { } as unknown as express.Response; await oauthProvider.frameHandler(mockHandleReq, mockHandleRes); - expect(mockCookieConfigurer).toHaveBeenCalledTimes(1); expect(mockHandleRes.cookie).toHaveBeenCalledTimes(1); expect(mockHandleRes.cookie).toHaveBeenCalledWith( 'test-provider-granted-scope', 'user', expect.objectContaining({ + httpOnly: true, path: '/auth/test-provider', maxAge: THOUSAND_DAYS_MS, + domain: 'domain.org', + secure: false, + sameSite: 'lax', }), ); @@ -260,6 +270,7 @@ describe('OAuthAdapter', () => { const mockRequest = { header: () => 'XMLHttpRequest', + get: jest.fn(), } as unknown as express.Request; const mockResponse = { @@ -269,6 +280,7 @@ describe('OAuthAdapter', () => { } as unknown as express.Response; await oauthProvider.logout(mockRequest, mockResponse); + expect(mockRequest.get).toHaveBeenCalledTimes(1); expect(mockResponse.cookie).toHaveBeenCalledTimes(1); expect(mockResponse.cookie).toHaveBeenCalledWith( expect.stringContaining('test-provider-refresh-token'), @@ -312,7 +324,46 @@ describe('OAuthAdapter', () => { }); }); - it('sets the correct cookie configuration using an unsecure callbackUrl', async () => { + it('sets new access-token when old cookie exists', async () => { + const oauthProvider = new OAuthAdapter(providerInstance, { + ...oAuthProviderOptions, + isOriginAllowed: () => false, + }); + + const mockRequest = { + header: () => 'XMLHttpRequest', + cookies: { + 'test-provider-refresh-token': 'old-token', + }, + query: {}, + get: jest.fn(), + } as unknown as express.Request; + + const mockResponse = { + json: jest.fn().mockReturnThis(), + status: jest.fn().mockReturnThis(), + cookie: jest.fn().mockReturnThis(), + } as unknown as express.Response; + + await oauthProvider.refresh(mockRequest, mockResponse); + expect(mockRequest.get).toHaveBeenCalledTimes(1); + expect(mockCookieConfigurer).toHaveBeenCalledTimes(1); + expect(mockResponse.cookie).toHaveBeenCalledTimes(1); + expect(mockResponse.cookie).toHaveBeenCalledWith( + 'test-provider-refresh-token', + 'token', + expect.objectContaining({ + httpOnly: true, + path: '/auth/test-provider', + maxAge: THOUSAND_DAYS_MS, + domain: 'domain.org', + secure: false, + sameSite: 'lax', + }), + ); + }); + + it('sets the correct nonce cookie configuration', async () => { const config = { baseUrl: 'http://domain.org/auth', appUrl: 'http://domain.org', @@ -321,7 +372,6 @@ describe('OAuthAdapter', () => { const oauthProvider = OAuthAdapter.fromConfig(config, providerInstance, { ...oAuthProviderOptions, - callbackUrl: 'http://authdomain.org/auth/test-provider/handler/frame', }); const mockRequest = { @@ -346,7 +396,8 @@ describe('OAuthAdapter', () => { expect.any(String), expect.objectContaining({ httpOnly: true, - domain: 'authdomain.org', + domain: 'domain.org', + maxAge: TEN_MINUTES_MS, path: '/auth/test-provider/handler', secure: false, sameSite: 'lax', @@ -361,6 +412,54 @@ describe('OAuthAdapter', () => { isOriginAllowed: () => false, }; + const oauthProvider = OAuthAdapter.fromConfig(config, providerInstance, { + ...oAuthProviderOptions, + callbackUrl: 'https://domain.org/auth/test-provider/handler/frame', + }); + + const state = { + nonce: 'nonce', + env: 'development', + }; + + const mockRequest = { + cookies: { + 'test-provider-nonce': 'nonce', + }, + query: { + state: encodeState(state), + }, + } as unknown as express.Request; + + const mockResponse = { + cookie: jest.fn().mockReturnThis(), + setHeader: jest.fn().mockReturnThis(), + end: jest.fn().mockReturnThis(), + } as unknown as express.Response; + + await oauthProvider.frameHandler(mockRequest, mockResponse); + expect(mockCookieConfigurer).not.toHaveBeenCalled(); + expect(mockResponse.cookie).toHaveBeenCalledTimes(1); + expect(mockResponse.cookie).toHaveBeenCalledWith( + expect.stringContaining('test-provider-refresh-token'), + expect.stringContaining('token'), + expect.objectContaining({ + httpOnly: true, + domain: 'domain.org', + path: '/auth/test-provider', + secure: true, + sameSite: 'lax', + }), + ); + }); + + it('sets the correct cookie configuration when on different domains and secure', async () => { + const config = { + baseUrl: 'https://domain.org/auth', + appUrl: 'http://domain.org', + isOriginAllowed: () => false, + }; + const oauthProvider = OAuthAdapter.fromConfig(config, providerInstance, { ...oAuthProviderOptions, callbackUrl: 'https://authdomain.org/auth/test-provider/handler/frame', @@ -402,7 +501,7 @@ describe('OAuthAdapter', () => { ); }); - it('sets the correct cookie configuration using state', async () => { + it('sets the correct cookie configuration using origin from state', async () => { const config = { baseUrl: 'https://domain.org/auth', appUrl: 'http://domain.org', @@ -450,4 +549,49 @@ describe('OAuthAdapter', () => { }), ); }); + + it('sets the correct cookie configuration using origin from header', async () => { + const config = { + baseUrl: 'https://domain.org/auth', + appUrl: 'http://domain.org', + isOriginAllowed: () => false, + }; + + const oauthProvider = OAuthAdapter.fromConfig(config, providerInstance, { + ...oAuthProviderOptions, + callbackUrl: 'https://domain.org/auth/test-provider/handler/frame', + }); + + const mockRequest = { + header: () => 'XMLHttpRequest', + cookies: { + 'test-provider-refresh-token': 'old-token', + }, + query: {}, + get: jest.fn().mockReturnValue('http://other.domain'), + } as unknown as express.Request; + + const mockResponse = { + json: jest.fn().mockReturnThis(), + status: jest.fn().mockReturnThis(), + cookie: jest.fn().mockReturnThis(), + } as unknown as express.Response; + + await oauthProvider.refresh(mockRequest, mockResponse); + expect(mockRequest.get).toHaveBeenCalledTimes(1); + expect(mockCookieConfigurer).not.toHaveBeenCalled(); + expect(mockResponse.cookie).toHaveBeenCalledTimes(1); + expect(mockResponse.cookie).toHaveBeenCalledWith( + 'test-provider-refresh-token', + 'token', + expect.objectContaining({ + httpOnly: true, + path: '/auth/test-provider', + maxAge: THOUSAND_DAYS_MS, + domain: 'domain.org', + secure: true, + sameSite: 'none', + }), + ); + }); }); diff --git a/plugins/auth-backend/src/lib/oauth/OAuthAdapter.ts b/plugins/auth-backend/src/lib/oauth/OAuthAdapter.ts index 64dc4f70e3..43fcc5e20b 100644 --- a/plugins/auth-backend/src/lib/oauth/OAuthAdapter.ts +++ b/plugins/auth-backend/src/lib/oauth/OAuthAdapter.ts @@ -51,7 +51,6 @@ export type OAuthAdapterOptions = { persistScopes?: boolean; appOrigin: string; baseUrl: string; - cookieConfig: ReturnType; cookieConfigurer: CookieConfigurer; isOriginAllowed: (origin: string) => boolean; callbackUrl: string; @@ -71,24 +70,17 @@ export class OAuthAdapter implements AuthProviderRouteHandlers { const { origin: appOrigin } = new URL(appUrl); const cookieConfigurer = config.cookieConfigurer ?? defaultCookieConfigurer; - const cookieConfig = cookieConfigurer({ - providerId: options.providerId, - baseUrl: config.baseUrl, - callbackUrl: options.callbackUrl, - appOrigin, - }); return new OAuthAdapter(handlers, { ...options, appOrigin, baseUrl, - cookieConfig, cookieConfigurer, isOriginAllowed, }); } - private baseCookieOptions: CookieOptions; + private readonly baseCookieOptions: CookieOptions; constructor( private readonly handlers: OAuthHandlers, @@ -97,7 +89,6 @@ export class OAuthAdapter implements AuthProviderRouteHandlers { this.baseCookieOptions = { httpOnly: true, sameSite: 'lax', - ...this.options.cookieConfig, }; } @@ -111,9 +102,11 @@ export class OAuthAdapter implements AuthProviderRouteHandlers { throw new InputError('No env provided in request query parameters'); } + const cookieConfig = this.getCookieConfig(); + const nonce = crypto.randomBytes(16).toString('base64'); // set a nonce cookie before redirecting to oauth provider - this.setNonceCookie(res, nonce); + this.setNonceCookie(res, nonce, cookieConfig); const state: OAuthState = { nonce, env, origin }; @@ -154,33 +147,23 @@ export class OAuthAdapter implements AuthProviderRouteHandlers { } } - // Update cookie options to reflect any changes for the appOrigin - const updatedCookieOptions = this.options.cookieConfigurer({ - providerId: this.options.providerId, - baseUrl: this.options.baseUrl, - callbackUrl: this.options.callbackUrl, - appOrigin, - }); - this.baseCookieOptions = { - ...this.baseCookieOptions, - ...updatedCookieOptions, - }; - // verify nonce cookie and state cookie on callback verifyNonce(req, this.options.providerId); const { response, refreshToken } = await this.handlers.handler(req); + const cookieConfig = this.getCookieConfig(appOrigin); + // Store the scope that we have been granted for this session. This is useful if // the provider does not return granted scopes on refresh or if they are normalized. if (this.options.persistScopes && state.scope) { - this.setGrantedScopeCookie(res, state.scope); + this.setGrantedScopeCookie(res, state.scope, cookieConfig); response.providerInfo.scope = state.scope; } if (refreshToken) { // set new refresh token - this.setRefreshTokenCookie(res, refreshToken); + this.setRefreshTokenCookie(res, refreshToken, cookieConfig); } const identity = await this.populateIdentity(response.backstageIdentity); @@ -208,7 +191,9 @@ export class OAuthAdapter implements AuthProviderRouteHandlers { } // remove refresh token cookie if it is set - this.removeRefreshTokenCookie(res); + const origin = req.get('origin'); + const cookieConfig = this.getCookieConfig(origin); + this.removeRefreshTokenCookie(res, cookieConfig); res.status(200).end(); } @@ -248,7 +233,9 @@ export class OAuthAdapter implements AuthProviderRouteHandlers { ); if (newRefreshToken && newRefreshToken !== refreshToken) { - this.setRefreshTokenCookie(res, newRefreshToken); + const origin = req.get('origin'); + const cookieConfig = this.getCookieConfig(origin); + this.setRefreshTokenCookie(res, newRefreshToken, cookieConfig); } res.status(200).json({ ...response, backstageIdentity }); @@ -274,18 +261,28 @@ export class OAuthAdapter implements AuthProviderRouteHandlers { return prepareBackstageIdentityResponse(identity); } - private setNonceCookie = (res: express.Response, nonce: string) => { + private setNonceCookie = ( + res: express.Response, + nonce: string, + cookieConfig: ReturnType, + ) => { res.cookie(`${this.options.providerId}-nonce`, nonce, { maxAge: TEN_MINUTES_MS, ...this.baseCookieOptions, - path: `${this.options.cookieConfig.path}/handler`, + ...cookieConfig, + path: `${cookieConfig.path}/handler`, }); }; - private setGrantedScopeCookie = (res: express.Response, scope: string) => { + private setGrantedScopeCookie = ( + res: express.Response, + scope: string, + cookieConfig: ReturnType, + ) => { res.cookie(`${this.options.providerId}-granted-scope`, scope, { maxAge: THOUSAND_DAYS_MS, ...this.baseCookieOptions, + ...cookieConfig, }); }; @@ -296,17 +293,32 @@ export class OAuthAdapter implements AuthProviderRouteHandlers { private setRefreshTokenCookie = ( res: express.Response, refreshToken: string, + cookieConfig: ReturnType, ) => { res.cookie(`${this.options.providerId}-refresh-token`, refreshToken, { maxAge: THOUSAND_DAYS_MS, ...this.baseCookieOptions, + ...cookieConfig, }); }; - private removeRefreshTokenCookie = (res: express.Response) => { + private removeRefreshTokenCookie = ( + res: express.Response, + cookieConfig: ReturnType, + ) => { res.cookie(`${this.options.providerId}-refresh-token`, '', { maxAge: 0, ...this.baseCookieOptions, + ...cookieConfig, + }); + }; + + private getCookieConfig = (origin?: string) => { + return this.options.cookieConfigurer({ + providerId: this.options.providerId, + baseUrl: this.options.baseUrl, + callbackUrl: this.options.callbackUrl, + appOrigin: origin ?? this.options.appOrigin, }); }; } From 6ba51aae68834dfcaa4bf187d26871db7321694b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 20 Sep 2022 08:27:50 +0000 Subject: [PATCH 026/117] fix(deps): update dependency winston to v3.8.2 Signed-off-by: Renovate Bot --- yarn.lock | 108 +++++++++++++++++++++++++++--------------------------- 1 file changed, 54 insertions(+), 54 deletions(-) diff --git a/yarn.lock b/yarn.lock index 5ff7d3e304..6d22f7a0cf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2851,7 +2851,7 @@ __metadata: "@backstage/plugin-permission-node": ^0.6.5-next.3 express: ^4.17.1 express-promise-router: ^4.1.0 - winston: ^3.2.1 + winston: ^3.8.1 languageName: unknown linkType: soft @@ -2930,7 +2930,7 @@ __metadata: supertest: ^6.1.3 tar: ^6.1.2 uuid: ^8.3.2 - winston: ^3.2.1 + winston: ^3.8.1 yauzl: ^2.10.0 yn: ^4.0.0 peerDependencies: @@ -2962,7 +2962,7 @@ __metadata: "@backstage/plugin-permission-common": ^0.6.4-next.2 "@types/express": ^4.17.6 express: ^4.17.1 - winston: ^3.2.1 + winston: ^3.8.1 winston-transport: ^4.5.0 languageName: unknown linkType: soft @@ -2986,7 +2986,7 @@ __metadata: node-abort-controller: ^3.0.1 uuid: ^8.0.0 wait-for-expect: ^3.0.2 - winston: ^3.2.1 + winston: ^3.8.1 zod: ^3.9.5 languageName: unknown linkType: soft @@ -3667,7 +3667,7 @@ __metadata: msw: ^0.47.0 node-fetch: ^2.6.5 supertest: ^6.1.3 - winston: ^3.2.1 + winston: ^3.8.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -3736,7 +3736,7 @@ __metadata: http-proxy-middleware: ^2.0.0 msw: ^0.47.0 supertest: ^6.1.6 - winston: ^3.2.1 + winston: ^3.8.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -3958,7 +3958,7 @@ __metadata: mock-fs: ^5.1.0 msw: ^0.47.0 supertest: ^6.1.3 - winston: ^3.2.1 + winston: ^3.8.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -4022,7 +4022,7 @@ __metadata: passport-saml: ^3.1.2 supertest: ^6.1.3 uuid: ^8.0.0 - winston: ^3.2.1 + winston: ^3.8.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -4043,7 +4043,7 @@ __metadata: msw: ^0.47.0 node-fetch: ^2.6.7 uuid: ^8.0.0 - winston: ^3.2.1 + winston: ^3.8.1 languageName: unknown linkType: soft @@ -4064,7 +4064,7 @@ __metadata: msw: ^0.47.0 p-limit: ^3.1.0 supertest: ^6.1.6 - winston: ^3.2.1 + winston: ^3.8.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -4127,7 +4127,7 @@ __metadata: express: ^4.17.1 express-promise-router: ^4.1.0 supertest: ^6.1.3 - winston: ^3.2.1 + winston: ^3.8.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -4174,7 +4174,7 @@ __metadata: express: ^4.17.1 express-promise-router: ^4.1.0 knex: ^2.0.0 - winston: ^3.2.1 + winston: ^3.8.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -4272,7 +4272,7 @@ __metadata: lodash: ^4.17.21 p-limit: ^3.0.2 uuid: ^8.0.0 - winston: ^3.2.1 + winston: ^3.8.1 yaml: ^2.0.0 languageName: unknown linkType: soft @@ -4296,7 +4296,7 @@ __metadata: msw: ^0.47.0 node-fetch: ^2.6.7 uuid: ^8.0.0 - winston: ^3.2.1 + winston: ^3.8.1 languageName: unknown linkType: soft @@ -4314,7 +4314,7 @@ __metadata: "@backstage/plugin-catalog-backend": ^1.4.0-next.3 msw: ^0.47.0 uuid: ^8.0.0 - winston: ^3.2.1 + winston: ^3.8.1 languageName: unknown linkType: soft @@ -4335,7 +4335,7 @@ __metadata: msw: ^0.47.0 node-fetch: ^2.6.7 uuid: ^8.0.0 - winston: ^3.2.1 + winston: ^3.8.1 languageName: unknown linkType: soft @@ -4357,7 +4357,7 @@ __metadata: lodash: ^4.17.21 msw: ^0.47.0 node-fetch: ^2.6.7 - winston: ^3.2.1 + winston: ^3.8.1 languageName: unknown linkType: soft @@ -4379,7 +4379,7 @@ __metadata: msw: ^0.47.0 node-fetch: ^2.6.7 uuid: ^8.0.0 - winston: ^3.2.1 + winston: ^3.8.1 languageName: unknown linkType: soft @@ -4405,7 +4405,7 @@ __metadata: msw: ^0.47.0 node-fetch: ^2.6.7 uuid: ^8.0.0 - winston: ^3.2.1 + winston: ^3.8.1 languageName: unknown linkType: soft @@ -4429,7 +4429,7 @@ __metadata: msw: ^0.47.0 node-fetch: ^2.6.7 uuid: ^8.0.0 - winston: ^3.2.1 + winston: ^3.8.1 languageName: unknown linkType: soft @@ -4449,7 +4449,7 @@ __metadata: ldapjs: ^2.2.0 lodash: ^4.17.21 uuid: ^8.0.0 - winston: ^3.2.1 + winston: ^3.8.1 languageName: unknown linkType: soft @@ -4474,7 +4474,7 @@ __metadata: p-limit: ^3.0.2 qs: ^6.9.4 uuid: ^8.0.0 - winston: ^3.2.1 + winston: ^3.8.1 languageName: unknown linkType: soft @@ -4493,7 +4493,7 @@ __metadata: "@backstage/plugin-catalog-node": ^1.1.0-next.2 "@backstage/types": ^1.0.0 openapi-types: ^12.0.0 - winston: ^3.2.1 + winston: ^3.8.1 yaml: ^2.1.1 languageName: unknown linkType: soft @@ -4544,7 +4544,7 @@ __metadata: supertest: ^6.1.3 uuid: ^8.0.0 wait-for-expect: ^3.0.2 - winston: ^3.2.1 + winston: ^3.8.1 yaml: ^2.0.0 yn: ^4.0.0 zod: ^3.11.6 @@ -4627,7 +4627,7 @@ __metadata: graphql-type-json: ^0.3.2 msw: ^0.47.0 node-fetch: ^2.6.7 - winston: ^3.2.1 + winston: ^3.8.1 languageName: unknown linkType: soft @@ -4966,7 +4966,7 @@ __metadata: msw: ^0.47.0 supertest: ^6.1.6 uuid: ^8.3.2 - winston: ^3.2.1 + winston: ^3.8.1 xml2js: ^0.4.23 yn: ^4.0.0 languageName: unknown @@ -5604,7 +5604,7 @@ __metadata: msw: ^0.47.0 reflect-metadata: ^0.1.13 supertest: ^6.1.3 - winston: ^3.2.1 + winston: ^3.8.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -5721,7 +5721,7 @@ __metadata: msw: ^0.47.0 promise-any-polyfill: ^1.0.1 supertest: ^6.1.6 - winston: ^3.2.1 + winston: ^3.8.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -5788,7 +5788,7 @@ __metadata: kafkajs: ^2.0.0 lodash: ^4.17.21 supertest: ^6.1.3 - winston: ^3.2.1 + winston: ^3.8.1 languageName: unknown linkType: soft @@ -5856,7 +5856,7 @@ __metadata: morgan: ^1.10.0 stream-buffers: ^3.0.2 supertest: ^6.1.3 - winston: ^3.2.1 + winston: ^3.8.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -6071,7 +6071,7 @@ __metadata: msw: ^0.47.0 node-fetch: ^2.6.7 supertest: ^6.1.6 - winston: ^3.2.1 + winston: ^3.8.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -6129,7 +6129,7 @@ __metadata: msw: ^0.47.0 node-fetch: ^2.6.7 supertest: ^6.1.6 - winston: ^3.2.1 + winston: ^3.8.1 yn: ^4.0.0 zod: ^3.11.6 languageName: unknown @@ -6246,7 +6246,7 @@ __metadata: node-fetch: ^2.6.7 supertest: ^6.1.3 uuid: ^8.2.0 - winston: ^3.2.1 + winston: ^3.8.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -6320,7 +6320,7 @@ __metadata: msw: ^0.47.0 supertest: ^6.1.3 uuid: ^8.0.0 - winston: ^3.2.1 + winston: ^3.8.1 yaml: ^2.0.0 yn: ^4.0.0 yup: ^0.32.9 @@ -6348,7 +6348,7 @@ __metadata: msw: ^0.47.0 node-fetch: ^2.6.7 supertest: ^6.1.3 - winston: ^3.2.1 + winston: ^3.8.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -6405,7 +6405,7 @@ __metadata: fs-extra: 10.1.0 mock-fs: ^5.1.0 msw: ^0.47.0 - winston: ^3.2.1 + winston: ^3.8.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -6441,7 +6441,7 @@ __metadata: "@backstage/config": ^1.0.2-next.0 "@backstage/plugin-scaffolder-backend": ^1.6.0-next.3 "@backstage/types": ^1.0.0 - winston: ^3.2.1 + winston: ^3.8.1 yeoman-environment: ^3.9.1 languageName: unknown linkType: soft @@ -6503,7 +6503,7 @@ __metadata: supertest: ^6.1.3 uuid: ^8.2.0 vm2: ^3.9.11 - winston: ^3.2.1 + winston: ^3.8.1 yaml: ^2.0.0 zen-observable: ^0.8.15 zod: ^3.11.6 @@ -6602,7 +6602,7 @@ __metadata: elastic-builder: ^2.16.0 lodash: ^4.17.21 uuid: ^8.3.2 - winston: ^3.2.1 + winston: ^3.8.1 languageName: unknown linkType: soft @@ -6640,7 +6640,7 @@ __metadata: ndjson: ^2.0.0 node-abort-controller: ^3.0.1 uuid: ^8.3.2 - winston: ^3.2.1 + winston: ^3.8.1 languageName: unknown linkType: soft @@ -6666,7 +6666,7 @@ __metadata: lodash: ^4.17.21 qs: ^6.10.1 supertest: ^6.1.3 - winston: ^3.2.1 + winston: ^3.8.1 yn: ^4.0.0 zod: ^3.11.6 languageName: unknown @@ -6919,7 +6919,7 @@ __metadata: "@backstage/plugin-search-common": ^1.0.1-next.0 node-fetch: ^2.6.7 qs: ^6.9.4 - winston: ^3.2.1 + winston: ^3.8.1 languageName: unknown linkType: soft @@ -6992,7 +6992,7 @@ __metadata: json-rules-engine: ^6.1.2 lodash: ^4.17.21 luxon: ^3.0.0 - winston: ^3.2.1 + winston: ^3.8.1 languageName: unknown linkType: soft @@ -7023,7 +7023,7 @@ __metadata: supertest: ^6.1.3 uuid: ^8.3.2 wait-for-expect: ^3.0.2 - winston: ^3.2.1 + winston: ^3.8.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -7051,7 +7051,7 @@ __metadata: "@backstage/types": ^1.0.0 "@types/luxon": ^3.0.0 luxon: ^3.0.0 - winston: ^3.2.1 + winston: ^3.8.1 languageName: unknown linkType: soft @@ -7184,7 +7184,7 @@ __metadata: node-fetch: ^2.6.7 p-limit: ^3.1.0 supertest: ^6.1.3 - winston: ^3.2.1 + winston: ^3.8.1 languageName: unknown linkType: soft @@ -7254,7 +7254,7 @@ __metadata: p-limit: ^3.1.0 recursive-readdir: ^2.2.2 supertest: ^6.1.3 - winston: ^3.2.1 + winston: ^3.8.1 languageName: unknown linkType: soft @@ -7355,7 +7355,7 @@ __metadata: leasot: ^12.0.0 msw: ^0.47.0 supertest: ^6.1.3 - winston: ^3.2.1 + winston: ^3.8.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -7407,7 +7407,7 @@ __metadata: express-promise-router: ^4.1.0 knex: ^2.0.0 supertest: ^6.1.3 - winston: ^3.2.1 + winston: ^3.8.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -7465,7 +7465,7 @@ __metadata: node-fetch: ^2.6.7 p-limit: ^3.1.0 supertest: ^6.1.6 - winston: ^3.7.2 + winston: ^3.8.1 yn: ^5.0.0 languageName: unknown linkType: soft @@ -9260,7 +9260,7 @@ __metadata: msw: ^0.47.0 supertest: ^6.1.6 uuid: ^8.3.2 - winston: ^3.2.1 + winston: ^3.8.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -13449,7 +13449,7 @@ __metadata: serve-handler: ^6.1.3 techdocs-cli-embedded-app: "link:../techdocs-cli-embedded-app" ts-node: ^10.0.0 - winston: ^3.2.1 + winston: ^3.8.1 bin: techdocs-cli: bin/techdocs-cli languageName: unknown @@ -22723,7 +22723,7 @@ __metadata: pg: ^8.3.0 pg-connection-string: ^2.3.0 prom-client: ^14.0.1 - winston: ^3.2.1 + winston: ^3.8.1 languageName: unknown linkType: soft @@ -40591,7 +40591,7 @@ __metadata: languageName: node linkType: hard -"winston@npm:^3.2.1, winston@npm:^3.7.2, winston@npm:^3.8.1": +"winston@npm:^3.8.1": version: 3.8.1 resolution: "winston@npm:3.8.1" dependencies: From c3247e12f84ce641ecb74af27a183853d0665b16 Mon Sep 17 00:00:00 2001 From: Clemens Stefan Heithecker <48448358+clemensheithecker@users.noreply.github.com> Date: Tue, 20 Sep 2022 11:58:23 +0200 Subject: [PATCH 027/117] Add custom actions plugin for Azure repositories Signed-off-by: Clemens Stefan Heithecker <48448358+clemensheithecker@users.noreply.github.com> --- .../writing-custom-actions.md | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/docs/features/software-templates/writing-custom-actions.md b/docs/features/software-templates/writing-custom-actions.md index b35ceb907d..17a9029b2d 100644 --- a/docs/features/software-templates/writing-custom-actions.md +++ b/docs/features/software-templates/writing-custom-actions.md @@ -156,16 +156,17 @@ export default async function createPlugin( Here is a list of Open Source custom actions that you can add to your Backstage scaffolder backend: -| Name | Package | Owner | -| ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ | -| Yeoman | [plugin-scaffolder-backend-module-yeoman](https://www.npmjs.com/package/@backstage/plugin-scaffolder-backend-module-yeoman) | [Backstage](https://backstage.io) | -| Cookiecutter | [plugin-scaffolder-backend-module-cookiecutter](https://www.npmjs.com/package/@backstage/plugin-scaffolder-backend-module-cookiecutter) | [Backstage](https://backstage.io) | -| Rails | [plugin-scaffolder-backend-module-rails](https://www.npmjs.com/package/@backstage/plugin-scaffolder-backend-module-rails) | [Backstage](https://backstage.io) | -| HTTP requests | [scaffolder-backend-module-http-request](https://www.npmjs.com/package/@roadiehq/scaffolder-backend-module-http-request) | [Roadie](https://roadie.io) | -| Utility actions | [scaffolder-backend-module-utils](https://www.npmjs.com/package/@roadiehq/scaffolder-backend-module-utils) | [Roadie](https://roadie.io) | -| AWS cli actions | [scaffolder-backend-module-aws](https://www.npmjs.com/package/@roadiehq/scaffolder-backend-module-aws) | [Roadie](https://roadie.io) | -| Scaffolder .NET Actions | [plugin-scaffolder-dotnet-backend](https://www.npmjs.com/package/@plusultra/plugin-scaffolder-dotnet-backend) | [Alef Carlos](https://github.com/alefcarlos) | -| Scaffolder Git Actions | [plugin-scaffolder-git-actions](https://www.npmjs.com/package/@mdude2314/backstage-plugin-scaffolder-git-actions) | [Drew Hill](https://github.com/arhill05) | -| Azure Pipeline Actions | [scaffolder-backend-module-azure-pipelines](https://www.npmjs.com/package/@parfuemerie-douglas/scaffolder-backend-module-azure-pipelines) | [Parfümerie Douglas](https://github.com/Parfuemerie-Douglas) | +| Name | Package | Owner | +| ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ | +| Yeoman | [plugin-scaffolder-backend-module-yeoman](https://www.npmjs.com/package/@backstage/plugin-scaffolder-backend-module-yeoman) | [Backstage](https://backstage.io) | +| Cookiecutter | [plugin-scaffolder-backend-module-cookiecutter](https://www.npmjs.com/package/@backstage/plugin-scaffolder-backend-module-cookiecutter) | [Backstage](https://backstage.io) | +| Rails | [plugin-scaffolder-backend-module-rails](https://www.npmjs.com/package/@backstage/plugin-scaffolder-backend-module-rails) | [Backstage](https://backstage.io) | +| HTTP requests | [scaffolder-backend-module-http-request](https://www.npmjs.com/package/@roadiehq/scaffolder-backend-module-http-request) | [Roadie](https://roadie.io) | +| Utility actions | [scaffolder-backend-module-utils](https://www.npmjs.com/package/@roadiehq/scaffolder-backend-module-utils) | [Roadie](https://roadie.io) | +| AWS cli actions | [scaffolder-backend-module-aws](https://www.npmjs.com/package/@roadiehq/scaffolder-backend-module-aws) | [Roadie](https://roadie.io) | +| Scaffolder .NET Actions | [plugin-scaffolder-dotnet-backend](https://www.npmjs.com/package/@plusultra/plugin-scaffolder-dotnet-backend) | [Alef Carlos](https://github.com/alefcarlos) | +| Scaffolder Git Actions | [plugin-scaffolder-git-actions](https://www.npmjs.com/package/@mdude2314/backstage-plugin-scaffolder-git-actions) | [Drew Hill](https://github.com/arhill05) | +| Azure Pipeline Actions | [scaffolder-backend-module-azure-pipelines](https://www.npmjs.com/package/@parfuemerie-douglas/scaffolder-backend-module-azure-pipelines) | [Parfümerie Douglas](https://github.com/Parfuemerie-Douglas) | +| Azure Repository Actions | [scaffolder-backend-module-azure-repositories](https://www.npmjs.com/package/@parfuemerie-douglas/scaffolder-backend-module-azure-repositories) | [Parfümerie Douglas](https://github.com/Parfuemerie-Douglas) | Have fun! 🚀 From f2b4b5563660fe9f79647d427d0b05664a1f7c2c Mon Sep 17 00:00:00 2001 From: Prasetya Aria Wibawa Date: Tue, 20 Sep 2022 18:45:04 +0700 Subject: [PATCH 028/117] consistently show parent and child relations in group profile card Signed-off-by: Prasetya Aria Wibawa --- .changeset/breezy-pots-worry.md | 5 ++ .../Group/GroupProfile/GroupProfileCard.tsx | 50 ++++++++++--------- 2 files changed, 31 insertions(+), 24 deletions(-) create mode 100644 .changeset/breezy-pots-worry.md diff --git a/.changeset/breezy-pots-worry.md b/.changeset/breezy-pots-worry.md new file mode 100644 index 0000000000..48d5ae6c80 --- /dev/null +++ b/.changeset/breezy-pots-worry.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-org': patch +--- + +consistently show parent and child relations in group profile card diff --git a/plugins/org/src/components/Cards/Group/GroupProfile/GroupProfileCard.tsx b/plugins/org/src/components/Cards/Group/GroupProfile/GroupProfileCard.tsx index 174067275d..1b18261328 100644 --- a/plugins/org/src/components/Cards/Group/GroupProfile/GroupProfileCard.tsx +++ b/plugins/org/src/components/Cards/Group/GroupProfile/GroupProfileCard.tsx @@ -149,38 +149,40 @@ export const GroupProfileCard = (props: { variant?: InfoCardVariants }) => { )} - - {parentRelations.length ? ( - - - - - - - + + + + + + + + {parentRelations.length ? ( - - - ) : null} - - {childRelations.length ? ( - - - - - - - + ) : ( + '-' + )} + + + + + + + + + + {childRelations.length ? ( - - - ) : null} + ) : ( + '-' + )} + + From 3d5bb521eee25eb176b8f021721ba74e5f862e61 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 20 Sep 2022 12:38:27 +0000 Subject: [PATCH 029/117] fix(deps): update dependency @asyncapi/react-component to v1.0.0-next.42 Signed-off-by: Renovate Bot --- .changeset/renovate-a02d90b.md | 5 +++++ plugins/api-docs/package.json | 2 +- yarn.lock | 10 +++++----- 3 files changed, 11 insertions(+), 6 deletions(-) create mode 100644 .changeset/renovate-a02d90b.md diff --git a/.changeset/renovate-a02d90b.md b/.changeset/renovate-a02d90b.md new file mode 100644 index 0000000000..7bb69d9988 --- /dev/null +++ b/.changeset/renovate-a02d90b.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-api-docs': patch +--- + +Updated dependency `@asyncapi/react-component` to `1.0.0-next.42`. diff --git a/plugins/api-docs/package.json b/plugins/api-docs/package.json index 373e6391a4..b746738218 100644 --- a/plugins/api-docs/package.json +++ b/plugins/api-docs/package.json @@ -32,7 +32,7 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@asyncapi/react-component": "1.0.0-next.40", + "@asyncapi/react-component": "1.0.0-next.42", "@backstage/catalog-model": "^1.1.1", "@backstage/core-components": "^0.11.1", "@backstage/core-plugin-api": "^1.0.6", diff --git a/yarn.lock b/yarn.lock index 4bd18bc805..3415176ee7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -301,9 +301,9 @@ __metadata: languageName: node linkType: hard -"@asyncapi/react-component@npm:1.0.0-next.40": - version: 1.0.0-next.40 - resolution: "@asyncapi/react-component@npm:1.0.0-next.40" +"@asyncapi/react-component@npm:1.0.0-next.42": + version: 1.0.0-next.42 + resolution: "@asyncapi/react-component@npm:1.0.0-next.42" dependencies: "@asyncapi/avro-schema-parser": ^0.3.0 "@asyncapi/openapi-schema-parser": ^2.0.0 @@ -317,7 +317,7 @@ __metadata: peerDependencies: react: ">=16.8.0" react-dom: ">=16.8.0" - checksum: 6a8fc4f701552f678fd9dae8774018d50729708eddb641a3c7fb7919b0abd8dd464472752a80bfd1b2eb21a83b74ba9d3d9ea41c3f3bffa5f63bf8e5d275e87c + checksum: eba4aaf344aabc1889085df7f94d14d51e2449db06cabc70c60b9d5b0b2fb9ccec6aa89cbedf9d45c28deca99e1e4ab2d4399b0a2756e9969d4691f304088a77 languageName: node linkType: hard @@ -3721,7 +3721,7 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-api-docs@workspace:plugins/api-docs" dependencies: - "@asyncapi/react-component": 1.0.0-next.40 + "@asyncapi/react-component": 1.0.0-next.42 "@backstage/catalog-model": ^1.1.1 "@backstage/cli": ^0.19.0 "@backstage/core-app-api": ^1.1.0 From ffa2d1f414d6779f08f8821a849f1b159573b58a Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 5 Sep 2022 21:47:03 +0200 Subject: [PATCH 030/117] cli: bump to jest 29 Signed-off-by: Patrik Oldsberg --- packages/cli/config/jestFileTransform.js | 8 +- packages/cli/config/jestSucraseTransform.js | 4 +- packages/cli/config/jestSwcTransform.js | 2 +- packages/cli/package.json | 7 +- yarn.lock | 1366 ++++++++++++------- 5 files changed, 914 insertions(+), 473 deletions(-) diff --git a/packages/cli/config/jestFileTransform.js b/packages/cli/config/jestFileTransform.js index bdd29fc296..d003c5b567 100644 --- a/packages/cli/config/jestFileTransform.js +++ b/packages/cli/config/jestFileTransform.js @@ -21,7 +21,8 @@ module.exports = { const assetFilename = JSON.stringify(path.basename(filename)); if (filename.match(/\.icon\.svg$/)) { - return `const React = require('react'); + return { + code: `const React = require('react'); const SvgIcon = require('@material-ui/core/SvgIcon').default; module.exports = { __esModule: true, @@ -34,9 +35,10 @@ module.exports = { children: ${assetFilename} }) }) - };`; + };`, + }; } - return `module.exports = ${assetFilename};`; + return { code: `module.exports = ${assetFilename};` }; }, }; diff --git a/packages/cli/config/jestSucraseTransform.js b/packages/cli/config/jestSucraseTransform.js index d0400f4f3b..99ebc04877 100644 --- a/packages/cli/config/jestSucraseTransform.js +++ b/packages/cli/config/jestSucraseTransform.js @@ -64,10 +64,10 @@ function createTransformer(config) { } // We only return the `map` result if source maps are enabled, as they // have a negative impact on the coverage accuracy. - return code; + return { code }; } - return source; + return { code: source }; }; // TODO: contribute something like this to @sucrase/jest-plugin diff --git a/packages/cli/config/jestSwcTransform.js b/packages/cli/config/jestSwcTransform.js index c87948978d..c44d0fe4b0 100644 --- a/packages/cli/config/jestSwcTransform.js +++ b/packages/cli/config/jestSwcTransform.js @@ -21,7 +21,7 @@ function createTransformer(config) { const swcTransformer = createSwcTransformer(config); const process = (source, filePath, jestOptions) => { if (filePath.endsWith('.js') && !ESM_REGEX.test(source)) { - return source; + return { code: source }; } return swcTransformer.process(source, filePath, jestOptions); diff --git a/packages/cli/package.json b/packages/cli/package.json index af456cb658..f7a446675d 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -55,7 +55,7 @@ "@swc/core": "^1.2.239", "@swc/helpers": "^0.4.7", "@swc/jest": "^0.2.22", - "@types/jest": "^27", + "@types/jest": "^29.0.0", "@types/webpack-env": "^1.15.2", "@typescript-eslint/eslint-plugin": "^5.9.0", "@typescript-eslint/parser": "^5.9.0", @@ -89,9 +89,10 @@ "handlebars": "^4.7.3", "html-webpack-plugin": "^5.3.1", "inquirer": "^8.2.0", - "jest": "^27.5.1", + "jest": "^29.0.2", "jest-css-modules": "^2.1.0", - "jest-runtime": "^27.5.1", + "jest-environment-jsdom": "^29.0.2", + "jest-runtime": "^29.0.2", "jest-transform-yaml": "^1.0.0", "json-schema": "^0.4.0", "lodash": "^4.17.21", diff --git a/yarn.lock b/yarn.lock index 4bd18bc805..e79d44a4f6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -582,30 +582,37 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.1.0, @babel/core@npm:^7.13.16, @babel/core@npm:^7.14.0": - version: 7.16.12 - resolution: "@babel/core@npm:7.16.12" - dependencies: - "@babel/code-frame": ^7.16.7 - "@babel/generator": ^7.16.8 - "@babel/helper-compilation-targets": ^7.16.7 - "@babel/helper-module-transforms": ^7.16.7 - "@babel/helpers": ^7.16.7 - "@babel/parser": ^7.16.12 - "@babel/template": ^7.16.7 - "@babel/traverse": ^7.16.10 - "@babel/types": ^7.16.8 - convert-source-map: ^1.7.0 - debug: ^4.1.0 - gensync: ^1.0.0-beta.2 - json5: ^2.1.2 - semver: ^6.3.0 - source-map: ^0.5.0 - checksum: 29b56f3cb7c329fc038a2efaccf64ac3025835676b3d90f57f2265b6acd477a970114d09021b38d019ac8f20b2bb1596a9e79ce1f820d6b8cf0e4a802891817c +"@babel/compat-data@npm:^7.19.1": + version: 7.19.1 + resolution: "@babel/compat-data@npm:7.19.1" + checksum: f985887ea08a140e4af87a94d3fb17af0345491eb97f5a85b1840255c2e2a97429f32a8fd12a7aae9218af5f1024f1eb12a5cd280d2d69b2337583c17ea506ba languageName: node linkType: hard -"@babel/core@npm:^7.12.3, @babel/core@npm:^7.7.2, @babel/core@npm:^7.8.0": +"@babel/core@npm:^7.11.6": + version: 7.19.1 + resolution: "@babel/core@npm:7.19.1" + dependencies: + "@ampproject/remapping": ^2.1.0 + "@babel/code-frame": ^7.18.6 + "@babel/generator": ^7.19.0 + "@babel/helper-compilation-targets": ^7.19.1 + "@babel/helper-module-transforms": ^7.19.0 + "@babel/helpers": ^7.19.0 + "@babel/parser": ^7.19.1 + "@babel/template": ^7.18.10 + "@babel/traverse": ^7.19.1 + "@babel/types": ^7.19.0 + convert-source-map: ^1.7.0 + debug: ^4.1.0 + gensync: ^1.0.0-beta.2 + json5: ^2.2.1 + semver: ^6.3.0 + checksum: 941c8c119b80bdba5fafc80bbaa424d51146b6d3c30b8fae35879358dd37c11d3d0926bc7e970a0861229656eedaa8c884d4a3a25cc904086eb73b827a2f1168 + languageName: node + linkType: hard + +"@babel/core@npm:^7.12.3": version: 7.17.8 resolution: "@babel/core@npm:7.17.8" dependencies: @@ -628,6 +635,29 @@ __metadata: languageName: node linkType: hard +"@babel/core@npm:^7.13.16, @babel/core@npm:^7.14.0": + version: 7.16.12 + resolution: "@babel/core@npm:7.16.12" + dependencies: + "@babel/code-frame": ^7.16.7 + "@babel/generator": ^7.16.8 + "@babel/helper-compilation-targets": ^7.16.7 + "@babel/helper-module-transforms": ^7.16.7 + "@babel/helpers": ^7.16.7 + "@babel/parser": ^7.16.12 + "@babel/template": ^7.16.7 + "@babel/traverse": ^7.16.10 + "@babel/types": ^7.16.8 + convert-source-map: ^1.7.0 + debug: ^4.1.0 + gensync: ^1.0.0-beta.2 + json5: ^2.1.2 + semver: ^6.3.0 + source-map: ^0.5.0 + checksum: 29b56f3cb7c329fc038a2efaccf64ac3025835676b3d90f57f2265b6acd477a970114d09021b38d019ac8f20b2bb1596a9e79ce1f820d6b8cf0e4a802891817c + languageName: node + linkType: hard + "@babel/core@npm:^7.18.5": version: 7.18.9 resolution: "@babel/core@npm:7.18.9" @@ -684,6 +714,17 @@ __metadata: languageName: node linkType: hard +"@babel/generator@npm:^7.19.0": + version: 7.19.0 + resolution: "@babel/generator@npm:7.19.0" + dependencies: + "@babel/types": ^7.19.0 + "@jridgewell/gen-mapping": ^0.3.2 + jsesc: ^2.5.1 + checksum: aa3d5785cf8f8e81672dcc61aef351188efeadb20d9f66d79113d82cbcf3bbbdeb829989fa14582108572ddbc4e4027bdceb06ccaf5ec40fa93c2dda8fbcd4aa + languageName: node + linkType: hard + "@babel/helper-annotate-as-pure@npm:^7.16.0, @babel/helper-annotate-as-pure@npm:^7.16.7": version: 7.16.7 resolution: "@babel/helper-annotate-as-pure@npm:7.16.7" @@ -754,6 +795,20 @@ __metadata: languageName: node linkType: hard +"@babel/helper-compilation-targets@npm:^7.19.1": + version: 7.19.1 + resolution: "@babel/helper-compilation-targets@npm:7.19.1" + dependencies: + "@babel/compat-data": ^7.19.1 + "@babel/helper-validator-option": ^7.18.6 + browserslist: ^4.21.3 + semver: ^6.3.0 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: c2d3039265e498b341a6b597f855f2fcef02659050fefedf36ad4e6815e6aafe1011a761214cc80d98260ed07ab15a8cbe959a0458e97bec5f05a450e1b1741b + languageName: node + linkType: hard + "@babel/helper-create-class-features-plugin@npm:^7.16.7": version: 7.16.10 resolution: "@babel/helper-create-class-features-plugin@npm:7.16.10" @@ -876,6 +931,16 @@ __metadata: languageName: node linkType: hard +"@babel/helper-function-name@npm:^7.19.0": + version: 7.19.0 + resolution: "@babel/helper-function-name@npm:7.19.0" + dependencies: + "@babel/template": ^7.18.10 + "@babel/types": ^7.19.0 + checksum: eac1f5db428ba546270c2b8d750c24eb528b8fcfe50c81de2e0bdebf0e20f24bec688d4331533b782e4a907fad435244621ca2193cfcf80a86731299840e0f6e + languageName: node + linkType: hard + "@babel/helper-get-function-arity@npm:^7.16.7": version: 7.16.7 resolution: "@babel/helper-get-function-arity@npm:7.16.7" @@ -987,6 +1052,22 @@ __metadata: languageName: node linkType: hard +"@babel/helper-module-transforms@npm:^7.19.0": + version: 7.19.0 + resolution: "@babel/helper-module-transforms@npm:7.19.0" + dependencies: + "@babel/helper-environment-visitor": ^7.18.9 + "@babel/helper-module-imports": ^7.18.6 + "@babel/helper-simple-access": ^7.18.6 + "@babel/helper-split-export-declaration": ^7.18.6 + "@babel/helper-validator-identifier": ^7.18.6 + "@babel/template": ^7.18.10 + "@babel/traverse": ^7.19.0 + "@babel/types": ^7.19.0 + checksum: 4483276c66f56cf3b5b063634092ad9438c2593725de5c143ba277dda82f1501e6d73b311c1b28036f181dbe36eaeff29f24726cde37a599d4e735af294e5359 + languageName: node + linkType: hard + "@babel/helper-optimise-call-expression@npm:^7.16.7": version: 7.16.7 resolution: "@babel/helper-optimise-call-expression@npm:7.16.7" @@ -1195,6 +1276,17 @@ __metadata: languageName: node linkType: hard +"@babel/helpers@npm:^7.19.0": + version: 7.19.0 + resolution: "@babel/helpers@npm:7.19.0" + dependencies: + "@babel/template": ^7.18.10 + "@babel/traverse": ^7.19.0 + "@babel/types": ^7.19.0 + checksum: e50e78e0dbb0435075fa3f85021a6bcae529589800bca0292721afd7f7c874bea54508d6dc57eca16e5b8224f8142c6b0e32e3b0140029dc09865da747da4623 + languageName: node + linkType: hard + "@babel/highlight@npm:^7.0.0": version: 7.16.10 resolution: "@babel/highlight@npm:7.16.10" @@ -1226,6 +1318,15 @@ __metadata: languageName: node linkType: hard +"@babel/parser@npm:^7.18.10, @babel/parser@npm:^7.19.1": + version: 7.19.1 + resolution: "@babel/parser@npm:7.19.1" + bin: + parser: ./bin/babel-parser.js + checksum: b1e0acb346b2a533c857e1e97ac0886cdcbd76aafef67835a2b23f760c10568eb53ad8a27dd5f862d8ba4e583742e6067f107281ccbd68959d61bc61e4ddaa51 + languageName: node + linkType: hard + "@babel/parser@npm:^7.18.6, @babel/parser@npm:^7.18.9": version: 7.18.9 resolution: "@babel/parser@npm:7.18.9" @@ -1642,7 +1743,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-jsx@npm:^7.18.6": +"@babel/plugin-syntax-jsx@npm:^7.18.6, @babel/plugin-syntax-jsx@npm:^7.7.2": version: 7.18.6 resolution: "@babel/plugin-syntax-jsx@npm:7.18.6" dependencies: @@ -2708,6 +2809,17 @@ __metadata: languageName: node linkType: hard +"@babel/template@npm:^7.18.10": + version: 7.18.10 + resolution: "@babel/template@npm:7.18.10" + dependencies: + "@babel/code-frame": ^7.18.6 + "@babel/parser": ^7.18.10 + "@babel/types": ^7.18.10 + checksum: 93a6aa094af5f355a72bd55f67fa1828a046c70e46f01b1606e6118fa1802b6df535ca06be83cc5a5e834022be95c7b714f0a268b5f20af984465a71e28f1473 + languageName: node + linkType: hard + "@babel/template@npm:^7.18.6": version: 7.18.6 resolution: "@babel/template@npm:7.18.6" @@ -2773,6 +2885,24 @@ __metadata: languageName: node linkType: hard +"@babel/traverse@npm:^7.19.0, @babel/traverse@npm:^7.19.1": + version: 7.19.1 + resolution: "@babel/traverse@npm:7.19.1" + dependencies: + "@babel/code-frame": ^7.18.6 + "@babel/generator": ^7.19.0 + "@babel/helper-environment-visitor": ^7.18.9 + "@babel/helper-function-name": ^7.19.0 + "@babel/helper-hoist-variables": ^7.18.6 + "@babel/helper-split-export-declaration": ^7.18.6 + "@babel/parser": ^7.19.1 + "@babel/types": ^7.19.0 + debug: ^4.1.0 + globals: ^11.1.0 + checksum: 9d782b5089ebc989e54c2406814ed1206cb745ed2734e6602dee3e23d4b6ebbb703ff86e536276630f8de83fda6cde99f0634e3c3d847ddb40572d0303ba8800 + languageName: node + linkType: hard + "@babel/types@npm:^7.0.0, @babel/types@npm:^7.16.0, @babel/types@npm:^7.16.7, @babel/types@npm:^7.16.8, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": version: 7.16.8 resolution: "@babel/types@npm:7.16.8" @@ -2793,6 +2923,17 @@ __metadata: languageName: node linkType: hard +"@babel/types@npm:^7.18.10, @babel/types@npm:^7.19.0": + version: 7.19.0 + resolution: "@babel/types@npm:7.19.0" + dependencies: + "@babel/helper-string-parser": ^7.18.10 + "@babel/helper-validator-identifier": ^7.18.6 + to-fast-properties: ^2.0.0 + checksum: 9b346715a68aeede70ba9c685a144b0b26c53bcd595d448e24c8fa8df4d5956a5712e56ebadb7c85dcc32f218ee42788e37b93d50d3295c992072224cb3ef3fe + languageName: node + linkType: hard + "@babel/types@npm:^7.18.4, @babel/types@npm:^7.18.6, @babel/types@npm:^7.18.9": version: 7.18.9 resolution: "@babel/types@npm:7.18.9" @@ -3090,7 +3231,7 @@ __metadata: "@types/fs-extra": ^9.0.1 "@types/http-proxy": ^1.17.4 "@types/inquirer": ^8.1.3 - "@types/jest": ^27 + "@types/jest": ^29.0.0 "@types/minimatch": ^5.0.0 "@types/mock-fs": ^4.13.0 "@types/node": ^16.11.26 @@ -3136,9 +3277,10 @@ __metadata: handlebars: ^4.7.3 html-webpack-plugin: ^5.3.1 inquirer: ^8.2.0 - jest: ^27.5.1 + jest: ^29.0.2 jest-css-modules: ^2.1.0 - jest-runtime: ^27.5.1 + jest-environment-jsdom: ^29.0.2 + jest-runtime: ^29.0.2 jest-transform-yaml: ^1.0.0 json-schema: ^0.4.0 lodash: ^4.17.21 @@ -9054,50 +9196,50 @@ __metadata: languageName: node linkType: hard -"@jest/console@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/console@npm:27.5.1" +"@jest/console@npm:^29.0.3": + version: 29.0.3 + resolution: "@jest/console@npm:29.0.3" dependencies: - "@jest/types": ^27.5.1 + "@jest/types": ^29.0.3 "@types/node": "*" chalk: ^4.0.0 - jest-message-util: ^27.5.1 - jest-util: ^27.5.1 + jest-message-util: ^29.0.3 + jest-util: ^29.0.3 slash: ^3.0.0 - checksum: 7cb20f06a34b09734c0342685ec53aa4c401fe3757c13a9c58fce76b971a322eb884f6de1068ef96f746e5398e067371b89515a07c268d4440a867c87748a706 + checksum: 1c5f092082c45c5c35ea51e7c75f4ce06a9b4350e44e0d3aa6c586c469a687fb095ab2601f196f147cccd1c4b5cbf4adc885ae83c8af42dfeee5aa518fa0968e languageName: node linkType: hard -"@jest/core@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/core@npm:27.5.1" +"@jest/core@npm:^29.0.3": + version: 29.0.3 + resolution: "@jest/core@npm:29.0.3" dependencies: - "@jest/console": ^27.5.1 - "@jest/reporters": ^27.5.1 - "@jest/test-result": ^27.5.1 - "@jest/transform": ^27.5.1 - "@jest/types": ^27.5.1 + "@jest/console": ^29.0.3 + "@jest/reporters": ^29.0.3 + "@jest/test-result": ^29.0.3 + "@jest/transform": ^29.0.3 + "@jest/types": ^29.0.3 "@types/node": "*" ansi-escapes: ^4.2.1 chalk: ^4.0.0 - emittery: ^0.8.1 + ci-info: ^3.2.0 exit: ^0.1.2 graceful-fs: ^4.2.9 - jest-changed-files: ^27.5.1 - jest-config: ^27.5.1 - jest-haste-map: ^27.5.1 - jest-message-util: ^27.5.1 - jest-regex-util: ^27.5.1 - jest-resolve: ^27.5.1 - jest-resolve-dependencies: ^27.5.1 - jest-runner: ^27.5.1 - jest-runtime: ^27.5.1 - jest-snapshot: ^27.5.1 - jest-util: ^27.5.1 - jest-validate: ^27.5.1 - jest-watcher: ^27.5.1 + jest-changed-files: ^29.0.0 + jest-config: ^29.0.3 + jest-haste-map: ^29.0.3 + jest-message-util: ^29.0.3 + jest-regex-util: ^29.0.0 + jest-resolve: ^29.0.3 + jest-resolve-dependencies: ^29.0.3 + jest-runner: ^29.0.3 + jest-runtime: ^29.0.3 + jest-snapshot: ^29.0.3 + jest-util: ^29.0.3 + jest-validate: ^29.0.3 + jest-watcher: ^29.0.3 micromatch: ^4.0.4 - rimraf: ^3.0.0 + pretty-format: ^29.0.3 slash: ^3.0.0 strip-ansi: ^6.0.0 peerDependencies: @@ -9105,7 +9247,7 @@ __metadata: peerDependenciesMeta: node-notifier: optional: true - checksum: 904a94ad8f1b43cd6b48de3b0226659bff3696150ff8cf7680fc2faffdc8a115203bb9ab6e817c1f79f9d6a81f67953053cbc64d8a4604f2e0c42a04c28cf126 + checksum: 411a994ae0df96262c911c894b231a3148280ae39cf0a5d1132c126e708925a3aa89d3f75be628260916a5c38c6ee1ce27979cf78171a393f3c3bbac019149d9 languageName: node linkType: hard @@ -9118,136 +9260,165 @@ __metadata: languageName: node linkType: hard -"@jest/environment@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/environment@npm:27.5.1" +"@jest/environment@npm:^29.0.3": + version: 29.0.3 + resolution: "@jest/environment@npm:29.0.3" dependencies: - "@jest/fake-timers": ^27.5.1 - "@jest/types": ^27.5.1 + "@jest/fake-timers": ^29.0.3 + "@jest/types": ^29.0.3 "@types/node": "*" - jest-mock: ^27.5.1 - checksum: 2a9e18c35a015508dbec5b90b21c150230fa6c1c8cb8fabe029d46ee2ca4c40eb832fb636157da14c66590d0a4c8a2c053226b041f54a44507d6f6a89abefd66 + jest-mock: ^29.0.3 + checksum: 3cf9a6c18d1175f9d9dc353ad26a8482cef3aae8d68574d2c2feaf149e4d6f5c83e145aeefffdc0c614e9b770d26251e476cb1bd86f140c9d19b6adf8f1a2681 languageName: node linkType: hard -"@jest/fake-timers@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/fake-timers@npm:27.5.1" +"@jest/expect-utils@npm:^29.0.3": + version: 29.0.3 + resolution: "@jest/expect-utils@npm:29.0.3" dependencies: - "@jest/types": ^27.5.1 - "@sinonjs/fake-timers": ^8.0.1 + jest-get-type: ^29.0.0 + checksum: af6fa6e0b9cdf42f5778ff0b70c2049ec768598f720ea473773e0c0bebd2416a32ecbede94cfdc95572a021eda5302a9295a5c416ad5ce155c4ec277c40129da + languageName: node + linkType: hard + +"@jest/expect@npm:^29.0.3": + version: 29.0.3 + resolution: "@jest/expect@npm:29.0.3" + dependencies: + expect: ^29.0.3 + jest-snapshot: ^29.0.3 + checksum: 8f969cce260b84edc105a73b8314accd305f2ad012031c00a6a4ba8b3db864237719e95a167702badada274bd764c306e561326bef86d950f72b94f5c9c69c7e + languageName: node + linkType: hard + +"@jest/fake-timers@npm:^29.0.3": + version: 29.0.3 + resolution: "@jest/fake-timers@npm:29.0.3" + dependencies: + "@jest/types": ^29.0.3 + "@sinonjs/fake-timers": ^9.1.2 "@types/node": "*" - jest-message-util: ^27.5.1 - jest-mock: ^27.5.1 - jest-util: ^27.5.1 - checksum: 02a0561ed2f4586093facd4ae500b74694f187ac24d4a00e949a39a1c5325bca8932b4fcb0388a2c5ed0656506fc1cf51fd3e32cdd48cea7497ad9c6e028aba8 + jest-message-util: ^29.0.3 + jest-mock: ^29.0.3 + jest-util: ^29.0.3 + checksum: c0a641fe239044a766eb27e6e4e085acdc8f53d34813aa883a8da8fcce555d8b6ce06716b94c72b44e60c0ca8088b1f1a1d3b05c7f41ed39fc0f6cf23dead7c4 languageName: node linkType: hard -"@jest/globals@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/globals@npm:27.5.1" +"@jest/globals@npm:^29.0.3": + version: 29.0.3 + resolution: "@jest/globals@npm:29.0.3" dependencies: - "@jest/environment": ^27.5.1 - "@jest/types": ^27.5.1 - expect: ^27.5.1 - checksum: 087f97047e9dcf555f76fe2ce54aee681e005eaa837a0c0c2d251df6b6412c892c9df54cb871b180342114389a5ff895a4e52e6e6d3d0015bf83c02a54f64c3c + "@jest/environment": ^29.0.3 + "@jest/expect": ^29.0.3 + "@jest/types": ^29.0.3 + jest-mock: ^29.0.3 + checksum: ab6a3f93b98c600f6b4d57c5cf593e624847101bf037f452800d891f55612cd042f524f032f4871ff784c1814f85a4939afbd853104f50f78aada353ac124b7e languageName: node linkType: hard -"@jest/reporters@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/reporters@npm:27.5.1" +"@jest/reporters@npm:^29.0.3": + version: 29.0.3 + resolution: "@jest/reporters@npm:29.0.3" dependencies: "@bcoe/v8-coverage": ^0.2.3 - "@jest/console": ^27.5.1 - "@jest/test-result": ^27.5.1 - "@jest/transform": ^27.5.1 - "@jest/types": ^27.5.1 + "@jest/console": ^29.0.3 + "@jest/test-result": ^29.0.3 + "@jest/transform": ^29.0.3 + "@jest/types": ^29.0.3 + "@jridgewell/trace-mapping": ^0.3.15 "@types/node": "*" chalk: ^4.0.0 collect-v8-coverage: ^1.0.0 exit: ^0.1.2 - glob: ^7.1.2 + glob: ^7.1.3 graceful-fs: ^4.2.9 istanbul-lib-coverage: ^3.0.0 istanbul-lib-instrument: ^5.1.0 istanbul-lib-report: ^3.0.0 istanbul-lib-source-maps: ^4.0.0 istanbul-reports: ^3.1.3 - jest-haste-map: ^27.5.1 - jest-resolve: ^27.5.1 - jest-util: ^27.5.1 - jest-worker: ^27.5.1 + jest-message-util: ^29.0.3 + jest-util: ^29.0.3 + jest-worker: ^29.0.3 slash: ^3.0.0 - source-map: ^0.6.0 string-length: ^4.0.1 + strip-ansi: ^6.0.0 terminal-link: ^2.0.0 - v8-to-istanbul: ^8.1.0 + v8-to-istanbul: ^9.0.1 peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: node-notifier: optional: true - checksum: faba5eafb86e62b62e152cafc8812d56308f9d1e8b77f3a7dcae4a8803a20a60a0909cc43ed73363ef649bf558e4fb181c7a336d144c89f7998279d1882bb69e + checksum: 43028a8823cb8d58c5219e0471990e0d7e9014ed9ef6f2853076bd9e49a490fc1bcfcf46a4d7b981725da0f31be1496725a4a0edb0149f7c7f54c5d2299dcae1 languageName: node linkType: hard -"@jest/source-map@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/source-map@npm:27.5.1" +"@jest/schemas@npm:^29.0.0": + version: 29.0.0 + resolution: "@jest/schemas@npm:29.0.0" dependencies: + "@sinclair/typebox": ^0.24.1 + checksum: 41355c78f09eb1097e57a3c5d0ca11c9099e235e01ea5fa4e3953562a79a6a9296c1d300f1ba50ca75236048829e056b00685cd2f1ff8285e56fd2ce01249acb + languageName: node + linkType: hard + +"@jest/source-map@npm:^29.0.0": + version: 29.0.0 + resolution: "@jest/source-map@npm:29.0.0" + dependencies: + "@jridgewell/trace-mapping": ^0.3.15 callsites: ^3.0.0 graceful-fs: ^4.2.9 - source-map: ^0.6.0 - checksum: 4fb1e743b602841babf7e22bd84eca34676cb05d4eb3b604cae57fc59e406099f5ac759ac1a0d04d901237d143f0f4f234417306e823bde732a1d19982230862 + checksum: dd97bc5826cf68d6eb5565383816332f800476232fd12800bd027a259cbf3ef216f1633405f3ad0861dde3b12a7886301798c078b334f6d3012044d43abcf4f6 languageName: node linkType: hard -"@jest/test-result@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/test-result@npm:27.5.1" +"@jest/test-result@npm:^29.0.3": + version: 29.0.3 + resolution: "@jest/test-result@npm:29.0.3" dependencies: - "@jest/console": ^27.5.1 - "@jest/types": ^27.5.1 + "@jest/console": ^29.0.3 + "@jest/types": ^29.0.3 "@types/istanbul-lib-coverage": ^2.0.0 collect-v8-coverage: ^1.0.0 - checksum: 338f7c509d6a3bc6d7dd7388c8f6f548b87638e171dc1fddfedcacb4e8950583288832223ba688058cbcf874b937d22bdc0fa88f79f5fc666f77957e465c06a5 + checksum: 9cb76090b2b49cc19f95c51e3593085ab88b2d9539f9c15b1e7919f770aaee75376b453f30a14f2034a5cb25fa8e14f5fcc422f05954dbdb0873220576d9c9a0 languageName: node linkType: hard -"@jest/test-sequencer@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/test-sequencer@npm:27.5.1" +"@jest/test-sequencer@npm:^29.0.3": + version: 29.0.3 + resolution: "@jest/test-sequencer@npm:29.0.3" dependencies: - "@jest/test-result": ^27.5.1 + "@jest/test-result": ^29.0.3 graceful-fs: ^4.2.9 - jest-haste-map: ^27.5.1 - jest-runtime: ^27.5.1 - checksum: f21f9c8bb746847f7f89accfd29d6046eec1446f0b54e4694444feaa4df379791f76ef0f5a4360aafcbc73b50bc979f68b8a7620de404019d3de166be6720cb0 + jest-haste-map: ^29.0.3 + slash: ^3.0.0 + checksum: c6868e29a36c2dd4f6aa71a7148fa7bf34fb845e97b29bc418cb6988245ad7f0cd820aa6dcf9389d0e5b4592b9df8a727a40b0b91eee0dad00f683c250b94a2c languageName: node linkType: hard -"@jest/transform@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/transform@npm:27.5.1" +"@jest/transform@npm:^29.0.3": + version: 29.0.3 + resolution: "@jest/transform@npm:29.0.3" dependencies: - "@babel/core": ^7.1.0 - "@jest/types": ^27.5.1 + "@babel/core": ^7.11.6 + "@jest/types": ^29.0.3 + "@jridgewell/trace-mapping": ^0.3.15 babel-plugin-istanbul: ^6.1.1 chalk: ^4.0.0 convert-source-map: ^1.4.0 - fast-json-stable-stringify: ^2.0.0 + fast-json-stable-stringify: ^2.1.0 graceful-fs: ^4.2.9 - jest-haste-map: ^27.5.1 - jest-regex-util: ^27.5.1 - jest-util: ^27.5.1 + jest-haste-map: ^29.0.3 + jest-regex-util: ^29.0.0 + jest-util: ^29.0.3 micromatch: ^4.0.4 pirates: ^4.0.4 slash: ^3.0.0 - source-map: ^0.6.1 - write-file-atomic: ^3.0.0 - checksum: a22079121aedea0f20a03a9c026be971f7b92adbfb4d5fd1fb67be315741deac4f056936d7c72a53b24aa5a1071bc942c003925fd453bf3f6a0ae5da6384e137 + write-file-atomic: ^4.0.1 + checksum: c68ebb673a27640372c912736aa26bda5bc4dfd7a890bb10c467b81e8a66826c8b8b6826ebf25ed3c7a70b7818fcc60e3c0d7341d1595d5ce4978d53d22a7ea1 languageName: node linkType: hard @@ -9277,6 +9448,20 @@ __metadata: languageName: node linkType: hard +"@jest/types@npm:^29.0.3": + version: 29.0.3 + resolution: "@jest/types@npm:29.0.3" + dependencies: + "@jest/schemas": ^29.0.0 + "@types/istanbul-lib-coverage": ^2.0.0 + "@types/istanbul-reports": ^3.0.0 + "@types/node": "*" + "@types/yargs": ^17.0.8 + chalk: ^4.0.0 + checksum: 3bd33e64d87a5421b860396ac7f7b9b8d5abbf0f300f4379bb20c8e3a6169fbbd078933ce0649827cd63e23330c4effeb6b222fa94e8dd0df638dfff6c1fed41 + languageName: node + linkType: hard + "@jimp/bmp@npm:^0.10.3": version: 0.10.3 resolution: "@jimp/bmp@npm:0.10.3" @@ -9800,7 +9985,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.14": +"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.14, @jridgewell/trace-mapping@npm:^0.3.15": version: 0.3.15 resolution: "@jridgewell/trace-mapping@npm:0.3.15" dependencies: @@ -12629,6 +12814,13 @@ __metadata: languageName: node linkType: hard +"@sinclair/typebox@npm:^0.24.1": + version: 0.24.42 + resolution: "@sinclair/typebox@npm:0.24.42" + checksum: 83a3083b71063ad270669308634f7c5b473272da71cbc405343b2ff774d641ec2be0993e0a61386f8ef3f8b786c173dc01921a5bc6627d95657eb98f19f1a4c4 + languageName: node + linkType: hard + "@sindresorhus/is@npm:^4.0.0": version: 4.0.0 resolution: "@sindresorhus/is@npm:4.0.0" @@ -12654,15 +12846,6 @@ __metadata: languageName: node linkType: hard -"@sinonjs/fake-timers@npm:^8.0.1": - version: 8.1.0 - resolution: "@sinonjs/fake-timers@npm:8.1.0" - dependencies: - "@sinonjs/commons": ^1.7.0 - checksum: 09b5a158ce013a6c37613258bad79ca4efeb99b1f59c41c73cca36cac00b258aefcf46eeea970fccf06b989414d86fe9f54c1102272c0c3bdd51a313cea80949 - languageName: node - linkType: hard - "@sinonjs/samsam@npm:^6.1.1": version: 6.1.1 resolution: "@sinonjs/samsam@npm:6.1.1" @@ -13398,19 +13581,6 @@ __metadata: languageName: node linkType: hard -"@types/babel__core@npm:^7.0.0": - version: 7.1.9 - resolution: "@types/babel__core@npm:7.1.9" - dependencies: - "@babel/parser": ^7.1.0 - "@babel/types": ^7.0.0 - "@types/babel__generator": "*" - "@types/babel__template": "*" - "@types/babel__traverse": "*" - checksum: d92c530efc3e50147f7956fc2aa49162508d2c5abffea7818051dfa9a9c9bc263b7d3da7d6fa826669ff8c68d733bbaced2dfdd486282b8bd013ccc3a0a3b7f6 - languageName: node - linkType: hard - "@types/babel__core@npm:^7.1.14": version: 7.1.18 resolution: "@types/babel__core@npm:7.1.18" @@ -13443,7 +13613,7 @@ __metadata: languageName: node linkType: hard -"@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.4, @types/babel__traverse@npm:^7.0.6": +"@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": version: 7.0.15 resolution: "@types/babel__traverse@npm:7.0.15" dependencies: @@ -13973,7 +14143,7 @@ __metadata: languageName: node linkType: hard -"@types/graceful-fs@npm:^4.1.2": +"@types/graceful-fs@npm:^4.1.3": version: 4.1.5 resolution: "@types/graceful-fs@npm:4.1.5" dependencies: @@ -14129,13 +14299,13 @@ __metadata: languageName: node linkType: hard -"@types/jest@npm:^27": - version: 27.5.2 - resolution: "@types/jest@npm:27.5.2" +"@types/jest@npm:^29.0.0": + version: 29.0.3 + resolution: "@types/jest@npm:29.0.3" dependencies: - jest-matcher-utils: ^27.0.0 - pretty-format: ^27.0.0 - checksum: 7e11c6826aa429ad990dc262e4e4b54aa36573287fddf15773e4137f07d11d3105f0dd9f1baff73252160a057df23f5529bb83b1bf83cd3f45f9460a5ca5c22e + expect: ^29.0.0 + pretty-format: ^29.0.0 + checksum: 14a8ec1954540ec59f4072c3c4dbc6b5d5ff616556c98671aca26606bdf9d49616a3f269f3e488c80cd481ee19880351575c1f6895827628818e193600c121e0 languageName: node linkType: hard @@ -14179,6 +14349,17 @@ __metadata: languageName: node linkType: hard +"@types/jsdom@npm:^20.0.0": + version: 20.0.0 + resolution: "@types/jsdom@npm:20.0.0" + dependencies: + "@types/node": "*" + "@types/tough-cookie": "*" + parse5: ^7.0.0 + checksum: 13e67d31347e02d46ec6a23919b3ce39d86136665922a2a6cb977e216a2f46c22d2f025d0586a64ab492ebaa5f43da669b6f173a5a8cfd3e3bb7c9d19b6cfa9e + languageName: node + linkType: hard + "@types/json-buffer@npm:~3.0.0": version: 3.0.0 resolution: "@types/json-buffer@npm:3.0.0" @@ -15213,6 +15394,15 @@ __metadata: languageName: node linkType: hard +"@types/yargs@npm:^17.0.8": + version: 17.0.12 + resolution: "@types/yargs@npm:17.0.12" + dependencies: + "@types/yargs-parser": "*" + checksum: 5b41d21d8624199f89db82209b2adab2e47867b3677e852fde65698be2ca48364b14c2e70cb0adc9bca4a2102c93dad2409cae0ad666ea36ae031ae1cb08a7b5 + languageName: node + linkType: hard + "@types/yarnpkg__lockfile@npm:^1.1.4": version: 1.1.5 resolution: "@types/yarnpkg__lockfile@npm:1.1.5" @@ -15797,6 +15987,13 @@ __metadata: languageName: node linkType: hard +"abab@npm:^2.0.6": + version: 2.0.6 + resolution: "abab@npm:2.0.6" + checksum: 6ffc1af4ff315066c62600123990d87551ceb0aafa01e6539da77b0f5987ac7019466780bf480f1787576d4385e3690c81ccc37cfda12819bf510b8ab47e5a3e + languageName: node + linkType: hard + "abbrev@npm:1": version: 1.1.1 resolution: "abbrev@npm:1.1.1" @@ -16913,21 +17110,20 @@ __metadata: languageName: node linkType: hard -"babel-jest@npm:^27.5.1": - version: 27.5.1 - resolution: "babel-jest@npm:27.5.1" +"babel-jest@npm:^29.0.3": + version: 29.0.3 + resolution: "babel-jest@npm:29.0.3" dependencies: - "@jest/transform": ^27.5.1 - "@jest/types": ^27.5.1 + "@jest/transform": ^29.0.3 "@types/babel__core": ^7.1.14 babel-plugin-istanbul: ^6.1.1 - babel-preset-jest: ^27.5.1 + babel-preset-jest: ^29.0.2 chalk: ^4.0.0 graceful-fs: ^4.2.9 slash: ^3.0.0 peerDependencies: "@babel/core": ^7.8.0 - checksum: 4e93e6e9fb996cc5f1505e924eb8e8cc7b25c294ba9629762a2715390f48af6a4c14dbb84cd9730013ac0e03267a5a9aa2fb6318c544489cda7f50f4e506def4 + checksum: 4670945691c204464f7694017d59148b97cdbd51ff91ef492340ef5d6bbc74c461fa698a5feb04a93515300632ed44a55e85500bb61206d8a7ff60afb5b6da48 languageName: node linkType: hard @@ -16953,15 +17149,15 @@ __metadata: languageName: node linkType: hard -"babel-plugin-jest-hoist@npm:^27.5.1": - version: 27.5.1 - resolution: "babel-plugin-jest-hoist@npm:27.5.1" +"babel-plugin-jest-hoist@npm:^29.0.2": + version: 29.0.2 + resolution: "babel-plugin-jest-hoist@npm:29.0.2" dependencies: "@babel/template": ^7.3.3 "@babel/types": ^7.3.3 - "@types/babel__core": ^7.0.0 + "@types/babel__core": ^7.1.14 "@types/babel__traverse": ^7.0.6 - checksum: 709c17727aa8fd3be755d256fb514bf945a5c2ea6017f037d80280fc44ae5fe7dfeebf63d8412df53796455c2c216119d628d8cc90b099434fd819005943d058 + checksum: e02ab2c56b471940bc147d75808f6fb5d18b81382088beb36088d2fee8c5f9699b2a814a98884539191d43871d66770928e09c268c095ec39aad5766c3337f34 languageName: node linkType: hard @@ -17100,15 +17296,15 @@ __metadata: languageName: node linkType: hard -"babel-preset-jest@npm:^27.5.1": - version: 27.5.1 - resolution: "babel-preset-jest@npm:27.5.1" +"babel-preset-jest@npm:^29.0.2": + version: 29.0.2 + resolution: "babel-preset-jest@npm:29.0.2" dependencies: - babel-plugin-jest-hoist: ^27.5.1 + babel-plugin-jest-hoist: ^29.0.2 babel-preset-current-node-syntax: ^1.0.0 peerDependencies: "@babel/core": ^7.0.0 - checksum: 251bcea11c18fd9672fec104eadb45b43f117ceeb326fa7345ced778d4c1feab29343cd7a87a1dcfae4997d6c851a8b386d7f7213792da6e23b74f4443a8976d + checksum: 485db525f4cd38c02c29edcd7240dd232e8d6dbcaef88bfa4765ad3057ed733512f1b7aad06f4bf9661afefeb0ada2c4e259d130113b0289d7db574f82bbd4f8 languageName: node linkType: hard @@ -17650,6 +17846,20 @@ __metadata: languageName: node linkType: hard +"browserslist@npm:^4.21.3": + version: 4.21.4 + resolution: "browserslist@npm:4.21.4" + dependencies: + caniuse-lite: ^1.0.30001400 + electron-to-chromium: ^1.4.251 + node-releases: ^2.0.6 + update-browserslist-db: ^1.0.9 + bin: + browserslist: cli.js + checksum: 4af3793704dbb4615bcd29059ab472344dc7961c8680aa6c4bb84f05340e14038d06a5aead58724eae69455b8fade8b8c69f1638016e87e5578969d74c078b79 + languageName: node + linkType: hard + "bser@npm:2.1.1": version: 2.1.1 resolution: "bser@npm:2.1.1" @@ -18015,6 +18225,13 @@ __metadata: languageName: node linkType: hard +"caniuse-lite@npm:^1.0.30001400": + version: 1.0.30001407 + resolution: "caniuse-lite@npm:1.0.30001407" + checksum: e1c449d22f120a708accc956c1780f1da01af6c226cb6a324e531dc9f26f53075bff98e6c9cfce806157cdeede459aa8de03a3407b05f71d292a57b2910018b1 + languageName: node + linkType: hard + "canvas@npm:^2.6.1": version: 2.10.1 resolution: "canvas@npm:2.10.1" @@ -19814,6 +20031,13 @@ __metadata: languageName: node linkType: hard +"cssom@npm:^0.5.0": + version: 0.5.0 + resolution: "cssom@npm:0.5.0" + checksum: 823471aa30091c59e0a305927c30e7768939b6af70405808f8d2ce1ca778cddcb24722717392438329d1691f9a87cb0183b64b8d779b56a961546d54854fde01 + languageName: node + linkType: hard + "cssom@npm:~0.3.6": version: 0.3.8 resolution: "cssom@npm:0.3.8" @@ -20276,6 +20500,17 @@ __metadata: languageName: node linkType: hard +"data-urls@npm:^3.0.2": + version: 3.0.2 + resolution: "data-urls@npm:3.0.2" + dependencies: + abab: ^2.0.6 + whatwg-mimetype: ^3.0.0 + whatwg-url: ^11.0.0 + checksum: 033fc3dd0fba6d24bc9a024ddcf9923691dd24f90a3d26f6545d6a2f71ec6956f93462f2cdf2183cc46f10dc01ed3bcb36731a8208456eb1a08147e571fe2a76 + languageName: node + linkType: hard + "dataloader@npm:2.1.0, dataloader@npm:^2.0.0": version: 2.1.0 resolution: "dataloader@npm:2.1.0" @@ -20423,6 +20658,13 @@ __metadata: languageName: node linkType: hard +"decimal.js@npm:^10.3.1": + version: 10.4.1 + resolution: "decimal.js@npm:10.4.1" + checksum: 5da6dc74af5b73d954741b24d404ef6da07841794d9e51412a2708ec384dd7b4bced3365fb178f4cd119b7ef45f0b34344014a4dc0494c8374c5e746df3cb410 + languageName: node + linkType: hard + "decode-named-character-reference@npm:^1.0.0": version: 1.0.1 resolution: "decode-named-character-reference@npm:1.0.1" @@ -20739,6 +20981,13 @@ __metadata: languageName: node linkType: hard +"diff-sequences@npm:^29.0.0": + version: 29.0.0 + resolution: "diff-sequences@npm:29.0.0" + checksum: 2c084a3db03ecde26f649f6f2559974e01e174451debeb301a7e17199e73423a8e8ddeb9a35ae38638c084b4fa51296a4a20fa7f44f3db0c0ba566bdc704ed3d + languageName: node + linkType: hard + "diff2html@npm:^2.7.0": version: 2.12.2 resolution: "diff2html@npm:2.12.2" @@ -20950,6 +21199,15 @@ __metadata: languageName: node linkType: hard +"domexception@npm:^4.0.0": + version: 4.0.0 + resolution: "domexception@npm:4.0.0" + dependencies: + webidl-conversions: ^7.0.0 + checksum: ddbc1268edf33a8ba02ccc596735ede80375ee0cf124b30d2f05df5b464ba78ef4f49889b6391df4a04954e63d42d5631c7fcf8b1c4f12bc531252977a5f13d5 + languageName: node + linkType: hard + "domhandler@npm:^4.0.0, domhandler@npm:^4.2.0": version: 4.3.0 resolution: "domhandler@npm:4.3.0" @@ -21172,6 +21430,13 @@ __metadata: languageName: node linkType: hard +"electron-to-chromium@npm:^1.4.251": + version: 1.4.255 + resolution: "electron-to-chromium@npm:1.4.255" + checksum: 9fd4e0b4a05b072e211b5a1ad2e20b099d7cd54a47b6cbf700dc9ef2020291b5b2d179af0dd0fc71be74b3c765a71ad14f7ff20afb637c0b58e7abc26ff3b68e + languageName: node + linkType: hard + "elliptic@npm:^6.0.0": version: 6.5.4 resolution: "elliptic@npm:6.5.4" @@ -21187,10 +21452,10 @@ __metadata: languageName: node linkType: hard -"emittery@npm:^0.8.1": - version: 0.8.1 - resolution: "emittery@npm:0.8.1" - checksum: 2457e8c7b0688bb006126f2c025b2655abe682f66b184954122a8a065b5277f9813d49d627896a10b076b81c513ec5f491fd9c14fbd42c04b95ca3c9f3c365ee +"emittery@npm:^0.10.2": + version: 0.10.2 + resolution: "emittery@npm:0.10.2" + checksum: ee3e21788b043b90885b18ea756ec3105c1cedc50b29709c92b01e239c7e55345d4bb6d3aef4ddbaf528eef448a40b3bb831bad9ee0fc9c25cbf1367ab1ab5ac languageName: node linkType: hard @@ -21333,6 +21598,13 @@ __metadata: languageName: node linkType: hard +"entities@npm:^4.4.0": + version: 4.4.0 + resolution: "entities@npm:4.4.0" + checksum: 84d250329f4b56b40fa93ed067b194db21e8815e4eb9b59f43a086f0ecd342814f6bc483de8a77da5d64e0f626033192b1b4f1792232a7ea6b970ebe0f3187c2 + languageName: node + linkType: hard + "env-paths@npm:^2.2.0": version: 2.2.0 resolution: "env-paths@npm:2.2.0" @@ -22563,15 +22835,16 @@ __metadata: languageName: node linkType: hard -"expect@npm:^27.5.1": - version: 27.5.1 - resolution: "expect@npm:27.5.1" +"expect@npm:^29.0.0, expect@npm:^29.0.3": + version: 29.0.3 + resolution: "expect@npm:29.0.3" dependencies: - "@jest/types": ^27.5.1 - jest-get-type: ^27.5.1 - jest-matcher-utils: ^27.5.1 - jest-message-util: ^27.5.1 - checksum: b2c66beb52de53ef1872165aace40224e722bca3c2274c54cfa74b6d617d55cf0ccdbf36783ccd64dbea501b280098ed33fd0b207d4f15bc03cd3c7a24364a6a + "@jest/expect-utils": ^29.0.3 + jest-get-type: ^29.0.0 + jest-matcher-utils: ^29.0.3 + jest-message-util: ^29.0.3 + jest-util: ^29.0.3 + checksum: 21b7fd346c47896a3de8f1103d7be32dab9409eb3dc170b7a9ff5d8d564b8499bd600b9af6251fe2f46064cf4e2f1456a6c6318da15314b7d74ed6dad723b555 languageName: node linkType: hard @@ -24893,6 +25166,15 @@ __metadata: languageName: node linkType: hard +"html-encoding-sniffer@npm:^3.0.0": + version: 3.0.0 + resolution: "html-encoding-sniffer@npm:3.0.0" + dependencies: + whatwg-encoding: ^2.0.0 + checksum: 8d806aa00487e279e5ccb573366a951a9f68f65c90298eac9c3a2b440a7ffe46615aff2995a2f61c6746c639234e6179a97e18ca5ccbbf93d3725ef2099a4502 + languageName: node + linkType: hard + "html-entities@npm:^2.1.0, html-entities@npm:^2.3.2": version: 2.3.2 resolution: "html-entities@npm:2.3.2" @@ -25100,7 +25382,7 @@ __metadata: languageName: node linkType: hard -"https-proxy-agent@npm:5.0.1, https-proxy-agent@npm:^5.0.0": +"https-proxy-agent@npm:5.0.1, https-proxy-agent@npm:^5.0.0, https-proxy-agent@npm:^5.0.1": version: 5.0.1 resolution: "https-proxy-agent@npm:5.0.1" dependencies: @@ -25179,7 +25461,7 @@ __metadata: languageName: node linkType: hard -"iconv-lite@npm:^0.6.2, iconv-lite@npm:^0.6.3": +"iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.2, iconv-lite@npm:^0.6.3": version: 0.6.3 resolution: "iconv-lite@npm:0.6.3" dependencies: @@ -26667,60 +26949,59 @@ __metadata: languageName: node linkType: hard -"jest-changed-files@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-changed-files@npm:27.5.1" +"jest-changed-files@npm:^29.0.0": + version: 29.0.0 + resolution: "jest-changed-files@npm:29.0.0" dependencies: - "@jest/types": ^27.5.1 execa: ^5.0.0 - throat: ^6.0.1 - checksum: 95e9dc74c3ca688ef85cfeab270f43f8902721a6c8ade6ac2459459a77890c85977f537d6fb809056deaa6d9c3f075fa7d2699ff5f3bf7d3fda17c3760b79b15 + p-limit: ^3.1.0 + checksum: 5642ace8cd1e7e4f9e3ee423b97d0b018b00ad85ea7e5864592b4657e8500ef56ec50d2189229b912223046bbf31c9196c8ef2442a917be9726a5911d40db1b2 languageName: node linkType: hard -"jest-circus@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-circus@npm:27.5.1" +"jest-circus@npm:^29.0.3": + version: 29.0.3 + resolution: "jest-circus@npm:29.0.3" dependencies: - "@jest/environment": ^27.5.1 - "@jest/test-result": ^27.5.1 - "@jest/types": ^27.5.1 + "@jest/environment": ^29.0.3 + "@jest/expect": ^29.0.3 + "@jest/test-result": ^29.0.3 + "@jest/types": ^29.0.3 "@types/node": "*" chalk: ^4.0.0 co: ^4.6.0 dedent: ^0.7.0 - expect: ^27.5.1 is-generator-fn: ^2.0.0 - jest-each: ^27.5.1 - jest-matcher-utils: ^27.5.1 - jest-message-util: ^27.5.1 - jest-runtime: ^27.5.1 - jest-snapshot: ^27.5.1 - jest-util: ^27.5.1 - pretty-format: ^27.5.1 + jest-each: ^29.0.3 + jest-matcher-utils: ^29.0.3 + jest-message-util: ^29.0.3 + jest-runtime: ^29.0.3 + jest-snapshot: ^29.0.3 + jest-util: ^29.0.3 + p-limit: ^3.1.0 + pretty-format: ^29.0.3 slash: ^3.0.0 stack-utils: ^2.0.3 - throat: ^6.0.1 - checksum: 6192dccbccb3a6acfa361cbb97bdbabe94864ccf3d885932cfd41f19534329d40698078cf9be1489415e8234255d6ea9f9aff5396b79ad842a6fca6e6fc08fd0 + checksum: 6ba495d4fb68ebb59f269b59029837f55009793d632ba2f29300992de80f7e3a37e619ea4e88676982cf74128416265a5929b3f9b77142fbf27c1dd0d6b6f98c languageName: node linkType: hard -"jest-cli@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-cli@npm:27.5.1" +"jest-cli@npm:^29.0.3": + version: 29.0.3 + resolution: "jest-cli@npm:29.0.3" dependencies: - "@jest/core": ^27.5.1 - "@jest/test-result": ^27.5.1 - "@jest/types": ^27.5.1 + "@jest/core": ^29.0.3 + "@jest/test-result": ^29.0.3 + "@jest/types": ^29.0.3 chalk: ^4.0.0 exit: ^0.1.2 graceful-fs: ^4.2.9 import-local: ^3.0.2 - jest-config: ^27.5.1 - jest-util: ^27.5.1 - jest-validate: ^27.5.1 + jest-config: ^29.0.3 + jest-util: ^29.0.3 + jest-validate: ^29.0.3 prompts: ^2.0.1 - yargs: ^16.2.0 + yargs: ^17.3.1 peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: @@ -26728,44 +27009,45 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: 6c0a69fb48e500241409e09ff743ed72bc6578d7769e2c994724e7ef1e5587f6c1f85dc429e93b98ae38a365222993ee70f0acc2199358992120900984f349e5 + checksum: 4cd6ed7effcf703c3275bb07231227e32bd2de2dfc84354f0bbd25a2a8b26395570c8902c7dc87b02bed4a57c304a6b48e21a60fa26025b89c1e4e61eae1ea38 languageName: node linkType: hard -"jest-config@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-config@npm:27.5.1" +"jest-config@npm:^29.0.3": + version: 29.0.3 + resolution: "jest-config@npm:29.0.3" dependencies: - "@babel/core": ^7.8.0 - "@jest/test-sequencer": ^27.5.1 - "@jest/types": ^27.5.1 - babel-jest: ^27.5.1 + "@babel/core": ^7.11.6 + "@jest/test-sequencer": ^29.0.3 + "@jest/types": ^29.0.3 + babel-jest: ^29.0.3 chalk: ^4.0.0 ci-info: ^3.2.0 deepmerge: ^4.2.2 - glob: ^7.1.1 + glob: ^7.1.3 graceful-fs: ^4.2.9 - jest-circus: ^27.5.1 - jest-environment-jsdom: ^27.5.1 - jest-environment-node: ^27.5.1 - jest-get-type: ^27.5.1 - jest-jasmine2: ^27.5.1 - jest-regex-util: ^27.5.1 - jest-resolve: ^27.5.1 - jest-runner: ^27.5.1 - jest-util: ^27.5.1 - jest-validate: ^27.5.1 + jest-circus: ^29.0.3 + jest-environment-node: ^29.0.3 + jest-get-type: ^29.0.0 + jest-regex-util: ^29.0.0 + jest-resolve: ^29.0.3 + jest-runner: ^29.0.3 + jest-util: ^29.0.3 + jest-validate: ^29.0.3 micromatch: ^4.0.4 parse-json: ^5.2.0 - pretty-format: ^27.5.1 + pretty-format: ^29.0.3 slash: ^3.0.0 strip-json-comments: ^3.1.1 peerDependencies: + "@types/node": "*" ts-node: ">=9.0.0" peerDependenciesMeta: + "@types/node": + optional: true ts-node: optional: true - checksum: 1188fd46c0ed78cbe3175eb9ad6712ccf74a74be33d9f0d748e147c107f0889f8b701fbff1567f31836ae18597dacdc43d6a8fc30dd34ade6c9229cc6c7cb82d + checksum: b2861ebf946e8c332c0526559de7f41d79bbe27731ee4de15add1a2ac8baec160ed572d22e66fd8dae6cde38dbedc9dd0987397021499f7aa44f558da651c65a languageName: node linkType: hard @@ -26790,54 +27072,67 @@ __metadata: languageName: node linkType: hard -"jest-docblock@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-docblock@npm:27.5.1" +"jest-diff@npm:^29.0.3": + version: 29.0.3 + resolution: "jest-diff@npm:29.0.3" + dependencies: + chalk: ^4.0.0 + diff-sequences: ^29.0.0 + jest-get-type: ^29.0.0 + pretty-format: ^29.0.3 + checksum: 1e12b63ea6254ea25146b6fb19f8b2d1ba334e1b8b635a007767c17dc272728afbdf41ccccce26c2a40cd9c7f3176bcfed53be2572927a3fc7b1ee5fff43eb26 + languageName: node + linkType: hard + +"jest-docblock@npm:^29.0.0": + version: 29.0.0 + resolution: "jest-docblock@npm:29.0.0" dependencies: detect-newline: ^3.0.0 - checksum: c0fed6d55b229d8bffdd8d03f121dd1a3be77c88f50552d374f9e1ea3bde57bf6bea017a0add04628d98abcb1bfb48b456438eeca8a74ef0053f4dae3b95d29c + checksum: b4f81426cc0dffb05b873d3cc373a1643040be62d72cce4dfed499fbcb57c55ac02c44af7aba5e7753915ff5e85b8d6030456981156eaea20be1cb57d2719904 languageName: node linkType: hard -"jest-each@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-each@npm:27.5.1" +"jest-each@npm:^29.0.3": + version: 29.0.3 + resolution: "jest-each@npm:29.0.3" dependencies: - "@jest/types": ^27.5.1 + "@jest/types": ^29.0.3 chalk: ^4.0.0 - jest-get-type: ^27.5.1 - jest-util: ^27.5.1 - pretty-format: ^27.5.1 - checksum: b5a6d8730fd938982569c9e0b42bdf3c242f97b957ed8155a6473b5f7b540970f8685524e7f53963dc1805319f4b6602abfc56605590ca19d55bd7a87e467e63 + jest-get-type: ^29.0.0 + jest-util: ^29.0.3 + pretty-format: ^29.0.3 + checksum: 80c1912eb573a2972e29d9731cfbfa773b010c1416998eca28a90bda4f50de393c60860a2cb1531a4d3e0a0d23698c561a64e8942d48a75023b683136de519cc languageName: node linkType: hard -"jest-environment-jsdom@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-environment-jsdom@npm:27.5.1" +"jest-environment-jsdom@npm:^29.0.2": + version: 29.0.3 + resolution: "jest-environment-jsdom@npm:29.0.3" dependencies: - "@jest/environment": ^27.5.1 - "@jest/fake-timers": ^27.5.1 - "@jest/types": ^27.5.1 + "@jest/environment": ^29.0.3 + "@jest/fake-timers": ^29.0.3 + "@jest/types": ^29.0.3 + "@types/jsdom": ^20.0.0 "@types/node": "*" - jest-mock: ^27.5.1 - jest-util: ^27.5.1 - jsdom: ^16.6.0 - checksum: bc104aef7d7530d0740402aa84ac812138b6d1e51fe58adecce679f82b99340ddab73e5ec68fa079f33f50c9ddec9728fc9f0ddcca2ad6f0b351eed2762cc555 + jest-mock: ^29.0.3 + jest-util: ^29.0.3 + jsdom: ^20.0.0 + checksum: fee4f06b61fd0a402cbbf770d6a4cee70ea2b93a9bd776830d16d4b8dcf488943b7d7b2779301e977747bb7ef3ce1e6265725b6296236803385bb7a212ca6290 languageName: node linkType: hard -"jest-environment-node@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-environment-node@npm:27.5.1" +"jest-environment-node@npm:^29.0.3": + version: 29.0.3 + resolution: "jest-environment-node@npm:29.0.3" dependencies: - "@jest/environment": ^27.5.1 - "@jest/fake-timers": ^27.5.1 - "@jest/types": ^27.5.1 + "@jest/environment": ^29.0.3 + "@jest/fake-timers": ^29.0.3 + "@jest/types": ^29.0.3 "@types/node": "*" - jest-mock: ^27.5.1 - jest-util: ^27.5.1 - checksum: 0f988330c4f3eec092e3fb37ea753b0c6f702e83cd8f4d770af9c2bf964a70bc45fbd34ec6fdb6d71ce98a778d9f54afd673e63f222e4667fff289e8069dba39 + jest-mock: ^29.0.3 + jest-util: ^29.0.3 + checksum: 76cd5759cdb08d3a4619004a23cc45fb8d103004b4d3e95451a36b981540c5d56e4f2a5b3cafb8ecf144bf874633ea86118a202e08aec1f445a25caf4081d8bc languageName: node linkType: hard @@ -26848,66 +27143,47 @@ __metadata: languageName: node linkType: hard -"jest-haste-map@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-haste-map@npm:27.5.1" +"jest-get-type@npm:^29.0.0": + version: 29.0.0 + resolution: "jest-get-type@npm:29.0.0" + checksum: 9abdd11d69788963a92fb9d813a7b887654ecc8f3a3c8bf83166d33aaf4d57ed380e74ab8ef106f57565dd235446ca6ebc607679f0c516c4633e6d09f0540a2b + languageName: node + linkType: hard + +"jest-haste-map@npm:^29.0.3": + version: 29.0.3 + resolution: "jest-haste-map@npm:29.0.3" dependencies: - "@jest/types": ^27.5.1 - "@types/graceful-fs": ^4.1.2 + "@jest/types": ^29.0.3 + "@types/graceful-fs": ^4.1.3 "@types/node": "*" anymatch: ^3.0.3 fb-watchman: ^2.0.0 fsevents: ^2.3.2 graceful-fs: ^4.2.9 - jest-regex-util: ^27.5.1 - jest-serializer: ^27.5.1 - jest-util: ^27.5.1 - jest-worker: ^27.5.1 + jest-regex-util: ^29.0.0 + jest-util: ^29.0.3 + jest-worker: ^29.0.3 micromatch: ^4.0.4 - walker: ^1.0.7 + walker: ^1.0.8 dependenciesMeta: fsevents: optional: true - checksum: e092a1412829a9254b4725531ee72926de530f77fda7b0d9ea18008fb7623c16f72e772d8e93be71cac9e591b2c6843a669610887dd2c89bd9eb528856e3ab47 + checksum: fb766e0d8174e7e3a43a63b28e23bd35db61a5939d6c5c1335d7f3d642d1c608e16fef8a105289b78795e308ab3176a62bc45acfa3fa14087e7635cb008795c3 languageName: node linkType: hard -"jest-jasmine2@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-jasmine2@npm:27.5.1" +"jest-leak-detector@npm:^29.0.3": + version: 29.0.3 + resolution: "jest-leak-detector@npm:29.0.3" dependencies: - "@jest/environment": ^27.5.1 - "@jest/source-map": ^27.5.1 - "@jest/test-result": ^27.5.1 - "@jest/types": ^27.5.1 - "@types/node": "*" - chalk: ^4.0.0 - co: ^4.6.0 - expect: ^27.5.1 - is-generator-fn: ^2.0.0 - jest-each: ^27.5.1 - jest-matcher-utils: ^27.5.1 - jest-message-util: ^27.5.1 - jest-runtime: ^27.5.1 - jest-snapshot: ^27.5.1 - jest-util: ^27.5.1 - pretty-format: ^27.5.1 - throat: ^6.0.1 - checksum: b716adf253ceb73db661936153394ab90d7f3a8ba56d6189b7cd4df8e4e2a4153b4e63ebb5d36e29ceb0f4c211d5a6f36ab7048c6abbd881c8646567e2ab8e6d + jest-get-type: ^29.0.0 + pretty-format: ^29.0.3 + checksum: a1657dbb72f2c3b4a8af148daec491d42eabdadc4e27eb8ec325d5267c21ac958e82e5c8ee679861c2131afd2bdfed4139b806511de7624d93b9838c6fcf5b2e languageName: node linkType: hard -"jest-leak-detector@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-leak-detector@npm:27.5.1" - dependencies: - jest-get-type: ^27.5.1 - pretty-format: ^27.5.1 - checksum: 5c9689060960567ddaf16c570d87afa760a461885765d2c71ef4f4857bbc3af1482c34e3cce88e50beefde1bf35e33530b020480752057a7e3dbb1ca0bae359f - languageName: node - linkType: hard - -"jest-matcher-utils@npm:^27.0.0, jest-matcher-utils@npm:^27.5.1": +"jest-matcher-utils@npm:^27.0.0": version: 27.5.1 resolution: "jest-matcher-utils@npm:27.5.1" dependencies: @@ -26919,30 +27195,42 @@ __metadata: languageName: node linkType: hard -"jest-message-util@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-message-util@npm:27.5.1" +"jest-matcher-utils@npm:^29.0.3": + version: 29.0.3 + resolution: "jest-matcher-utils@npm:29.0.3" + dependencies: + chalk: ^4.0.0 + jest-diff: ^29.0.3 + jest-get-type: ^29.0.0 + pretty-format: ^29.0.3 + checksum: e39ab74a046ada8fbd75a275bfe54bd5f8ec14a98f77e1162a49d4e1ea82e68c5a4575691767cea0f60dd0b74cb481275012bf3467cd91fdb014311c670b8a83 + languageName: node + linkType: hard + +"jest-message-util@npm:^29.0.3": + version: 29.0.3 + resolution: "jest-message-util@npm:29.0.3" dependencies: "@babel/code-frame": ^7.12.13 - "@jest/types": ^27.5.1 + "@jest/types": ^29.0.3 "@types/stack-utils": ^2.0.0 chalk: ^4.0.0 graceful-fs: ^4.2.9 micromatch: ^4.0.4 - pretty-format: ^27.5.1 + pretty-format: ^29.0.3 slash: ^3.0.0 stack-utils: ^2.0.3 - checksum: eb6d637d1411c71646de578c49826b6da8e33dd293e501967011de9d1916d53d845afbfb52a5b661ff1c495be7c13f751c48c7f30781fd94fbd64842e8195796 + checksum: 04bee1fee10106f4eb875092e5d06187930d44050a4f99e7aa1d1e42768b18d6d9e5439623d9242202942deb8a1eec08359e0cd19a43ae505d96aeaf243a3f8d languageName: node linkType: hard -"jest-mock@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-mock@npm:27.5.1" +"jest-mock@npm:^29.0.3": + version: 29.0.3 + resolution: "jest-mock@npm:29.0.3" dependencies: - "@jest/types": ^27.5.1 + "@jest/types": ^29.0.3 "@types/node": "*" - checksum: f5b5904bb1741b4a1687a5f492535b7b1758dc26534c72a5423305f8711292e96a601dec966df81bb313269fb52d47227e29f9c2e08324d79529172f67311be0 + checksum: 8a04823334216f5fca9733a200cbb4cca207bdd74c523321a4170cbec3b2086b44eb1744a9faef808d2853593f132dda90d17e4bce59678fc373e1bab666ad0f languageName: node linkType: hard @@ -26958,138 +27246,128 @@ __metadata: languageName: node linkType: hard -"jest-regex-util@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-regex-util@npm:27.5.1" - checksum: d45ca7a9543616a34f7f3079337439cf07566e677a096472baa2810e274b9808b76767c97b0a4029b8a5b82b9d256dee28ef9ad4138b2b9e5933f6fac106c418 +"jest-regex-util@npm:^29.0.0": + version: 29.0.0 + resolution: "jest-regex-util@npm:29.0.0" + checksum: dce16394c357213008e6f84f2288f77c64bba59b7cb48ea614e85c5aae036a7e46dbfd1f45aa08180b7e7c576102bf4f8f0ff8bc60fb9721fb80874adc3ae0ea languageName: node linkType: hard -"jest-resolve-dependencies@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-resolve-dependencies@npm:27.5.1" +"jest-resolve-dependencies@npm:^29.0.3": + version: 29.0.3 + resolution: "jest-resolve-dependencies@npm:29.0.3" dependencies: - "@jest/types": ^27.5.1 - jest-regex-util: ^27.5.1 - jest-snapshot: ^27.5.1 - checksum: c67af97afad1da88f5530317c732bbd1262d1225f6cd7f4e4740a5db48f90ab0bd8564738ac70d1a43934894f9aef62205c1b8f8ee89e5c7a737e6a121ee4c25 + jest-regex-util: ^29.0.0 + jest-snapshot: ^29.0.3 + checksum: 43980c0c03a7f00459209315832f03c28d8289ca30ccd8bb6652c87a2c03275aacdba8789177cefc162ceb05218ba3db8bf5a1968920aa4e510cbbefd54f9793 languageName: node linkType: hard -"jest-resolve@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-resolve@npm:27.5.1" +"jest-resolve@npm:^29.0.3": + version: 29.0.3 + resolution: "jest-resolve@npm:29.0.3" dependencies: - "@jest/types": ^27.5.1 chalk: ^4.0.0 graceful-fs: ^4.2.9 - jest-haste-map: ^27.5.1 + jest-haste-map: ^29.0.3 jest-pnp-resolver: ^1.2.2 - jest-util: ^27.5.1 - jest-validate: ^27.5.1 + jest-util: ^29.0.3 + jest-validate: ^29.0.3 resolve: ^1.20.0 resolve.exports: ^1.1.0 slash: ^3.0.0 - checksum: 735830e7265b20a348029738680bb2f6e37f80ecea86cda869a4c318ba3a45d39c7a3a873a22f7f746d86258c50ead6e7f501de043e201c095d7ba628a1c440f + checksum: 9a774f78decbd9caa863e8c539d439aac76a780ea7acc54e90f2ad9c2000c03294e7f4f38816d16a8aa020ae0e3358845cc8f96fbab5f3e186b00e6e0462bf9b languageName: node linkType: hard -"jest-runner@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-runner@npm:27.5.1" +"jest-runner@npm:^29.0.3": + version: 29.0.3 + resolution: "jest-runner@npm:29.0.3" dependencies: - "@jest/console": ^27.5.1 - "@jest/environment": ^27.5.1 - "@jest/test-result": ^27.5.1 - "@jest/transform": ^27.5.1 - "@jest/types": ^27.5.1 + "@jest/console": ^29.0.3 + "@jest/environment": ^29.0.3 + "@jest/test-result": ^29.0.3 + "@jest/transform": ^29.0.3 + "@jest/types": ^29.0.3 "@types/node": "*" chalk: ^4.0.0 - emittery: ^0.8.1 + emittery: ^0.10.2 graceful-fs: ^4.2.9 - jest-docblock: ^27.5.1 - jest-environment-jsdom: ^27.5.1 - jest-environment-node: ^27.5.1 - jest-haste-map: ^27.5.1 - jest-leak-detector: ^27.5.1 - jest-message-util: ^27.5.1 - jest-resolve: ^27.5.1 - jest-runtime: ^27.5.1 - jest-util: ^27.5.1 - jest-worker: ^27.5.1 - source-map-support: ^0.5.6 - throat: ^6.0.1 - checksum: 5bbe6cf847dd322b3332ec9d6977b54f91bd5f72ff620bc1a0192f0f129deda8aa7ca74c98922187a7aa87d8e0ce4f6c50e99a7ccb2a310bf4d94be2e0c3ce8e + jest-docblock: ^29.0.0 + jest-environment-node: ^29.0.3 + jest-haste-map: ^29.0.3 + jest-leak-detector: ^29.0.3 + jest-message-util: ^29.0.3 + jest-resolve: ^29.0.3 + jest-runtime: ^29.0.3 + jest-util: ^29.0.3 + jest-watcher: ^29.0.3 + jest-worker: ^29.0.3 + p-limit: ^3.1.0 + source-map-support: 0.5.13 + checksum: db62830d1635be5e376fd261e38d37a4855146c9a586ec616cfb64257ef6f79697bd947bbb9751377dc2302626e73d1b77036eafd78ef6f93e1e53ca89c23e3e languageName: node linkType: hard -"jest-runtime@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-runtime@npm:27.5.1" +"jest-runtime@npm:^29.0.2, jest-runtime@npm:^29.0.3": + version: 29.0.3 + resolution: "jest-runtime@npm:29.0.3" dependencies: - "@jest/environment": ^27.5.1 - "@jest/fake-timers": ^27.5.1 - "@jest/globals": ^27.5.1 - "@jest/source-map": ^27.5.1 - "@jest/test-result": ^27.5.1 - "@jest/transform": ^27.5.1 - "@jest/types": ^27.5.1 + "@jest/environment": ^29.0.3 + "@jest/fake-timers": ^29.0.3 + "@jest/globals": ^29.0.3 + "@jest/source-map": ^29.0.0 + "@jest/test-result": ^29.0.3 + "@jest/transform": ^29.0.3 + "@jest/types": ^29.0.3 + "@types/node": "*" chalk: ^4.0.0 cjs-module-lexer: ^1.0.0 collect-v8-coverage: ^1.0.0 - execa: ^5.0.0 glob: ^7.1.3 graceful-fs: ^4.2.9 - jest-haste-map: ^27.5.1 - jest-message-util: ^27.5.1 - jest-mock: ^27.5.1 - jest-regex-util: ^27.5.1 - jest-resolve: ^27.5.1 - jest-snapshot: ^27.5.1 - jest-util: ^27.5.1 + jest-haste-map: ^29.0.3 + jest-message-util: ^29.0.3 + jest-mock: ^29.0.3 + jest-regex-util: ^29.0.0 + jest-resolve: ^29.0.3 + jest-snapshot: ^29.0.3 + jest-util: ^29.0.3 slash: ^3.0.0 strip-bom: ^4.0.0 - checksum: 929e3df0c53dab43f831f2af4e2996b22aa8cb2d6d483919d6b0426cbc100098fd5b777b998c6568b77f8c4d860b2e83127514292ff61416064f5ef926492386 + checksum: e13bfadfe225e9c06a95809d34e209e1769723c0c3d5913d86e4e748a22777e2bec11a352f2d12ca790e04203a6defc6556f77a3050518ebf6600a454a56fd36 languageName: node linkType: hard -"jest-serializer@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-serializer@npm:27.5.1" +"jest-snapshot@npm:^29.0.3": + version: 29.0.3 + resolution: "jest-snapshot@npm:29.0.3" dependencies: - "@types/node": "*" - graceful-fs: ^4.2.9 - checksum: 803e03a552278610edc6753c0dd9fa5bb5cd3ca47414a7b2918106efb62b79fd5e9ae785d0a21f12a299fa599fea8acc1fa6dd41283328cee43962cf7df9bb44 - languageName: node - linkType: hard - -"jest-snapshot@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-snapshot@npm:27.5.1" - dependencies: - "@babel/core": ^7.7.2 + "@babel/core": ^7.11.6 "@babel/generator": ^7.7.2 + "@babel/plugin-syntax-jsx": ^7.7.2 "@babel/plugin-syntax-typescript": ^7.7.2 "@babel/traverse": ^7.7.2 - "@babel/types": ^7.0.0 - "@jest/transform": ^27.5.1 - "@jest/types": ^27.5.1 - "@types/babel__traverse": ^7.0.4 + "@babel/types": ^7.3.3 + "@jest/expect-utils": ^29.0.3 + "@jest/transform": ^29.0.3 + "@jest/types": ^29.0.3 + "@types/babel__traverse": ^7.0.6 "@types/prettier": ^2.1.5 babel-preset-current-node-syntax: ^1.0.0 chalk: ^4.0.0 - expect: ^27.5.1 + expect: ^29.0.3 graceful-fs: ^4.2.9 - jest-diff: ^27.5.1 - jest-get-type: ^27.5.1 - jest-haste-map: ^27.5.1 - jest-matcher-utils: ^27.5.1 - jest-message-util: ^27.5.1 - jest-util: ^27.5.1 + jest-diff: ^29.0.3 + jest-get-type: ^29.0.0 + jest-haste-map: ^29.0.3 + jest-matcher-utils: ^29.0.3 + jest-message-util: ^29.0.3 + jest-util: ^29.0.3 natural-compare: ^1.4.0 - pretty-format: ^27.5.1 - semver: ^7.3.2 - checksum: a5cfadf0d21cd76063925d1434bc076443ed6d87847d0e248f0b245f11db3d98ff13e45cc03b15404027dabecd712d925f47b6eae4f64986f688640a7d362514 + pretty-format: ^29.0.3 + semver: ^7.3.5 + checksum: 412c0fc4c12c14470aa33beeddfeb04fa0d5724235321e8284b52097c74c97ada40ea52f5ac52a8e01e6d42dd5894b9a0260577d30c8c723ca84fcc7a60bd40c languageName: node linkType: hard @@ -27102,46 +27380,47 @@ __metadata: languageName: node linkType: hard -"jest-util@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-util@npm:27.5.1" +"jest-util@npm:^29.0.3": + version: 29.0.3 + resolution: "jest-util@npm:29.0.3" dependencies: - "@jest/types": ^27.5.1 + "@jest/types": ^29.0.3 "@types/node": "*" chalk: ^4.0.0 ci-info: ^3.2.0 graceful-fs: ^4.2.9 picomatch: ^2.2.3 - checksum: ac8d122f6daf7a035dcea156641fd3701aeba245417c40836a77e35b3341b9c02ddc5d904cfcd4ddbaa00ab854da76d3b911870cafdcdbaff90ea471de26c7d7 + checksum: 39c31e75ba5bcb4c3ccdf0895f9fdbb83f839c432e7c6639a688beb414d681b5d50282da017c723ea1f2a7033e74a4938fd33dcff231c3e90f903173919991d5 languageName: node linkType: hard -"jest-validate@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-validate@npm:27.5.1" +"jest-validate@npm:^29.0.3": + version: 29.0.3 + resolution: "jest-validate@npm:29.0.3" dependencies: - "@jest/types": ^27.5.1 + "@jest/types": ^29.0.3 camelcase: ^6.2.0 chalk: ^4.0.0 - jest-get-type: ^27.5.1 + jest-get-type: ^29.0.0 leven: ^3.1.0 - pretty-format: ^27.5.1 - checksum: 82e870f8ee7e4fb949652711b1567f05ae31c54be346b0899e8353e5c20fad7692b511905b37966945e90af8dc0383eb41a74f3ffefb16140ea4f9164d841412 + pretty-format: ^29.0.3 + checksum: 096df6a77837155d9b65cd7ff9198489317c53903eb74a7f207e053c0b56204c18b6a8047e168eced291eb550b792ef4ab322b05c7da348af76cd78ea3556b4e languageName: node linkType: hard -"jest-watcher@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-watcher@npm:27.5.1" +"jest-watcher@npm:^29.0.3": + version: 29.0.3 + resolution: "jest-watcher@npm:29.0.3" dependencies: - "@jest/test-result": ^27.5.1 - "@jest/types": ^27.5.1 + "@jest/test-result": ^29.0.3 + "@jest/types": ^29.0.3 "@types/node": "*" ansi-escapes: ^4.2.1 chalk: ^4.0.0 - jest-util: ^27.5.1 + emittery: ^0.10.2 + jest-util: ^29.0.3 string-length: ^4.0.1 - checksum: 191c4e9c278c0902ade1a8a80883ac244963ba3e6e78607a3d5f729ccca9c6e71fb3b316f87883658132641c5d818aa84202585c76752e03c539e6cbecb820bd + checksum: d585b9dda467d08946357c8ed1f971f15a302f958ccd3f6e2e59df5da245edca91cd4a72329d0126de8ac5793567965e4be1e555c4e40ecadb4f8f14306441bb languageName: node linkType: hard @@ -27154,7 +27433,7 @@ __metadata: languageName: node linkType: hard -"jest-worker@npm:^27.4.5, jest-worker@npm:^27.5.1": +"jest-worker@npm:^27.4.5": version: 27.5.1 resolution: "jest-worker@npm:27.5.1" dependencies: @@ -27176,13 +27455,25 @@ __metadata: languageName: node linkType: hard -"jest@npm:^27.5.1": - version: 27.5.1 - resolution: "jest@npm:27.5.1" +"jest-worker@npm:^29.0.3": + version: 29.0.3 + resolution: "jest-worker@npm:29.0.3" dependencies: - "@jest/core": ^27.5.1 + "@types/node": "*" + merge-stream: ^2.0.0 + supports-color: ^8.0.0 + checksum: cdae4a58f6ab1ec3c384b42f1106004d434e65febcb34ba14a1e7d8538f7a5a5c2ebb0cf29cecfe8c71882c526ee02c4aa338a9ce0abcf11fcec9b8fa662189b + languageName: node + linkType: hard + +"jest@npm:^29.0.2": + version: 29.0.3 + resolution: "jest@npm:29.0.3" + dependencies: + "@jest/core": ^29.0.3 + "@jest/types": ^29.0.3 import-local: ^3.0.2 - jest-cli: ^27.5.1 + jest-cli: ^29.0.3 peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: @@ -27190,7 +27481,7 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: 96f1d69042b3c6dfc695f2a4e4b0db38af6fb78582ad1a02beaa57cfcd77cbd31567d7d865c1c85709b7c3e176eefa3b2035ffecd646005f15d8ef528eccf205 + checksum: 6bffa1ec703dbf64ce79aa7ef2887b586fdc96881cf2b83c8e86569237124a17aa001ddd4e7be7877202abe530ee5c04e9f0dd54e7320533b05b90709aca2607 languageName: node linkType: hard @@ -27447,7 +27738,7 @@ __metadata: languageName: node linkType: hard -"jsdom@npm:^16.5.2, jsdom@npm:^16.6.0": +"jsdom@npm:^16.5.2": version: 16.7.0 resolution: "jsdom@npm:16.7.0" dependencies: @@ -27487,6 +27778,46 @@ __metadata: languageName: node linkType: hard +"jsdom@npm:^20.0.0": + version: 20.0.0 + resolution: "jsdom@npm:20.0.0" + dependencies: + abab: ^2.0.6 + acorn: ^8.7.1 + acorn-globals: ^6.0.0 + cssom: ^0.5.0 + cssstyle: ^2.3.0 + data-urls: ^3.0.2 + decimal.js: ^10.3.1 + domexception: ^4.0.0 + escodegen: ^2.0.0 + form-data: ^4.0.0 + html-encoding-sniffer: ^3.0.0 + http-proxy-agent: ^5.0.0 + https-proxy-agent: ^5.0.1 + is-potential-custom-element-name: ^1.0.1 + nwsapi: ^2.2.0 + parse5: ^7.0.0 + saxes: ^6.0.0 + symbol-tree: ^3.2.4 + tough-cookie: ^4.0.0 + w3c-hr-time: ^1.0.2 + w3c-xmlserializer: ^3.0.0 + webidl-conversions: ^7.0.0 + whatwg-encoding: ^2.0.0 + whatwg-mimetype: ^3.0.0 + whatwg-url: ^11.0.0 + ws: ^8.8.0 + xml-name-validator: ^4.0.0 + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + checksum: f69b40679d8cfaee2353615445aaff08b823c53dc7778ede6592d02ed12b3e9fb4e8db2b6d033551b67e08424a3adb2b79d231caa7dcda2d16019c20c705c11f + languageName: node + linkType: hard + "jsesc@npm:^2.5.1": version: 2.5.2 resolution: "jsesc@npm:2.5.2" @@ -29191,12 +29522,12 @@ __metadata: languageName: node linkType: hard -"makeerror@npm:1.0.x": - version: 1.0.11 - resolution: "makeerror@npm:1.0.11" +"makeerror@npm:1.0.12": + version: 1.0.12 + resolution: "makeerror@npm:1.0.12" dependencies: - tmpl: 1.0.x - checksum: 9a62ec2d9648c5329fdc4bc7d779a7305f32b1e55422a4f14244bc890bb43287fe013eb8d965e92a0cf4c443f3e59265b1fc3125eaedb0c2361e28b1a8de565d + tmpl: 1.0.5 + checksum: b38a025a12c8146d6eeea5a7f2bf27d51d8ad6064da8ca9405fcf7bf9b54acd43e3b30ddd7abb9b1bfa4ddb266019133313482570ddb207de568f71ecfcf6060 languageName: node linkType: hard @@ -32180,6 +32511,15 @@ __metadata: languageName: node linkType: hard +"parse5@npm:^7.0.0": + version: 7.1.1 + resolution: "parse5@npm:7.1.1" + dependencies: + entities: ^4.4.0 + checksum: 8f72fbfa6df83a3f29f58e1818f7bd46b47ff3e26d79c74e10b8fc7ef7ee76163f205113f1b2f6a5b8dc4e31e726f490444f04890cead6e974dbcbe8172b1321 + languageName: node + linkType: hard + "parseqs@npm:0.0.6": version: 0.0.6 resolution: "parseqs@npm:0.0.6" @@ -33447,6 +33787,17 @@ __metadata: languageName: node linkType: hard +"pretty-format@npm:^29.0.0, pretty-format@npm:^29.0.3": + version: 29.0.3 + resolution: "pretty-format@npm:29.0.3" + dependencies: + "@jest/schemas": ^29.0.0 + ansi-styles: ^5.0.0 + react-is: ^18.0.0 + checksum: 239aa73b09919b195353e62530908b43883af66e3ba8ecb5fda77578b20f297fd774fcf53abbedcb6cfff72521e8a220052a49e6a0e29418082d06386da27bac + languageName: node + linkType: hard + "printj@npm:~1.1.0": version: 1.1.2 resolution: "printj@npm:1.1.2" @@ -36062,6 +36413,15 @@ __metadata: languageName: node linkType: hard +"saxes@npm:^6.0.0": + version: 6.0.0 + resolution: "saxes@npm:6.0.0" + dependencies: + xmlchars: ^2.2.0 + checksum: d3fa3e2aaf6c65ed52ee993aff1891fc47d5e47d515164b5449cbf5da2cbdc396137e55590472e64c5c436c14ae64a8a03c29b9e7389fc6f14035cf4e982ef3b + languageName: node + linkType: hard + "scheduler@npm:^0.19.1": version: 0.19.1 resolution: "scheduler@npm:0.19.1" @@ -36856,7 +37216,17 @@ __metadata: languageName: node linkType: hard -"source-map-support@npm:^0.5.10, source-map-support@npm:^0.5.16, source-map-support@npm:^0.5.6, source-map-support@npm:~0.5.20": +"source-map-support@npm:0.5.13": + version: 0.5.13 + resolution: "source-map-support@npm:0.5.13" + dependencies: + buffer-from: ^1.0.0 + source-map: ^0.6.0 + checksum: 933550047b6c1a2328599a21d8b7666507427c0f5ef5eaadd56b5da0fd9505e239053c66fe181bf1df469a3b7af9d775778eee283cbb7ae16b902ddc09e93a97 + languageName: node + linkType: hard + +"source-map-support@npm:^0.5.10, source-map-support@npm:^0.5.16, source-map-support@npm:~0.5.20": version: 0.5.21 resolution: "source-map-support@npm:0.5.21" dependencies: @@ -38240,13 +38610,6 @@ __metadata: languageName: node linkType: hard -"throat@npm:^6.0.1": - version: 6.0.1 - resolution: "throat@npm:6.0.1" - checksum: 782d4171ee4e3cf947483ed2ff1af3e17cc4354c693b9d339284f61f99fbc401d171e0b0d2db3295bb7d447630333e9319c174ebd7ef315c6fb791db9675369c - languageName: node - linkType: hard - "throttle-debounce@npm:^3.0.1": version: 3.0.1 resolution: "throttle-debounce@npm:3.0.1" @@ -38388,7 +38751,7 @@ __metadata: languageName: node linkType: hard -"tmpl@npm:1.0.x": +"tmpl@npm:1.0.5": version: 1.0.5 resolution: "tmpl@npm:1.0.5" checksum: cd922d9b853c00fe414c5a774817be65b058d54a2d01ebb415840960406c669a0fc632f66df885e24cb022ec812739199ccbdb8d1164c3e513f85bfca5ab2873 @@ -38535,6 +38898,15 @@ __metadata: languageName: node linkType: hard +"tr46@npm:^3.0.0": + version: 3.0.0 + resolution: "tr46@npm:3.0.0" + dependencies: + punycode: ^2.1.1 + checksum: 44c3cc6767fb800490e6e9fd64fd49041aa4e49e1f6a012b34a75de739cc9ed3a6405296072c1df8b6389ae139c5e7c6496f659cfe13a04a4bff3a1422981270 + languageName: node + linkType: hard + "tr46@npm:~0.0.3": version: 0.0.3 resolution: "tr46@npm:0.0.3" @@ -39374,6 +39746,20 @@ __metadata: languageName: node linkType: hard +"update-browserslist-db@npm:^1.0.9": + version: 1.0.9 + resolution: "update-browserslist-db@npm:1.0.9" + dependencies: + escalade: ^3.1.1 + picocolors: ^1.0.0 + peerDependencies: + browserslist: ">= 4.21.0" + bin: + browserslist-lint: cli.js + checksum: f625899b236f6a4d7f62b56be1b8da230c5563d1fef84d3ef148f2e1a3f11a5a4b3be4fd7e3703e51274c116194017775b10afb4de09eb2c0d09d36b90f1f578 + languageName: node + linkType: hard + "upper-case-first@npm:^2.0.2": version: 2.0.2 resolution: "upper-case-first@npm:2.0.2" @@ -39621,14 +40007,14 @@ __metadata: languageName: node linkType: hard -"v8-to-istanbul@npm:^8.1.0": - version: 8.1.1 - resolution: "v8-to-istanbul@npm:8.1.1" +"v8-to-istanbul@npm:^9.0.1": + version: 9.0.1 + resolution: "v8-to-istanbul@npm:9.0.1" dependencies: + "@jridgewell/trace-mapping": ^0.3.12 "@types/istanbul-lib-coverage": ^2.0.1 convert-source-map: ^1.6.0 - source-map: ^0.7.3 - checksum: 54ce92bec2727879626f623d02c8d193f0c7e919941fa373ec135189a8382265117f5316ea317a1e12a5f9c13d84d8449052a731fe3306fa4beaafbfa4cab229 + checksum: a49c34bf0a3af0c11041a3952a2600913904a983bd1bc87148b5c033bc5c1d02d5a13620fcdbfa2c60bc582a2e2970185780f0c844b4c3a220abf405f8af6311 languageName: node linkType: hard @@ -39848,6 +40234,15 @@ __metadata: languageName: node linkType: hard +"w3c-xmlserializer@npm:^3.0.0": + version: 3.0.0 + resolution: "w3c-xmlserializer@npm:3.0.0" + dependencies: + xml-name-validator: ^4.0.0 + checksum: 0af8589942eeb11c9fe29eb31a1a09f3d5dd136aea53a9848dfbabff79ac0dd26fe13eb54d330d5555fe27bb50b28dca0715e09f9cc2bfa7670ccc8b7f919ca2 + languageName: node + linkType: hard + "wait-for-expect@npm:^3.0.2": version: 3.0.2 resolution: "wait-for-expect@npm:3.0.2" @@ -39877,12 +40272,12 @@ __metadata: languageName: node linkType: hard -"walker@npm:^1.0.7": - version: 1.0.7 - resolution: "walker@npm:1.0.7" +"walker@npm:^1.0.8": + version: 1.0.8 + resolution: "walker@npm:1.0.8" dependencies: - makeerror: 1.0.x - checksum: 4038fcf92f6ab0288267ad05008aec9e089a759f1bd32e1ea45cc2eb498eb12095ec43cf8ca2bf23a465f4580a0d33b25b89f450ba521dd27083cbc695ee6bf5 + makeerror: 1.0.12 + checksum: ad7a257ea1e662e57ef2e018f97b3c02a7240ad5093c392186ce0bcf1f1a60bbadd520d073b9beb921ed99f64f065efb63dfc8eec689a80e569f93c1c5d5e16c languageName: node linkType: hard @@ -39975,6 +40370,13 @@ __metadata: languageName: node linkType: hard +"webidl-conversions@npm:^7.0.0": + version: 7.0.0 + resolution: "webidl-conversions@npm:7.0.0" + checksum: f05588567a2a76428515333eff87200fae6c83c3948a7482ebb109562971e77ef6dc49749afa58abb993391227c5697b3ecca52018793e0cb4620a48f10bd21b + languageName: node + linkType: hard + "webpack-dev-middleware@npm:^5.3.1": version: 5.3.1 resolution: "webpack-dev-middleware@npm:5.3.1" @@ -40122,6 +40524,15 @@ __metadata: languageName: node linkType: hard +"whatwg-encoding@npm:^2.0.0": + version: 2.0.0 + resolution: "whatwg-encoding@npm:2.0.0" + dependencies: + iconv-lite: 0.6.3 + checksum: 7087810c410aa9b689cbd6af8773341a53cdc1f3aae2a882c163bd5522ec8ca4cdfc269aef417a5792f411807d5d77d50df4c24e3abb00bb60192858a40cc675 + languageName: node + linkType: hard + "whatwg-fetch@npm:^3.0.0, whatwg-fetch@npm:^3.4.1": version: 3.6.2 resolution: "whatwg-fetch@npm:3.6.2" @@ -40143,6 +40554,16 @@ __metadata: languageName: node linkType: hard +"whatwg-url@npm:^11.0.0": + version: 11.0.0 + resolution: "whatwg-url@npm:11.0.0" + dependencies: + tr46: ^3.0.0 + webidl-conversions: ^7.0.0 + checksum: ed4826aaa57e66bb3488a4b25c9cd476c46ba96052747388b5801f137dd740b73fde91ad207d96baf9f17fbcc80fc1a477ad65181b5eb5fa718d27c69501d7af + languageName: node + linkType: hard + "whatwg-url@npm:^5.0.0": version: 5.0.0 resolution: "whatwg-url@npm:5.0.0" @@ -40371,6 +40792,16 @@ __metadata: languageName: node linkType: hard +"write-file-atomic@npm:^4.0.1": + version: 4.0.2 + resolution: "write-file-atomic@npm:4.0.2" + dependencies: + imurmurhash: ^0.1.4 + signal-exit: ^3.0.7 + checksum: 5da60bd4eeeb935eec97ead3df6e28e5917a6bd317478e4a85a5285e8480b8ed96032bbcc6ecd07b236142a24f3ca871c924ec4a6575e623ec1b11bf8c1c253c + languageName: node + linkType: hard + "write-json-file@npm:^3.2.0": version: 3.2.0 resolution: "write-json-file@npm:3.2.0" @@ -40410,7 +40841,7 @@ __metadata: languageName: node linkType: hard -"ws@npm:8.8.1, ws@npm:^8.3.0": +"ws@npm:8.8.1, ws@npm:^8.3.0, ws@npm:^8.8.0": version: 8.8.1 resolution: "ws@npm:8.8.1" peerDependencies: @@ -40541,6 +40972,13 @@ __metadata: languageName: node linkType: hard +"xml-name-validator@npm:^4.0.0": + version: 4.0.0 + resolution: "xml-name-validator@npm:4.0.0" + checksum: af100b79c29804f05fa35aa3683e29a321db9b9685d5e5febda3fa1e40f13f85abc40f45a6b2bf7bee33f68a1dc5e8eaef4cec100a304a9db565e6061d4cb5ad + languageName: node + linkType: hard + "xml-parse-from-string@npm:^1.0.0": version: 1.0.1 resolution: "xml-parse-from-string@npm:1.0.1" From fe535a86dad73bc96a026d6b9e4117c5496834c7 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 5 Sep 2022 22:35:59 +0200 Subject: [PATCH 031/117] plugins/git-release-manager: update failing snapshots Signed-off-by: Patrik Oldsberg --- .../src/api/GitReleaseClient.test.ts | 2 +- .../src/api/serviceApiRef.test.ts | 2 +- .../src/constants/constants.test.ts | 10 +-- .../hooks/useCreateReleaseCandidate.test.tsx | 32 ++++---- .../src/features/Patch/hooks/usePatch.test.ts | 82 +++++++++---------- .../PromoteRc/hooks/usePromoteRc.test.ts | 24 +++--- .../features/RepoDetailsForm/Owner.test.tsx | 2 +- .../features/RepoDetailsForm/Repo.test.tsx | 2 +- .../VersioningStrategy.test.tsx | 6 +- .../helpers/getReleaseCommitPairs.test.tsx | 16 ++-- .../Stats/helpers/getMappedReleases.test.tsx | 24 +++--- .../Stats/helpers/getReleaseStats.test.tsx | 34 ++++---- .../Stats/helpers/getSummary.test.tsx | 4 +- .../Stats/helpers/getTagDates.test.ts | 12 +-- .../helpers/createResponseStepError.test.ts | 2 +- .../src/helpers/getBumpedTag.test.ts | 26 +++--- .../getReleaseCandidateGitInfo.test.ts | 6 +- .../tagParts/getCalverTagParts.test.ts | 56 ++++++------- .../tagParts/getSemverTagParts.test.ts | 54 ++++++------ .../helpers/tagParts/validateTagParts.test.ts | 34 ++++---- .../src/hooks/useGetGitBatchInfo.test.ts | 24 +++--- .../src/hooks/useQueryHandler.test.tsx | 18 ++-- .../src/hooks/useResponseSteps.test.ts | 34 ++++---- .../git-release-manager/src/plugin.test.ts | 2 +- 24 files changed, 254 insertions(+), 254 deletions(-) diff --git a/plugins/git-release-manager/src/api/GitReleaseClient.test.ts b/plugins/git-release-manager/src/api/GitReleaseClient.test.ts index 418da485a2..2b1877d487 100644 --- a/plugins/git-release-manager/src/api/GitReleaseClient.test.ts +++ b/plugins/git-release-manager/src/api/GitReleaseClient.test.ts @@ -52,7 +52,7 @@ describe('GitReleaseClient', () => { "getRepository": [Function], "getTag": [Function], "getUser": [Function], - "githubAuthApi": Object { + "githubAuthApi": { "getAccessToken": [MockFunction], }, "host": "github.com", diff --git a/plugins/git-release-manager/src/api/serviceApiRef.test.ts b/plugins/git-release-manager/src/api/serviceApiRef.test.ts index b27738671d..0ac1c89265 100644 --- a/plugins/git-release-manager/src/api/serviceApiRef.test.ts +++ b/plugins/git-release-manager/src/api/serviceApiRef.test.ts @@ -22,7 +22,7 @@ describe('gitReleaseManagerApiRef', () => { expect(result).toMatchInlineSnapshot(` ApiRefImpl { - "config": Object { + "config": { "id": "plugin.git-release-manager.service", }, } diff --git a/plugins/git-release-manager/src/constants/constants.test.ts b/plugins/git-release-manager/src/constants/constants.test.ts index fb475bd577..49b5f90c7f 100644 --- a/plugins/git-release-manager/src/constants/constants.test.ts +++ b/plugins/git-release-manager/src/constants/constants.test.ts @@ -19,19 +19,19 @@ import * as constants from './constants'; describe('constants', () => { it('should match snapshot', () => { expect(constants).toMatchInlineSnapshot(` - Object { - "DISABLE_CACHE": Object { - "headers": Object { + { + "DISABLE_CACHE": { + "headers": { "If-None-Match": "", }, }, - "SEMVER_PARTS": Object { + "SEMVER_PARTS": { "major": "major", "minor": "minor", "patch": "patch", }, "TAG_OBJECT_MESSAGE": "Tag generated by your friendly neighborhood Backstage Release Manager", - "VERSIONING_STRATEGIES": Object { + "VERSIONING_STRATEGIES": { "calver": "calver", "semver": "semver", }, diff --git a/plugins/git-release-manager/src/features/CreateReleaseCandidate/hooks/useCreateReleaseCandidate.test.tsx b/plugins/git-release-manager/src/features/CreateReleaseCandidate/hooks/useCreateReleaseCandidate.test.tsx index 3128fde9c8..25a987df2a 100644 --- a/plugins/git-release-manager/src/features/CreateReleaseCandidate/hooks/useCreateReleaseCandidate.test.tsx +++ b/plugins/git-release-manager/src/features/CreateReleaseCandidate/hooks/useCreateReleaseCandidate.test.tsx @@ -72,37 +72,37 @@ describe('useCreateReleaseCandidate', () => { expect(result.current.responseSteps).toHaveLength(7); expect(result.current).toMatchInlineSnapshot(` - Object { + { "progress": 100, - "responseSteps": Array [ - Object { + "responseSteps": [ + { "link": "https://latestCommit.html_url", - "message": "Fetched latest commit from \\"mock_defaultBranch\\"", - "secondaryMessage": "with message \\"latestCommit.commit.message\\"", + "message": "Fetched latest commit from "mock_defaultBranch"", + "secondaryMessage": "with message "latestCommit.commit.message"", }, - Object { + { "message": "Created Release Branch", - "secondaryMessage": "with ref \\"mock_createRef_ref\\"", + "secondaryMessage": "with ref "mock_createRef_ref"", }, - Object { + { "message": "Created Tag Object", - "secondaryMessage": "with sha \\"mock_tag_object_sha\\"", + "secondaryMessage": "with sha "mock_tag_object_sha"", }, - Object { + { "message": "Cut Tag Reference", - "secondaryMessage": "with ref \\"mock_createRef_ref\\"", + "secondaryMessage": "with ref "mock_createRef_ref"", }, - Object { + { "link": "https://mock_compareCommits_html_url", "message": "Fetched commit comparison", "secondaryMessage": "rc/2020.01.01_1...rc/2020.01.01_1", }, - Object { + { "link": "https://mock_createRelease_html_url", - "message": "Created Release Candidate \\"mock_createRelease_name\\"", - "secondaryMessage": "with tag \\"rc-2020.01.01_1\\"", + "message": "Created Release Candidate "mock_createRelease_name"", + "secondaryMessage": "with tag "rc-2020.01.01_1"", }, - Object { + { "icon": "success", "message": "Success callback successfully called 🚀", }, diff --git a/plugins/git-release-manager/src/features/Patch/hooks/usePatch.test.ts b/plugins/git-release-manager/src/features/Patch/hooks/usePatch.test.ts index f3b94c2476..0bd7f27cdb 100644 --- a/plugins/git-release-manager/src/features/Patch/hooks/usePatch.test.ts +++ b/plugins/git-release-manager/src/features/Patch/hooks/usePatch.test.ts @@ -75,91 +75,91 @@ describe('patch', () => { expect(result.error).toEqual(undefined); expect(result.current.responseSteps).toHaveLength(19); expect(result.current).toMatchInlineSnapshot(` - Object { + { "progress": 100, - "responseSteps": Array [ - Object { + "responseSteps": [ + { "message": , }, - Object { + { "message": , }, - Object { + { "message": , }, - Object { + { "message": , }, - Object { + { "message": , }, - Object { + { "message": , }, - Object { + { "message": , }, - Object { + { "message": , }, - Object { + { "message": , }, - Object { + { "link": "https://mock_branch_links_html", - "message": "Fetched release branch \\"rc/1.2.3\\"", + "message": "Fetched release branch "rc/1.2.3"", }, - Object { + { "message": "Created temporary commit", - "secondaryMessage": "with message \\"mock_commit_message\\"", + "secondaryMessage": "with message "mock_commit_message"", }, - Object { - "message": "Forced branch \\"rc/2020.01.01_1\\" to temporary commit \\"mock_commit_sha\\"", + { + "message": "Forced branch "rc/2020.01.01_1" to temporary commit "mock_commit_sha"", }, - Object { + { "link": "https://mock_merge_html_url", - "message": "Merged temporary commit into \\"rc/2020.01.01_1\\"", - "secondaryMessage": "with message \\"mock_merge_commit_message\\"", + "message": "Merged temporary commit into "rc/2020.01.01_1"", + "secondaryMessage": "with message "mock_merge_commit_message"", }, - Object { - "message": "Cherry-picked patch commit to \\"mock_branch_commit_sha\\"", - "secondaryMessage": "with message \\"mock_commit_message\\"", + { + "message": "Cherry-picked patch commit to "mock_branch_commit_sha"", + "secondaryMessage": "with message "mock_commit_message"", }, - Object { - "message": "Updated reference \\"mock_update_ref_ref\\"", + { + "message": "Updated reference "mock_update_ref_ref"", }, - Object { + { "message": "Created new tag object", - "secondaryMessage": "with name \\"mock_tag_object_tag\\"", + "secondaryMessage": "with name "mock_tag_object_tag"", }, - Object { - "message": "Created new reference \\"mock_createRef_ref\\"", - "secondaryMessage": "for tag object \\"mock_tag_object_tag\\"", + { + "message": "Created new reference "mock_createRef_ref"", + "secondaryMessage": "for tag object "mock_tag_object_tag"", }, - Object { + { "link": "https://mock_update_release_html_url", - "message": "Updated release \\"mock_update_release_name\\"", + "message": "Updated release "mock_update_release_name"", "secondaryMessage": "with tag mock_update_release_tag_name", }, - Object { + { "icon": "success", "message": "Success callback successfully called 🚀", }, diff --git a/plugins/git-release-manager/src/features/PromoteRc/hooks/usePromoteRc.test.ts b/plugins/git-release-manager/src/features/PromoteRc/hooks/usePromoteRc.test.ts index ff1c58b5be..f4e0fcb081 100644 --- a/plugins/git-release-manager/src/features/PromoteRc/hooks/usePromoteRc.test.ts +++ b/plugins/git-release-manager/src/features/PromoteRc/hooks/usePromoteRc.test.ts @@ -72,27 +72,27 @@ describe('usePromoteRc', () => { expect(result.current.responseSteps).toHaveLength(5); expect(result.current).toMatchInlineSnapshot(` - Object { + { "progress": 100, - "responseSteps": Array [ - Object { + "responseSteps": [ + { "message": "Fetched most recent commit from release branch", - "secondaryMessage": "with sha \\"latestCommit.sha\\"", + "secondaryMessage": "with sha "latestCommit.sha"", }, - Object { + { "message": "Created Tag Object", - "secondaryMessage": "with sha \\"mock_tag_object_sha\\"", + "secondaryMessage": "with sha "mock_tag_object_sha"", }, - Object { + { "message": "Create Tag Reference", - "secondaryMessage": "with ref \\"mock_createRef_ref\\"", + "secondaryMessage": "with ref "mock_createRef_ref"", }, - Object { + { "link": "https://mock_update_release_html_url", - "message": "Promoted \\"mock_update_release_name\\"", - "secondaryMessage": "from \\"rc-2020.01.01_1\\" to \\"mock_update_release_tag_name\\"", + "message": "Promoted "mock_update_release_name"", + "secondaryMessage": "from "rc-2020.01.01_1" to "mock_update_release_tag_name"", }, - Object { + { "icon": "success", "message": "Success callback successfully called 🚀", }, diff --git a/plugins/git-release-manager/src/features/RepoDetailsForm/Owner.test.tsx b/plugins/git-release-manager/src/features/RepoDetailsForm/Owner.test.tsx index e8798f3ce0..d73f6bf2aa 100644 --- a/plugins/git-release-manager/src/features/RepoDetailsForm/Owner.test.tsx +++ b/plugins/git-release-manager/src/features/RepoDetailsForm/Owner.test.tsx @@ -71,7 +71,7 @@ describe('Owner', () => { await waitFor(() => screen.getAllByTestId(TEST_IDS.form.owner.empty)); expect(getAllByTestId(TEST_IDS.form.owner.empty)).toMatchInlineSnapshot(` - Array [ + [

{ await waitFor(() => screen.getAllByTestId(TEST_IDS.form.repo.empty)); expect(getAllByTestId(TEST_IDS.form.repo.empty)).toMatchInlineSnapshot(` - Array [ + [

{ fireEvent.click(radio2); expect(mockNavigate.mock.calls).toMatchInlineSnapshot(` - Array [ - Array [ + [ + [ "?versioningStrategy=calver&owner=mock_owner&repo=mock_repo", - Object { + { "replace": true, }, ], diff --git a/plugins/git-release-manager/src/features/Stats/Info/helpers/getReleaseCommitPairs.test.tsx b/plugins/git-release-manager/src/features/Stats/Info/helpers/getReleaseCommitPairs.test.tsx index 5b800a4df5..4e946d965c 100644 --- a/plugins/git-release-manager/src/features/Stats/Info/helpers/getReleaseCommitPairs.test.tsx +++ b/plugins/git-release-manager/src/features/Stats/Info/helpers/getReleaseCommitPairs.test.tsx @@ -96,29 +96,29 @@ describe('getReleaseCommitPairs', () => { }); expect(result).toMatchInlineSnapshot(` - Object { - "releaseCommitPairs": Array [ - Object { + { + "releaseCommitPairs": [ + { "baseVersion": "2.0", - "endCommit": Object { + "endCommit": { "tagName": "version-2.0.0", "tagSha": "sha-2.0.0", "tagType": "tag", }, - "startCommit": Object { + "startCommit": { "tagName": "rc-2.0.0", "tagSha": "sha-2.0.0", "tagType": "tag", }, }, - Object { + { "baseVersion": "3.0", - "endCommit": Object { + "endCommit": { "tagName": "version-3.0.1", "tagSha": "sha-3.0.1", "tagType": "tag", }, - "startCommit": Object { + "startCommit": { "tagName": "rc-3.0.0", "tagSha": "sha-3.0.0", "tagType": "tag", diff --git a/plugins/git-release-manager/src/features/Stats/helpers/getMappedReleases.test.tsx b/plugins/git-release-manager/src/features/Stats/helpers/getMappedReleases.test.tsx index b0467b1260..1989cd9c09 100644 --- a/plugins/git-release-manager/src/features/Stats/helpers/getMappedReleases.test.tsx +++ b/plugins/git-release-manager/src/features/Stats/helpers/getMappedReleases.test.tsx @@ -33,27 +33,27 @@ describe('getMappedReleases', () => { }); expect(result).toMatchInlineSnapshot(` - Object { - "mappedReleases": Object { - "releases": Object { - "1.0": Object { + { + "mappedReleases": { + "releases": { + "1.0": { "baseVersion": "1.0", - "candidates": Array [], + "candidates": [], "createdAt": "2021-01-01T10:11:12Z", "htmlUrl": "html_url", - "versions": Array [], + "versions": [], }, - "1.1": Object { + "1.1": { "baseVersion": "1.1", - "candidates": Array [], + "candidates": [], "createdAt": "2021-01-01T10:11:12Z", "htmlUrl": "html_url", - "versions": Array [], + "versions": [], }, }, - "unmappableTags": Array [], - "unmatchedReleases": Array [], - "unmatchedTags": Array [], + "unmappableTags": [], + "unmatchedReleases": [], + "unmatchedTags": [], }, } `); diff --git a/plugins/git-release-manager/src/features/Stats/helpers/getReleaseStats.test.tsx b/plugins/git-release-manager/src/features/Stats/helpers/getReleaseStats.test.tsx index f46d0978b8..f446bca1c3 100644 --- a/plugins/git-release-manager/src/features/Stats/helpers/getReleaseStats.test.tsx +++ b/plugins/git-release-manager/src/features/Stats/helpers/getReleaseStats.test.tsx @@ -60,23 +60,23 @@ describe('getReleaseStats', () => { }); expect(result).toMatchInlineSnapshot(` - Object { - "releaseStats": Object { - "releases": Object { - "1.0": Object { + { + "releaseStats": { + "releases": { + "1.0": { "baseVersion": "1.0", - "candidates": Array [ - Object { + "candidates": [ + { "tagName": "rc-1.0.0", "tagSha": "sha", "tagType": "tag", }, - Object { + { "tagName": "rc-1.0.1", "tagSha": "sha", "tagType": "tag", }, - Object { + { "tagName": "rc-1.0.2", "tagSha": "sha", "tagType": "tag", @@ -84,18 +84,18 @@ describe('getReleaseStats', () => { ], "createdAt": "2021-01-01T10:11:12Z", "htmlUrl": "html_url", - "versions": Array [ - Object { + "versions": [ + { "tagName": "version-1.0.2", "tagSha": "sha", "tagType": "tag", }, ], }, - "1.1": Object { + "1.1": { "baseVersion": "1.1", - "candidates": Array [ - Object { + "candidates": [ + { "tagName": "rc-1.1.1", "tagSha": "sha", "tagType": "tag", @@ -103,14 +103,14 @@ describe('getReleaseStats', () => { ], "createdAt": "2021-01-01T10:11:12Z", "htmlUrl": "html_url", - "versions": Array [], + "versions": [], }, }, - "unmappableTags": Array [ + "unmappableTags": [ "rc-123.123.123", ], - "unmatchedReleases": Array [], - "unmatchedTags": Array [ + "unmatchedReleases": [], + "unmatchedTags": [ "rc-1/2/3", ], }, diff --git a/plugins/git-release-manager/src/features/Stats/helpers/getSummary.test.tsx b/plugins/git-release-manager/src/features/Stats/helpers/getSummary.test.tsx index d36eb85128..ee873800af 100644 --- a/plugins/git-release-manager/src/features/Stats/helpers/getSummary.test.tsx +++ b/plugins/git-release-manager/src/features/Stats/helpers/getSummary.test.tsx @@ -22,8 +22,8 @@ describe('getSummary', () => { const result = getSummary({ releaseStats: mockReleaseStats }); expect(result).toMatchInlineSnapshot(` - Object { - "summary": Object { + { + "summary": { "totalCandidatePatches": 3, "totalReleases": 2, "totalVersionPatches": 1, diff --git a/plugins/git-release-manager/src/features/Stats/helpers/getTagDates.test.ts b/plugins/git-release-manager/src/features/Stats/helpers/getTagDates.test.ts index ba17bc0be6..7900942c82 100644 --- a/plugins/git-release-manager/src/features/Stats/helpers/getTagDates.test.ts +++ b/plugins/git-release-manager/src/features/Stats/helpers/getTagDates.test.ts @@ -43,7 +43,7 @@ describe('getTagDates', () => { }); expect(result).toMatchInlineSnapshot(` - Object { + { "endDate": undefined, "startDate": "TAG-START", } @@ -65,7 +65,7 @@ describe('getTagDates', () => { }); expect(result).toMatchInlineSnapshot(` - Object { + { "endDate": undefined, "startDate": "COMMIT_START", } @@ -91,7 +91,7 @@ describe('getTagDates', () => { }); expect(result).toMatchInlineSnapshot(` - Object { + { "endDate": "TAG-END", "startDate": "TAG-START", } @@ -117,7 +117,7 @@ describe('getTagDates', () => { }); expect(result).toMatchInlineSnapshot(` - Object { + { "endDate": "COMMIT_END", "startDate": "COMMIT_START", } @@ -160,7 +160,7 @@ describe('getTagDates', () => { [{ owner, ref: 'OBJECT_SHA_START', repo }], ]); expect(result).toMatchInlineSnapshot(` - Object { + { "endDate": "COMMIT_START", "startDate": "COMMIT_END", } @@ -203,7 +203,7 @@ describe('getTagDates', () => { [{ owner, ref: 'OBJECT_SHA_END', repo }], ]); expect(result).toMatchInlineSnapshot(` - Object { + { "endDate": "COMMIT_END", "startDate": "COMMIT_START", } diff --git a/plugins/git-release-manager/src/helpers/createResponseStepError.test.ts b/plugins/git-release-manager/src/helpers/createResponseStepError.test.ts index b010a0e21f..fd21b7ea52 100644 --- a/plugins/git-release-manager/src/helpers/createResponseStepError.test.ts +++ b/plugins/git-release-manager/src/helpers/createResponseStepError.test.ts @@ -21,7 +21,7 @@ describe('createResponseStepError', () => { const result = createResponseStepError(new Error('banana')); expect(result).toMatchInlineSnapshot(` - Object { + { "icon": "failure", "message": "Something went wrong ❌", "secondaryMessage": "Error message: banana", diff --git a/plugins/git-release-manager/src/helpers/getBumpedTag.test.ts b/plugins/git-release-manager/src/helpers/getBumpedTag.test.ts index 32a296bbd2..84c2b5de04 100644 --- a/plugins/git-release-manager/src/helpers/getBumpedTag.test.ts +++ b/plugins/git-release-manager/src/helpers/getBumpedTag.test.ts @@ -30,10 +30,10 @@ describe('getBumpedTag', () => { }); expect(result).toMatchInlineSnapshot(` - Object { + { "bumpedTag": "rc-2020.01.01_2", "error": undefined, - "tagParts": Object { + "tagParts": { "calver": "2020.01.01", "patch": 2, "prefix": "rc", @@ -50,10 +50,10 @@ describe('getBumpedTag', () => { }); expect(result).toMatchInlineSnapshot(` - Object { + { "bumpedTag": "rc-2020.01.01_2", "error": undefined, - "tagParts": Object { + "tagParts": { "calver": "2020.01.01", "patch": 2, "prefix": "rc", @@ -72,10 +72,10 @@ describe('getBumpedTag', () => { }); expect(result).toMatchInlineSnapshot(` - Object { + { "bumpedTag": "rc-1.2.4", "error": undefined, - "tagParts": Object { + "tagParts": { "major": 1, "minor": 2, "patch": 4, @@ -93,10 +93,10 @@ describe('getBumpedTag', () => { }); expect(result).toMatchInlineSnapshot(` - Object { + { "bumpedTag": "rc-1.3.0", "error": undefined, - "tagParts": Object { + "tagParts": { "major": 1, "minor": 3, "patch": 0, @@ -114,10 +114,10 @@ describe('getBumpedTag', () => { }); expect(result).toMatchInlineSnapshot(` - Object { + { "bumpedTag": "rc-2.0.0", "error": undefined, - "tagParts": Object { + "tagParts": { "major": 2, "minor": 0, "patch": 0, @@ -137,9 +137,9 @@ describe('getBumpedTag', () => { }); expect(result).toMatchInlineSnapshot(` - Object { - "error": Object { - "subtitle": "Expected calver matching \\"/(rc|version)-([0-9]{4}\\\\.[0-9]{2}\\\\.[0-9]{2})_([0-9]+)/\\", found \\"😬\\"", + { + "error": { + "subtitle": "Expected calver matching "/(rc|version)-([0-9]{4}\\.[0-9]{2}\\.[0-9]{2})_([0-9]+)/", found "😬"", "title": "Invalid tag", }, } diff --git a/plugins/git-release-manager/src/helpers/getReleaseCandidateGitInfo.test.ts b/plugins/git-release-manager/src/helpers/getReleaseCandidateGitInfo.test.ts index 20130c450c..693e9971db 100644 --- a/plugins/git-release-manager/src/helpers/getReleaseCandidateGitInfo.test.ts +++ b/plugins/git-release-manager/src/helpers/getReleaseCandidateGitInfo.test.ts @@ -43,7 +43,7 @@ describe('getReleaseCandidateGitInfo', () => { injectedDate: '2021.01.28', }), ).toMatchInlineSnapshot(` - Object { + { "rcBranch": "rc/2021.01.28", "rcReleaseTag": "rc-2021.01.28_0", "releaseName": "Version 2021.01.28", @@ -61,7 +61,7 @@ describe('getReleaseCandidateGitInfo', () => { semverBumpLevel: 'minor', }), ).toMatchInlineSnapshot(` - Object { + { "rcBranch": "rc/1.3.0", "rcReleaseTag": "rc-1.3.0", "releaseName": "Version 1.3.0", @@ -77,7 +77,7 @@ describe('getReleaseCandidateGitInfo', () => { semverBumpLevel: 'minor', }), ).toMatchInlineSnapshot(` - Object { + { "rcBranch": "rc/0.0.1", "rcReleaseTag": "rc-0.0.1", "releaseName": "Version 0.0.1", diff --git a/plugins/git-release-manager/src/helpers/tagParts/getCalverTagParts.test.ts b/plugins/git-release-manager/src/helpers/tagParts/getCalverTagParts.test.ts index 1d46c0abdd..7a12fab45b 100644 --- a/plugins/git-release-manager/src/helpers/tagParts/getCalverTagParts.test.ts +++ b/plugins/git-release-manager/src/helpers/tagParts/getCalverTagParts.test.ts @@ -26,28 +26,28 @@ describe('getCalverTagParts', () => { const result = getCalverTagParts(mockReleaseCandidateCalver.tagName); expect(result).toMatchInlineSnapshot(` - Object { - "tagParts": Object { - "calver": "2020.01.01", - "patch": 1, - "prefix": "rc", - }, - } - `); + { + "tagParts": { + "calver": "2020.01.01", + "patch": 1, + "prefix": "rc", + }, + } + `); }); it('should return tagParts for Version tag', () => { const result = getCalverTagParts(mockReleaseVersionCalver.tagName); expect(result).toMatchInlineSnapshot(` - Object { - "tagParts": Object { - "calver": "2020.01.01", - "patch": 1, - "prefix": "version", - }, - } - `); + { + "tagParts": { + "calver": "2020.01.01", + "patch": 1, + "prefix": "version", + }, + } + `); }); }); @@ -56,9 +56,9 @@ describe('getCalverTagParts', () => { const result = getCalverTagParts('invalid-2020.01.01_1'); expect(result).toMatchInlineSnapshot(` - Object { - "error": Object { - "subtitle": "Expected calver matching \\"/(rc|version)-([0-9]{4}\\\\.[0-9]{2}\\\\.[0-9]{2})_([0-9]+)/\\", found \\"invalid-2020.01.01_1\\"", + { + "error": { + "subtitle": "Expected calver matching "/(rc|version)-([0-9]{4}\\.[0-9]{2}\\.[0-9]{2})_([0-9]+)/", found "invalid-2020.01.01_1"", "title": "Invalid tag", }, } @@ -69,9 +69,9 @@ describe('getCalverTagParts', () => { const result = getCalverTagParts('rc-2020.1.01_1'); expect(result).toMatchInlineSnapshot(` - Object { - "error": Object { - "subtitle": "Expected calver matching \\"/(rc|version)-([0-9]{4}\\\\.[0-9]{2}\\\\.[0-9]{2})_([0-9]+)/\\", found \\"rc-2020.1.01_1\\"", + { + "error": { + "subtitle": "Expected calver matching "/(rc|version)-([0-9]{4}\\.[0-9]{2}\\.[0-9]{2})_([0-9]+)/", found "rc-2020.1.01_1"", "title": "Invalid tag", }, } @@ -82,9 +82,9 @@ describe('getCalverTagParts', () => { const result = getCalverTagParts('rc-2020.01_1'); expect(result).toMatchInlineSnapshot(` - Object { - "error": Object { - "subtitle": "Expected calver matching \\"/(rc|version)-([0-9]{4}\\\\.[0-9]{2}\\\\.[0-9]{2})_([0-9]+)/\\", found \\"rc-2020.01_1\\"", + { + "error": { + "subtitle": "Expected calver matching "/(rc|version)-([0-9]{4}\\.[0-9]{2}\\.[0-9]{2})_([0-9]+)/", found "rc-2020.01_1"", "title": "Invalid tag", }, } @@ -95,9 +95,9 @@ describe('getCalverTagParts', () => { const result = getCalverTagParts('rc-2020.01.01_a'); expect(result).toMatchInlineSnapshot(` - Object { - "error": Object { - "subtitle": "Expected calver matching \\"/(rc|version)-([0-9]{4}\\\\.[0-9]{2}\\\\.[0-9]{2})_([0-9]+)/\\", found \\"rc-2020.01.01_a\\"", + { + "error": { + "subtitle": "Expected calver matching "/(rc|version)-([0-9]{4}\\.[0-9]{2}\\.[0-9]{2})_([0-9]+)/", found "rc-2020.01.01_a"", "title": "Invalid tag", }, } diff --git a/plugins/git-release-manager/src/helpers/tagParts/getSemverTagParts.test.ts b/plugins/git-release-manager/src/helpers/tagParts/getSemverTagParts.test.ts index c637325843..7edb013dfd 100644 --- a/plugins/git-release-manager/src/helpers/tagParts/getSemverTagParts.test.ts +++ b/plugins/git-release-manager/src/helpers/tagParts/getSemverTagParts.test.ts @@ -28,15 +28,15 @@ describe('getSemverTagParts', () => { ); expect(semverTagParts).toMatchInlineSnapshot(` - Object { - "tagParts": Object { - "major": 1, - "minor": 2, - "patch": 3, - "prefix": "rc", - }, - } - `); + { + "tagParts": { + "major": 1, + "minor": 2, + "patch": 3, + "prefix": "rc", + }, + } + `); }); it('should return tagParts for Version tag', () => { @@ -45,15 +45,15 @@ describe('getSemverTagParts', () => { ); expect(semverTagParts).toMatchInlineSnapshot(` - Object { - "tagParts": Object { - "major": 1, - "minor": 2, - "patch": 3, - "prefix": "version", - }, - } - `); + { + "tagParts": { + "major": 1, + "minor": 2, + "patch": 3, + "prefix": "version", + }, + } + `); }); }); @@ -62,9 +62,9 @@ describe('getSemverTagParts', () => { const semverTagParts = getSemverTagParts('invalid-1.2.3'); expect(semverTagParts).toMatchInlineSnapshot(` - Object { - "error": Object { - "subtitle": "Expected semver matching \\"/(rc|version)-([0-9]+)\\\\.([0-9]+)\\\\.([0-9]+)/\\", found \\"invalid-1.2.3\\"", + { + "error": { + "subtitle": "Expected semver matching "/(rc|version)-([0-9]+)\\.([0-9]+)\\.([0-9]+)/", found "invalid-1.2.3"", "title": "Invalid tag", }, } @@ -75,9 +75,9 @@ describe('getSemverTagParts', () => { const semverTagParts = getSemverTagParts('rc-1.2'); expect(semverTagParts).toMatchInlineSnapshot(` - Object { - "error": Object { - "subtitle": "Expected semver matching \\"/(rc|version)-([0-9]+)\\\\.([0-9]+)\\\\.([0-9]+)/\\", found \\"rc-1.2\\"", + { + "error": { + "subtitle": "Expected semver matching "/(rc|version)-([0-9]+)\\.([0-9]+)\\.([0-9]+)/", found "rc-1.2"", "title": "Invalid tag", }, } @@ -88,9 +88,9 @@ describe('getSemverTagParts', () => { const semverTagParts = getSemverTagParts('rc-1337.01.01_1'); expect(semverTagParts).toMatchInlineSnapshot(` - Object { - "error": Object { - "subtitle": "Expected semver matching \\"/(rc|version)-([0-9]+)\\\\.([0-9]+)\\\\.([0-9]+)/\\", found calver \\"rc-1337.01.01_1\\"", + { + "error": { + "subtitle": "Expected semver matching "/(rc|version)-([0-9]+)\\.([0-9]+)\\.([0-9]+)/", found calver "rc-1337.01.01_1"", "title": "Invalid tag", }, } diff --git a/plugins/git-release-manager/src/helpers/tagParts/validateTagParts.test.ts b/plugins/git-release-manager/src/helpers/tagParts/validateTagParts.test.ts index 50cbd6cf9e..64f60ec4d6 100644 --- a/plugins/git-release-manager/src/helpers/tagParts/validateTagParts.test.ts +++ b/plugins/git-release-manager/src/helpers/tagParts/validateTagParts.test.ts @@ -31,7 +31,7 @@ describe('validateTagName', () => { }); expect(result).toMatchInlineSnapshot(` - Object { + { "tagNameError": undefined, } `); @@ -43,10 +43,10 @@ describe('validateTagName', () => { }); expect(result).toMatchInlineSnapshot(` - Object { - "tagNameError": null, - } - `); + { + "tagNameError": null, + } + `); }); }); @@ -58,9 +58,9 @@ describe('validateTagName', () => { }); expect(result).toMatchInlineSnapshot(` - Object { - "tagNameError": Object { - "subtitle": "Expected semver matching \\"/(rc|version)-([0-9]+)\\\\.([0-9]+)\\\\.([0-9]+)/\\", found calver \\"rc-2020.01.01_1\\"", + { + "tagNameError": { + "subtitle": "Expected semver matching "/(rc|version)-([0-9]+)\\.([0-9]+)\\.([0-9]+)/", found calver "rc-2020.01.01_1"", "title": "Invalid tag", }, } @@ -74,9 +74,9 @@ describe('validateTagName', () => { }); expect(result).toMatchInlineSnapshot(` - Object { - "tagNameError": Object { - "subtitle": "Expected calver matching \\"/(rc|version)-([0-9]{4}\\\\.[0-9]{2}\\\\.[0-9]{2})_([0-9]+)/\\", found \\"rc-1.2.3\\"", + { + "tagNameError": { + "subtitle": "Expected calver matching "/(rc|version)-([0-9]{4}\\.[0-9]{2}\\.[0-9]{2})_([0-9]+)/", found "rc-1.2.3"", "title": "Invalid tag", }, } @@ -92,9 +92,9 @@ describe('validateTagName', () => { }); expect(result).toMatchInlineSnapshot(` - Object { - "tagNameError": Object { - "subtitle": "Expected semver matching \\"/(rc|version)-([0-9]+)\\\\.([0-9]+)\\\\.([0-9]+)/\\", found \\"this-is-so-invalid\\"", + { + "tagNameError": { + "subtitle": "Expected semver matching "/(rc|version)-([0-9]+)\\.([0-9]+)\\.([0-9]+)/", found "this-is-so-invalid"", "title": "Invalid tag", }, } @@ -108,9 +108,9 @@ describe('validateTagName', () => { }); expect(result).toMatchInlineSnapshot(` - Object { - "tagNameError": Object { - "subtitle": "Expected calver matching \\"/(rc|version)-([0-9]{4}\\\\.[0-9]{2}\\\\.[0-9]{2})_([0-9]+)/\\", found \\"this-is-so-invalid\\"", + { + "tagNameError": { + "subtitle": "Expected calver matching "/(rc|version)-([0-9]{4}\\.[0-9]{2}\\.[0-9]{2})_([0-9]+)/", found "this-is-so-invalid"", "title": "Invalid tag", }, } diff --git a/plugins/git-release-manager/src/hooks/useGetGitBatchInfo.test.ts b/plugins/git-release-manager/src/hooks/useGetGitBatchInfo.test.ts index fb1a8b6919..8e89add810 100644 --- a/plugins/git-release-manager/src/hooks/useGetGitBatchInfo.test.ts +++ b/plugins/git-release-manager/src/hooks/useGetGitBatchInfo.test.ts @@ -35,31 +35,31 @@ describe('useGetHubBatchInfo', () => { }); expect(result.current.gitBatchInfo).toMatchInlineSnapshot(` - Object { + { "loading": false, - "value": Object { - "latestRelease": Object { + "value": { + "latestRelease": { "htmlUrl": "https://mock_release_html_url", "id": 1, "prerelease": false, "tagName": "rc-2020.01.01_1", "targetCommitish": "rc/2020.01.01_1", }, - "releaseBranch": Object { - "commit": Object { - "commit": Object { - "tree": Object { + "releaseBranch": { + "commit": { + "commit": { + "tree": { "sha": "mock_branch_commit_commit_tree_sha", }, }, "sha": "mock_branch_commit_sha", }, - "links": Object { + "links": { "html": "https://mock_branch_links_html", }, "name": "rc/1.2.3", }, - "repository": Object { + "repository": { "defaultBranch": "mock_defaultBranch", "name": "mock_repo", "pushPermissions": true, @@ -86,12 +86,12 @@ describe('useGetHubBatchInfo', () => { }); expect(result.current.gitBatchInfo).toMatchInlineSnapshot(` - Object { + { "loading": false, - "value": Object { + "value": { "latestRelease": null, "releaseBranch": null, - "repository": Object { + "repository": { "defaultBranch": "mock_defaultBranch", "name": "mock_repo", "pushPermissions": true, diff --git a/plugins/git-release-manager/src/hooks/useQueryHandler.test.tsx b/plugins/git-release-manager/src/hooks/useQueryHandler.test.tsx index 7d06c5d829..020b068188 100644 --- a/plugins/git-release-manager/src/hooks/useQueryHandler.test.tsx +++ b/plugins/git-release-manager/src/hooks/useQueryHandler.test.tsx @@ -50,14 +50,14 @@ describe('useQueryHandler', () => { const result = getByTestId(TEST_ID).innerHTML; expect(result).toMatchInlineSnapshot(` - "{ - \\"parsedQuery\\": { - \\"versioningStrategy\\": \\"semver\\", - \\"owner\\": \\"mock_owner\\", - \\"repo\\": \\"mock_repo\\" - }, - \\"queryParams\\": \\"versioningStrategy=semver&owner=mock_owner&repo=updated_mock_repo\\" - }" - `); + "{ + "parsedQuery": { + "versioningStrategy": "semver", + "owner": "mock_owner", + "repo": "mock_repo" + }, + "queryParams": "versioningStrategy=semver&owner=mock_owner&repo=updated_mock_repo" + }" + `); }); }); diff --git a/plugins/git-release-manager/src/hooks/useResponseSteps.test.ts b/plugins/git-release-manager/src/hooks/useResponseSteps.test.ts index 5daa8b47ad..450fc87b97 100644 --- a/plugins/git-release-manager/src/hooks/useResponseSteps.test.ts +++ b/plugins/git-release-manager/src/hooks/useResponseSteps.test.ts @@ -23,11 +23,11 @@ describe('useResponseSteps', () => { const { result } = renderHook(() => useResponseSteps()); expect(result.current).toMatchInlineSnapshot(` - Object { + { "abortIfError": [Function], "addStepToResponseSteps": [Function], "asyncCatcher": [Function], - "responseSteps": Array [], + "responseSteps": [], } `); }); @@ -36,7 +36,7 @@ describe('useResponseSteps', () => { it('should add responseSteps to state', async () => { const { result } = renderHook(() => useResponseSteps()); - expect(result.current.responseSteps).toMatchInlineSnapshot(`Array []`); + expect(result.current.responseSteps).toMatchInlineSnapshot(`[]`); act(() => { result.current.addStepToResponseSteps({ @@ -45,12 +45,12 @@ describe('useResponseSteps', () => { }); expect(result.current.responseSteps).toMatchInlineSnapshot(` - Array [ - Object { - "message": "totally added a messaage ✌🏼", - }, - ] - `); + [ + { + "message": "totally added a messaage ✌🏼", + }, + ] + `); }); }); @@ -58,7 +58,7 @@ describe('useResponseSteps', () => { it('should catch Errors and add as failure step, then throw', async () => { const { result } = renderHook(() => useResponseSteps()); - expect(result.current.responseSteps).toMatchInlineSnapshot(`Array []`); + expect(result.current.responseSteps).toMatchInlineSnapshot(`[]`); await act(async () => { await new Promise((_, reject) => reject(new Error(':('))) @@ -69,8 +69,8 @@ describe('useResponseSteps', () => { }); expect(result.current.responseSteps).toMatchInlineSnapshot(` - Array [ - Object { + [ + { "icon": "failure", "message": Something went wrong @@ -91,7 +91,7 @@ describe('useResponseSteps', () => { it('should catch unknown Errors and add as failure step, then throw', async () => { const { result } = renderHook(() => useResponseSteps()); - expect(result.current.responseSteps).toMatchInlineSnapshot(`Array []`); + expect(result.current.responseSteps).toMatchInlineSnapshot(`[]`); await act(async () => { await new Promise((_, reject) => reject()) @@ -102,8 +102,8 @@ describe('useResponseSteps', () => { }); expect(result.current.responseSteps).toMatchInlineSnapshot(` - Array [ - Object { + [ + { "icon": "failure", "message": Something went wrong @@ -126,13 +126,13 @@ describe('useResponseSteps', () => { it('should do nothing if not Error', async () => { const { result } = renderHook(() => useResponseSteps()); - expect(result.current.responseSteps).toMatchInlineSnapshot(`Array []`); + expect(result.current.responseSteps).toMatchInlineSnapshot(`[]`); act(() => { result.current.abortIfError(undefined); }); - expect(result.current.responseSteps).toMatchInlineSnapshot(`Array []`); + expect(result.current.responseSteps).toMatchInlineSnapshot(`[]`); }); }); }); diff --git a/plugins/git-release-manager/src/plugin.test.ts b/plugins/git-release-manager/src/plugin.test.ts index db60617c24..b293ea05eb 100644 --- a/plugins/git-release-manager/src/plugin.test.ts +++ b/plugins/git-release-manager/src/plugin.test.ts @@ -19,7 +19,7 @@ import * as plugin from './plugin'; describe('git-release-manager', () => { it('should export plugin & friends', () => { expect(Object.keys(plugin)).toMatchInlineSnapshot(` - Array [ + [ "gitReleaseManagerApiRef", "constants", "helpers", From 2e4e6c350021a28ff44c198cb8118f19fcc6a3a0 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 5 Sep 2022 23:26:34 +0200 Subject: [PATCH 032/117] test fixes to support Jest 29 Signed-off-by: Patrik Oldsberg --- packages/cli/config/jest.js | 1 - .../src/apis/system/ApiProvider.test.tsx | 28 +++++++++++-------- .../TabbedLayout/TabbedLayout.test.tsx | 8 ++++-- .../ErrorBoundary/ErrorBoundary.test.tsx | 4 ++- .../ProxiedSignInIdentity.test.ts | 4 +-- .../src/extensions/extensions.test.tsx | 2 +- packages/integration/src/helpers.test.ts | 2 +- .../src/testUtils/appWrappers.test.tsx | 8 ++++-- plugins/api-docs/src/setupTests.ts | 4 +++ .../src/identity/FirestoreKeyStore.test.ts | 2 +- .../src/utils/getDurationFromDates.test.ts | 2 +- .../src/GitLabDiscoveryProcessor.test.ts | 2 +- .../PreparePullRequestForm.test.tsx | 1 - ...reIdentityKubernetesAuthTranslator.test.ts | 20 +++++++++---- .../src/components/RadarComponent.test.tsx | 6 ++-- 15 files changed, 58 insertions(+), 36 deletions(-) diff --git a/packages/cli/config/jest.js b/packages/cli/config/jest.js index 9d113989ff..4a1a4b79f5 100644 --- a/packages/cli/config/jest.js +++ b/packages/cli/config/jest.js @@ -27,7 +27,6 @@ const envOptions = { const transformIgnorePattern = [ '@material-ui', - '@rjsf', 'ajv', 'core-js', 'jest-.*', diff --git a/packages/core-app-api/src/apis/system/ApiProvider.test.tsx b/packages/core-app-api/src/apis/system/ApiProvider.test.tsx index c08674adfe..a6118f0f68 100644 --- a/packages/core-app-api/src/apis/system/ApiProvider.test.tsx +++ b/packages/core-app-api/src/apis/system/ApiProvider.test.tsx @@ -118,9 +118,10 @@ describe('ApiProvider', () => { }).toThrow(/^API context is not available/); }).error, ).toEqual([ - expect.stringMatching( - /^Error: Uncaught \[Error: API context is not available/, - ), + expect.objectContaining({ + detail: new Error('API context is not available'), + type: 'unhandled exception', + }), expect.stringMatching( /^The above error occurred in the component/, ), @@ -133,9 +134,10 @@ describe('ApiProvider', () => { }).toThrow(/^API context is not available/); }).error, ).toEqual([ - expect.stringMatching( - /^Error: Uncaught \[Error: API context is not available/, - ), + expect.objectContaining({ + detail: new Error('API context is not available'), + type: 'unhandled exception', + }), expect.stringMatching( /^The above error occurred in the component/, ), @@ -154,9 +156,10 @@ describe('ApiProvider', () => { }).toThrow('No implementation available for apiRef{x}'); }).error, ).toEqual([ - expect.stringMatching( - /^Error: Uncaught \[Error: No implementation available for apiRef{x}\]/, - ), + expect.objectContaining({ + detail: new Error('No implementation available for apiRef{x}'), + type: 'unhandled exception', + }), expect.stringMatching( /^The above error occurred in the component/, ), @@ -173,9 +176,10 @@ describe('ApiProvider', () => { }).toThrow('No implementation available for apiRef{x}'); }).error, ).toEqual([ - expect.stringMatching( - /^Error: Uncaught \[Error: No implementation available for apiRef{x}\]/, - ), + expect.objectContaining({ + detail: new Error('No implementation available for apiRef{x}'), + type: 'unhandled exception', + }), expect.stringMatching( /^The above error occurred in the component/, ), diff --git a/packages/core-components/src/components/TabbedLayout/TabbedLayout.test.tsx b/packages/core-components/src/components/TabbedLayout/TabbedLayout.test.tsx index b700739a8b..e103fc2f46 100644 --- a/packages/core-components/src/components/TabbedLayout/TabbedLayout.test.tsx +++ b/packages/core-components/src/components/TabbedLayout/TabbedLayout.test.tsx @@ -47,9 +47,11 @@ describe('TabbedLayout', () => { }); expect(error).toEqual([ - expect.stringMatching( - /Child of TabbedLayout must be an TabbedLayout.Route/, - ), + expect.objectContaining({ + detail: new Error( + 'Child of TabbedLayout must be an TabbedLayout.Route', + ), + }), expect.stringMatching( /The above error occurred in the component/, ), diff --git a/packages/core-components/src/layout/ErrorBoundary/ErrorBoundary.test.tsx b/packages/core-components/src/layout/ErrorBoundary/ErrorBoundary.test.tsx index 361ad123bf..6a16224a02 100644 --- a/packages/core-components/src/layout/ErrorBoundary/ErrorBoundary.test.tsx +++ b/packages/core-components/src/layout/ErrorBoundary/ErrorBoundary.test.tsx @@ -67,7 +67,9 @@ describe('', () => { }); expect(error).toEqual([ - expect.stringMatching(/^Error: Uncaught \[Error: Bomb\]/), + expect.objectContaining({ + detail: new Error('Bomb'), + }), expect.stringMatching( /^The above error occurred in the component:/, ), diff --git a/packages/core-components/src/layout/ProxiedSignInPage/ProxiedSignInIdentity.test.ts b/packages/core-components/src/layout/ProxiedSignInPage/ProxiedSignInIdentity.test.ts index 3c9b9c3f58..a3f6c185f8 100644 --- a/packages/core-components/src/layout/ProxiedSignInPage/ProxiedSignInIdentity.test.ts +++ b/packages/core-components/src/layout/ProxiedSignInPage/ProxiedSignInIdentity.test.ts @@ -29,7 +29,7 @@ const validBackstageToken = describe('ProxiedSignInIdentity', () => { describe('tokenToExpiry', () => { - beforeEach(() => jest.useFakeTimers('modern')); + beforeEach(() => jest.useFakeTimers()); afterEach(() => jest.useRealTimers()); it('handles undefined', async () => { @@ -56,7 +56,7 @@ describe('ProxiedSignInIdentity', () => { }); describe('ProxiedSignInIdentity', () => { - beforeEach(() => jest.useFakeTimers('modern')); + beforeEach(() => jest.useFakeTimers()); afterEach(() => jest.useRealTimers()); const worker = setupServer(); diff --git a/packages/core-plugin-api/src/extensions/extensions.test.tsx b/packages/core-plugin-api/src/extensions/extensions.test.tsx index 0601c01a17..3eca133608 100644 --- a/packages/core-plugin-api/src/extensions/extensions.test.tsx +++ b/packages/core-plugin-api/src/extensions/extensions.test.tsx @@ -117,7 +117,7 @@ describe('extensions', () => { render(); }); screen.getByText('Error in my-plugin'); - expect(errors[0]).toMatch('Test error'); + expect(errors[0]).toMatchObject({ detail: new Error('Test error') }); }); it('should wrap extended component with analytics context', async () => { diff --git a/packages/integration/src/helpers.test.ts b/packages/integration/src/helpers.test.ts index 06feb4104e..7468c83bc6 100644 --- a/packages/integration/src/helpers.test.ts +++ b/packages/integration/src/helpers.test.ts @@ -62,7 +62,7 @@ describe('isValidHost', () => { ['[::]', true], ['[::1]', true], ['[1:2:3:4:5:6:7:8]', true], - ['1.2.3.4.5.6.7.8', true], + ['1.2.3.4.5.6.7.8', false], ['https://example.com', false], ['foo:100000', false], ['FOO', false], diff --git a/packages/test-utils/src/testUtils/appWrappers.test.tsx b/packages/test-utils/src/testUtils/appWrappers.test.tsx index 1b0601d030..a116c8c781 100644 --- a/packages/test-utils/src/testUtils/appWrappers.test.tsx +++ b/packages/test-utils/src/testUtils/appWrappers.test.tsx @@ -92,9 +92,11 @@ describe('wrapInTestApp', () => { }); expect(error).toEqual([ - expect.stringMatching( - /^Error: Uncaught \[Error: MockErrorApi received unexpected error, Error: NOPE\]/, - ), + expect.objectContaining({ + detail: new Error( + 'MockErrorApi received unexpected error, Error: NOPE', + ), + }), expect.stringMatching(/^The above error occurred in the component:/), ]); }); diff --git a/plugins/api-docs/src/setupTests.ts b/plugins/api-docs/src/setupTests.ts index 963c0f188b..a41fe2eeb4 100644 --- a/plugins/api-docs/src/setupTests.ts +++ b/plugins/api-docs/src/setupTests.ts @@ -15,3 +15,7 @@ */ import '@testing-library/jest-dom'; + +Object.defineProperty(global, 'TextDecoder', { + value: require('util').TextDecoder, +}); diff --git a/plugins/auth-backend/src/identity/FirestoreKeyStore.test.ts b/plugins/auth-backend/src/identity/FirestoreKeyStore.test.ts index d28cbfa11a..b04cf8a6b3 100644 --- a/plugins/auth-backend/src/identity/FirestoreKeyStore.test.ts +++ b/plugins/auth-backend/src/identity/FirestoreKeyStore.test.ts @@ -44,7 +44,7 @@ jest.mock('@google-cloud/firestore', () => ({ Firestore: jest.fn().mockImplementation(() => firestoreMock), })); -jest.useFakeTimers('legacy'); +jest.useFakeTimers({ legacyFakeTimers: true }); describe('FirestoreKeyStore', () => { const key = { diff --git a/plugins/azure-devops/src/utils/getDurationFromDates.test.ts b/plugins/azure-devops/src/utils/getDurationFromDates.test.ts index fac0e917d0..2a8ee6e04f 100644 --- a/plugins/azure-devops/src/utils/getDurationFromDates.test.ts +++ b/plugins/azure-devops/src/utils/getDurationFromDates.test.ts @@ -18,7 +18,7 @@ import { getDurationFromDates } from './getDurationFromDates'; describe('getDurationFromDates', () => { beforeAll(() => { - jest.useFakeTimers('modern'); + jest.useFakeTimers(); jest.setSystemTime(new Date('2021-10-15T09:45:25.0000000Z')); }); diff --git a/plugins/catalog-backend-module-gitlab/src/GitLabDiscoveryProcessor.test.ts b/plugins/catalog-backend-module-gitlab/src/GitLabDiscoveryProcessor.test.ts index d0f2eb383d..385ce59bfb 100644 --- a/plugins/catalog-backend-module-gitlab/src/GitLabDiscoveryProcessor.test.ts +++ b/plugins/catalog-backend-module-gitlab/src/GitLabDiscoveryProcessor.test.ts @@ -153,7 +153,7 @@ describe('GitlabDiscoveryProcessor', () => { setupRequestMockHandlers(server); beforeAll(() => { - jest.useFakeTimers('modern'); + jest.useFakeTimers(); jest.setSystemTime(new Date(SERVER_TIME)); }); diff --git a/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/PreparePullRequestForm.test.tsx b/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/PreparePullRequestForm.test.tsx index b439366728..3acb7390a9 100644 --- a/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/PreparePullRequestForm.test.tsx +++ b/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/PreparePullRequestForm.test.tsx @@ -87,7 +87,6 @@ describe('', () => { {formState.errors.main && ( diff --git a/plugins/kubernetes-backend/src/kubernetes-auth-translator/AzureIdentityKubernetesAuthTranslator.test.ts b/plugins/kubernetes-backend/src/kubernetes-auth-translator/AzureIdentityKubernetesAuthTranslator.test.ts index a28f825434..704551eb9f 100644 --- a/plugins/kubernetes-backend/src/kubernetes-auth-translator/AzureIdentityKubernetesAuthTranslator.test.ts +++ b/plugins/kubernetes-backend/src/kubernetes-auth-translator/AzureIdentityKubernetesAuthTranslator.test.ts @@ -46,6 +46,10 @@ describe('AzureIdentityKubernetesAuthTranslator tests', () => { url: 'mycluster.privatelink.westeurope.azmk8s.io', }; + afterEach(() => { + jest.useRealTimers(); + }); + it('should decorate cluster with Azure token', async () => { const authTranslator = new AzureIdentityKubernetesAuthTranslator( logger, @@ -70,6 +74,8 @@ describe('AzureIdentityKubernetesAuthTranslator tests', () => { }); it('should issue new token 15 minutes befory expiry', async () => { + jest.useFakeTimers(); + const authTranslator = new AzureIdentityKubernetesAuthTranslator( logger, new StaticTokenCredential(16 * 60 * 1000), // token expires in 16min @@ -78,13 +84,15 @@ describe('AzureIdentityKubernetesAuthTranslator tests', () => { const response = await authTranslator.decorateClusterDetailsWithAuth(cd); expect(response.serviceAccountToken).toEqual('MY_TOKEN_1'); - jest.useFakeTimers().setSystemTime(Date.now() + 2 * 60 * 1000); // advance time by 2mins + jest.setSystemTime(Date.now() + 2 * 60 * 1000); // advance time by 2mins const response2 = await authTranslator.decorateClusterDetailsWithAuth(cd); expect(response2.serviceAccountToken).toEqual('MY_TOKEN_2'); }); it('should re-use existing token if there is afailure', async () => { + jest.useFakeTimers(); + const authTranslator = new AzureIdentityKubernetesAuthTranslator( logger, new StaticTokenCredential(16 * 60 * 1000), // new tokens expires in 16min @@ -93,12 +101,12 @@ describe('AzureIdentityKubernetesAuthTranslator tests', () => { const response = await authTranslator.decorateClusterDetailsWithAuth(cd); expect(response.serviceAccountToken).toEqual('MY_TOKEN_1'); - jest.useFakeTimers().setSystemTime(Date.now() + 2 * 60 * 1000); // advance time by 2min + jest.setSystemTime(Date.now() + 2 * 60 * 1000); // advance time by 2min const response2 = await authTranslator.decorateClusterDetailsWithAuth(cd); expect(response2.serviceAccountToken).toEqual('MY_TOKEN_2'); - jest.useFakeTimers().setSystemTime(Date.now() + 2 * 60 * 1000); // advance time by 2min + jest.setSystemTime(Date.now() + 2 * 60 * 1000); // advance time by 2min const response3 = await authTranslator.decorateClusterDetailsWithAuth(cd); expect(response3.serviceAccountToken).toEqual('MY_TOKEN_2'); @@ -108,6 +116,8 @@ describe('AzureIdentityKubernetesAuthTranslator tests', () => { }); it('should throw if existing token expired and failed to fetch a new one', async () => { + jest.useFakeTimers(); + const authTranslator = new AzureIdentityKubernetesAuthTranslator( logger, new StaticTokenCredential(16 * 60 * 1000), // new tokens expires in 16min @@ -116,12 +126,12 @@ describe('AzureIdentityKubernetesAuthTranslator tests', () => { const response = await authTranslator.decorateClusterDetailsWithAuth(cd); expect(response.serviceAccountToken).toEqual('MY_TOKEN_1'); - jest.useFakeTimers().setSystemTime(Date.now() + 2 * 60 * 1000); // advance time by 2min + jest.setSystemTime(Date.now() + 2 * 60 * 1000); // advance time by 2min const response2 = await authTranslator.decorateClusterDetailsWithAuth(cd); expect(response2.serviceAccountToken).toEqual('MY_TOKEN_2'); - jest.useFakeTimers().setSystemTime(Date.now() + 17 * 60 * 1000); // advance time by 17min + jest.setSystemTime(Date.now() + 17 * 60 * 1000); // advance time by 17min await expect( authTranslator.decorateClusterDetailsWithAuth(cd), diff --git a/plugins/tech-radar/src/components/RadarComponent.test.tsx b/plugins/tech-radar/src/components/RadarComponent.test.tsx index 6b8bd944b8..3d3b1bfd17 100644 --- a/plugins/tech-radar/src/components/RadarComponent.test.tsx +++ b/plugins/tech-radar/src/components/RadarComponent.test.tsx @@ -124,8 +124,8 @@ describe('RadarComponent', () => { ); }).toThrow(); }).error[0], - ).toMatch( - /^Error: Uncaught \[Error: No implementation available for apiRef{core.error}\]/, - ); + ).toMatchObject({ + detail: new Error('No implementation available for apiRef{core.error}'), + }); }); }); From b179cd11f4067d0a461f8346b99f88add90e98c2 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 5 Sep 2022 23:28:09 +0200 Subject: [PATCH 033/117] cli: update jest config for v29 Signed-off-by: Patrik Oldsberg --- packages/cli/config/jest.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/cli/config/jest.js b/packages/cli/config/jest.js index 4a1a4b79f5..a6cbdb9f05 100644 --- a/packages/cli/config/jest.js +++ b/packages/cli/config/jest.js @@ -194,7 +194,7 @@ async function getProjectConfig(targetPath, displayName) { // A bit more opinionated testMatch: ['**/*.test.{js,jsx,ts,tsx,mjs,cjs}'], - moduleLoader: envOptions.nextTests + runtime: envOptions.nextTests ? require.resolve('./jestCachingModuleLoader') : undefined, @@ -209,16 +209,16 @@ async function getProjectConfig(targetPath, displayName) { const config = Object.assign(options, ...pkgJsonConfigs); - // The config name is a cache key that lets us share the jest cache across projects. - // If no explicit name was configured, generated one based on the configuration. - if (!config.name) { + // The config id is a cache key that lets us share the jest cache across projects. + // If no explicit id was configured, generated one based on the configuration. + if (!config.id) { const configHash = crypto .createHash('md5') .update(version) .update(Buffer.alloc(1)) .update(JSON.stringify(config.transform)) .digest('hex'); - config.name = `backstage_cli_${configHash}`; + config.id = `backstage_cli_${configHash}`; } return config; From ec623f85fb0ea4def1fe711fa2105fbe0a9fb52c Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 6 Sep 2022 18:32:34 +0200 Subject: [PATCH 034/117] cli: update API report for Jest 29 Signed-off-by: Patrik Oldsberg --- packages/cli/cli-report.md | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/packages/cli/cli-report.md b/packages/cli/cli-report.md index 9a67e8245d..4b72748c40 100644 --- a/packages/cli/cli-report.md +++ b/packages/cli/cli-report.md @@ -276,7 +276,7 @@ Usage: backstage-cli [--config=] [TestPathPattern] Options: -h, --help - -v, --version + --version --all --automock -b, --bail @@ -289,7 +289,6 @@ Options: --clearMocks --collectCoverage --collectCoverageFrom - --collectCoverageOnlyFrom --color --colors -c, --config @@ -312,6 +311,7 @@ Options: --globalTeardown --globals --haste + --ignoreProjects --init --injectGlobals --json @@ -348,6 +348,7 @@ Options: --selectProjects --setupFiles --setupFilesAfterEnv + --shard --showConfig --silent --skipFilter @@ -365,8 +366,6 @@ Options: --testRunner --testSequencer --testTimeout - --testURL - --timers --transform --transformIgnorePatterns --unmockedModulePathPatterns @@ -433,7 +432,7 @@ Usage: backstage-cli [--config=] [TestPathPattern] Options: -h, --help - -v, --version + --version --all --automock -b, --bail @@ -446,7 +445,6 @@ Options: --clearMocks --collectCoverage --collectCoverageFrom - --collectCoverageOnlyFrom --color --colors -c, --config @@ -469,6 +467,7 @@ Options: --globalTeardown --globals --haste + --ignoreProjects --init --injectGlobals --json @@ -505,6 +504,7 @@ Options: --selectProjects --setupFiles --setupFilesAfterEnv + --shard --showConfig --silent --skipFilter @@ -522,8 +522,6 @@ Options: --testRunner --testSequencer --testTimeout - --testURL - --timers --transform --transformIgnorePatterns --unmockedModulePathPatterns From 2dddb32feaa4daa096c7fdf8c536c4d04941caf2 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 20 Sep 2022 13:41:04 +0200 Subject: [PATCH 035/117] cli: switch to custom jest yaml transform to support node 18 Signed-off-by: Patrik Oldsberg --- .changeset/rich-carrots-reflect.md | 5 ++++ packages/cli/config/jest.js | 2 +- packages/cli/config/jestYamlTransform.js | 38 ++++++++++++++++++++++++ packages/cli/package.json | 1 - yarn.lock | 12 +------- 5 files changed, 45 insertions(+), 13 deletions(-) create mode 100644 .changeset/rich-carrots-reflect.md create mode 100644 packages/cli/config/jestYamlTransform.js diff --git a/.changeset/rich-carrots-reflect.md b/.changeset/rich-carrots-reflect.md new file mode 100644 index 0000000000..13a67bcd56 --- /dev/null +++ b/.changeset/rich-carrots-reflect.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Switched the Jest transform for YAML files to use a custom one available at `@backstage/cli/config/jestYamlTransform.js`. diff --git a/packages/cli/config/jest.js b/packages/cli/config/jest.js index a6cbdb9f05..8b6c37bda4 100644 --- a/packages/cli/config/jest.js +++ b/packages/cli/config/jest.js @@ -188,7 +188,7 @@ async function getProjectConfig(targetPath, displayName) { ], '\\.(bmp|gif|jpg|jpeg|png|frag|xml|svg|eot|woff|woff2|ttf)$': require.resolve('./jestFileTransform.js'), - '\\.(yaml)$': require.resolve('jest-transform-yaml'), + '\\.(yaml)$': require.resolve('./jestYamlTransform'), }, // A bit more opinionated diff --git a/packages/cli/config/jestYamlTransform.js b/packages/cli/config/jestYamlTransform.js new file mode 100644 index 0000000000..2f04b94d8a --- /dev/null +++ b/packages/cli/config/jestYamlTransform.js @@ -0,0 +1,38 @@ +/* + * 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. + */ + +const yaml = require('yaml'); + +function createTransformer(config) { + const process = source => { + const json = JSON.stringify(yaml.parse(source), null, 2); + return { code: `module.exports = ${json}`, map: null }; + }; + + const getCacheKey = sourceText => { + return createHash('md5') + .update(sourceText) + .update(Buffer.alloc(1)) + .update(JSON.stringify(config)) + .update(Buffer.alloc(1)) + .update('1') // increment whenever the transform logic in this file changes + .digest('hex'); + }; + + return { process, getCacheKey }; +} + +module.exports = { createTransformer }; diff --git a/packages/cli/package.json b/packages/cli/package.json index f7a446675d..93bf98e022 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -93,7 +93,6 @@ "jest-css-modules": "^2.1.0", "jest-environment-jsdom": "^29.0.2", "jest-runtime": "^29.0.2", - "jest-transform-yaml": "^1.0.0", "json-schema": "^0.4.0", "lodash": "^4.17.21", "mini-css-extract-plugin": "^2.4.2", diff --git a/yarn.lock b/yarn.lock index e79d44a4f6..919949a804 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3281,7 +3281,6 @@ __metadata: jest-css-modules: ^2.1.0 jest-environment-jsdom: ^29.0.2 jest-runtime: ^29.0.2 - jest-transform-yaml: ^1.0.0 json-schema: ^0.4.0 lodash: ^4.17.21 mini-css-extract-plugin: ^2.4.2 @@ -27371,15 +27370,6 @@ __metadata: languageName: node linkType: hard -"jest-transform-yaml@npm:^1.0.0": - version: 1.0.0 - resolution: "jest-transform-yaml@npm:1.0.0" - dependencies: - js-yaml: 4.1.0 - checksum: 3bb1646c9fd08beb7d9f28a340bc28cebbc1aedb657c5f7809247423bfd39d99eccb8792a689876079133031281e95c56f2fadb93cdf1a142b74e9b9b7584595 - languageName: node - linkType: hard - "jest-util@npm:^29.0.3": version: 29.0.3 resolution: "jest-util@npm:29.0.3" @@ -27610,7 +27600,7 @@ __metadata: languageName: node linkType: hard -"js-yaml@npm:4.1.0, js-yaml@npm:=4.1.0, js-yaml@npm:^4.0.0, js-yaml@npm:^4.1.0": +"js-yaml@npm:=4.1.0, js-yaml@npm:^4.0.0, js-yaml@npm:^4.1.0": version: 4.1.0 resolution: "js-yaml@npm:4.1.0" dependencies: From d0f7bb029175b487b476f403cd088f626822ea4d Mon Sep 17 00:00:00 2001 From: Marcus Eide Date: Tue, 20 Sep 2022 15:16:26 +0200 Subject: [PATCH 036/117] Use origin from request when calculating cookie config in start Signed-off-by: Marcus Eide --- .../src/lib/oauth/OAuthAdapter.test.ts | 45 +++++++++++++++++++ .../src/lib/oauth/OAuthAdapter.ts | 2 +- 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/plugins/auth-backend/src/lib/oauth/OAuthAdapter.test.ts b/plugins/auth-backend/src/lib/oauth/OAuthAdapter.test.ts index 6521519808..526b05d0ab 100644 --- a/plugins/auth-backend/src/lib/oauth/OAuthAdapter.test.ts +++ b/plugins/auth-backend/src/lib/oauth/OAuthAdapter.test.ts @@ -378,6 +378,7 @@ describe('OAuthAdapter', () => { query: { scope: 'user', env: 'development', + origin: 'http://domain.org', }, } as unknown as express.Request; @@ -405,6 +406,50 @@ describe('OAuthAdapter', () => { ); }); + it('sets the correct nonce cookie configuration using origin from request', async () => { + const config = { + baseUrl: 'http://domain.org/auth', + appUrl: 'http://domain.org', + isOriginAllowed: () => false, + }; + + const oauthProvider = OAuthAdapter.fromConfig(config, providerInstance, { + ...oAuthProviderOptions, + callbackUrl: 'https://domain.org/auth/test-provider/handler/frame', + }); + + const mockRequest = { + query: { + scope: 'user', + env: 'development', + origin: 'http://other.domain', + }, + } as unknown as express.Request; + + const mockResponse = { + cookie: jest.fn().mockReturnThis(), + end: jest.fn().mockReturnThis(), + setHeader: jest.fn().mockReturnThis(), + statusCode: jest.fn().mockReturnThis(), + } as unknown as express.Response; + + await oauthProvider.start(mockRequest, mockResponse); + expect(mockCookieConfigurer).not.toHaveBeenCalled(); + expect(mockResponse.cookie).toHaveBeenCalledTimes(1); + expect(mockResponse.cookie).toHaveBeenCalledWith( + `${oAuthProviderOptions.providerId}-nonce`, + expect.any(String), + expect.objectContaining({ + httpOnly: true, + domain: 'domain.org', + maxAge: TEN_MINUTES_MS, + path: '/auth/test-provider/handler', + secure: true, + sameSite: 'none', + }), + ); + }); + it('sets the correct cookie configuration using an secure callbackUrl', async () => { const config = { baseUrl: 'https://domain.org/auth', diff --git a/plugins/auth-backend/src/lib/oauth/OAuthAdapter.ts b/plugins/auth-backend/src/lib/oauth/OAuthAdapter.ts index 43fcc5e20b..8f08cfbbd0 100644 --- a/plugins/auth-backend/src/lib/oauth/OAuthAdapter.ts +++ b/plugins/auth-backend/src/lib/oauth/OAuthAdapter.ts @@ -102,7 +102,7 @@ export class OAuthAdapter implements AuthProviderRouteHandlers { throw new InputError('No env provided in request query parameters'); } - const cookieConfig = this.getCookieConfig(); + const cookieConfig = this.getCookieConfig(origin); const nonce = crypto.randomBytes(16).toString('base64'); // set a nonce cookie before redirecting to oauth provider From 149b18d574672c35fa98e4009aca48972bef379a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 20 Sep 2022 14:13:06 +0000 Subject: [PATCH 037/117] chore(deps): update dependency concurrently to v7.4.0 Signed-off-by: Renovate Bot --- yarn.lock | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/yarn.lock b/yarn.lock index 4bd18bc805..13aedf6c19 100644 --- a/yarn.lock +++ b/yarn.lock @@ -19032,11 +19032,11 @@ __metadata: linkType: hard "concurrently@npm:^7.0.0": - version: 7.3.0 - resolution: "concurrently@npm:7.3.0" + version: 7.4.0 + resolution: "concurrently@npm:7.4.0" dependencies: chalk: ^4.1.0 - date-fns: ^2.16.1 + date-fns: ^2.29.1 lodash: ^4.17.21 rxjs: ^7.0.0 shell-quote: ^1.7.3 @@ -19045,8 +19045,9 @@ __metadata: tree-kill: ^1.2.2 yargs: ^17.3.1 bin: + conc: dist/bin/concurrently.js concurrently: dist/bin/concurrently.js - checksum: 5de845e4947c550a6ff74ecc80e1897109abe339fe8a7fa117e7b8978362566ac4ee070e4475bdaa6fc453f780fadb9089739a02606e27e04affaa7dd8905d2d + checksum: cc547866ad8d009d184ca3a7115d6636052a5f56f5429d123092d651286043d7233f6429257e30e50f509894cd12798ea831896ac18092d8135f67ffcc8ac3ea languageName: node linkType: hard @@ -20297,6 +20298,13 @@ __metadata: languageName: node linkType: hard +"date-fns@npm:^2.29.1": + version: 2.29.3 + resolution: "date-fns@npm:2.29.3" + checksum: e01cf5b62af04e05dfff921bb9c9933310ed0e1ae9a81eb8653452e64dc841acf7f6e01e1a5ae5644d0337e9a7f936175fd2cb6819dc122fdd9c5e86c56be484 + languageName: node + linkType: hard + "dateformat@npm:^3.0.0, dateformat@npm:^3.0.3": version: 3.0.3 resolution: "dateformat@npm:3.0.3" From 8abb28ab0fe42c7ff2acef056d316d47a3d0c847 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 20 Sep 2022 14:15:53 +0000 Subject: [PATCH 038/117] chore(deps): update dependency cypress to v10.8.0 Signed-off-by: Renovate Bot --- cypress/yarn.lock | 2657 ++++++++++++++++++++++++++------------------- yarn.lock | 17 +- 2 files changed, 1538 insertions(+), 1136 deletions(-) diff --git a/cypress/yarn.lock b/cypress/yarn.lock index 2dae48bd39..dd9856750c 100644 --- a/cypress/yarn.lock +++ b/cypress/yarn.lock @@ -1,1131 +1,1526 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@colors/colors@1.5.0": - version "1.5.0" - resolved "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" - integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== - -"@cypress/request@^2.88.10": - version "2.88.10" - resolved "https://registry.npmjs.org/@cypress/request/-/request-2.88.10.tgz#b66d76b07f860d3a4b8d7a0604d020c662752cce" - integrity sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - http-signature "~1.3.6" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^8.3.2" - -"@cypress/xvfb@^1.2.4": - version "1.2.4" - resolved "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz#2daf42e8275b39f4aa53c14214e557bd14e7748a" - integrity sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q== - dependencies: - debug "^3.1.0" - lodash.once "^4.1.1" - -"@types/node@*": - version "18.7.14" - resolved "https://registry.npmjs.org/@types/node/-/node-18.7.14.tgz#0fe081752a3333392d00586d815485a17c2cf3c9" - integrity sha512-6bbDaETVi8oyIARulOE9qF1/Qdi/23z6emrUh0fNJRUmjznqrixD4MpGDdgOFk5Xb0m2H6Xu42JGdvAxaJR/wA== - -"@types/node@^14.14.31": - version "14.18.26" - resolved "https://registry.npmjs.org/@types/node/-/node-14.18.26.tgz#239e19f8b4ea1a9eb710528061c1d733dc561996" - integrity sha512-0b+utRBSYj8L7XAp0d+DX7lI4cSmowNaaTkk6/1SKzbKkG+doLuPusB9EOvzLJ8ahJSk03bTLIL6cWaEd4dBKA== - -"@types/sinonjs__fake-timers@8.1.1": - version "8.1.1" - resolved "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz#b49c2c70150141a15e0fa7e79cf1f92a72934ce3" - integrity sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g== - -"@types/sizzle@^2.3.2": - version "2.3.3" - resolved "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz#ff5e2f1902969d305225a047c8a0fd5c915cebef" - integrity sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ== - -"@types/yauzl@^2.9.1": - version "2.10.0" - resolved "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz#b3248295276cf8c6f153ebe6a9aba0c988cb2599" - integrity sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw== - dependencies: - "@types/node" "*" - -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - -ansi-colors@^4.1.1: - version "4.1.3" - resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" - integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== - -ansi-escapes@^4.3.0: - version "4.3.2" - resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -arch@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" - integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== - -asn1@~0.2.3: - version "0.2.6" - resolved "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" - integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== - -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== - -async@^3.2.0: - version "3.2.4" - resolved "https://registry.npmjs.org/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" - integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - -at-least-node@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" - integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== - -aws4@^1.8.0: - version "1.11.0" - resolved "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" - integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== - dependencies: - tweetnacl "^0.14.3" - -blob-util@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" - integrity sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ== - -bluebird@^3.7.2: - version "3.7.2" - resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -buffer-crc32@~0.2.3: - version "0.2.13" - resolved "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== - -buffer@^5.6.0: - version "5.7.1" - resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -cachedir@^2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz#0c75892a052198f0b21c7c1804d8331edfcae0e8" - integrity sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw== - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== - -chalk@^4.1.0: - version "4.1.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -check-more-types@^2.24.0: - version "2.24.0" - resolved "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600" - integrity sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA== - -ci-info@^3.2.0: - version "3.3.2" - resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.3.2.tgz#6d2967ffa407466481c6c90b6e16b3098f080128" - integrity sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg== - -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-table3@~0.6.1: - version "0.6.2" - resolved "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.2.tgz#aaf5df9d8b5bf12634dc8b3040806a0c07120d2a" - integrity sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw== - dependencies: - string-width "^4.2.0" - optionalDependencies: - "@colors/colors" "1.5.0" - -cli-truncate@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" - integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== - dependencies: - slice-ansi "^3.0.0" - string-width "^4.2.0" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -colorette@^2.0.16: - version "2.0.19" - resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" - integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== - -combined-stream@^1.0.6, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -commander@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" - integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== - -common-tags@^1.8.0: - version "1.8.2" - resolved "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" - integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -core-util-is@1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== - -cross-spawn@^7.0.0: - version "7.0.3" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -cypress@^10.0.0: - version "10.7.0" - resolved "https://registry.npmjs.org/cypress/-/cypress-10.7.0.tgz#2d37f8b9751c6de33ee48639cb7e67a2ce593231" - integrity sha512-gTFvjrUoBnqPPOu9Vl5SBHuFlzx/Wxg/ZXIz2H4lzoOLFelKeF7mbwYUOzgzgF0oieU2WhJAestQdkgwJMMTvQ== - dependencies: - "@cypress/request" "^2.88.10" - "@cypress/xvfb" "^1.2.4" - "@types/node" "^14.14.31" - "@types/sinonjs__fake-timers" "8.1.1" - "@types/sizzle" "^2.3.2" - arch "^2.2.0" - blob-util "^2.0.2" - bluebird "^3.7.2" - buffer "^5.6.0" - cachedir "^2.3.0" - chalk "^4.1.0" - check-more-types "^2.24.0" - cli-cursor "^3.1.0" - cli-table3 "~0.6.1" - commander "^5.1.0" - common-tags "^1.8.0" - dayjs "^1.10.4" - debug "^4.3.2" - enquirer "^2.3.6" - eventemitter2 "^6.4.3" - execa "4.1.0" - executable "^4.1.1" - extract-zip "2.0.1" - figures "^3.2.0" - fs-extra "^9.1.0" - getos "^3.2.1" - is-ci "^3.0.0" - is-installed-globally "~0.4.0" - lazy-ass "^1.6.0" - listr2 "^3.8.3" - lodash "^4.17.21" - log-symbols "^4.0.0" - minimist "^1.2.6" - ospath "^1.2.2" - pretty-bytes "^5.6.0" - proxy-from-env "1.0.0" - request-progress "^3.0.0" - semver "^7.3.2" - supports-color "^8.1.1" - tmp "~0.2.1" - untildify "^4.0.0" - yauzl "^2.10.0" - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== - dependencies: - assert-plus "^1.0.0" - -dayjs@^1.10.4: - version "1.11.5" - resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.5.tgz#00e8cc627f231f9499c19b38af49f56dc0ac5e93" - integrity sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA== - -debug@^3.1.0: - version "3.2.7" - resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -debug@^4.1.1, debug@^4.3.2: - version "4.3.4" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -enquirer@^2.3.6: - version "2.3.6" - resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" - integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== - dependencies: - ansi-colors "^4.1.1" - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -eventemitter2@^6.4.3: - version "6.4.7" - resolved "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz#a7f6c4d7abf28a14c1ef3442f21cb306a054271d" - integrity sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg== - -execa@4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" - integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - -executable@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c" - integrity sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg== - dependencies: - pify "^2.2.0" - -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -extract-zip@2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" - integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== - dependencies: - debug "^4.1.1" - get-stream "^5.1.0" - yauzl "^2.10.0" - optionalDependencies: - "@types/yauzl" "^2.9.1" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== - -extsprintf@^1.2.0: - version "1.4.1" - resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" - integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== - -fd-slicer@~1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" - integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== - dependencies: - pend "~1.2.0" - -figures@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -fs-extra@^9.1.0: - version "9.1.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -get-stream@^5.0.0, get-stream@^5.1.0: - version "5.2.0" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" - -getos@^3.2.1: - version "3.2.1" - resolved "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz#0134d1f4e00eb46144c5a9c0ac4dc087cbb27dc5" - integrity sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q== - dependencies: - async "^3.2.0" - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== - dependencies: - assert-plus "^1.0.0" - -glob@^7.1.3: - version "7.2.3" - resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -global-dirs@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686" - integrity sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA== - dependencies: - ini "2.0.0" - -graceful-fs@^4.1.6, 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== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -http-signature@~1.3.6: - version "1.3.6" - resolved "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz#cb6fbfdf86d1c974f343be94e87f7fc128662cf9" - integrity sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw== - dependencies: - assert-plus "^1.0.0" - jsprim "^2.0.2" - sshpk "^1.14.1" - -human-signals@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" - integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== - -ieee754@^1.1.13: - version "1.2.1" - resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2: - version "2.0.4" - resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -ini@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" - integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== - -is-ci@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867" - integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== - dependencies: - ci-info "^3.2.0" - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-installed-globally@~0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" - integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== - dependencies: - global-dirs "^3.0.0" - is-path-inside "^3.0.2" - -is-path-inside@^3.0.2: - version "3.0.3" - resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== - -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== - -json-schema@0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" - integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== - -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -jsprim@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz#77ca23dbcd4135cd364800d22ff82c2185803d4d" - integrity sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ== - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.4.0" - verror "1.10.0" - -lazy-ass@^1.6.0: - version "1.6.0" - resolved "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513" - integrity sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw== - -listr2@^3.8.3: - version "3.14.0" - resolved "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz#23101cc62e1375fd5836b248276d1d2b51fdbe9e" - integrity sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g== - dependencies: - cli-truncate "^2.1.0" - colorette "^2.0.16" - log-update "^4.0.0" - p-map "^4.0.0" - rfdc "^1.3.0" - rxjs "^7.5.1" - through "^2.3.8" - wrap-ansi "^7.0.0" - -lodash.once@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" - integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg== - -lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-symbols@^4.0.0: - version "4.1.0" - resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - -log-update@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" - integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== - dependencies: - ansi-escapes "^4.3.0" - cli-cursor "^3.1.0" - slice-ansi "^4.0.0" - wrap-ansi "^6.2.0" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.12, mime-types@~2.1.19: - version "2.1.35" - resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -minimatch@^3.1.1: - version "3.1.2" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimist@^1.2.6: - version "1.2.6" - resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" - integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@^2.1.1: - version "2.1.3" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -npm-run-path@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -onetime@^5.1.0: - version "5.1.2" - resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -ospath@^1.2.2: - version "1.2.2" - resolved "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz#1276639774a3f8ef2572f7fe4280e0ea4550c07b" - integrity sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA== - -p-map@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" - integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== - dependencies: - aggregate-error "^3.0.0" - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -pend@~1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" - integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== - -pify@^2.2.0: - version "2.3.0" - resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== - -pretty-bytes@^5.6.0: - version "5.6.0" - resolved "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" - integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== - -proxy-from-env@1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee" - integrity sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A== - -psl@^1.1.28: - version "1.9.0" - resolved "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" - integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -qs@~6.5.2: - version "6.5.3" - resolved "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" - integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== - -request-progress@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz#4ca754081c7fec63f505e4faa825aa06cd669dbe" - integrity sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg== - dependencies: - throttleit "^1.0.0" - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -rfdc@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" - integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== - -rimraf@^3.0.0: - version "3.0.2" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -rxjs@^7.5.1: - version "7.5.6" - resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz#0446577557862afd6903517ce7cae79ecb9662bc" - integrity sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw== - dependencies: - tslib "^2.1.0" - -safe-buffer@^5.0.1, safe-buffer@^5.1.2: - version "5.2.1" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: - version "2.1.2" - resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -semver@^7.3.2: - version "7.3.7" - resolved "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" - integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== - dependencies: - lru-cache "^6.0.0" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -signal-exit@^3.0.2: - version "3.0.7" - resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -slice-ansi@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" - integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -slice-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" - integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -sshpk@^1.14.1: - version "1.17.0" - resolved "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" - integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -string-width@^4.1.0, string-width@^4.2.0: - version "4.2.3" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-color@^8.1.1: - version "8.1.1" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -throttleit@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" - integrity sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g== - -through@^2.3.8: - version "2.3.8" - resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== - -tmp@~0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" - integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== - dependencies: - rimraf "^3.0.0" - -tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - -tslib@^2.1.0: - version "2.4.0" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" - integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== - -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -typescript@^4.1.3: - 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" - resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== - -untildify@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" - integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== - -uuid@^8.3.2: - version "8.3.2" - resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yauzl@^2.10.0: - version "2.10.0" - resolved "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" - integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== - dependencies: - buffer-crc32 "~0.2.3" - fd-slicer "~1.1.0" +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + +__metadata: + version: 6 + cacheKey: 8 + +"@backstage/cypress-tests@workspace:.": + version: 0.0.0-use.local + resolution: "@backstage/cypress-tests@workspace:." + dependencies: + cypress: ^10.0.0 + typescript: ^4.1.3 + languageName: unknown + linkType: soft + +"@colors/colors@npm:1.5.0": + version: 1.5.0 + resolution: "@colors/colors@npm:1.5.0" + checksum: d64d5260bed1d5012ae3fc617d38d1afc0329fec05342f4e6b838f46998855ba56e0a73833f4a80fa8378c84810da254f76a8a19c39d038260dc06dc4e007425 + languageName: node + linkType: hard + +"@cypress/request@npm:^2.88.10": + version: 2.88.10 + resolution: "@cypress/request@npm:2.88.10" + dependencies: + aws-sign2: ~0.7.0 + aws4: ^1.8.0 + caseless: ~0.12.0 + combined-stream: ~1.0.6 + extend: ~3.0.2 + forever-agent: ~0.6.1 + form-data: ~2.3.2 + http-signature: ~1.3.6 + is-typedarray: ~1.0.0 + isstream: ~0.1.2 + json-stringify-safe: ~5.0.1 + mime-types: ~2.1.19 + performance-now: ^2.1.0 + qs: ~6.5.2 + safe-buffer: ^5.1.2 + tough-cookie: ~2.5.0 + tunnel-agent: ^0.6.0 + uuid: ^8.3.2 + checksum: 69c3e3b332e9be4866a900f6bcca5d274d8cea6c99707fbcce061de8dbab11c9b1e39f4c017f6e83e6e682717781d4f6106fd6b7cf9546580fcfac353b6676cf + languageName: node + linkType: hard + +"@cypress/xvfb@npm:^1.2.4": + version: 1.2.4 + resolution: "@cypress/xvfb@npm:1.2.4" + dependencies: + debug: ^3.1.0 + lodash.once: ^4.1.1 + checksum: 7bdcdaeb1bb692ec9d9bf8ec52538aa0bead6764753f4a067a171a511807a43fab016f7285a56bef6a606c2467ff3f1365e1ad2d2d583b81beed849ee1573fd1 + languageName: node + linkType: hard + +"@types/node@npm:*": + version: 18.7.14 + resolution: "@types/node@npm:18.7.14" + checksum: 99cf28ff854100158de875cca23c7acc3cc01dfee526a52b90b7f36767c821bcbaf2be0a98a70f06f3b78f3c60639168ff949d725b61e2e124f9f71f1fb8043d + languageName: node + linkType: hard + +"@types/node@npm:^14.14.31": + version: 14.18.26 + resolution: "@types/node@npm:14.18.26" + checksum: c6ac3f9d4f6f77c0fa5ac17757779ad4d9835abfe3af5708b7552597cb5c7c1103e83499ccaf767a1cfa70040990bcf3f58761c547051dc8d5077f3c419091b1 + languageName: node + linkType: hard + +"@types/sinonjs__fake-timers@npm:8.1.1": + version: 8.1.1 + resolution: "@types/sinonjs__fake-timers@npm:8.1.1" + checksum: ca09d54d47091d87020824a73f026300fa06b17cd9f2f9b9387f28b549364b141ef194ee28db762f6588de71d8febcd17f753163cb7ea116b8387c18e80ebd5c + languageName: node + linkType: hard + +"@types/sizzle@npm:^2.3.2": + version: 2.3.3 + resolution: "@types/sizzle@npm:2.3.3" + checksum: 586a9fb1f6ff3e325e0f2cc1596a460615f0bc8a28f6e276ac9b509401039dd242fa8b34496d3a30c52f5b495873922d09a9e76c50c2ab2bcc70ba3fb9c4e160 + languageName: node + linkType: hard + +"@types/yauzl@npm:^2.9.1": + version: 2.10.0 + resolution: "@types/yauzl@npm:2.10.0" + dependencies: + "@types/node": "*" + checksum: 55d27ae5d346ea260e40121675c24e112ef0247649073848e5d4e03182713ae4ec8142b98f61a1c6cbe7d3b72fa99bbadb65d8b01873e5e605cdc30f1ff70ef2 + languageName: node + linkType: hard + +"aggregate-error@npm:^3.0.0": + version: 3.1.0 + resolution: "aggregate-error@npm:3.1.0" + dependencies: + clean-stack: ^2.0.0 + indent-string: ^4.0.0 + checksum: 1101a33f21baa27a2fa8e04b698271e64616b886795fd43c31068c07533c7b3facfcaf4e9e0cab3624bd88f729a592f1c901a1a229c9e490eafce411a8644b79 + languageName: node + linkType: hard + +"ansi-colors@npm:^4.1.1": + version: 4.1.3 + resolution: "ansi-colors@npm:4.1.3" + checksum: a9c2ec842038a1fabc7db9ece7d3177e2fe1c5dc6f0c51ecfbf5f39911427b89c00b5dc6b8bd95f82a26e9b16aaae2e83d45f060e98070ce4d1333038edceb0e + languageName: node + linkType: hard + +"ansi-escapes@npm:^4.3.0": + version: 4.3.2 + resolution: "ansi-escapes@npm:4.3.2" + dependencies: + type-fest: ^0.21.3 + checksum: 93111c42189c0a6bed9cdb4d7f2829548e943827ee8479c74d6e0b22ee127b2a21d3f8b5ca57723b8ef78ce011fbfc2784350eb2bde3ccfccf2f575fa8489815 + languageName: node + linkType: hard + +"ansi-regex@npm:^5.0.1": + version: 5.0.1 + resolution: "ansi-regex@npm:5.0.1" + checksum: 2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b + languageName: node + linkType: hard + +"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": + version: 4.3.0 + resolution: "ansi-styles@npm:4.3.0" + dependencies: + color-convert: ^2.0.1 + checksum: 513b44c3b2105dd14cc42a19271e80f386466c4be574bccf60b627432f9198571ebf4ab1e4c3ba17347658f4ee1711c163d574248c0c1cdc2d5917a0ad582ec4 + languageName: node + linkType: hard + +"arch@npm:^2.2.0": + version: 2.2.0 + resolution: "arch@npm:2.2.0" + checksum: e21b7635029fe8e9cdd5a026f9a6c659103e63fff423834323cdf836a1bb240a72d0c39ca8c470f84643385cf581bd8eda2cad8bf493e27e54bd9783abe9101f + languageName: node + linkType: hard + +"asn1@npm:~0.2.3": + version: 0.2.6 + resolution: "asn1@npm:0.2.6" + dependencies: + safer-buffer: ~2.1.0 + checksum: 39f2ae343b03c15ad4f238ba561e626602a3de8d94ae536c46a4a93e69578826305366dc09fbb9b56aec39b4982a463682f259c38e59f6fa380cd72cd61e493d + languageName: node + linkType: hard + +"assert-plus@npm:1.0.0, assert-plus@npm:^1.0.0": + version: 1.0.0 + resolution: "assert-plus@npm:1.0.0" + checksum: 19b4340cb8f0e6a981c07225eacac0e9d52c2644c080198765d63398f0075f83bbc0c8e95474d54224e297555ad0d631c1dcd058adb1ddc2437b41a6b424ac64 + languageName: node + linkType: hard + +"astral-regex@npm:^2.0.0": + version: 2.0.0 + resolution: "astral-regex@npm:2.0.0" + checksum: 876231688c66400473ba505731df37ea436e574dd524520294cc3bbc54ea40334865e01fa0d074d74d036ee874ee7e62f486ea38bc421ee8e6a871c06f011766 + languageName: node + linkType: hard + +"async@npm:^3.2.0": + version: 3.2.4 + resolution: "async@npm:3.2.4" + checksum: 43d07459a4e1d09b84a20772414aa684ff4de085cbcaec6eea3c7a8f8150e8c62aa6cd4e699fe8ee93c3a5b324e777d34642531875a0817a35697522c1b02e89 + languageName: node + linkType: hard + +"asynckit@npm:^0.4.0": + version: 0.4.0 + resolution: "asynckit@npm:0.4.0" + checksum: 7b78c451df768adba04e2d02e63e2d0bf3b07adcd6e42b4cf665cb7ce899bedd344c69a1dcbce355b5f972d597b25aaa1c1742b52cffd9caccb22f348114f6be + languageName: node + linkType: hard + +"at-least-node@npm:^1.0.0": + version: 1.0.0 + resolution: "at-least-node@npm:1.0.0" + checksum: 463e2f8e43384f1afb54bc68485c436d7622acec08b6fad269b421cb1d29cebb5af751426793d0961ed243146fe4dc983402f6d5a51b720b277818dbf6f2e49e + languageName: node + linkType: hard + +"aws-sign2@npm:~0.7.0": + version: 0.7.0 + resolution: "aws-sign2@npm:0.7.0" + checksum: b148b0bb0778098ad8cf7e5fc619768bcb51236707ca1d3e5b49e41b171166d8be9fdc2ea2ae43d7decf02989d0aaa3a9c4caa6f320af95d684de9b548a71525 + languageName: node + linkType: hard + +"aws4@npm:^1.8.0": + version: 1.11.0 + resolution: "aws4@npm:1.11.0" + checksum: 5a00d045fd0385926d20ebebcfba5ec79d4482fe706f63c27b324d489a04c68edb0db99ed991e19eda09cb8c97dc2452059a34d97545cebf591d7a2b5a10999f + languageName: node + linkType: hard + +"balanced-match@npm:^1.0.0": + version: 1.0.2 + resolution: "balanced-match@npm:1.0.2" + checksum: 9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65 + languageName: node + linkType: hard + +"base64-js@npm:^1.3.1": + version: 1.5.1 + resolution: "base64-js@npm:1.5.1" + checksum: 669632eb3745404c2f822a18fc3a0122d2f9a7a13f7fb8b5823ee19d1d2ff9ee5b52c53367176ea4ad093c332fd5ab4bd0ebae5a8e27917a4105a4cfc86b1005 + languageName: node + linkType: hard + +"bcrypt-pbkdf@npm:^1.0.0": + version: 1.0.2 + resolution: "bcrypt-pbkdf@npm:1.0.2" + dependencies: + tweetnacl: ^0.14.3 + checksum: 4edfc9fe7d07019609ccf797a2af28351736e9d012c8402a07120c4453a3b789a15f2ee1530dc49eee8f7eb9379331a8dd4b3766042b9e502f74a68e7f662291 + languageName: node + linkType: hard + +"blob-util@npm:^2.0.2": + version: 2.0.2 + resolution: "blob-util@npm:2.0.2" + checksum: d543e6b92e4ca715ca33c78e89a07a2290d43e5b2bc897d7ec588c5c7bbf59df93e45225ac0c9258aa6ce4320358990f99c9288f1c48280f8ec5d7a2e088d19b + languageName: node + linkType: hard + +"bluebird@npm:^3.7.2": + version: 3.7.2 + resolution: "bluebird@npm:3.7.2" + checksum: 869417503c722e7dc54ca46715f70e15f4d9c602a423a02c825570862d12935be59ed9c7ba34a9b31f186c017c23cac6b54e35446f8353059c101da73eac22ef + languageName: node + linkType: hard + +"brace-expansion@npm:^1.1.7": + version: 1.1.11 + resolution: "brace-expansion@npm:1.1.11" + dependencies: + balanced-match: ^1.0.0 + concat-map: 0.0.1 + checksum: faf34a7bb0c3fcf4b59c7808bc5d2a96a40988addf2e7e09dfbb67a2251800e0d14cd2bfc1aa79174f2f5095c54ff27f46fb1289fe2d77dac755b5eb3434cc07 + languageName: node + linkType: hard + +"buffer-crc32@npm:~0.2.3": + version: 0.2.13 + resolution: "buffer-crc32@npm:0.2.13" + checksum: 06252347ae6daca3453b94e4b2f1d3754a3b146a111d81c68924c22d91889a40623264e95e67955b1cb4a68cbedf317abeabb5140a9766ed248973096db5ce1c + languageName: node + linkType: hard + +"buffer@npm:^5.6.0": + version: 5.7.1 + resolution: "buffer@npm:5.7.1" + dependencies: + base64-js: ^1.3.1 + ieee754: ^1.1.13 + checksum: e2cf8429e1c4c7b8cbd30834ac09bd61da46ce35f5c22a78e6c2f04497d6d25541b16881e30a019c6fd3154150650ccee27a308eff3e26229d788bbdeb08ab84 + languageName: node + linkType: hard + +"cachedir@npm:^2.3.0": + version: 2.3.0 + resolution: "cachedir@npm:2.3.0" + checksum: ec90cb0f2e6336e266aa748dbadf3da9e0b20e843e43f1591acab7a3f1451337dc2f26cb9dd833ae8cfefeffeeb43ef5b5ff62782a685f4e3c2305dd98482fcb + languageName: node + linkType: hard + +"caseless@npm:~0.12.0": + version: 0.12.0 + resolution: "caseless@npm:0.12.0" + checksum: b43bd4c440aa1e8ee6baefee8063b4850fd0d7b378f6aabc796c9ec8cb26d27fb30b46885350777d9bd079c5256c0e1329ad0dc7c2817e0bb466810ebb353751 + languageName: node + linkType: hard + +"chalk@npm:^4.1.0": + version: 4.1.2 + resolution: "chalk@npm:4.1.2" + dependencies: + ansi-styles: ^4.1.0 + supports-color: ^7.1.0 + checksum: fe75c9d5c76a7a98d45495b91b2172fa3b7a09e0cc9370e5c8feb1c567b85c4288e2b3fded7cfdd7359ac28d6b3844feb8b82b8686842e93d23c827c417e83fc + languageName: node + linkType: hard + +"check-more-types@npm:^2.24.0": + version: 2.24.0 + resolution: "check-more-types@npm:2.24.0" + checksum: b09080ec3404d20a4b0ead828994b2e5913236ef44ed3033a27062af0004cf7d2091fbde4b396bf13b7ce02fb018bc9960b48305e6ab2304cd82d73ed7a51ef4 + languageName: node + linkType: hard + +"ci-info@npm:^3.2.0": + version: 3.3.2 + resolution: "ci-info@npm:3.3.2" + checksum: fd81f1edd2d3b0f6cb077b2e84365136d87b9db8c055928c1ad69da8a76c2c2f19cba8ea51b90238302157ca927f91f92b653e933f2398dde4867500f08d6e62 + languageName: node + linkType: hard + +"clean-stack@npm:^2.0.0": + version: 2.2.0 + resolution: "clean-stack@npm:2.2.0" + checksum: 2ac8cd2b2f5ec986a3c743935ec85b07bc174d5421a5efc8017e1f146a1cf5f781ae962618f416352103b32c9cd7e203276e8c28241bbe946160cab16149fb68 + languageName: node + linkType: hard + +"cli-cursor@npm:^3.1.0": + version: 3.1.0 + resolution: "cli-cursor@npm:3.1.0" + dependencies: + restore-cursor: ^3.1.0 + checksum: 2692784c6cd2fd85cfdbd11f53aea73a463a6d64a77c3e098b2b4697a20443f430c220629e1ca3b195ea5ac4a97a74c2ee411f3807abf6df2b66211fec0c0a29 + languageName: node + linkType: hard + +"cli-table3@npm:~0.6.1": + version: 0.6.2 + resolution: "cli-table3@npm:0.6.2" + dependencies: + "@colors/colors": 1.5.0 + string-width: ^4.2.0 + dependenciesMeta: + "@colors/colors": + optional: true + checksum: 2f82391698b8a2a2a5e45d2adcfea5d93e557207f90455a8d4c1aac688e9b18a204d9eb4ba1d322fa123b17d64ea3dc5e11de8b005529f3c3e7dbeb27cb4d9be + languageName: node + linkType: hard + +"cli-truncate@npm:^2.1.0": + version: 2.1.0 + resolution: "cli-truncate@npm:2.1.0" + dependencies: + slice-ansi: ^3.0.0 + string-width: ^4.2.0 + checksum: bf1e4e6195392dc718bf9cd71f317b6300dc4a9191d052f31046b8773230ece4fa09458813bf0e3455a5e68c0690d2ea2c197d14a8b85a7b5e01c97f4b5feb5d + languageName: node + linkType: hard + +"color-convert@npm:^2.0.1": + version: 2.0.1 + resolution: "color-convert@npm:2.0.1" + dependencies: + color-name: ~1.1.4 + checksum: 79e6bdb9fd479a205c71d89574fccfb22bd9053bd98c6c4d870d65c132e5e904e6034978e55b43d69fcaa7433af2016ee203ce76eeba9cfa554b373e7f7db336 + languageName: node + linkType: hard + +"color-name@npm:~1.1.4": + version: 1.1.4 + resolution: "color-name@npm:1.1.4" + checksum: b0445859521eb4021cd0fb0cc1a75cecf67fceecae89b63f62b201cca8d345baf8b952c966862a9d9a2632987d4f6581f0ec8d957dfacece86f0a7919316f610 + languageName: node + linkType: hard + +"colorette@npm:^2.0.16": + version: 2.0.19 + resolution: "colorette@npm:2.0.19" + checksum: 888cf5493f781e5fcf54ce4d49e9d7d698f96ea2b2ef67906834bb319a392c667f9ec69f4a10e268d2946d13a9503d2d19b3abaaaf174e3451bfe91fb9d82427 + languageName: node + linkType: hard + +"combined-stream@npm:^1.0.6, combined-stream@npm:~1.0.6": + version: 1.0.8 + resolution: "combined-stream@npm:1.0.8" + dependencies: + delayed-stream: ~1.0.0 + checksum: 49fa4aeb4916567e33ea81d088f6584749fc90c7abec76fd516bf1c5aa5c79f3584b5ba3de6b86d26ddd64bae5329c4c7479343250cfe71c75bb366eae53bb7c + languageName: node + linkType: hard + +"commander@npm:^5.1.0": + version: 5.1.0 + resolution: "commander@npm:5.1.0" + checksum: 0b7fec1712fbcc6230fcb161d8d73b4730fa91a21dc089515489402ad78810547683f058e2a9835929c212fead1d6a6ade70db28bbb03edbc2829a9ab7d69447 + languageName: node + linkType: hard + +"common-tags@npm:^1.8.0": + version: 1.8.2 + resolution: "common-tags@npm:1.8.2" + checksum: 767a6255a84bbc47df49a60ab583053bb29a7d9687066a18500a516188a062c4e4cd52de341f22de0b07062e699b1b8fe3cfa1cb55b241cb9301aeb4f45b4dff + languageName: node + linkType: hard + +"concat-map@npm:0.0.1": + version: 0.0.1 + resolution: "concat-map@npm:0.0.1" + checksum: 902a9f5d8967a3e2faf138d5cb784b9979bad2e6db5357c5b21c568df4ebe62bcb15108af1b2253744844eb964fc023fbd9afbbbb6ddd0bcc204c6fb5b7bf3af + languageName: node + linkType: hard + +"core-util-is@npm:1.0.2": + version: 1.0.2 + resolution: "core-util-is@npm:1.0.2" + checksum: 7a4c925b497a2c91421e25bf76d6d8190f0b2359a9200dbeed136e63b2931d6294d3b1893eda378883ed363cd950f44a12a401384c609839ea616befb7927dab + languageName: node + linkType: hard + +"cross-spawn@npm:^7.0.0": + version: 7.0.3 + resolution: "cross-spawn@npm:7.0.3" + dependencies: + path-key: ^3.1.0 + shebang-command: ^2.0.0 + which: ^2.0.1 + checksum: 671cc7c7288c3a8406f3c69a3ae2fc85555c04169e9d611def9a675635472614f1c0ed0ef80955d5b6d4e724f6ced67f0ad1bb006c2ea643488fcfef994d7f52 + languageName: node + linkType: hard + +"cypress@npm:^10.0.0": + version: 10.8.0 + resolution: "cypress@npm:10.8.0" + dependencies: + "@cypress/request": ^2.88.10 + "@cypress/xvfb": ^1.2.4 + "@types/node": ^14.14.31 + "@types/sinonjs__fake-timers": 8.1.1 + "@types/sizzle": ^2.3.2 + arch: ^2.2.0 + blob-util: ^2.0.2 + bluebird: ^3.7.2 + buffer: ^5.6.0 + cachedir: ^2.3.0 + chalk: ^4.1.0 + check-more-types: ^2.24.0 + cli-cursor: ^3.1.0 + cli-table3: ~0.6.1 + commander: ^5.1.0 + common-tags: ^1.8.0 + dayjs: ^1.10.4 + debug: ^4.3.2 + enquirer: ^2.3.6 + eventemitter2: 6.4.7 + execa: 4.1.0 + executable: ^4.1.1 + extract-zip: 2.0.1 + figures: ^3.2.0 + fs-extra: ^9.1.0 + getos: ^3.2.1 + is-ci: ^3.0.0 + is-installed-globally: ~0.4.0 + lazy-ass: ^1.6.0 + listr2: ^3.8.3 + lodash: ^4.17.21 + log-symbols: ^4.0.0 + minimist: ^1.2.6 + ospath: ^1.2.2 + pretty-bytes: ^5.6.0 + proxy-from-env: 1.0.0 + request-progress: ^3.0.0 + semver: ^7.3.2 + supports-color: ^8.1.1 + tmp: ~0.2.1 + untildify: ^4.0.0 + yauzl: ^2.10.0 + bin: + cypress: bin/cypress + checksum: c052690049980e7721e6fca563b724fde839d87d83c1478dfe26ce7d230992717c2c4028e7157bfb39ec274473e51929f49e5aab6a23c2b25cde2a439b1c3cf9 + languageName: node + linkType: hard + +"dashdash@npm:^1.12.0": + version: 1.14.1 + resolution: "dashdash@npm:1.14.1" + dependencies: + assert-plus: ^1.0.0 + checksum: 3634c249570f7f34e3d34f866c93f866c5b417f0dd616275decae08147dcdf8fccfaa5947380ccfb0473998ea3a8057c0b4cd90c875740ee685d0624b2983598 + languageName: node + linkType: hard + +"dayjs@npm:^1.10.4": + version: 1.11.5 + resolution: "dayjs@npm:1.11.5" + checksum: e3bbaa7b4883b31be4bf75a181f1447fbb19800c29b332852125aab96baeff3ac232dcba8b88c4ea17d3b636c99dac5fb9d1af4bb6ae26615698bbc4a852dffb + languageName: node + linkType: hard + +"debug@npm:^3.1.0": + version: 3.2.7 + resolution: "debug@npm:3.2.7" + dependencies: + ms: ^2.1.1 + checksum: b3d8c5940799914d30314b7c3304a43305fd0715581a919dacb8b3176d024a782062368405b47491516d2091d6462d4d11f2f4974a405048094f8bfebfa3071c + languageName: node + linkType: hard + +"debug@npm:^4.1.1, debug@npm:^4.3.2": + version: 4.3.4 + resolution: "debug@npm:4.3.4" + dependencies: + ms: 2.1.2 + peerDependenciesMeta: + supports-color: + optional: true + checksum: 3dbad3f94ea64f34431a9cbf0bafb61853eda57bff2880036153438f50fb5a84f27683ba0d8e5426bf41a8c6ff03879488120cf5b3a761e77953169c0600a708 + languageName: node + linkType: hard + +"delayed-stream@npm:~1.0.0": + version: 1.0.0 + resolution: "delayed-stream@npm:1.0.0" + checksum: 46fe6e83e2cb1d85ba50bd52803c68be9bd953282fa7096f51fc29edd5d67ff84ff753c51966061e5ba7cb5e47ef6d36a91924eddb7f3f3483b1c560f77a0020 + languageName: node + linkType: hard + +"ecc-jsbn@npm:~0.1.1": + version: 0.1.2 + resolution: "ecc-jsbn@npm:0.1.2" + dependencies: + jsbn: ~0.1.0 + safer-buffer: ^2.1.0 + checksum: 22fef4b6203e5f31d425f5b711eb389e4c6c2723402e389af394f8411b76a488fa414d309d866e2b577ce3e8462d344205545c88a8143cc21752a5172818888a + languageName: node + linkType: hard + +"emoji-regex@npm:^8.0.0": + version: 8.0.0 + resolution: "emoji-regex@npm:8.0.0" + checksum: d4c5c39d5a9868b5fa152f00cada8a936868fd3367f33f71be515ecee4c803132d11b31a6222b2571b1e5f7e13890156a94880345594d0ce7e3c9895f560f192 + languageName: node + linkType: hard + +"end-of-stream@npm:^1.1.0": + version: 1.4.4 + resolution: "end-of-stream@npm:1.4.4" + dependencies: + once: ^1.4.0 + checksum: 530a5a5a1e517e962854a31693dbb5c0b2fc40b46dad2a56a2deec656ca040631124f4795823acc68238147805f8b021abbe221f4afed5ef3c8e8efc2024908b + languageName: node + linkType: hard + +"enquirer@npm:^2.3.6": + version: 2.3.6 + resolution: "enquirer@npm:2.3.6" + dependencies: + ansi-colors: ^4.1.1 + checksum: 1c0911e14a6f8d26721c91e01db06092a5f7675159f0261d69c403396a385afd13dd76825e7678f66daffa930cfaa8d45f506fb35f818a2788463d022af1b884 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^1.0.5": + version: 1.0.5 + resolution: "escape-string-regexp@npm:1.0.5" + checksum: 6092fda75c63b110c706b6a9bfde8a612ad595b628f0bd2147eea1d3406723020810e591effc7db1da91d80a71a737a313567c5abb3813e8d9c71f4aa595b410 + languageName: node + linkType: hard + +"eventemitter2@npm:6.4.7": + version: 6.4.7 + resolution: "eventemitter2@npm:6.4.7" + checksum: 1b36a77e139d6965ebf3a36c01fa00c089ae6b80faa1911e52888f40b3a7057b36a2cc45dcd1ad87cda3798fe7b97a0aabcbb8175a8b96092a23bb7d0f039e66 + languageName: node + linkType: hard + +"execa@npm:4.1.0": + version: 4.1.0 + resolution: "execa@npm:4.1.0" + dependencies: + cross-spawn: ^7.0.0 + get-stream: ^5.0.0 + human-signals: ^1.1.1 + is-stream: ^2.0.0 + merge-stream: ^2.0.0 + npm-run-path: ^4.0.0 + onetime: ^5.1.0 + signal-exit: ^3.0.2 + strip-final-newline: ^2.0.0 + checksum: e30d298934d9c52f90f3847704fd8224e849a081ab2b517bbc02f5f7732c24e56a21f14cb96a08256deffeb2d12b2b7cb7e2b014a12fb36f8d3357e06417ed55 + languageName: node + linkType: hard + +"executable@npm:^4.1.1": + version: 4.1.1 + resolution: "executable@npm:4.1.1" + dependencies: + pify: ^2.2.0 + checksum: f01927ce59bccec804e171bf859a26e362c1f50aa9ebc69f7cafdcce3859d29d4b6267fd47237c18b0a1830614bd3f0ee14b7380d9bad18a4e7af9b5f0b6984f + languageName: node + linkType: hard + +"extend@npm:~3.0.2": + version: 3.0.2 + resolution: "extend@npm:3.0.2" + checksum: a50a8309ca65ea5d426382ff09f33586527882cf532931cb08ca786ea3146c0553310bda688710ff61d7668eba9f96b923fe1420cdf56a2c3eaf30fcab87b515 + languageName: node + linkType: hard + +"extract-zip@npm:2.0.1": + version: 2.0.1 + resolution: "extract-zip@npm:2.0.1" + dependencies: + "@types/yauzl": ^2.9.1 + debug: ^4.1.1 + get-stream: ^5.1.0 + yauzl: ^2.10.0 + dependenciesMeta: + "@types/yauzl": + optional: true + bin: + extract-zip: cli.js + checksum: 8cbda9debdd6d6980819cc69734d874ddd71051c9fe5bde1ef307ebcedfe949ba57b004894b585f758b7c9eeeea0e3d87f2dda89b7d25320459c2c9643ebb635 + languageName: node + linkType: hard + +"extsprintf@npm:1.3.0": + version: 1.3.0 + resolution: "extsprintf@npm:1.3.0" + checksum: cee7a4a1e34cffeeec18559109de92c27517e5641991ec6bab849aa64e3081022903dd53084f2080d0d2530803aa5ee84f1e9de642c365452f9e67be8f958ce2 + languageName: node + linkType: hard + +"extsprintf@npm:^1.2.0": + version: 1.4.1 + resolution: "extsprintf@npm:1.4.1" + checksum: a2f29b241914a8d2bad64363de684821b6b1609d06ae68d5b539e4de6b28659715b5bea94a7265201603713b7027d35399d10b0548f09071c5513e65e8323d33 + languageName: node + linkType: hard + +"fd-slicer@npm:~1.1.0": + version: 1.1.0 + resolution: "fd-slicer@npm:1.1.0" + dependencies: + pend: ~1.2.0 + checksum: c8585fd5713f4476eb8261150900d2cb7f6ff2d87f8feb306ccc8a1122efd152f1783bdb2b8dc891395744583436bfd8081d8e63ece0ec8687eeefea394d4ff2 + languageName: node + linkType: hard + +"figures@npm:^3.2.0": + version: 3.2.0 + resolution: "figures@npm:3.2.0" + dependencies: + escape-string-regexp: ^1.0.5 + checksum: 85a6ad29e9aca80b49b817e7c89ecc4716ff14e3779d9835af554db91bac41c0f289c418923519392a1e582b4d10482ad282021330cd045bb7b80c84152f2a2b + languageName: node + linkType: hard + +"forever-agent@npm:~0.6.1": + version: 0.6.1 + resolution: "forever-agent@npm:0.6.1" + checksum: 766ae6e220f5fe23676bb4c6a99387cec5b7b62ceb99e10923376e27bfea72f3c3aeec2ba5f45f3f7ba65d6616965aa7c20b15002b6860833bb6e394dea546a8 + languageName: node + linkType: hard + +"form-data@npm:~2.3.2": + version: 2.3.3 + resolution: "form-data@npm:2.3.3" + dependencies: + asynckit: ^0.4.0 + combined-stream: ^1.0.6 + mime-types: ^2.1.12 + checksum: 10c1780fa13dbe1ff3100114c2ce1f9307f8be10b14bf16e103815356ff567b6be39d70fc4a40f8990b9660012dc24b0f5e1dde1b6426166eb23a445ba068ca3 + languageName: node + linkType: hard + +"fs-extra@npm:^9.1.0": + version: 9.1.0 + resolution: "fs-extra@npm:9.1.0" + dependencies: + at-least-node: ^1.0.0 + graceful-fs: ^4.2.0 + jsonfile: ^6.0.1 + universalify: ^2.0.0 + checksum: ba71ba32e0faa74ab931b7a0031d1523c66a73e225de7426e275e238e312d07313d2da2d33e34a52aa406c8763ade5712eb3ec9ba4d9edce652bcacdc29e6b20 + languageName: node + linkType: hard + +"fs.realpath@npm:^1.0.0": + version: 1.0.0 + resolution: "fs.realpath@npm:1.0.0" + checksum: 99ddea01a7e75aa276c250a04eedeffe5662bce66c65c07164ad6264f9de18fb21be9433ead460e54cff20e31721c811f4fb5d70591799df5f85dce6d6746fd0 + languageName: node + linkType: hard + +"get-stream@npm:^5.0.0, get-stream@npm:^5.1.0": + version: 5.2.0 + resolution: "get-stream@npm:5.2.0" + dependencies: + pump: ^3.0.0 + checksum: 8bc1a23174a06b2b4ce600df38d6c98d2ef6d84e020c1ddad632ad75bac4e092eeb40e4c09e0761c35fc2dbc5e7fff5dab5e763a383582c4a167dd69a905bd12 + languageName: node + linkType: hard + +"getos@npm:^3.2.1": + version: 3.2.1 + resolution: "getos@npm:3.2.1" + dependencies: + async: ^3.2.0 + checksum: 42fd78a66d47cebd3e09de5566cc0044e034b08f4a000a310dbd89a77b02c65d8f4002554bfa495ea5bdc4fa9d515f5ac785a7cc474ba45383cc697f865eeaf1 + languageName: node + linkType: hard + +"getpass@npm:^0.1.1": + version: 0.1.7 + resolution: "getpass@npm:0.1.7" + dependencies: + assert-plus: ^1.0.0 + checksum: ab18d55661db264e3eac6012c2d3daeafaab7a501c035ae0ccb193c3c23e9849c6e29b6ac762b9c2adae460266f925d55a3a2a3a3c8b94be2f222df94d70c046 + languageName: node + linkType: hard + +"glob@npm:^7.1.3": + version: 7.2.3 + resolution: "glob@npm:7.2.3" + dependencies: + fs.realpath: ^1.0.0 + inflight: ^1.0.4 + inherits: 2 + minimatch: ^3.1.1 + once: ^1.3.0 + path-is-absolute: ^1.0.0 + checksum: 29452e97b38fa704dabb1d1045350fb2467cf0277e155aa9ff7077e90ad81d1ea9d53d3ee63bd37c05b09a065e90f16aec4a65f5b8de401d1dac40bc5605d133 + languageName: node + linkType: hard + +"global-dirs@npm:^3.0.0": + version: 3.0.0 + resolution: "global-dirs@npm:3.0.0" + dependencies: + ini: 2.0.0 + checksum: 953c17cf14bf6ee0e2100ae82a0d779934eed8a3ec5c94a7a4f37c5b3b592c31ea015fb9a15cf32484de13c79f4a814f3015152f3e1d65976cfbe47c1bfe4a88 + languageName: node + linkType: hard + +"graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0": + version: 4.2.10 + resolution: "graceful-fs@npm:4.2.10" + checksum: 3f109d70ae123951905d85032ebeae3c2a5a7a997430df00ea30df0e3a6c60cf6689b109654d6fdacd28810a053348c4d14642da1d075049e6be1ba5216218da + languageName: node + linkType: hard + +"has-flag@npm:^4.0.0": + version: 4.0.0 + resolution: "has-flag@npm:4.0.0" + checksum: 261a1357037ead75e338156b1f9452c016a37dcd3283a972a30d9e4a87441ba372c8b81f818cd0fbcd9c0354b4ae7e18b9e1afa1971164aef6d18c2b6095a8ad + languageName: node + linkType: hard + +"http-signature@npm:~1.3.6": + version: 1.3.6 + resolution: "http-signature@npm:1.3.6" + dependencies: + assert-plus: ^1.0.0 + jsprim: ^2.0.2 + sshpk: ^1.14.1 + checksum: 10be2af4764e71fee0281392937050201ee576ac755c543f570d6d87134ce5e858663fe999a7adb3e4e368e1e356d0d7fec6b9542295b875726ff615188e7a0c + languageName: node + linkType: hard + +"human-signals@npm:^1.1.1": + version: 1.1.1 + resolution: "human-signals@npm:1.1.1" + checksum: d587647c9e8ec24e02821b6be7de5a0fc37f591f6c4e319b3054b43fd4c35a70a94c46fc74d8c1a43c47fde157d23acd7421f375e1c1365b09a16835b8300205 + languageName: node + linkType: hard + +"ieee754@npm:^1.1.13": + version: 1.2.1 + resolution: "ieee754@npm:1.2.1" + checksum: 5144c0c9815e54ada181d80a0b810221a253562422e7c6c3a60b1901154184f49326ec239d618c416c1c5945a2e197107aee8d986a3dd836b53dffefd99b5e7e + languageName: node + linkType: hard + +"indent-string@npm:^4.0.0": + version: 4.0.0 + resolution: "indent-string@npm:4.0.0" + checksum: 824cfb9929d031dabf059bebfe08cf3137365e112019086ed3dcff6a0a7b698cb80cf67ccccde0e25b9e2d7527aa6cc1fed1ac490c752162496caba3e6699612 + languageName: node + linkType: hard + +"inflight@npm:^1.0.4": + version: 1.0.6 + resolution: "inflight@npm:1.0.6" + dependencies: + once: ^1.3.0 + wrappy: 1 + checksum: f4f76aa072ce19fae87ce1ef7d221e709afb59d445e05d47fba710e85470923a75de35bfae47da6de1b18afc3ce83d70facf44cfb0aff89f0a3f45c0a0244dfd + languageName: node + linkType: hard + +"inherits@npm:2": + version: 2.0.4 + resolution: "inherits@npm:2.0.4" + checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 + languageName: node + linkType: hard + +"ini@npm:2.0.0": + version: 2.0.0 + resolution: "ini@npm:2.0.0" + checksum: e7aadc5fb2e4aefc666d74ee2160c073995a4061556b1b5b4241ecb19ad609243b9cceafe91bae49c219519394bbd31512516cb22a3b1ca6e66d869e0447e84e + languageName: node + linkType: hard + +"is-ci@npm:^3.0.0": + version: 3.0.1 + resolution: "is-ci@npm:3.0.1" + dependencies: + ci-info: ^3.2.0 + bin: + is-ci: bin.js + checksum: 192c66dc7826d58f803ecae624860dccf1899fc1f3ac5505284c0a5cf5f889046ffeb958fa651e5725d5705c5bcb14f055b79150ea5fcad7456a9569de60260e + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^3.0.0": + version: 3.0.0 + resolution: "is-fullwidth-code-point@npm:3.0.0" + checksum: 44a30c29457c7fb8f00297bce733f0a64cd22eca270f83e58c105e0d015e45c019491a4ab2faef91ab51d4738c670daff901c799f6a700e27f7314029e99e348 + languageName: node + linkType: hard + +"is-installed-globally@npm:~0.4.0": + version: 0.4.0 + resolution: "is-installed-globally@npm:0.4.0" + dependencies: + global-dirs: ^3.0.0 + is-path-inside: ^3.0.2 + checksum: 3359840d5982d22e9b350034237b2cda2a12bac1b48a721912e1ab8e0631dd07d45a2797a120b7b87552759a65ba03e819f1bd63f2d7ab8657ec0b44ee0bf399 + languageName: node + linkType: hard + +"is-path-inside@npm:^3.0.2": + version: 3.0.3 + resolution: "is-path-inside@npm:3.0.3" + checksum: abd50f06186a052b349c15e55b182326f1936c89a78bf6c8f2b707412517c097ce04bc49a0ca221787bc44e1049f51f09a2ffb63d22899051988d3a618ba13e9 + languageName: node + linkType: hard + +"is-stream@npm:^2.0.0": + version: 2.0.1 + resolution: "is-stream@npm:2.0.1" + checksum: b8e05ccdf96ac330ea83c12450304d4a591f9958c11fd17bed240af8d5ffe08aedafa4c0f4cfccd4d28dc9d4d129daca1023633d5c11601a6cbc77521f6fae66 + languageName: node + linkType: hard + +"is-typedarray@npm:~1.0.0": + version: 1.0.0 + resolution: "is-typedarray@npm:1.0.0" + checksum: 3508c6cd0a9ee2e0df2fa2e9baabcdc89e911c7bd5cf64604586697212feec525aa21050e48affb5ffc3df20f0f5d2e2cf79b08caa64e1ccc9578e251763aef7 + languageName: node + linkType: hard + +"is-unicode-supported@npm:^0.1.0": + version: 0.1.0 + resolution: "is-unicode-supported@npm:0.1.0" + checksum: a2aab86ee7712f5c2f999180daaba5f361bdad1efadc9610ff5b8ab5495b86e4f627839d085c6530363c6d6d4ecbde340fb8e54bdb83da4ba8e0865ed5513c52 + languageName: node + linkType: hard + +"isexe@npm:^2.0.0": + version: 2.0.0 + resolution: "isexe@npm:2.0.0" + checksum: 26bf6c5480dda5161c820c5b5c751ae1e766c587b1f951ea3fcfc973bafb7831ae5b54a31a69bd670220e42e99ec154475025a468eae58ea262f813fdc8d1c62 + languageName: node + linkType: hard + +"isstream@npm:~0.1.2": + version: 0.1.2 + resolution: "isstream@npm:0.1.2" + checksum: 1eb2fe63a729f7bdd8a559ab552c69055f4f48eb5c2f03724430587c6f450783c8f1cd936c1c952d0a927925180fcc892ebd5b174236cf1065d4bd5bdb37e963 + languageName: node + linkType: hard + +"jsbn@npm:~0.1.0": + version: 0.1.1 + resolution: "jsbn@npm:0.1.1" + checksum: e5ff29c1b8d965017ef3f9c219dacd6e40ad355c664e277d31246c90545a02e6047018c16c60a00f36d561b3647215c41894f5d869ada6908a2e0ce4200c88f2 + languageName: node + linkType: hard + +"json-schema@npm:0.4.0": + version: 0.4.0 + resolution: "json-schema@npm:0.4.0" + checksum: 66389434c3469e698da0df2e7ac5a3281bcff75e797a5c127db7c5b56270e01ae13d9afa3c03344f76e32e81678337a8c912bdbb75101c62e487dc3778461d72 + languageName: node + linkType: hard + +"json-stringify-safe@npm:~5.0.1": + version: 5.0.1 + resolution: "json-stringify-safe@npm:5.0.1" + checksum: 48ec0adad5280b8a96bb93f4563aa1667fd7a36334f79149abd42446d0989f2ddc58274b479f4819f1f00617957e6344c886c55d05a4e15ebb4ab931e4a6a8ee + languageName: node + linkType: hard + +"jsonfile@npm:^6.0.1": + version: 6.1.0 + resolution: "jsonfile@npm:6.1.0" + dependencies: + graceful-fs: ^4.1.6 + universalify: ^2.0.0 + dependenciesMeta: + graceful-fs: + optional: true + checksum: 7af3b8e1ac8fe7f1eccc6263c6ca14e1966fcbc74b618d3c78a0a2075579487547b94f72b7a1114e844a1e15bb00d440e5d1720bfc4612d790a6f285d5ea8354 + languageName: node + linkType: hard + +"jsprim@npm:^2.0.2": + version: 2.0.2 + resolution: "jsprim@npm:2.0.2" + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.4.0 + verror: 1.10.0 + checksum: d175f6b1991e160cb0aa39bc857da780e035611986b5492f32395411879fdaf4e513d98677f08f7352dac93a16b66b8361c674b86a3fa406e2e7af6b26321838 + languageName: node + linkType: hard + +"lazy-ass@npm:^1.6.0": + version: 1.6.0 + resolution: "lazy-ass@npm:1.6.0" + checksum: 5a3ebb17915b03452320804466345382a6c25ac782ec4874fecdb2385793896cd459be2f187dc7def8899180c32ee0ab9a1aa7fe52193ac3ff3fe29bb0591729 + languageName: node + linkType: hard + +"listr2@npm:^3.8.3": + version: 3.14.0 + resolution: "listr2@npm:3.14.0" + dependencies: + cli-truncate: ^2.1.0 + colorette: ^2.0.16 + log-update: ^4.0.0 + p-map: ^4.0.0 + rfdc: ^1.3.0 + rxjs: ^7.5.1 + through: ^2.3.8 + wrap-ansi: ^7.0.0 + peerDependencies: + enquirer: ">= 2.3.0 < 3" + peerDependenciesMeta: + enquirer: + optional: true + checksum: fdb8b2d6bdf5df9371ebd5082bee46c6d0ca3d1e5f2b11fbb5a127839855d5f3da9d4968fce94f0a5ec67cac2459766abbb1faeef621065ebb1829b11ef9476d + languageName: node + linkType: hard + +"lodash.once@npm:^4.1.1": + version: 4.1.1 + resolution: "lodash.once@npm:4.1.1" + checksum: d768fa9f9b4e1dc6453be99b753906f58990e0c45e7b2ca5a3b40a33111e5d17f6edf2f768786e2716af90a8e78f8f91431ab8435f761fef00f9b0c256f6d245 + languageName: node + linkType: hard + +"lodash@npm:^4.17.21": + version: 4.17.21 + resolution: "lodash@npm:4.17.21" + checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 + languageName: node + linkType: hard + +"log-symbols@npm:^4.0.0": + version: 4.1.0 + resolution: "log-symbols@npm:4.1.0" + dependencies: + chalk: ^4.1.0 + is-unicode-supported: ^0.1.0 + checksum: fce1497b3135a0198803f9f07464165e9eb83ed02ceb2273930a6f8a508951178d8cf4f0378e9d28300a2ed2bc49050995d2bd5f53ab716bb15ac84d58c6ef74 + languageName: node + linkType: hard + +"log-update@npm:^4.0.0": + version: 4.0.0 + resolution: "log-update@npm:4.0.0" + dependencies: + ansi-escapes: ^4.3.0 + cli-cursor: ^3.1.0 + slice-ansi: ^4.0.0 + wrap-ansi: ^6.2.0 + checksum: ae2f85bbabc1906034154fb7d4c4477c79b3e703d22d78adee8b3862fa913942772e7fa11713e3d96fb46de4e3cabefbf5d0a544344f03b58d3c4bff52aa9eb2 + languageName: node + linkType: hard + +"lru-cache@npm:^6.0.0": + version: 6.0.0 + resolution: "lru-cache@npm:6.0.0" + dependencies: + yallist: ^4.0.0 + checksum: f97f499f898f23e4585742138a22f22526254fdba6d75d41a1c2526b3b6cc5747ef59c5612ba7375f42aca4f8461950e925ba08c991ead0651b4918b7c978297 + languageName: node + linkType: hard + +"merge-stream@npm:^2.0.0": + version: 2.0.0 + resolution: "merge-stream@npm:2.0.0" + checksum: 6fa4dcc8d86629705cea944a4b88ef4cb0e07656ebf223fa287443256414283dd25d91c1cd84c77987f2aec5927af1a9db6085757cb43d90eb170ebf4b47f4f4 + languageName: node + linkType: hard + +"mime-db@npm:1.52.0": + version: 1.52.0 + resolution: "mime-db@npm:1.52.0" + checksum: 0d99a03585f8b39d68182803b12ac601d9c01abfa28ec56204fa330bc9f3d1c5e14beb049bafadb3dbdf646dfb94b87e24d4ec7b31b7279ef906a8ea9b6a513f + languageName: node + linkType: hard + +"mime-types@npm:^2.1.12, mime-types@npm:~2.1.19": + version: 2.1.35 + resolution: "mime-types@npm:2.1.35" + dependencies: + mime-db: 1.52.0 + checksum: 89a5b7f1def9f3af5dad6496c5ed50191ae4331cc5389d7c521c8ad28d5fdad2d06fd81baf38fed813dc4e46bb55c8145bb0ff406330818c9cf712fb2e9b3836 + languageName: node + linkType: hard + +"mimic-fn@npm:^2.1.0": + version: 2.1.0 + resolution: "mimic-fn@npm:2.1.0" + checksum: d2421a3444848ce7f84bd49115ddacff29c15745db73f54041edc906c14b131a38d05298dae3081667627a59b2eb1ca4b436ff2e1b80f69679522410418b478a + languageName: node + linkType: hard + +"minimatch@npm:^3.1.1": + version: 3.1.2 + resolution: "minimatch@npm:3.1.2" + dependencies: + brace-expansion: ^1.1.7 + checksum: c154e566406683e7bcb746e000b84d74465b3a832c45d59912b9b55cd50dee66e5c4b1e5566dba26154040e51672f9aa450a9aef0c97cfc7336b78b7afb9540a + languageName: node + linkType: hard + +"minimist@npm:^1.2.6": + version: 1.2.6 + resolution: "minimist@npm:1.2.6" + checksum: d15428cd1e11eb14e1233bcfb88ae07ed7a147de251441d61158619dfb32c4d7e9061d09cab4825fdee18ecd6fce323228c8c47b5ba7cd20af378ca4048fb3fb + languageName: node + linkType: hard + +"ms@npm:2.1.2": + version: 2.1.2 + resolution: "ms@npm:2.1.2" + checksum: 673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f + languageName: node + linkType: hard + +"ms@npm:^2.1.1": + version: 2.1.3 + resolution: "ms@npm:2.1.3" + checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d + languageName: node + linkType: hard + +"npm-run-path@npm:^4.0.0": + version: 4.0.1 + resolution: "npm-run-path@npm:4.0.1" + dependencies: + path-key: ^3.0.0 + checksum: 5374c0cea4b0bbfdfae62da7bbdf1e1558d338335f4cacf2515c282ff358ff27b2ecb91ffa5330a8b14390ac66a1e146e10700440c1ab868208430f56b5f4d23 + languageName: node + linkType: hard + +"once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": + version: 1.4.0 + resolution: "once@npm:1.4.0" + dependencies: + wrappy: 1 + checksum: cd0a88501333edd640d95f0d2700fbde6bff20b3d4d9bdc521bdd31af0656b5706570d6c6afe532045a20bb8dc0849f8332d6f2a416e0ba6d3d3b98806c7db68 + languageName: node + linkType: hard + +"onetime@npm:^5.1.0": + version: 5.1.2 + resolution: "onetime@npm:5.1.2" + dependencies: + mimic-fn: ^2.1.0 + checksum: 2478859ef817fc5d4e9c2f9e5728512ddd1dbc9fb7829ad263765bb6d3b91ce699d6e2332eef6b7dff183c2f490bd3349f1666427eaba4469fba0ac38dfd0d34 + languageName: node + linkType: hard + +"ospath@npm:^1.2.2": + version: 1.2.2 + resolution: "ospath@npm:1.2.2" + checksum: 505f48a4f4f1c557d6c656ec985707726e3714721680139be037613e903aa8c8fa4ddd8d1342006f9b2dc0065e6e20f8b7bea2ee05354f31257044790367b347 + languageName: node + linkType: hard + +"p-map@npm:^4.0.0": + version: 4.0.0 + resolution: "p-map@npm:4.0.0" + dependencies: + aggregate-error: ^3.0.0 + checksum: cb0ab21ec0f32ddffd31dfc250e3afa61e103ef43d957cc45497afe37513634589316de4eb88abdfd969fe6410c22c0b93ab24328833b8eb1ccc087fc0442a1c + languageName: node + linkType: hard + +"path-is-absolute@npm:^1.0.0": + version: 1.0.1 + resolution: "path-is-absolute@npm:1.0.1" + checksum: 060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8 + languageName: node + linkType: hard + +"path-key@npm:^3.0.0, path-key@npm:^3.1.0": + version: 3.1.1 + resolution: "path-key@npm:3.1.1" + checksum: 55cd7a9dd4b343412a8386a743f9c746ef196e57c823d90ca3ab917f90ab9f13dd0ded27252ba49dbdfcab2b091d998bc446f6220cd3cea65db407502a740020 + languageName: node + linkType: hard + +"pend@npm:~1.2.0": + version: 1.2.0 + resolution: "pend@npm:1.2.0" + checksum: 6c72f5243303d9c60bd98e6446ba7d30ae29e3d56fdb6fae8767e8ba6386f33ee284c97efe3230a0d0217e2b1723b8ab490b1bbf34fcbb2180dbc8a9de47850d + languageName: node + linkType: hard + +"performance-now@npm:^2.1.0": + version: 2.1.0 + resolution: "performance-now@npm:2.1.0" + checksum: 534e641aa8f7cba160f0afec0599b6cecefbb516a2e837b512be0adbe6c1da5550e89c78059c7fabc5c9ffdf6627edabe23eb7c518c4500067a898fa65c2b550 + languageName: node + linkType: hard + +"pify@npm:^2.2.0": + version: 2.3.0 + resolution: "pify@npm:2.3.0" + checksum: 9503aaeaf4577acc58642ad1d25c45c6d90288596238fb68f82811c08104c800e5a7870398e9f015d82b44ecbcbef3dc3d4251a1cbb582f6e5959fe09884b2ba + languageName: node + linkType: hard + +"pretty-bytes@npm:^5.6.0": + version: 5.6.0 + resolution: "pretty-bytes@npm:5.6.0" + checksum: 9c082500d1e93434b5b291bd651662936b8bd6204ec9fa17d563116a192d6d86b98f6d328526b4e8d783c07d5499e2614a807520249692da9ec81564b2f439cd + languageName: node + linkType: hard + +"proxy-from-env@npm:1.0.0": + version: 1.0.0 + resolution: "proxy-from-env@npm:1.0.0" + checksum: 292e28d1de0c315958d71d8315eb546dd3cd8c8cbc2dab7c54eeb9f5c17f421771964ad0b5e1f77011bab2305bdae42e1757ce33bdb1ccc3e87732322a8efcf1 + languageName: node + linkType: hard + +"psl@npm:^1.1.28": + version: 1.9.0 + resolution: "psl@npm:1.9.0" + checksum: 20c4277f640c93d393130673f392618e9a8044c6c7bf61c53917a0fddb4952790f5f362c6c730a9c32b124813e173733f9895add8d26f566ed0ea0654b2e711d + languageName: node + linkType: hard + +"pump@npm:^3.0.0": + version: 3.0.0 + resolution: "pump@npm:3.0.0" + dependencies: + end-of-stream: ^1.1.0 + once: ^1.3.1 + checksum: e42e9229fba14732593a718b04cb5e1cfef8254544870997e0ecd9732b189a48e1256e4e5478148ecb47c8511dca2b09eae56b4d0aad8009e6fac8072923cfc9 + languageName: node + linkType: hard + +"punycode@npm:^2.1.1": + version: 2.1.1 + resolution: "punycode@npm:2.1.1" + checksum: 823bf443c6dd14f669984dea25757b37993f67e8d94698996064035edd43bed8a5a17a9f12e439c2b35df1078c6bec05a6c86e336209eb1061e8025c481168e8 + languageName: node + linkType: hard + +"qs@npm:~6.5.2": + version: 6.5.3 + resolution: "qs@npm:6.5.3" + checksum: 6f20bf08cabd90c458e50855559539a28d00b2f2e7dddcb66082b16a43188418cb3cb77cbd09268bcef6022935650f0534357b8af9eeb29bf0f27ccb17655692 + languageName: node + linkType: hard + +"request-progress@npm:^3.0.0": + version: 3.0.0 + resolution: "request-progress@npm:3.0.0" + dependencies: + throttleit: ^1.0.0 + checksum: 6ea1761dcc8a8b7b5894afd478c0286aa31bd69438d7050294bd4fd0d0b3e09b5cde417d38deef9c49809039c337d8744e4bb49d8632b0c3e4ffa5e8a687e0fd + languageName: node + linkType: hard + +"restore-cursor@npm:^3.1.0": + version: 3.1.0 + resolution: "restore-cursor@npm:3.1.0" + dependencies: + onetime: ^5.1.0 + signal-exit: ^3.0.2 + checksum: f877dd8741796b909f2a82454ec111afb84eb45890eb49ac947d87991379406b3b83ff9673a46012fca0d7844bb989f45cc5b788254cf1a39b6b5a9659de0630 + languageName: node + linkType: hard + +"rfdc@npm:^1.3.0": + version: 1.3.0 + resolution: "rfdc@npm:1.3.0" + checksum: fb2ba8512e43519983b4c61bd3fa77c0f410eff6bae68b08614437bc3f35f91362215f7b4a73cbda6f67330b5746ce07db5dd9850ad3edc91271ad6deea0df32 + languageName: node + linkType: hard + +"rimraf@npm:^3.0.0": + version: 3.0.2 + resolution: "rimraf@npm:3.0.2" + dependencies: + glob: ^7.1.3 + bin: + rimraf: bin.js + checksum: 87f4164e396f0171b0a3386cc1877a817f572148ee13a7e113b238e48e8a9f2f31d009a92ec38a591ff1567d9662c6b67fd8818a2dbbaed74bc26a87a2a4a9a0 + languageName: node + linkType: hard + +"rxjs@npm:^7.5.1": + version: 7.5.6 + resolution: "rxjs@npm:7.5.6" + dependencies: + tslib: ^2.1.0 + checksum: fc05f01364a74dac57490fb3e07ea63b422af04017fae1db641a009073f902ef69f285c5daac31359620dc8d9aee7d81e42b370ca2a8573d1feae0b04329383b + languageName: node + linkType: hard + +"safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.2": + version: 5.2.1 + resolution: "safe-buffer@npm:5.2.1" + checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491 + languageName: node + linkType: hard + +"safer-buffer@npm:^2.0.2, safer-buffer@npm:^2.1.0, safer-buffer@npm:~2.1.0": + version: 2.1.2 + resolution: "safer-buffer@npm:2.1.2" + checksum: cab8f25ae6f1434abee8d80023d7e72b598cf1327164ddab31003c51215526801e40b66c5e65d658a0af1e9d6478cadcb4c745f4bd6751f97d8644786c0978b0 + languageName: node + linkType: hard + +"semver@npm:^7.3.2": + version: 7.3.7 + resolution: "semver@npm:7.3.7" + dependencies: + lru-cache: ^6.0.0 + bin: + semver: bin/semver.js + checksum: 2fa3e877568cd6ce769c75c211beaed1f9fce80b28338cadd9d0b6c40f2e2862bafd62c19a6cff42f3d54292b7c623277bcab8816a2b5521cf15210d43e75232 + languageName: node + linkType: hard + +"shebang-command@npm:^2.0.0": + version: 2.0.0 + resolution: "shebang-command@npm:2.0.0" + dependencies: + shebang-regex: ^3.0.0 + checksum: 6b52fe87271c12968f6a054e60f6bde5f0f3d2db483a1e5c3e12d657c488a15474121a1d55cd958f6df026a54374ec38a4a963988c213b7570e1d51575cea7fa + languageName: node + linkType: hard + +"shebang-regex@npm:^3.0.0": + version: 3.0.0 + resolution: "shebang-regex@npm:3.0.0" + checksum: 1a2bcae50de99034fcd92ad4212d8e01eedf52c7ec7830eedcf886622804fe36884278f2be8be0ea5fde3fd1c23911643a4e0f726c8685b61871c8908af01222 + languageName: node + linkType: hard + +"signal-exit@npm:^3.0.2": + version: 3.0.7 + resolution: "signal-exit@npm:3.0.7" + checksum: a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318 + languageName: node + linkType: hard + +"slice-ansi@npm:^3.0.0": + version: 3.0.0 + resolution: "slice-ansi@npm:3.0.0" + dependencies: + ansi-styles: ^4.0.0 + astral-regex: ^2.0.0 + is-fullwidth-code-point: ^3.0.0 + checksum: 5ec6d022d12e016347e9e3e98a7eb2a592213a43a65f1b61b74d2c78288da0aded781f665807a9f3876b9daa9ad94f64f77d7633a0458876c3a4fdc4eb223f24 + languageName: node + linkType: hard + +"slice-ansi@npm:^4.0.0": + version: 4.0.0 + resolution: "slice-ansi@npm:4.0.0" + dependencies: + ansi-styles: ^4.0.0 + astral-regex: ^2.0.0 + is-fullwidth-code-point: ^3.0.0 + checksum: 4a82d7f085b0e1b070e004941ada3c40d3818563ac44766cca4ceadd2080427d337554f9f99a13aaeb3b4a94d9964d9466c807b3d7b7541d1ec37ee32d308756 + languageName: node + linkType: hard + +"sshpk@npm:^1.14.1": + version: 1.17.0 + resolution: "sshpk@npm:1.17.0" + dependencies: + asn1: ~0.2.3 + assert-plus: ^1.0.0 + bcrypt-pbkdf: ^1.0.0 + dashdash: ^1.12.0 + ecc-jsbn: ~0.1.1 + getpass: ^0.1.1 + jsbn: ~0.1.0 + safer-buffer: ^2.0.2 + tweetnacl: ~0.14.0 + bin: + sshpk-conv: bin/sshpk-conv + sshpk-sign: bin/sshpk-sign + sshpk-verify: bin/sshpk-verify + checksum: ba109f65c8e6c35133b8e6ed5576abeff8aa8d614824b7275ec3ca308f081fef483607c28d97780c1e235818b0f93ed8c8b56d0a5968d5a23fd6af57718c7597 + languageName: node + linkType: hard + +"string-width@npm:^4.1.0, string-width@npm:^4.2.0": + version: 4.2.3 + resolution: "string-width@npm:4.2.3" + dependencies: + emoji-regex: ^8.0.0 + is-fullwidth-code-point: ^3.0.0 + strip-ansi: ^6.0.1 + checksum: e52c10dc3fbfcd6c3a15f159f54a90024241d0f149cf8aed2982a2d801d2e64df0bf1dc351cf8e95c3319323f9f220c16e740b06faecd53e2462df1d2b5443fb + languageName: node + linkType: hard + +"strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": + version: 6.0.1 + resolution: "strip-ansi@npm:6.0.1" + dependencies: + ansi-regex: ^5.0.1 + checksum: f3cd25890aef3ba6e1a74e20896c21a46f482e93df4a06567cebf2b57edabb15133f1f94e57434e0a958d61186087b1008e89c94875d019910a213181a14fc8c + languageName: node + linkType: hard + +"strip-final-newline@npm:^2.0.0": + version: 2.0.0 + resolution: "strip-final-newline@npm:2.0.0" + checksum: 69412b5e25731e1938184b5d489c32e340605bb611d6140344abc3421b7f3c6f9984b21dff296dfcf056681b82caa3bb4cc996a965ce37bcfad663e92eae9c64 + languageName: node + linkType: hard + +"supports-color@npm:^7.1.0": + version: 7.2.0 + resolution: "supports-color@npm:7.2.0" + dependencies: + has-flag: ^4.0.0 + checksum: 3dda818de06ebbe5b9653e07842d9479f3555ebc77e9a0280caf5a14fb877ffee9ed57007c3b78f5a6324b8dbeec648d9e97a24e2ed9fdb81ddc69ea07100f4a + languageName: node + linkType: hard + +"supports-color@npm:^8.1.1": + version: 8.1.1 + resolution: "supports-color@npm:8.1.1" + dependencies: + has-flag: ^4.0.0 + checksum: c052193a7e43c6cdc741eb7f378df605636e01ad434badf7324f17fb60c69a880d8d8fcdcb562cf94c2350e57b937d7425ab5b8326c67c2adc48f7c87c1db406 + languageName: node + linkType: hard + +"throttleit@npm:^1.0.0": + version: 1.0.0 + resolution: "throttleit@npm:1.0.0" + checksum: 1b2db4d2454202d589e8236c07a69d2fab838876d370030ebea237c34c0a7d1d9cf11c29f994531ebb00efd31e9728291042b7754f2798a8352ec4463455b659 + languageName: node + linkType: hard + +"through@npm:^2.3.8": + version: 2.3.8 + resolution: "through@npm:2.3.8" + checksum: a38c3e059853c494af95d50c072b83f8b676a9ba2818dcc5b108ef252230735c54e0185437618596c790bbba8fcdaef5b290405981ffa09dce67b1f1bf190cbd + languageName: node + linkType: hard + +"tmp@npm:~0.2.1": + version: 0.2.1 + resolution: "tmp@npm:0.2.1" + dependencies: + rimraf: ^3.0.0 + checksum: 8b1214654182575124498c87ca986ac53dc76ff36e8f0e0b67139a8d221eaecfdec108c0e6ec54d76f49f1f72ab9325500b246f562b926f85bcdfca8bf35df9e + languageName: node + linkType: hard + +"tough-cookie@npm:~2.5.0": + version: 2.5.0 + resolution: "tough-cookie@npm:2.5.0" + dependencies: + psl: ^1.1.28 + punycode: ^2.1.1 + checksum: 16a8cd090224dd176eee23837cbe7573ca0fa297d7e468ab5e1c02d49a4e9a97bb05fef11320605eac516f91d54c57838a25864e8680e27b069a5231d8264977 + languageName: node + linkType: hard + +"tslib@npm:^2.1.0": + version: 2.4.0 + resolution: "tslib@npm:2.4.0" + checksum: 8c4aa6a3c5a754bf76aefc38026134180c053b7bd2f81338cb5e5ebf96fefa0f417bff221592bf801077f5bf990562f6264fecbc42cd3309b33872cb6fc3b113 + languageName: node + linkType: hard + +"tunnel-agent@npm:^0.6.0": + version: 0.6.0 + resolution: "tunnel-agent@npm:0.6.0" + dependencies: + safe-buffer: ^5.0.1 + checksum: 05f6510358f8afc62a057b8b692f05d70c1782b70db86d6a1e0d5e28a32389e52fa6e7707b6c5ecccacc031462e4bc35af85ecfe4bbc341767917b7cf6965711 + languageName: node + linkType: hard + +"tweetnacl@npm:^0.14.3, tweetnacl@npm:~0.14.0": + version: 0.14.5 + resolution: "tweetnacl@npm:0.14.5" + checksum: 6061daba1724f59473d99a7bb82e13f211cdf6e31315510ae9656fefd4779851cb927adad90f3b488c8ed77c106adc0421ea8055f6f976ff21b27c5c4e918487 + languageName: node + linkType: hard + +"type-fest@npm:^0.21.3": + version: 0.21.3 + resolution: "type-fest@npm:0.21.3" + checksum: e6b32a3b3877f04339bae01c193b273c62ba7bfc9e325b8703c4ee1b32dc8fe4ef5dfa54bf78265e069f7667d058e360ae0f37be5af9f153b22382cd55a9afe0 + languageName: node + linkType: hard + +"typescript@npm:^4.1.3": + version: 4.8.2 + resolution: "typescript@npm:4.8.2" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 7f5b81d0d558c9067f952c7af52ab7f19c2e70a916817929e4a5b256c93990bf3178eccb1ac8a850bc75df35f6781b6f4cb3370ce20d8b1ded92ed462348f628 + languageName: node + linkType: hard + +"typescript@patch:typescript@^4.1.3#~builtin": + version: 4.8.2 + resolution: "typescript@patch:typescript@npm%3A4.8.2#~builtin::version=4.8.2&hash=a1c5e5" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 5cb0f02f414f5405f4b0e7ee1fd7fa9177b6a8783c9017b6cad85f56ce4c4f93e0e6f2ce37e863cb597d44227cd009474c9fbd85bf7a50004e5557426cb58079 + languageName: node + linkType: hard + +"universalify@npm:^2.0.0": + version: 2.0.0 + resolution: "universalify@npm:2.0.0" + checksum: 2406a4edf4a8830aa6813278bab1f953a8e40f2f63a37873ffa9a3bc8f9745d06cc8e88f3572cb899b7e509013f7f6fcc3e37e8a6d914167a5381d8440518c44 + languageName: node + linkType: hard + +"untildify@npm:^4.0.0": + version: 4.0.0 + resolution: "untildify@npm:4.0.0" + checksum: 39ced9c418a74f73f0a56e1ba4634b4d959422dff61f4c72a8e39f60b99380c1b45ed776fbaa0a4101b157e4310d873ad7d114e8534ca02609b4916bb4187fb9 + languageName: node + linkType: hard + +"uuid@npm:^8.3.2": + version: 8.3.2 + resolution: "uuid@npm:8.3.2" + bin: + uuid: dist/bin/uuid + checksum: 5575a8a75c13120e2f10e6ddc801b2c7ed7d8f3c8ac22c7ed0c7b2ba6383ec0abda88c905085d630e251719e0777045ae3236f04c812184b7c765f63a70e58df + languageName: node + linkType: hard + +"verror@npm:1.10.0": + version: 1.10.0 + resolution: "verror@npm:1.10.0" + dependencies: + assert-plus: ^1.0.0 + core-util-is: 1.0.2 + extsprintf: ^1.2.0 + checksum: c431df0bedf2088b227a4e051e0ff4ca54df2c114096b0c01e1cbaadb021c30a04d7dd5b41ab277bcd51246ca135bf931d4c4c796ecae7a4fef6d744ecef36ea + languageName: node + linkType: hard + +"which@npm:^2.0.1": + version: 2.0.2 + resolution: "which@npm:2.0.2" + dependencies: + isexe: ^2.0.0 + bin: + node-which: ./bin/node-which + checksum: 1a5c563d3c1b52d5f893c8b61afe11abc3bab4afac492e8da5bde69d550de701cf9806235f20a47b5c8fa8a1d6a9135841de2596535e998027a54589000e66d1 + languageName: node + linkType: hard + +"wrap-ansi@npm:^6.2.0": + version: 6.2.0 + resolution: "wrap-ansi@npm:6.2.0" + dependencies: + ansi-styles: ^4.0.0 + string-width: ^4.1.0 + strip-ansi: ^6.0.0 + checksum: 6cd96a410161ff617b63581a08376f0cb9162375adeb7956e10c8cd397821f7eb2a6de24eb22a0b28401300bf228c86e50617cd568209b5f6775b93c97d2fe3a + languageName: node + linkType: hard + +"wrap-ansi@npm:^7.0.0": + version: 7.0.0 + resolution: "wrap-ansi@npm:7.0.0" + dependencies: + ansi-styles: ^4.0.0 + string-width: ^4.1.0 + strip-ansi: ^6.0.0 + checksum: a790b846fd4505de962ba728a21aaeda189b8ee1c7568ca5e817d85930e06ef8d1689d49dbf0e881e8ef84436af3a88bc49115c2e2788d841ff1b8b5b51a608b + languageName: node + linkType: hard + +"wrappy@npm:1": + version: 1.0.2 + resolution: "wrappy@npm:1.0.2" + checksum: 159da4805f7e84a3d003d8841557196034155008f817172d4e986bd591f74aa82aa7db55929a54222309e01079a65a92a9e6414da5a6aa4b01ee44a511ac3ee5 + languageName: node + linkType: hard + +"yallist@npm:^4.0.0": + version: 4.0.0 + resolution: "yallist@npm:4.0.0" + checksum: 343617202af32df2a15a3be36a5a8c0c8545208f3d3dfbc6bb7c3e3b7e8c6f8e7485432e4f3b88da3031a6e20afa7c711eded32ddfb122896ac5d914e75848d5 + languageName: node + linkType: hard + +"yauzl@npm:^2.10.0": + version: 2.10.0 + resolution: "yauzl@npm:2.10.0" + dependencies: + buffer-crc32: ~0.2.3 + fd-slicer: ~1.1.0 + checksum: 7f21fe0bbad6e2cb130044a5d1d0d5a0e5bf3d8d4f8c4e6ee12163ce798fee3de7388d22a7a0907f563ac5f9d40f8699a223d3d5c1718da90b0156da6904022b + languageName: node + linkType: hard diff --git a/yarn.lock b/yarn.lock index 4bd18bc805..dd73c23e8e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -19903,8 +19903,8 @@ __metadata: linkType: hard "cypress@npm:^10.0.0": - version: 10.7.0 - resolution: "cypress@npm:10.7.0" + version: 10.8.0 + resolution: "cypress@npm:10.8.0" dependencies: "@cypress/request": ^2.88.10 "@cypress/xvfb": ^1.2.4 @@ -19925,7 +19925,7 @@ __metadata: dayjs: ^1.10.4 debug: ^4.3.2 enquirer: ^2.3.6 - eventemitter2: ^6.4.3 + eventemitter2: 6.4.7 execa: 4.1.0 executable: ^4.1.1 extract-zip: 2.0.1 @@ -19950,7 +19950,7 @@ __metadata: yauzl: ^2.10.0 bin: cypress: bin/cypress - checksum: ef8a5ae54f3404f7926e1e248ba7a27c7f66e654a9603bf9df6366731d8dd75455f6ec9cc34d7e55e1a8c3cb8e0e36ce59add81b7b14466f2063cfe45e6c00f4 + checksum: c052690049980e7721e6fca563b724fde839d87d83c1478dfe26ce7d230992717c2c4028e7157bfb39ec274473e51929f49e5aab6a23c2b25cde2a439b1c3cf9 languageName: node linkType: hard @@ -22225,7 +22225,14 @@ __metadata: languageName: node linkType: hard -"eventemitter2@npm:^6.4.3, eventemitter2@npm:^6.4.4": +"eventemitter2@npm:6.4.7": + version: 6.4.7 + resolution: "eventemitter2@npm:6.4.7" + checksum: 1b36a77e139d6965ebf3a36c01fa00c089ae6b80faa1911e52888f40b3a7057b36a2cc45dcd1ad87cda3798fe7b97a0aabcbb8175a8b96092a23bb7d0f039e66 + languageName: node + linkType: hard + +"eventemitter2@npm:^6.4.4": version: 6.4.5 resolution: "eventemitter2@npm:6.4.5" checksum: 84504f9cf0cc30205cdd46783fe9df3733435e5097f13070b678023110b5ef07847651808ae280cd94c42cd5976880211c7a40321a8ff8fa56f7c5f9c5c11960 From 1f8d4ae7d806f844a66bbd7002f85481510cf6e2 Mon Sep 17 00:00:00 2001 From: Taras Date: Tue, 20 Sep 2022 10:26:10 -0400 Subject: [PATCH 039/117] Remove unnecessary content Signed-off-by: Taras --- .../software-templates/writing-templates.md | 93 ------------------- .../src/modules/core/PlaceholderProcessor.ts | 5 - 2 files changed, 98 deletions(-) diff --git a/docs/features/software-templates/writing-templates.md b/docs/features/software-templates/writing-templates.md index 2ce7c27bc1..a1cd50f271 100644 --- a/docs/features/software-templates/writing-templates.md +++ b/docs/features/software-templates/writing-templates.md @@ -581,96 +581,3 @@ output things. You can grab that output using `steps.$stepId.output.$property`. You can read more about all the `inputs` and `outputs` defined in the actions in code part of the `JSONSchema`, or you can read more about our [built in actions](./builtin-actions.md). - -## Creating reusable templates - -We can use the PlaceholderProcessor to create reusable portions of a template. A placeholder is a property on an entity object that starts with `$`. Backstage has some built in placeholders including `$text`, `$json` and `$yaml`. Each placeholder has a resolver. A resolver is an asyncronous function that receives the value assigned to the placeholder. A resolver is expected to return a promise that resolves to a value. The resolved value will replace the object where the placeholder was defined. - -Let's say we want to reuse a portion of the template that asks user to specify a host name and we want to be able to add other fields to that form step. - -```yaml -apiVersion: scaffolder.backstage.io/v1beta3 -kind: Template -metadata: - name: v1beta3-demo - title: Microservice example - description: scaffolder v1beta3 template demo -spec: - owner: backstage/techdocs-core - type: service - parameters: - - title: Specify a host - parameters: - name: - title: Hostname - type: string - description: Specify host name -``` - -Our placeholder is going to be called `$specifyHostname`. We'd use it like this, - -```yaml -apiVersion: scaffolder.backstage.io/v1beta3 -kind: Template -metadata: - name: v1beta3-demo - title: Microservice example - description: scaffolder v1beta3 template demo -spec: - owner: backstage/techdocs-core - type: service - parameters: - - $specifyHostname: - domainExt: - name: Domain extension - type: string - description: Specify domain extension like .com, .ca, .co.uk or something else. -``` - -The result after the placeholder is applied will look like this, - -```yaml -apiVersion: scaffolder.backstage.io/v1beta3 -kind: Template -metadata: - name: v1beta3-demo - title: Microservice example - description: scaffolder v1beta3 template demo -spec: - owner: backstage/techdocs-core - type: service - parameters: - - title: Specify a host - parameters: - name: - title: Hostname - type: string - description: Specify host name - domainExt: - name: Domain extension - type: string - description: Specify domain extension like .com, .ca, .co.uk or something else. -``` - -To implement this, you have to modify the catalog plugin to create a `specifyHostname` resolver. In `/packages/backend/src/plugins/catalog.ts`. Add the following code, - -```ts -const builder = await CatalogBuilder.create(env); - -builder.setPlaceholderResolver( - 'specifyHostname', - async specifyHostnameResolver({ value }) => { - return { - "title": "Specify a host", - "parameters": { - "name": { - "title": "Hostname", - "type": "string", - "description": "Specify host name" - }, - ...value - } - } - }, - );` -``` diff --git a/plugins/catalog-backend/src/modules/core/PlaceholderProcessor.ts b/plugins/catalog-backend/src/modules/core/PlaceholderProcessor.ts index cf5679058d..5e49c67915 100644 --- a/plugins/catalog-backend/src/modules/core/PlaceholderProcessor.ts +++ b/plugins/catalog-backend/src/modules/core/PlaceholderProcessor.ts @@ -119,11 +119,6 @@ export class PlaceholderProcessor implements CatalogProcessor { return [data, false]; } - // if (typeof resolverValue !== 'string') { - // treat it as an argument to resolver function - // TODO: make this recursive, but it should resolve from bottom up - // } - const read = async (url: string): Promise => { if (this.options.reader.readUrl) { const response = await this.options.reader.readUrl(url); From 3e309107ca7a8b0edb15803e2c6f04af1b5fc2d1 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 20 Sep 2022 17:16:26 +0200 Subject: [PATCH 040/117] cli: update template fallback versions Signed-off-by: Patrik Oldsberg --- .changeset/lazy-beds-pull.md | 5 +++++ .../default-backend-plugin/package.json.hbs | 12 ++++++------ .../cli/templates/default-plugin/package.json.hbs | 2 +- 3 files changed, 12 insertions(+), 7 deletions(-) create mode 100644 .changeset/lazy-beds-pull.md diff --git a/.changeset/lazy-beds-pull.md b/.changeset/lazy-beds-pull.md new file mode 100644 index 0000000000..0d8be46576 --- /dev/null +++ b/.changeset/lazy-beds-pull.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Updated fallback versions of dependencies in all templates. diff --git a/packages/cli/templates/default-backend-plugin/package.json.hbs b/packages/cli/templates/default-backend-plugin/package.json.hbs index fcc903b148..0a72a5d415 100644 --- a/packages/cli/templates/default-backend-plugin/package.json.hbs +++ b/packages/cli/templates/default-backend-plugin/package.json.hbs @@ -30,18 +30,18 @@ "dependencies": { "@backstage/backend-common": "{{versionQuery '@backstage/backend-common'}}", "@backstage/config": "{{versionQuery '@backstage/config'}}", - "@types/express": "{{versionQuery '@types/express' '4.17.6'}}", - "express": "{{versionQuery 'express' '4.17.1'}}", + "@types/express": "{{versionQuery '@types/express' '4.17.13'}}", + "express": "{{versionQuery 'express' '4.18.1'}}", "express-promise-router": "{{versionQuery 'express-promise-router' '4.1.0'}}", - "winston": "{{versionQuery 'winston' '3.2.1'}}", + "winston": "{{versionQuery 'winston' '3.8.1'}}", "node-fetch": "{{versionQuery 'node-fetch' '2.6.7'}}", "yn": "{{versionQuery 'yn' '4.0.0'}}" }, "devDependencies": { "@backstage/cli": "{{versionQuery '@backstage/cli'}}", - "@types/supertest": "{{versionQuery '@types/supertest' '2.0.8'}}", - "supertest": "{{versionQuery 'supertest' '4.0.2'}}", - "msw": "{{versionQuery 'msw' '0.46.0'}}" + "@types/supertest": "{{versionQuery '@types/supertest' '2.0.12'}}", + "supertest": "{{versionQuery 'supertest' '6.2.4'}}", + "msw": "{{versionQuery 'msw' '0.47.0'}}" }, "files": [ "dist" diff --git a/packages/cli/templates/default-plugin/package.json.hbs b/packages/cli/templates/default-plugin/package.json.hbs index a1c1245b38..c60ba63f2b 100644 --- a/packages/cli/templates/default-plugin/package.json.hbs +++ b/packages/cli/templates/default-plugin/package.json.hbs @@ -48,7 +48,7 @@ "@testing-library/react": "{{versionQuery '@testing-library/react' '12.1.3'}}", "@testing-library/user-event": "{{versionQuery '@testing-library/user-event' '14.0.0'}}", "@types/node": "{{versionQuery '@types/node' '16.11.26'}}", - "msw": "{{versionQuery 'msw' '0.46.0'}}", + "msw": "{{versionQuery 'msw' '0.47.0'}}", "cross-fetch": "{{versionQuery 'cross-fetch' '3.1.5'}}" }, "files": [ From 0df43e589392b4e6860047221c0d44a51a9dd3f5 Mon Sep 17 00:00:00 2001 From: Carlos Esteban Lopez Date: Wed, 7 Sep 2022 18:08:29 -0500 Subject: [PATCH 041/117] docs: Add kubernetes azure auth provider section Signed-off-by: Carlos Esteban Lopez --- docs/features/kubernetes/authentication.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/docs/features/kubernetes/authentication.md b/docs/features/kubernetes/authentication.md index 7669d967ed..baa921e4fa 100644 --- a/docs/features/kubernetes/authentication.md +++ b/docs/features/kubernetes/authentication.md @@ -28,6 +28,28 @@ The providers available as server side are: - `localKubectlProxy` - `serviceAccount` +### Azure + +The Azure server side authentication provider works by authenticating on the server with +the Azure CLI `az login`, meaning any user that can access the backstage app will have +the same level of access to the cluster in the Kubernetes plugin, to put an example, even +guest users would have access to the cluster resources. + +```yaml +kubernetes: + clusterLocatorMethods: + - type: 'config' + clusters: + - name: Random cluster name in backstage + url: ${AZURE_CLUSTER_API_SERVER_ADDRESS} + authProvider: azure + skipTLSVerify: true +``` + +To get the API server address for your Azure cluster, go to the Azure console page for the +cluster resource, go to `Overview` > `Properties` tab > `Networking` section and copy paste +the API server address directly in that `url` field. + ## Client Side Providers These providers authenticate your _user_ with the cluster. Each Backstage user will be From d12ebdde778598ab3f980653842f44ab6c66db3d Mon Sep 17 00:00:00 2001 From: Carlos Esteban Lopez Jaramillo Date: Fri, 9 Sep 2022 12:23:46 -0500 Subject: [PATCH 042/117] Update docs/features/kubernetes/authentication.md Co-authored-by: Jamie Klassen Signed-off-by: Carlos Esteban Lopez Jaramillo --- docs/features/kubernetes/authentication.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/features/kubernetes/authentication.md b/docs/features/kubernetes/authentication.md index baa921e4fa..b342a6892c 100644 --- a/docs/features/kubernetes/authentication.md +++ b/docs/features/kubernetes/authentication.md @@ -40,7 +40,7 @@ kubernetes: clusterLocatorMethods: - type: 'config' clusters: - - name: Random cluster name in backstage + - name: My AKS cluster url: ${AZURE_CLUSTER_API_SERVER_ADDRESS} authProvider: azure skipTLSVerify: true From cc05706f351fb2b10305db8a52e791248639ec9e Mon Sep 17 00:00:00 2001 From: Carlos Esteban Lopez Date: Mon, 12 Sep 2022 13:00:26 -0500 Subject: [PATCH 043/117] docs: Address MR comments Signed-off-by: Carlos Esteban Lopez --- docs/features/kubernetes/authentication.md | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/docs/features/kubernetes/authentication.md b/docs/features/kubernetes/authentication.md index b342a6892c..c4d6fdda96 100644 --- a/docs/features/kubernetes/authentication.md +++ b/docs/features/kubernetes/authentication.md @@ -18,7 +18,9 @@ The providers currently available are divided into server side and client side. ## Server Side Providers These providers authenticate your _application_ with the cluster, meaning anyone that is -logged in into your backstage app will be granted the same access to Kubernetes objects. +logged in into your backstage app will be granted the same access to Kubernetes objects, +to put an example,even guest users would have access to the cluster resources, so be +careful of using server side providers with guest access enabled. The providers available as server side are: @@ -31,9 +33,13 @@ The providers available as server side are: ### Azure The Azure server side authentication provider works by authenticating on the server with -the Azure CLI `az login`, meaning any user that can access the backstage app will have -the same level of access to the cluster in the Kubernetes plugin, to put an example, even -guest users would have access to the cluster resources. +the Azure CLI, follow these steps: + +- Install the Azure CLI: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest +- Login with your Azure/Microsoft account with `az login` in the server's terminal +- Go to your AKS cluster's resource page in Azure Console and follow the steps in the + `Connect` tab to set the subscription and get your credentials for `kubectl` integration +- Configure your cluster to use the `azure` auth provider like this: ```yaml kubernetes: From f32117268f3cbc2c494d29111cdaaf372cf67021 Mon Sep 17 00:00:00 2001 From: Carlos Esteban Lopez Date: Mon, 12 Sep 2022 13:15:05 -0500 Subject: [PATCH 044/117] docs: Mention AKS AAD requirement Signed-off-by: Carlos Esteban Lopez --- docs/features/kubernetes/authentication.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/features/kubernetes/authentication.md b/docs/features/kubernetes/authentication.md index c4d6fdda96..67b4f49e8f 100644 --- a/docs/features/kubernetes/authentication.md +++ b/docs/features/kubernetes/authentication.md @@ -33,9 +33,10 @@ The providers available as server side are: ### Azure The Azure server side authentication provider works by authenticating on the server with -the Azure CLI, follow these steps: +the Azure CLI, please note that [Azure AD Authentication][1] is a requirement and has to +be enabled in your AKS cluster, then follow these steps: -- Install the Azure CLI: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest +- [Install the Azure CLI][2] - Login with your Azure/Microsoft account with `az login` in the server's terminal - Go to your AKS cluster's resource page in Azure Console and follow the steps in the `Connect` tab to set the subscription and get your credentials for `kubectl` integration @@ -69,3 +70,6 @@ The providers available as client side are: - `google` - `oidc` + +[1]: https://docs.microsoft.com/en-us/azure/aks/managed-aad +[2]: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest From 16f66c8a51e5e307cb379a11b72c22aa9c7f0f83 Mon Sep 17 00:00:00 2001 From: Carlos Esteban Lopez Jaramillo Date: Tue, 20 Sep 2022 10:24:08 -0500 Subject: [PATCH 045/117] Update docs/features/kubernetes/authentication.md Co-authored-by: Patrik Oldsberg Signed-off-by: Carlos Esteban Lopez Jaramillo --- docs/features/kubernetes/authentication.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/features/kubernetes/authentication.md b/docs/features/kubernetes/authentication.md index 67b4f49e8f..2fe33bcb11 100644 --- a/docs/features/kubernetes/authentication.md +++ b/docs/features/kubernetes/authentication.md @@ -18,9 +18,7 @@ The providers currently available are divided into server side and client side. ## Server Side Providers These providers authenticate your _application_ with the cluster, meaning anyone that is -logged in into your backstage app will be granted the same access to Kubernetes objects, -to put an example,even guest users would have access to the cluster resources, so be -careful of using server side providers with guest access enabled. +logged in into your backstage app will be granted the same access to Kubernetes objects, including guest users. The providers available as server side are: From 92eb5690a9b4b7735962f4849f5f613b5bb325a2 Mon Sep 17 00:00:00 2001 From: Carlos Esteban Lopez Date: Tue, 20 Sep 2022 10:27:16 -0500 Subject: [PATCH 046/117] docs: Address MR comments Signed-off-by: Carlos Esteban Lopez --- docs/features/kubernetes/authentication.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/features/kubernetes/authentication.md b/docs/features/kubernetes/authentication.md index 2fe33bcb11..e4aaba5f33 100644 --- a/docs/features/kubernetes/authentication.md +++ b/docs/features/kubernetes/authentication.md @@ -34,10 +34,10 @@ The Azure server side authentication provider works by authenticating on the ser the Azure CLI, please note that [Azure AD Authentication][1] is a requirement and has to be enabled in your AKS cluster, then follow these steps: -- [Install the Azure CLI][2] -- Login with your Azure/Microsoft account with `az login` in the server's terminal +- [Install the Azure CLI][2] in the device where the backstage application will run. +- Login with your Azure/Microsoft account with `az login` in the server's terminal. - Go to your AKS cluster's resource page in Azure Console and follow the steps in the - `Connect` tab to set the subscription and get your credentials for `kubectl` integration + `Connect` tab to set the subscription and get your credentials for `kubectl` integration. - Configure your cluster to use the `azure` auth provider like this: ```yaml From f368ad72794e3fda54f58fd5f5287c95cb92e59b Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 20 Sep 2022 17:36:37 +0200 Subject: [PATCH 047/117] changesets: added changeset for jest 29 bump Signed-off-by: Patrik Oldsberg --- .changeset/sweet-insects-camp.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 .changeset/sweet-insects-camp.md diff --git a/.changeset/sweet-insects-camp.md b/.changeset/sweet-insects-camp.md new file mode 100644 index 0000000000..4f91a196e8 --- /dev/null +++ b/.changeset/sweet-insects-camp.md @@ -0,0 +1,11 @@ +--- +'@backstage/cli': minor +--- + +**BREAKING**: Bumped `jest`, `jest-runtime`, and `jest-environment-jsdom` to v29. This is up from v27, so check out both the [v28](https://jestjs.io/docs/28.x/upgrading-to-jest28) and [v29](https://jestjs.io/docs/upgrading-to-jest29) (later [here](https://jestjs.io/docs/29.x/upgrading-to-jest29)) migration guides. + +Particular changes that where encountered in the main Backstage repo are: + +- The updated snapshot format. +- `jest.useFakeTimers('legacy')` is now `jest.useFakeTimers({ legacyFakeTimers: true })`. +- Error objects collected by `withLogCollector` from `@backstage/test-utils` are now objects with a `detail` property rather than a string. From 1720afed04619d2c8fb9f15144bcee02cdac7656 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 20 Sep 2022 18:02:28 +0200 Subject: [PATCH 048/117] cli: fix yaml transform and add test for loading yaml Signed-off-by: Patrik Oldsberg --- packages/cli/config/jestYamlTransform.js | 4 +++- packages/cli/src/tests/yaml-fixture.yaml | 2 ++ packages/cli/src/tests/yaml.test.ts | 23 +++++++++++++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 packages/cli/src/tests/yaml-fixture.yaml create mode 100644 packages/cli/src/tests/yaml.test.ts diff --git a/packages/cli/config/jestYamlTransform.js b/packages/cli/config/jestYamlTransform.js index 2f04b94d8a..1235f8a4b7 100644 --- a/packages/cli/config/jestYamlTransform.js +++ b/packages/cli/config/jestYamlTransform.js @@ -15,6 +15,7 @@ */ const yaml = require('yaml'); +const crypto = require('crypto'); function createTransformer(config) { const process = source => { @@ -23,7 +24,8 @@ function createTransformer(config) { }; const getCacheKey = sourceText => { - return createHash('md5') + return crypto + .createHash('md5') .update(sourceText) .update(Buffer.alloc(1)) .update(JSON.stringify(config)) diff --git a/packages/cli/src/tests/yaml-fixture.yaml b/packages/cli/src/tests/yaml-fixture.yaml new file mode 100644 index 0000000000..e93744d8dc --- /dev/null +++ b/packages/cli/src/tests/yaml-fixture.yaml @@ -0,0 +1,2 @@ +x: + y: 'z' diff --git a/packages/cli/src/tests/yaml.test.ts b/packages/cli/src/tests/yaml.test.ts new file mode 100644 index 0000000000..cb96fdf954 --- /dev/null +++ b/packages/cli/src/tests/yaml.test.ts @@ -0,0 +1,23 @@ +/* + * 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 yaml from './yaml-fixture.yaml'; + +describe('tests', () => { + it('should load yaml', () => { + expect(yaml).toEqual({ x: { y: 'z' } }); + }); +}); From fb9e00a54a68402e25754799e40056c08493bd61 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sat, 10 Sep 2022 14:37:49 +0200 Subject: [PATCH 049/117] create-app: move mock-fs calls into describe blocks Signed-off-by: Patrik Oldsberg --- packages/create-app/src/createApp.test.ts | 22 +- packages/create-app/src/lib/tasks.test.ts | 352 +++++++++++----------- 2 files changed, 190 insertions(+), 184 deletions(-) diff --git a/packages/create-app/src/createApp.test.ts b/packages/create-app/src/createApp.test.ts index d339460243..8e7b3bae7d 100644 --- a/packages/create-app/src/createApp.test.ts +++ b/packages/create-app/src/createApp.test.ts @@ -28,17 +28,6 @@ jest.mock('./lib/versions', () => ({ packageVersions: { root: '1.0.0' }, })); -beforeAll(() => { - mockFs({ - [`${__dirname}/package.json`]: '', // required by `findPaths(__dirname)` - 'templates/': mockFs.load(path.resolve(__dirname, '../templates/')), - }); -}); - -afterAll(() => { - mockFs.restore(); -}); - const promptMock = jest.spyOn(inquirer, 'prompt'); const checkPathExistsMock = jest.spyOn(tasks, 'checkPathExistsTask'); const templatingMock = jest.spyOn(tasks, 'templatingTask'); @@ -51,6 +40,17 @@ const moveAppMock = jest.spyOn(tasks, 'moveAppTask'); const buildAppMock = jest.spyOn(tasks, 'buildAppTask'); describe('command entrypoint', () => { + beforeAll(() => { + mockFs({ + [`${__dirname}/package.json`]: '', // required by `findPaths(__dirname)` + 'templates/': mockFs.load(path.resolve(__dirname, '../templates/')), + }); + }); + + afterAll(() => { + mockFs.restore(); + }); + beforeEach(() => { promptMock.mockResolvedValueOnce({ name: 'MyApp', diff --git a/packages/create-app/src/lib/tasks.test.ts b/packages/create-app/src/lib/tasks.test.ts index d2efe81b90..decc89fbd4 100644 --- a/packages/create-app/src/lib/tasks.test.ts +++ b/packages/create-app/src/lib/tasks.test.ts @@ -86,185 +86,191 @@ jest.mock('./versions', () => ({ }, })); -beforeEach(() => { - mockFs({ - 'projects/my-module.ts': '', - 'projects/dir/my-file.txt': '', - 'tmp/mockApp/.gitignore': '', - 'tmp/mockApp/package.json': '', - 'tmp/mockApp/packages/app/package.json': '', - // load templates into mock filesystem - 'templates/': mockFs.load(path.resolve(__dirname, '../../templates/')), - }); -}); - -afterEach(() => { - mockFs.restore(); -}); - -describe('checkAppExistsTask', () => { - it('should do nothing if the directory does not exist', async () => { - const dir = 'projects/'; - const name = 'MyNewApp'; - await expect(checkAppExistsTask(dir, name)).resolves.not.toThrow(); +describe('tasks', () => { + beforeEach(() => { + mockFs({ + 'projects/my-module.ts': '', + 'projects/dir/my-file.txt': '', + 'tmp/mockApp/.gitignore': '', + 'tmp/mockApp/package.json': '', + 'tmp/mockApp/packages/app/package.json': '', + // load templates into mock filesystem + 'templates/': mockFs.load(path.resolve(__dirname, '../../templates/')), + }); }); - it('should throw an error when a file of the same name exists', async () => { - const dir = 'projects/'; - const name = 'my-module.ts'; - await expect(checkAppExistsTask(dir, name)).rejects.toThrow( - 'already exists', - ); + afterEach(() => { + mockFs.restore(); }); - it('should throw an error when a directory of the same name exists', async () => { - const dir = 'projects/'; - const name = 'dir'; - await expect(checkAppExistsTask(dir, name)).rejects.toThrow( - 'already exists', - ); - }); -}); - -describe('checkPathExistsTask', () => { - it('should create a directory at the given path', async () => { - const appDir = 'projects/newProject'; - await expect(checkPathExistsTask(appDir)).resolves.not.toThrow(); - expect(fs.existsSync(appDir)).toBe(true); - }); - - it('should do nothing if a directory of the same name exists', async () => { - const appDir = 'projects/dir'; - await expect(checkPathExistsTask(appDir)).resolves.not.toThrow(); - expect(fs.existsSync(appDir)).toBe(true); - }); - - it('should fail if a file of the same name exists', async () => { - await expect(checkPathExistsTask('projects/my-module.ts')).rejects.toThrow( - 'already exists', - ); - }); -}); - -describe('createTemporaryAppFolderTask', () => { - it('should create a directory at a given path', async () => { - const tempDir = 'projects/tmpFolder'; - await expect(createTemporaryAppFolderTask(tempDir)).resolves.not.toThrow(); - expect(fs.existsSync(tempDir)).toBe(true); - }); - - it('should fail if a directory of the same name exists', async () => { - const tempDir = 'projects/dir'; - await expect(createTemporaryAppFolderTask(tempDir)).rejects.toThrow( - 'file already exists', - ); - }); - - it('should fail if a file of the same name exists', async () => { - const tempDir = 'projects/dir/my-file.txt'; - await expect(createTemporaryAppFolderTask(tempDir)).rejects.toThrow( - 'file already exists', - ); - }); -}); - -describe('buildAppTask', () => { - it('should change to `appDir` and run `yarn install` and `yarn tsc`', async () => { - const mockChdir = jest.spyOn(process, 'chdir'); - const mockExec = child_process.exec as unknown as jest.MockedFunction< - ( - command: string, - callback: (error: null, stdout: string, stderr: string) => void, - ) => void - >; - - // requires callback implementation to support `promisify` wrapper - // https://stackoverflow.com/a/60579617/10044859 - mockExec.mockImplementation((_command, callback) => { - callback(null, 'standard out', 'standard error'); + describe('checkAppExistsTask', () => { + it('should do nothing if the directory does not exist', async () => { + const dir = 'projects/'; + const name = 'MyNewApp'; + await expect(checkAppExistsTask(dir, name)).resolves.not.toThrow(); }); - const appDir = 'projects/dir'; - await expect(buildAppTask(appDir)).resolves.not.toThrow(); - expect(mockChdir).toHaveBeenCalledTimes(2); - expect(mockChdir).toHaveBeenNthCalledWith(1, appDir); - expect(mockChdir).toHaveBeenNthCalledWith(2, appDir); - expect(mockExec).toHaveBeenCalledTimes(2); - expect(mockExec).toHaveBeenNthCalledWith( - 1, - 'yarn install', - expect.any(Function), - ); - expect(mockExec).toHaveBeenNthCalledWith( - 2, - 'yarn tsc', - expect.any(Function), - ); - }); - - it('should fail if project directory does not exist', async () => { - const appDir = 'projects/missingProject'; - await expect(buildAppTask(appDir)).rejects.toThrow( - 'no such file or directory', - ); - }); -}); - -describe('moveAppTask', () => { - const tempDir = 'tmp/mockApp/'; - const id = 'myApp'; - - it('should move all files in the temp dir to the target dir', async () => { - const destination = 'projects/mockApp'; - await moveAppTask(tempDir, destination, id); - expect(fs.existsSync('projects/mockApp/.gitignore')).toBe(true); - expect(fs.existsSync('projects/mockApp/package.json')).toBe(true); - expect(fs.existsSync('projects/mockApp/packages/app/package.json')).toBe( - true, - ); - }); - - it('should fail to move files if destination already exists', async () => { - const destination = 'projects'; - await expect(moveAppTask(tempDir, destination, id)).rejects.toThrow( - 'dest already exists', - ); - }); - - it('should remove temporary files if move succeeded', async () => { - const destination = 'projects/mockApp'; - await moveAppTask(tempDir, destination, id); - expect(fs.existsSync('tmp/mockApp')).toBe(false); - }); - - it('should remove temporary files if move failed', async () => { - const destination = 'projects'; - await expect(moveAppTask(tempDir, destination, id)).rejects.toThrow(); - expect(fs.existsSync('tmp/mockApp')).toBe(false); - }); -}); - -describe('templatingTask', () => { - it('should generate a project populating context parameters', async () => { - const templateDir = 'templates/default-app'; - const destinationDir = 'templatedApp'; - const context = { - name: 'SuperCoolBackstageInstance', - dbTypeSqlite: true, - }; - await templatingTask(templateDir, destinationDir, context); - expect(fs.existsSync('templatedApp/package.json')).toBe(true); - expect(fs.existsSync('templatedApp/.dockerignore')).toBe(true); - await expect(fs.readJson('templatedApp/backstage.json')).resolves.toEqual({ - version: '1.2.3', + it('should throw an error when a file of the same name exists', async () => { + const dir = 'projects/'; + const name = 'my-module.ts'; + await expect(checkAppExistsTask(dir, name)).rejects.toThrow( + 'already exists', + ); + }); + + it('should throw an error when a directory of the same name exists', async () => { + const dir = 'projects/'; + const name = 'dir'; + await expect(checkAppExistsTask(dir, name)).rejects.toThrow( + 'already exists', + ); + }); + }); + + describe('checkPathExistsTask', () => { + it('should create a directory at the given path', async () => { + const appDir = 'projects/newProject'; + await expect(checkPathExistsTask(appDir)).resolves.not.toThrow(); + expect(fs.existsSync(appDir)).toBe(true); + }); + + it('should do nothing if a directory of the same name exists', async () => { + const appDir = 'projects/dir'; + await expect(checkPathExistsTask(appDir)).resolves.not.toThrow(); + expect(fs.existsSync(appDir)).toBe(true); + }); + + it('should fail if a file of the same name exists', async () => { + await expect( + checkPathExistsTask('projects/my-module.ts'), + ).rejects.toThrow('already exists'); + }); + }); + + describe('createTemporaryAppFolderTask', () => { + it('should create a directory at a given path', async () => { + const tempDir = 'projects/tmpFolder'; + await expect( + createTemporaryAppFolderTask(tempDir), + ).resolves.not.toThrow(); + expect(fs.existsSync(tempDir)).toBe(true); + }); + + it('should fail if a directory of the same name exists', async () => { + const tempDir = 'projects/dir'; + await expect(createTemporaryAppFolderTask(tempDir)).rejects.toThrow( + 'file already exists', + ); + }); + + it('should fail if a file of the same name exists', async () => { + const tempDir = 'projects/dir/my-file.txt'; + await expect(createTemporaryAppFolderTask(tempDir)).rejects.toThrow( + 'file already exists', + ); + }); + }); + + describe('buildAppTask', () => { + it('should change to `appDir` and run `yarn install` and `yarn tsc`', async () => { + const mockChdir = jest.spyOn(process, 'chdir'); + const mockExec = child_process.exec as unknown as jest.MockedFunction< + ( + command: string, + callback: (error: null, stdout: string, stderr: string) => void, + ) => void + >; + + // requires callback implementation to support `promisify` wrapper + // https://stackoverflow.com/a/60579617/10044859 + mockExec.mockImplementation((_command, callback) => { + callback(null, 'standard out', 'standard error'); + }); + + const appDir = 'projects/dir'; + await expect(buildAppTask(appDir)).resolves.not.toThrow(); + expect(mockChdir).toHaveBeenCalledTimes(2); + expect(mockChdir).toHaveBeenNthCalledWith(1, appDir); + expect(mockChdir).toHaveBeenNthCalledWith(2, appDir); + expect(mockExec).toHaveBeenCalledTimes(2); + expect(mockExec).toHaveBeenNthCalledWith( + 1, + 'yarn install', + expect.any(Function), + ); + expect(mockExec).toHaveBeenNthCalledWith( + 2, + 'yarn tsc', + expect.any(Function), + ); + }); + + it('should fail if project directory does not exist', async () => { + const appDir = 'projects/missingProject'; + await expect(buildAppTask(appDir)).rejects.toThrow( + 'no such file or directory', + ); + }); + }); + + describe('moveAppTask', () => { + const tempDir = 'tmp/mockApp/'; + const id = 'myApp'; + + it('should move all files in the temp dir to the target dir', async () => { + const destination = 'projects/mockApp'; + await moveAppTask(tempDir, destination, id); + expect(fs.existsSync('projects/mockApp/.gitignore')).toBe(true); + expect(fs.existsSync('projects/mockApp/package.json')).toBe(true); + expect(fs.existsSync('projects/mockApp/packages/app/package.json')).toBe( + true, + ); + }); + + it('should fail to move files if destination already exists', async () => { + const destination = 'projects'; + await expect(moveAppTask(tempDir, destination, id)).rejects.toThrow( + 'dest already exists', + ); + }); + + it('should remove temporary files if move succeeded', async () => { + const destination = 'projects/mockApp'; + await moveAppTask(tempDir, destination, id); + expect(fs.existsSync('tmp/mockApp')).toBe(false); + }); + + it('should remove temporary files if move failed', async () => { + const destination = 'projects'; + await expect(moveAppTask(tempDir, destination, id)).rejects.toThrow(); + expect(fs.existsSync('tmp/mockApp')).toBe(false); + }); + }); + + describe('templatingTask', () => { + it('should generate a project populating context parameters', async () => { + const templateDir = 'templates/default-app'; + const destinationDir = 'templatedApp'; + const context = { + name: 'SuperCoolBackstageInstance', + dbTypeSqlite: true, + }; + await templatingTask(templateDir, destinationDir, context); + expect(fs.existsSync('templatedApp/package.json')).toBe(true); + expect(fs.existsSync('templatedApp/.dockerignore')).toBe(true); + await expect(fs.readJson('templatedApp/backstage.json')).resolves.toEqual( + { + version: '1.2.3', + }, + ); + // catalog was populated with `context.name` + expect( + fs.readFileSync('templatedApp/catalog-info.yaml', 'utf-8'), + ).toContain('name: SuperCoolBackstageInstance'); + // backend dependencies include `sqlite3` from `context.SQLite` + expect( + fs.readFileSync('templatedApp/packages/backend/package.json', 'utf-8'), + ).toContain('sqlite3"'); }); - // catalog was populated with `context.name` - expect( - fs.readFileSync('templatedApp/catalog-info.yaml', 'utf-8'), - ).toContain('name: SuperCoolBackstageInstance'); - // backend dependencies include `sqlite3` from `context.SQLite` - expect( - fs.readFileSync('templatedApp/packages/backend/package.json', 'utf-8'), - ).toContain('sqlite3"'); }); }); From 292a08880752f5b8520df8940d08b883e9cd4201 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sat, 10 Sep 2022 16:50:09 +0200 Subject: [PATCH 050/117] cli: add `repo test` command Signed-off-by: Patrik Oldsberg --- .changeset/little-roses-rule.md | 5 + packages/cli/cli-report.md | 110 +++++++++++++++++++++ packages/cli/src/commands/index.ts | 11 +++ packages/cli/src/commands/repo/test.ts | 126 +++++++++++++++++++++++++ packages/cli/src/commands/test.ts | 1 + 5 files changed, 253 insertions(+) create mode 100644 .changeset/little-roses-rule.md create mode 100644 packages/cli/src/commands/repo/test.ts diff --git a/.changeset/little-roses-rule.md b/.changeset/little-roses-rule.md new file mode 100644 index 0000000000..4acec131e6 --- /dev/null +++ b/.changeset/little-roses-rule.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Added a new `repo test` command. diff --git a/packages/cli/cli-report.md b/packages/cli/cli-report.md index 4b72748c40..b5d9421bdf 100644 --- a/packages/cli/cli-report.md +++ b/packages/cli/cli-report.md @@ -390,6 +390,7 @@ Commands: build [options] lint [options] clean + test [options] help [command] ``` @@ -425,6 +426,115 @@ Options: -h, --help ``` +### `backstage-cli repo test` + +``` +Usage: backstage-cli [--config=] [TestPathPattern] + +Options: + -h, --help + --version + --all + --automock + -b, --bail + --cache + --cacheDirectory + --changedFilesWithAncestor + --changedSince + --ci + --clearCache + --clearMocks + --collectCoverage + --collectCoverageFrom + --color + --colors + -c, --config + --coverage + --coverageDirectory + --coveragePathIgnorePatterns + --coverageProvider + --coverageReporters + --coverageThreshold + --debug + --detectLeaks + --detectOpenHandles + --env + --errorOnDeprecated + -e, --expand + --filter + --findRelatedTests + --forceExit + --globalSetup + --globalTeardown + --globals + --haste + --ignoreProjects + --init + --injectGlobals + --json + --lastCommit + --listTests + --logHeapUsage + --maxConcurrency + -w, --maxWorkers + --moduleDirectories + --moduleFileExtensions + --moduleNameMapper + --modulePathIgnorePatterns + --modulePaths + --noStackTrace + --notify + --notifyMode + -o, --onlyChanged + -f, --onlyFailures + --outputFile + --passWithNoTests + --preset + --prettierPath + --projects + --reporters + --resetMocks + --resetModules + --resolver + --restoreMocks + --rootDir + --roots + -i, --runInBand + --runTestsByPath + --runner + --selectProjects + --setupFiles + --setupFilesAfterEnv + --shard + --showConfig + --silent + --skipFilter + --snapshotSerializers + --testEnvironment + --testEnvironmentOptions + --testFailureExitCode + --testLocationInResults + --testMatch + -t, --testNamePattern + --testPathIgnorePatterns + --testPathPattern + --testRegex + --testResultsProcessor + --testRunner + --testSequencer + --testTimeout + --transform + --transformIgnorePatterns + --unmockedModulePathPatterns + -u, --updateSnapshot + --useStderr + --verbose + --watch + --watchAll + --watchPathIgnorePatterns + --watchman +``` + ### `backstage-cli test` ``` diff --git a/packages/cli/src/commands/index.ts b/packages/cli/src/commands/index.ts index 8f3317c437..dfa53096bd 100644 --- a/packages/cli/src/commands/index.ts +++ b/packages/cli/src/commands/index.ts @@ -72,6 +72,17 @@ export function registerRepoCommand(program: Command) { .action( lazy(() => import('./repo/list-deprecations').then(m => m.command)), ); + + command + .command('test') + .allowUnknownOption(true) // Allows the command to run, but we still need to parse raw args + .option( + '--since ', + 'Only test packages that changed since the specified ref', + ) + .helpOption(', --backstage-cli-help') // Let Jest handle help + .description('Run tests, forwarding args to Jest, defaulting to watch mode') + .action(lazy(() => import('./repo/test').then(m => m.command))); } export function registerScriptCommand(program: Command) { diff --git a/packages/cli/src/commands/repo/test.ts b/packages/cli/src/commands/repo/test.ts new file mode 100644 index 0000000000..0726d10777 --- /dev/null +++ b/packages/cli/src/commands/repo/test.ts @@ -0,0 +1,126 @@ +/* + * Copyright 2020 The 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 { Command, OptionValues } from 'commander'; +import { PackageGraph } from '../../lib/monorepo'; +import { paths } from '../../lib/paths'; +import { runCheck } from '../../lib/run'; + +function includesAnyOf(hayStack: string[], ...needles: string[]) { + for (const needle of needles) { + if (hayStack.includes(needle)) { + return true; + } + } + return false; +} + +function removeOptionArg(args: string[], option: string) { + let changed = false; + do { + changed = false; + + const index = args.indexOf(option); + if (index >= 0) { + changed = true; + args.splice(index, 2); + } + const indexEq = args.findIndex(arg => arg.startsWith(`${option}=`)); + if (indexEq >= 0) { + changed = true; + args.splice(indexEq, 1); + } + } while (changed); +} + +export async function command(opts: OptionValues, cmd: Command): Promise { + // all args are forwarded to jest + let parent = cmd; + while (parent.parent) { + parent = parent.parent; + } + const allArgs = parent.args as string[]; + const args = allArgs.slice(allArgs.indexOf('test') + 1); + + // Only include our config if caller isn't passing their own config + if (!includesAnyOf(args, '-c', '--config')) { + args.push('--config', paths.resolveOwn('config/jest.js')); + } + + if (!includesAnyOf(args, '--no-passWithNoTests', '--passWithNoTests=false')) { + args.push('--passWithNoTests'); + } + + // Run in watch mode unless in CI, coverage mode, or running all tests + if ( + !process.env.CI && + !args.includes('--coverage') && + // explicitly no watching + !includesAnyOf(args, '--no-watch', '--watch=false', '--watchAll=false') && + // already watching + !includesAnyOf(args, '--watch', '--watchAll') + ) { + const isGitRepo = () => + runCheck('git', 'rev-parse', '--is-inside-work-tree'); + const isMercurialRepo = () => runCheck('hg', '--cwd', '.', 'root'); + + if ((await isGitRepo()) || (await isMercurialRepo())) { + args.push('--watch'); + } else { + args.push('--watchAll'); + } + } + + if (opts.since) { + removeOptionArg(args, '--since'); + } + + if (opts.since && !args.some(arg => arg.startsWith('--selectProjects'))) { + const packages = await PackageGraph.listTargetPackages(); + const graph = PackageGraph.fromPackages(packages); + const changedPackages = await graph.listChangedPackages({ + ref: opts.since, + }); + + const packageNames = Array.from( + graph.collectPackageNames( + changedPackages.map(pkg => pkg.name), + pkg => pkg.allLocalDependents.keys(), + ), + ); + args.push('--selectProjects', ...packageNames); + } + + // This is the only thing that is not implemented by jest.run(), so we do it here instead + // https://github.com/facebook/jest/blob/cd8828f7bbec6e55b4df5e41e853a5133c4a3ee1/packages/jest-cli/bin/jest.js#L12 + if (!process.env.NODE_ENV) { + (process.env as any).NODE_ENV = 'test'; + } + + // This is to have a consistent timezone for when running tests that involve checking + // the formatting of date/times. + // https://stackoverflow.com/questions/56261381/how-do-i-set-a-timezone-in-my-jest-config + if (!process.env.TZ) { + process.env.TZ = 'UTC'; + } + + // This ensures that the process doesn't exit too early before stdout is flushed + if (args.includes('--help')) { + (process.stdout as any)._handle.setBlocking(true); + } + + await require('jest').run(args); +} diff --git a/packages/cli/src/commands/test.ts b/packages/cli/src/commands/test.ts index ec1bf8a7a0..b55919b2ce 100644 --- a/packages/cli/src/commands/test.ts +++ b/packages/cli/src/commands/test.ts @@ -78,6 +78,7 @@ export default async (_opts: OptionValues, cmd: Command) => { process.env.TZ = 'UTC'; } + // This ensures that the process doesn't exit too early before stdout is flushed if (args.includes('--help')) { (process.stdout as any)._handle.setBlocking(true); } From a7659ae4743ed0cacdc0094220c83514da1e4610 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sat, 10 Sep 2022 18:36:23 +0200 Subject: [PATCH 051/117] github/workflows: update to use repo test and memory limit Signed-off-by: Patrik Oldsberg --- .github/workflows/ci.yml | 4 ++-- .github/workflows/deploy_packages.yml | 2 +- .github/workflows/verify_windows.yml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d63a8b6d77..3c6ac696e9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -197,7 +197,7 @@ jobs: - name: test changed packages if: ${{ steps.yarn-lock.outcome == 'success' }} - run: yarn lerna run test --since origin/master -- --coverage --runInBand + run: yarn backstage-cli repo test --maxWorkers=2 --workerIdleMemoryLimit=1300M --since origin/master env: BACKSTAGE_NEXT_TESTS: 1 BACKSTAGE_TEST_DISABLE_DOCKER: 1 @@ -208,7 +208,7 @@ jobs: - name: test all packages (and upload coverage) if: ${{ steps.yarn-lock.outcome == 'failure' }} run: | - yarn lerna run test -- --coverage --runInBand + yarn backstage-cli repo test --maxWorkers=2 --workerIdleMemoryLimit=1300M --coverage bash <(curl -s https://codecov.io/bash) -N $(git rev-parse FETCH_HEAD) env: BACKSTAGE_NEXT_TESTS: 1 diff --git a/.github/workflows/deploy_packages.yml b/.github/workflows/deploy_packages.yml index 6fa34e408f..f2e4cbeb4c 100644 --- a/.github/workflows/deploy_packages.yml +++ b/.github/workflows/deploy_packages.yml @@ -97,7 +97,7 @@ jobs: - name: test (and upload coverage) run: | - yarn lerna run test -- --coverage --runInBand + yarn backstage-cli repo test --maxWorkers=2 --workerIdleMemoryLimit=1300M --coverage bash <(curl -s https://codecov.io/bash) # Upload code coverage for some specific flags. Also see .codecov.yml bash <(curl -s https://codecov.io/bash) -f packages/core-app-api/coverage/* -F core-app-api diff --git a/.github/workflows/verify_windows.yml b/.github/workflows/verify_windows.yml index 0b12caf2fc..8bbaa645bf 100644 --- a/.github/workflows/verify_windows.yml +++ b/.github/workflows/verify_windows.yml @@ -46,7 +46,7 @@ jobs: run: yarn lint:type-deps - name: test - run: yarn lerna run test + run: yarn backstage-cli repo test --maxWorkers=2 --workerIdleMemoryLimit=1300M env: BACKSTAGE_NEXT_TESTS: 1 BACKSTAGE_TEST_DISABLE_DOCKER: 1 From 6d00e801460fefa515a93a8a6851f6e56799101c Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sat, 10 Sep 2022 18:39:38 +0200 Subject: [PATCH 052/117] update package.json to use repo test Signed-off-by: Patrik Oldsberg --- .changeset/tiny-mails-bathe.md | 14 ++++++++++++++ package.json | 4 ++-- .../templates/default-app/package.json.hbs | 4 ++-- 3 files changed, 18 insertions(+), 4 deletions(-) create mode 100644 .changeset/tiny-mails-bathe.md diff --git a/.changeset/tiny-mails-bathe.md b/.changeset/tiny-mails-bathe.md new file mode 100644 index 0000000000..868c2a8d36 --- /dev/null +++ b/.changeset/tiny-mails-bathe.md @@ -0,0 +1,14 @@ +--- +'@backstage/create-app': patch +--- + +Updated the root `test` scripts to use `backstage-cli repo test`. + +To apply this change to an existing app, make the following change to the root `package.json`: + +```diff +- "test": "backstage-cli test", +- "test:all": "lerna run test -- --coverage", ++ "test": "backstage-cli repo test", ++ "test:all": "backstage-cli repo test --coverage", +``` diff --git a/package.json b/package.json index 6603958253..95c2fa73da 100644 --- a/package.json +++ b/package.json @@ -15,8 +15,8 @@ "tsc": "tsc", "tsc:full": "backstage-cli repo clean && tsc --skipLibCheck false --incremental false", "clean": "backstage-cli repo clean", - "test": "backstage-cli test", - "test:all": "lerna run test -- --coverage", + "test": "backstage-cli repo test", + "test:all": "backstage-cli repo test --coverage", "lint": "backstage-cli repo lint --since origin/master", "lint:docs": "node ./scripts/check-docs-quality", "lint:all": "backstage-cli repo lint", diff --git a/packages/create-app/templates/default-app/package.json.hbs b/packages/create-app/templates/default-app/package.json.hbs index a4f8815822..dd4d937db0 100644 --- a/packages/create-app/templates/default-app/package.json.hbs +++ b/packages/create-app/templates/default-app/package.json.hbs @@ -14,8 +14,8 @@ "tsc": "tsc", "tsc:full": "tsc --skipLibCheck false --incremental false", "clean": "backstage-cli repo clean", - "test": "backstage-cli test", - "test:all": "lerna run test -- --coverage", + "test": "backstage-cli repo test", + "test:all": "backstage-cli repo test --coverage", "lint": "backstage-cli repo lint --since origin/master", "lint:all": "backstage-cli repo lint", "prettier:check": "prettier --check .", From 947a9f216557875a64e2bf15d7f58022dc39e6ae Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 20 Sep 2022 13:54:49 +0200 Subject: [PATCH 053/117] cli: flip repo command help options to use --jest-help instead Signed-off-by: Patrik Oldsberg --- packages/cli/cli-report.md | 104 +------------------------ packages/cli/src/commands/index.ts | 5 +- packages/cli/src/commands/repo/test.ts | 4 +- 3 files changed, 10 insertions(+), 103 deletions(-) diff --git a/packages/cli/cli-report.md b/packages/cli/cli-report.md index b5d9421bdf..9afd12fb48 100644 --- a/packages/cli/cli-report.md +++ b/packages/cli/cli-report.md @@ -429,110 +429,12 @@ Options: ### `backstage-cli repo test` ``` -Usage: backstage-cli [--config=] [TestPathPattern] +Usage: backstage-cli repo test [options] Options: + --since + --jest-help -h, --help - --version - --all - --automock - -b, --bail - --cache - --cacheDirectory - --changedFilesWithAncestor - --changedSince - --ci - --clearCache - --clearMocks - --collectCoverage - --collectCoverageFrom - --color - --colors - -c, --config - --coverage - --coverageDirectory - --coveragePathIgnorePatterns - --coverageProvider - --coverageReporters - --coverageThreshold - --debug - --detectLeaks - --detectOpenHandles - --env - --errorOnDeprecated - -e, --expand - --filter - --findRelatedTests - --forceExit - --globalSetup - --globalTeardown - --globals - --haste - --ignoreProjects - --init - --injectGlobals - --json - --lastCommit - --listTests - --logHeapUsage - --maxConcurrency - -w, --maxWorkers - --moduleDirectories - --moduleFileExtensions - --moduleNameMapper - --modulePathIgnorePatterns - --modulePaths - --noStackTrace - --notify - --notifyMode - -o, --onlyChanged - -f, --onlyFailures - --outputFile - --passWithNoTests - --preset - --prettierPath - --projects - --reporters - --resetMocks - --resetModules - --resolver - --restoreMocks - --rootDir - --roots - -i, --runInBand - --runTestsByPath - --runner - --selectProjects - --setupFiles - --setupFilesAfterEnv - --shard - --showConfig - --silent - --skipFilter - --snapshotSerializers - --testEnvironment - --testEnvironmentOptions - --testFailureExitCode - --testLocationInResults - --testMatch - -t, --testNamePattern - --testPathIgnorePatterns - --testPathPattern - --testRegex - --testResultsProcessor - --testRunner - --testSequencer - --testTimeout - --transform - --transformIgnorePatterns - --unmockedModulePathPatterns - -u, --updateSnapshot - --useStderr - --verbose - --watch - --watchAll - --watchPathIgnorePatterns - --watchman ``` ### `backstage-cli test` diff --git a/packages/cli/src/commands/index.ts b/packages/cli/src/commands/index.ts index dfa53096bd..266b4fd9f1 100644 --- a/packages/cli/src/commands/index.ts +++ b/packages/cli/src/commands/index.ts @@ -80,7 +80,10 @@ export function registerRepoCommand(program: Command) { '--since ', 'Only test packages that changed since the specified ref', ) - .helpOption(', --backstage-cli-help') // Let Jest handle help + .option( + '--jest-help', + 'Show help for Jest CLI options, which are passed through', + ) .description('Run tests, forwarding args to Jest, defaulting to watch mode') .action(lazy(() => import('./repo/test').then(m => m.command))); } diff --git a/packages/cli/src/commands/repo/test.ts b/packages/cli/src/commands/repo/test.ts index 0726d10777..e873ac2b9b 100644 --- a/packages/cli/src/commands/repo/test.ts +++ b/packages/cli/src/commands/repo/test.ts @@ -118,7 +118,9 @@ export async function command(opts: OptionValues, cmd: Command): Promise { } // This ensures that the process doesn't exit too early before stdout is flushed - if (args.includes('--help')) { + if (args.includes('--jest-help')) { + removeOptionArg(args, '--jest-help'); + args.push('--help'); (process.stdout as any)._handle.setBlocking(true); } From 36405bd80d06cdb1a6329e004d19a83d3170d9bd Mon Sep 17 00:00:00 2001 From: Leena <19555355+sploschee@users.noreply.github.com> Date: Tue, 20 Sep 2022 19:43:44 +0100 Subject: [PATCH 054/117] fix(docs): import SignInProviderConfig - not used SignInProviderConfig appears to be a superfluous import - flagged as imported but never used. Signed-off-by: Leena <19555355+sploschee@users.noreply.github.com> --- docs/getting-started/configuration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/getting-started/configuration.md b/docs/getting-started/configuration.md index 3413f32875..9ce65294ad 100644 --- a/docs/getting-started/configuration.md +++ b/docs/getting-started/configuration.md @@ -165,7 +165,7 @@ Open `packages/app/src/App.tsx` and below the last `import` line, add: ```typescript import { githubAuthApiRef } from '@backstage/core-plugin-api'; -import { SignInProviderConfig, SignInPage } from '@backstage/core-components'; +import { SignInPage } from '@backstage/core-components'; ``` Search for `const app = createApp({` in this file, and below `apis,` add: From 17f398faceee68c5e5c218607cb77359712ef8e2 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 20 Sep 2022 22:10:22 +0200 Subject: [PATCH 055/117] cli: skip testinging of repo test --since matches nothing Signed-off-by: Patrik Oldsberg --- packages/cli/src/commands/repo/test.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/cli/src/commands/repo/test.ts b/packages/cli/src/commands/repo/test.ts index e873ac2b9b..578cb15e83 100644 --- a/packages/cli/src/commands/repo/test.ts +++ b/packages/cli/src/commands/repo/test.ts @@ -101,6 +101,12 @@ export async function command(opts: OptionValues, cmd: Command): Promise { pkg => pkg.allLocalDependents.keys(), ), ); + + if (packageNames.length === 0) { + console.log(`No packages changed since ${opts.since}`); + return; + } + args.push('--selectProjects', ...packageNames); } From 15ee6967724b1fbef3858949f82f434bc48a67d5 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 20 Sep 2022 22:24:22 +0200 Subject: [PATCH 056/117] yarn.lock: fix winston Signed-off-by: Patrik Oldsberg --- yarn.lock | 115 +++++++++++++++++++++++++++--------------------------- 1 file changed, 58 insertions(+), 57 deletions(-) diff --git a/yarn.lock b/yarn.lock index 6d22f7a0cf..fe3fa770a9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2851,7 +2851,7 @@ __metadata: "@backstage/plugin-permission-node": ^0.6.5-next.3 express: ^4.17.1 express-promise-router: ^4.1.0 - winston: ^3.8.1 + winston: ^3.2.1 languageName: unknown linkType: soft @@ -2930,7 +2930,7 @@ __metadata: supertest: ^6.1.3 tar: ^6.1.2 uuid: ^8.3.2 - winston: ^3.8.1 + winston: ^3.2.1 yauzl: ^2.10.0 yn: ^4.0.0 peerDependencies: @@ -2962,7 +2962,7 @@ __metadata: "@backstage/plugin-permission-common": ^0.6.4-next.2 "@types/express": ^4.17.6 express: ^4.17.1 - winston: ^3.8.1 + winston: ^3.2.1 winston-transport: ^4.5.0 languageName: unknown linkType: soft @@ -2986,7 +2986,7 @@ __metadata: node-abort-controller: ^3.0.1 uuid: ^8.0.0 wait-for-expect: ^3.0.2 - winston: ^3.8.1 + winston: ^3.2.1 zod: ^3.9.5 languageName: unknown linkType: soft @@ -3667,7 +3667,7 @@ __metadata: msw: ^0.47.0 node-fetch: ^2.6.5 supertest: ^6.1.3 - winston: ^3.8.1 + winston: ^3.2.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -3736,7 +3736,7 @@ __metadata: http-proxy-middleware: ^2.0.0 msw: ^0.47.0 supertest: ^6.1.6 - winston: ^3.8.1 + winston: ^3.2.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -3958,7 +3958,7 @@ __metadata: mock-fs: ^5.1.0 msw: ^0.47.0 supertest: ^6.1.3 - winston: ^3.8.1 + winston: ^3.2.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -4022,7 +4022,7 @@ __metadata: passport-saml: ^3.1.2 supertest: ^6.1.3 uuid: ^8.0.0 - winston: ^3.8.1 + winston: ^3.2.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -4043,7 +4043,7 @@ __metadata: msw: ^0.47.0 node-fetch: ^2.6.7 uuid: ^8.0.0 - winston: ^3.8.1 + winston: ^3.2.1 languageName: unknown linkType: soft @@ -4064,7 +4064,7 @@ __metadata: msw: ^0.47.0 p-limit: ^3.1.0 supertest: ^6.1.6 - winston: ^3.8.1 + winston: ^3.2.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -4127,7 +4127,7 @@ __metadata: express: ^4.17.1 express-promise-router: ^4.1.0 supertest: ^6.1.3 - winston: ^3.8.1 + winston: ^3.2.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -4174,7 +4174,7 @@ __metadata: express: ^4.17.1 express-promise-router: ^4.1.0 knex: ^2.0.0 - winston: ^3.8.1 + winston: ^3.2.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -4272,7 +4272,7 @@ __metadata: lodash: ^4.17.21 p-limit: ^3.0.2 uuid: ^8.0.0 - winston: ^3.8.1 + winston: ^3.2.1 yaml: ^2.0.0 languageName: unknown linkType: soft @@ -4296,7 +4296,7 @@ __metadata: msw: ^0.47.0 node-fetch: ^2.6.7 uuid: ^8.0.0 - winston: ^3.8.1 + winston: ^3.2.1 languageName: unknown linkType: soft @@ -4314,7 +4314,7 @@ __metadata: "@backstage/plugin-catalog-backend": ^1.4.0-next.3 msw: ^0.47.0 uuid: ^8.0.0 - winston: ^3.8.1 + winston: ^3.2.1 languageName: unknown linkType: soft @@ -4335,7 +4335,7 @@ __metadata: msw: ^0.47.0 node-fetch: ^2.6.7 uuid: ^8.0.0 - winston: ^3.8.1 + winston: ^3.2.1 languageName: unknown linkType: soft @@ -4357,7 +4357,7 @@ __metadata: lodash: ^4.17.21 msw: ^0.47.0 node-fetch: ^2.6.7 - winston: ^3.8.1 + winston: ^3.2.1 languageName: unknown linkType: soft @@ -4379,7 +4379,7 @@ __metadata: msw: ^0.47.0 node-fetch: ^2.6.7 uuid: ^8.0.0 - winston: ^3.8.1 + winston: ^3.2.1 languageName: unknown linkType: soft @@ -4405,7 +4405,7 @@ __metadata: msw: ^0.47.0 node-fetch: ^2.6.7 uuid: ^8.0.0 - winston: ^3.8.1 + winston: ^3.2.1 languageName: unknown linkType: soft @@ -4429,7 +4429,7 @@ __metadata: msw: ^0.47.0 node-fetch: ^2.6.7 uuid: ^8.0.0 - winston: ^3.8.1 + winston: ^3.2.1 languageName: unknown linkType: soft @@ -4449,7 +4449,7 @@ __metadata: ldapjs: ^2.2.0 lodash: ^4.17.21 uuid: ^8.0.0 - winston: ^3.8.1 + winston: ^3.2.1 languageName: unknown linkType: soft @@ -4474,7 +4474,7 @@ __metadata: p-limit: ^3.0.2 qs: ^6.9.4 uuid: ^8.0.0 - winston: ^3.8.1 + winston: ^3.2.1 languageName: unknown linkType: soft @@ -4493,7 +4493,7 @@ __metadata: "@backstage/plugin-catalog-node": ^1.1.0-next.2 "@backstage/types": ^1.0.0 openapi-types: ^12.0.0 - winston: ^3.8.1 + winston: ^3.2.1 yaml: ^2.1.1 languageName: unknown linkType: soft @@ -4544,7 +4544,7 @@ __metadata: supertest: ^6.1.3 uuid: ^8.0.0 wait-for-expect: ^3.0.2 - winston: ^3.8.1 + winston: ^3.2.1 yaml: ^2.0.0 yn: ^4.0.0 zod: ^3.11.6 @@ -4627,7 +4627,7 @@ __metadata: graphql-type-json: ^0.3.2 msw: ^0.47.0 node-fetch: ^2.6.7 - winston: ^3.8.1 + winston: ^3.2.1 languageName: unknown linkType: soft @@ -4966,7 +4966,7 @@ __metadata: msw: ^0.47.0 supertest: ^6.1.6 uuid: ^8.3.2 - winston: ^3.8.1 + winston: ^3.2.1 xml2js: ^0.4.23 yn: ^4.0.0 languageName: unknown @@ -5604,7 +5604,7 @@ __metadata: msw: ^0.47.0 reflect-metadata: ^0.1.13 supertest: ^6.1.3 - winston: ^3.8.1 + winston: ^3.2.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -5721,7 +5721,7 @@ __metadata: msw: ^0.47.0 promise-any-polyfill: ^1.0.1 supertest: ^6.1.6 - winston: ^3.8.1 + winston: ^3.2.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -5788,7 +5788,7 @@ __metadata: kafkajs: ^2.0.0 lodash: ^4.17.21 supertest: ^6.1.3 - winston: ^3.8.1 + winston: ^3.2.1 languageName: unknown linkType: soft @@ -5856,7 +5856,7 @@ __metadata: morgan: ^1.10.0 stream-buffers: ^3.0.2 supertest: ^6.1.3 - winston: ^3.8.1 + winston: ^3.2.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -6071,7 +6071,7 @@ __metadata: msw: ^0.47.0 node-fetch: ^2.6.7 supertest: ^6.1.6 - winston: ^3.8.1 + winston: ^3.2.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -6129,7 +6129,7 @@ __metadata: msw: ^0.47.0 node-fetch: ^2.6.7 supertest: ^6.1.6 - winston: ^3.8.1 + winston: ^3.2.1 yn: ^4.0.0 zod: ^3.11.6 languageName: unknown @@ -6246,7 +6246,7 @@ __metadata: node-fetch: ^2.6.7 supertest: ^6.1.3 uuid: ^8.2.0 - winston: ^3.8.1 + winston: ^3.2.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -6320,7 +6320,7 @@ __metadata: msw: ^0.47.0 supertest: ^6.1.3 uuid: ^8.0.0 - winston: ^3.8.1 + winston: ^3.2.1 yaml: ^2.0.0 yn: ^4.0.0 yup: ^0.32.9 @@ -6348,7 +6348,7 @@ __metadata: msw: ^0.47.0 node-fetch: ^2.6.7 supertest: ^6.1.3 - winston: ^3.8.1 + winston: ^3.2.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -6405,7 +6405,7 @@ __metadata: fs-extra: 10.1.0 mock-fs: ^5.1.0 msw: ^0.47.0 - winston: ^3.8.1 + winston: ^3.2.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -6441,7 +6441,7 @@ __metadata: "@backstage/config": ^1.0.2-next.0 "@backstage/plugin-scaffolder-backend": ^1.6.0-next.3 "@backstage/types": ^1.0.0 - winston: ^3.8.1 + winston: ^3.2.1 yeoman-environment: ^3.9.1 languageName: unknown linkType: soft @@ -6503,7 +6503,7 @@ __metadata: supertest: ^6.1.3 uuid: ^8.2.0 vm2: ^3.9.11 - winston: ^3.8.1 + winston: ^3.2.1 yaml: ^2.0.0 zen-observable: ^0.8.15 zod: ^3.11.6 @@ -6602,7 +6602,7 @@ __metadata: elastic-builder: ^2.16.0 lodash: ^4.17.21 uuid: ^8.3.2 - winston: ^3.8.1 + winston: ^3.2.1 languageName: unknown linkType: soft @@ -6640,7 +6640,7 @@ __metadata: ndjson: ^2.0.0 node-abort-controller: ^3.0.1 uuid: ^8.3.2 - winston: ^3.8.1 + winston: ^3.2.1 languageName: unknown linkType: soft @@ -6666,7 +6666,7 @@ __metadata: lodash: ^4.17.21 qs: ^6.10.1 supertest: ^6.1.3 - winston: ^3.8.1 + winston: ^3.2.1 yn: ^4.0.0 zod: ^3.11.6 languageName: unknown @@ -6919,7 +6919,7 @@ __metadata: "@backstage/plugin-search-common": ^1.0.1-next.0 node-fetch: ^2.6.7 qs: ^6.9.4 - winston: ^3.8.1 + winston: ^3.2.1 languageName: unknown linkType: soft @@ -6992,7 +6992,7 @@ __metadata: json-rules-engine: ^6.1.2 lodash: ^4.17.21 luxon: ^3.0.0 - winston: ^3.8.1 + winston: ^3.2.1 languageName: unknown linkType: soft @@ -7023,7 +7023,7 @@ __metadata: supertest: ^6.1.3 uuid: ^8.3.2 wait-for-expect: ^3.0.2 - winston: ^3.8.1 + winston: ^3.2.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -7051,7 +7051,7 @@ __metadata: "@backstage/types": ^1.0.0 "@types/luxon": ^3.0.0 luxon: ^3.0.0 - winston: ^3.8.1 + winston: ^3.2.1 languageName: unknown linkType: soft @@ -7184,7 +7184,7 @@ __metadata: node-fetch: ^2.6.7 p-limit: ^3.1.0 supertest: ^6.1.3 - winston: ^3.8.1 + winston: ^3.2.1 languageName: unknown linkType: soft @@ -7254,7 +7254,7 @@ __metadata: p-limit: ^3.1.0 recursive-readdir: ^2.2.2 supertest: ^6.1.3 - winston: ^3.8.1 + winston: ^3.2.1 languageName: unknown linkType: soft @@ -7355,7 +7355,7 @@ __metadata: leasot: ^12.0.0 msw: ^0.47.0 supertest: ^6.1.3 - winston: ^3.8.1 + winston: ^3.2.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -7407,7 +7407,7 @@ __metadata: express-promise-router: ^4.1.0 knex: ^2.0.0 supertest: ^6.1.3 - winston: ^3.8.1 + winston: ^3.2.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -7465,7 +7465,7 @@ __metadata: node-fetch: ^2.6.7 p-limit: ^3.1.0 supertest: ^6.1.6 - winston: ^3.8.1 + winston: ^3.7.2 yn: ^5.0.0 languageName: unknown linkType: soft @@ -9260,7 +9260,7 @@ __metadata: msw: ^0.47.0 supertest: ^6.1.6 uuid: ^8.3.2 - winston: ^3.8.1 + winston: ^3.2.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -13449,7 +13449,7 @@ __metadata: serve-handler: ^6.1.3 techdocs-cli-embedded-app: "link:../techdocs-cli-embedded-app" ts-node: ^10.0.0 - winston: ^3.8.1 + winston: ^3.2.1 bin: techdocs-cli: bin/techdocs-cli languageName: unknown @@ -22723,7 +22723,7 @@ __metadata: pg: ^8.3.0 pg-connection-string: ^2.3.0 prom-client: ^14.0.1 - winston: ^3.8.1 + winston: ^3.2.1 languageName: unknown linkType: soft @@ -40591,10 +40591,11 @@ __metadata: languageName: node linkType: hard -"winston@npm:^3.8.1": - version: 3.8.1 - resolution: "winston@npm:3.8.1" +"winston@npm:^3.2.1, winston@npm:^3.7.2, winston@npm:^3.8.1": + version: 3.8.2 + resolution: "winston@npm:3.8.2" dependencies: + "@colors/colors": 1.5.0 "@dabh/diagnostics": ^2.0.2 async: ^3.2.3 is-stream: ^2.0.0 @@ -40605,7 +40606,7 @@ __metadata: stack-trace: 0.0.x triple-beam: ^1.3.0 winston-transport: ^4.5.0 - checksum: 14637222a4239f1ee7e629dbbf0c65161abe95eeb7acd275caf210c5d47d93254fdb007291ea75b5e241d4bb6dd3c29d000bd04ae5420a347711ae7cd0b2da88 + checksum: f7b901798b92ab9e93c850110bf6e98500e9a0e762b62dab410cf928b2a4145533dfa6d3d2b24f7bf0dc94b53808d5bd28aaaeff9a4b43b89ea4c798cce308ea languageName: node linkType: hard From 0963b4d5fb9a26a8b0389f0002daefd3b2022e72 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 20 Sep 2022 23:13:20 +0200 Subject: [PATCH 057/117] tech-insights-node: update package role Signed-off-by: Patrik Oldsberg --- .changeset/shaggy-books-smell.md | 5 +++++ plugins/tech-insights-node/package.json | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/shaggy-books-smell.md diff --git a/.changeset/shaggy-books-smell.md b/.changeset/shaggy-books-smell.md new file mode 100644 index 0000000000..3f8aaa389c --- /dev/null +++ b/.changeset/shaggy-books-smell.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-tech-insights-node': patch +--- + +Updated package role to be `node-library`. diff --git a/plugins/tech-insights-node/package.json b/plugins/tech-insights-node/package.json index baa504976c..c86061d260 100644 --- a/plugins/tech-insights-node/package.json +++ b/plugins/tech-insights-node/package.json @@ -10,7 +10,7 @@ "types": "dist/index.d.ts" }, "backstage": { - "role": "backend-plugin" + "role": "node-library" }, "homepage": "https://backstage.io", "repository": { From a20494aa1c6aa2a528e1af5f688a4d66e959b8e5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 20 Sep 2022 21:48:31 +0000 Subject: [PATCH 058/117] chore(deps): update dependency @graphql-codegen/cli to v2.12.1 Signed-off-by: Renovate Bot --- yarn.lock | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/yarn.lock b/yarn.lock index 513461e73d..ac87a07b2e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8195,11 +8195,11 @@ __metadata: linkType: hard "@graphql-codegen/cli@npm:^2.3.1": - version: 2.12.0 - resolution: "@graphql-codegen/cli@npm:2.12.0" + version: 2.12.1 + resolution: "@graphql-codegen/cli@npm:2.12.1" dependencies: "@graphql-codegen/core": 2.6.2 - "@graphql-codegen/plugin-helpers": ^2.7.0 + "@graphql-codegen/plugin-helpers": ^2.7.1 "@graphql-tools/apollo-engine-loader": ^7.3.6 "@graphql-tools/code-file-loader": ^7.3.1 "@graphql-tools/git-loader": ^7.2.1 @@ -8210,7 +8210,7 @@ __metadata: "@graphql-tools/prisma-loader": ^7.2.7 "@graphql-tools/url-loader": ^7.13.2 "@graphql-tools/utils": ^8.9.0 - "@whatwg-node/fetch": ^0.3.0 + "@whatwg-node/fetch": ^0.4.0 ansi-escapes: ^4.3.1 chalk: ^4.1.0 chokidar: ^3.5.2 @@ -8237,7 +8237,7 @@ __metadata: graphql-code-generator: cjs/bin.js graphql-codegen: cjs/bin.js graphql-codegen-esm: esm/bin.js - checksum: f8010d651e7f7bec3ac04da0c250a7c9d863f0c175f923553b9701e99cb61d9feb7393fa11ff601bf31c6f6d4b40c81e28f39cd8797b611b5f0456c46cbd6045 + checksum: c3e3772f1bd7d6a35ecc42a0fcb96d7e417e184170254ef89286f029a31eba688465179d572897f52197199757edf16e5a7442e4e7fb2612cd79530ea33572a3 languageName: node linkType: hard @@ -8287,9 +8287,9 @@ __metadata: languageName: node linkType: hard -"@graphql-codegen/plugin-helpers@npm:^2.7.0": - version: 2.7.0 - resolution: "@graphql-codegen/plugin-helpers@npm:2.7.0" +"@graphql-codegen/plugin-helpers@npm:^2.7.1": + version: 2.7.1 + resolution: "@graphql-codegen/plugin-helpers@npm:2.7.1" dependencies: "@graphql-tools/utils": ^8.8.0 change-case-all: 1.0.14 @@ -8299,7 +8299,7 @@ __metadata: tslib: ~2.4.0 peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 413099d58e99d4eb3a7d806f3b7eb5c7052e40a680cc2e9ced11eb0b8af0aede8a3fdcdeca937daf89614b6db9cf0a9235ad6f694d211f097c40c1cbf07b3c6a + checksum: fffb801ccccee36d729c134caa79cc5eb6a1b3717253646cd1759e2dd0e754bccb6b0b6b5341a649fd18794f8b0b970776b71907d5a7b15048521ea9eb283180 languageName: node linkType: hard @@ -15891,20 +15891,19 @@ __metadata: languageName: node linkType: hard -"@whatwg-node/fetch@npm:^0.3.0": - version: 0.3.2 - resolution: "@whatwg-node/fetch@npm:0.3.2" +"@whatwg-node/fetch@npm:^0.4.0": + version: 0.4.4 + resolution: "@whatwg-node/fetch@npm:0.4.4" 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 - checksum: d9cb1b1293694edf0d61889512e5b5a0b8b69db2cf8c4cca4acdbbe652f899742456d10954312ef96a8f7257a898d6275b50df03cc481e5a97740cb301930892 + checksum: f91ebad3c07f1244dec0c57b1bdc4d70e8e2b0eccd237407f649439eb091e1e8a23dfb8e13159468c727537c5ebf6f66f20f5659ca682495cd1a0752de2c2fad languageName: node linkType: hard From 6ddfcd4d9db73fd9fad1e657c6f485a2767ea175 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 20 Sep 2022 23:54:53 +0200 Subject: [PATCH 059/117] Update docs/features/kubernetes/authentication.md Signed-off-by: Patrik Oldsberg --- docs/features/kubernetes/authentication.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/features/kubernetes/authentication.md b/docs/features/kubernetes/authentication.md index e4aaba5f33..d44d3a4a64 100644 --- a/docs/features/kubernetes/authentication.md +++ b/docs/features/kubernetes/authentication.md @@ -34,7 +34,7 @@ The Azure server side authentication provider works by authenticating on the ser the Azure CLI, please note that [Azure AD Authentication][1] is a requirement and has to be enabled in your AKS cluster, then follow these steps: -- [Install the Azure CLI][2] in the device where the backstage application will run. +- [Install the Azure CLI][2] in the environment where the backstage application will run. - Login with your Azure/Microsoft account with `az login` in the server's terminal. - Go to your AKS cluster's resource page in Azure Console and follow the steps in the `Connect` tab to set the subscription and get your credentials for `kubectl` integration. From 67f0c0abe1da531588d7c7af0810e2b165795332 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 20 Sep 2022 22:09:15 +0000 Subject: [PATCH 060/117] fix(deps): update dependency @apollo/explorer to v1.2.0 Signed-off-by: Renovate Bot --- yarn.lock | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 3f8f487895..4f475f18d9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -64,11 +64,13 @@ __metadata: linkType: hard "@apollo/explorer@npm:^1.1.1": - version: 1.1.1 - resolution: "@apollo/explorer@npm:1.1.1" + version: 1.2.0 + resolution: "@apollo/explorer@npm:1.2.0" dependencies: + "@types/whatwg-mimetype": ^3.0.0 graphql-ws: ^5.9.0 subscriptions-transport-ws: ^0.11.0 + whatwg-mimetype: ^3.0.0 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -80,7 +82,7 @@ __metadata: optional: true use-deep-compare-effect: optional: true - checksum: f9a22c76c557a50c5a1779dc593dd3de970073558f209808faa8d6678a1469a733b564baeb741c36345d81a782230791443ebc4f2de317d90a10893ef1a18882 + checksum: 67cf0b5e8a23abb71ad1e68266529b8e8e1ce66652208c9942c554f21148364fd49afa5e619ecfddf611dd19067aa81ab8b2e828944122dfdc81e79a27ccf37c languageName: node linkType: hard @@ -15350,6 +15352,13 @@ __metadata: languageName: node linkType: hard +"@types/whatwg-mimetype@npm:^3.0.0": + version: 3.0.0 + resolution: "@types/whatwg-mimetype@npm:3.0.0" + checksum: 98254edcddb5b9580aa41c19e6c96d2bfb178285d5c2560e3a1f321f14da70192adc82950baecd2cad5876098b0677fbe813db1edf9ab9ba0a9996f0bf2bb703 + languageName: node + linkType: hard + "@types/ws@npm:^6.0.1": version: 6.0.4 resolution: "@types/ws@npm:6.0.4" From 0f6e7b35142aec3d1857bbb95d1f2c8e04a0f292 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 21 Sep 2022 00:09:41 +0000 Subject: [PATCH 061/117] fix(deps): update dependency @google-cloud/firestore to v6.2.0 Signed-off-by: Renovate Bot --- yarn.lock | 145 +++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 100 insertions(+), 45 deletions(-) diff --git a/yarn.lock b/yarn.lock index 95f366d6bf..f42487858b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8100,14 +8100,14 @@ __metadata: linkType: hard "@google-cloud/firestore@npm:^6.0.0": - version: 6.0.0 - resolution: "@google-cloud/firestore@npm:6.0.0" + version: 6.2.0 + resolution: "@google-cloud/firestore@npm:6.2.0" dependencies: fast-deep-equal: ^3.1.1 functional-red-black-tree: ^1.0.1 - google-gax: ^3.0.1 + google-gax: ^3.5.1 protobufjs: ^7.0.0 - checksum: 4b51ed6da004fe9c699cecde3e663f4b6c94937fdf4dd01c27a22df9845bac202d9869d39d8b4a3b9bd38637762754f925b32e4ea4f8ffb755fcf6528988aadf + checksum: fce0d729d63b5722df0dcedb78c8b494b2876de128128de8c8dc7d9add1ff7e00a8df1d04e7e2210a71331e623877e67149593341f714d2b0f92b6fef73dfcbd languageName: node linkType: hard @@ -8974,7 +8974,17 @@ __metadata: languageName: node linkType: hard -"@grpc/proto-loader@npm:^0.6.12, @grpc/proto-loader@npm:^0.6.4": +"@grpc/grpc-js@npm:~1.7.0": + version: 1.7.0 + resolution: "@grpc/grpc-js@npm:1.7.0" + dependencies: + "@grpc/proto-loader": ^0.7.0 + "@types/node": ">=12.12.47" + checksum: 22eee49f9f5aea1abf9566426d993fe4457c94c2afacd3dfb932cc46dbc06ad6ce8f1422fac357d592dd0c75a5cf03405ea15310064ab3c45e1e418f22c48c2b + languageName: node + linkType: hard + +"@grpc/proto-loader@npm:^0.6.4": version: 0.6.12 resolution: "@grpc/proto-loader@npm:0.6.12" dependencies: @@ -24442,29 +24452,6 @@ __metadata: languageName: node linkType: hard -"google-gax@npm:^3.0.1": - version: 3.0.3 - resolution: "google-gax@npm:3.0.3" - dependencies: - "@grpc/grpc-js": ~1.6.0 - "@grpc/proto-loader": ^0.6.12 - "@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.1 - object-hash: ^3.0.0 - proto3-json-serializer: ^1.0.0 - protobufjs: 6.11.3 - retry-request: ^5.0.0 - bin: - compileProtos: build/tools/compileProtos.js - checksum: 4f7f38eb39cba1ee80f9569976d4b43db6803b4ae9ebc4de0c348b129c7d6fdd3f43f9add87c07cb1026de19dd78cf101b1c8427016e7f1dcad17dc9e166acf0 - languageName: node - linkType: hard - "google-gax@npm:^3.3.0": version: 3.3.0 resolution: "google-gax@npm:3.3.0" @@ -24489,6 +24476,31 @@ __metadata: languageName: node linkType: hard +"google-gax@npm:^3.5.1": + version: 3.5.1 + resolution: "google-gax@npm:3.5.1" + dependencies: + "@grpc/grpc-js": ~1.7.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.1 + object-hash: ^3.0.0 + proto3-json-serializer: ^1.0.0 + protobufjs: 7.1.1 + protobufjs-cli: 1.0.2 + retry-request: ^5.0.0 + bin: + compileProtos: build/tools/compileProtos.js + minifyProtoJson: build/tools/minify.js + checksum: 81ecd10981554944a117ace753b2fc8f6d82b26b244db005d01fc5e127181571de9a71ec02b28aa2e233c6fe696108617512a8b090c8304e753913f1ca441767 + languageName: node + linkType: hard + "google-p12-pem@npm:^4.0.0": version: 4.0.0 resolution: "google-p12-pem@npm:4.0.0" @@ -34011,27 +34023,26 @@ __metadata: languageName: node linkType: hard -"protobufjs@npm:6.11.3, protobufjs@npm:^6.10.0, protobufjs@npm:^6.11.2": - version: 6.11.3 - resolution: "protobufjs@npm:6.11.3" +"protobufjs-cli@npm:1.0.2": + version: 1.0.2 + resolution: "protobufjs-cli@npm:1.0.2" dependencies: - "@protobufjs/aspromise": ^1.1.2 - "@protobufjs/base64": ^1.1.2 - "@protobufjs/codegen": ^2.0.4 - "@protobufjs/eventemitter": ^1.1.0 - "@protobufjs/fetch": ^1.1.0 - "@protobufjs/float": ^1.0.2 - "@protobufjs/inquire": ^1.1.0 - "@protobufjs/path": ^1.1.2 - "@protobufjs/pool": ^1.1.0 - "@protobufjs/utf8": ^1.1.0 - "@types/long": ^4.0.1 - "@types/node": ">=13.7.0" - long: ^4.0.0 + 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 + peerDependencies: + protobufjs: ^7.0.0 bin: pbjs: bin/pbjs pbts: bin/pbts - checksum: 4a6ce1964167e4c45c53fd8a312d7646415c777dd31b4ba346719947b88e61654912326101f927da387d6b6473ab52a7ea4f54d6f15d63b31130ce28e2e15070 + checksum: 75dfa8bb76ea390c4f4926120439892fce6c730ec56960e85d5f03cac9c390fd7467d1254833542d722616ab4cb64a622e6de2fb7c75e7c42972878ae447b773 languageName: node linkType: hard @@ -34056,6 +34067,50 @@ __metadata: languageName: node linkType: hard +"protobufjs@npm:7.1.1": + version: 7.1.1 + resolution: "protobufjs@npm:7.1.1" + dependencies: + "@protobufjs/aspromise": ^1.1.2 + "@protobufjs/base64": ^1.1.2 + "@protobufjs/codegen": ^2.0.4 + "@protobufjs/eventemitter": ^1.1.0 + "@protobufjs/fetch": ^1.1.0 + "@protobufjs/float": ^1.0.2 + "@protobufjs/inquire": ^1.1.0 + "@protobufjs/path": ^1.1.2 + "@protobufjs/pool": ^1.1.0 + "@protobufjs/utf8": ^1.1.0 + "@types/node": ">=13.7.0" + long: ^5.0.0 + checksum: f6b0e7cec29056cefb83902009b39d24ac14a6117b52bc9b291b29778dad010e42d5563a20045e4de89b880114f4214f984396c8296a0d1b22f5dc7d9fe6705e + languageName: node + linkType: hard + +"protobufjs@npm:^6.10.0, protobufjs@npm:^6.11.2": + version: 6.11.3 + resolution: "protobufjs@npm:6.11.3" + dependencies: + "@protobufjs/aspromise": ^1.1.2 + "@protobufjs/base64": ^1.1.2 + "@protobufjs/codegen": ^2.0.4 + "@protobufjs/eventemitter": ^1.1.0 + "@protobufjs/fetch": ^1.1.0 + "@protobufjs/float": ^1.0.2 + "@protobufjs/inquire": ^1.1.0 + "@protobufjs/path": ^1.1.2 + "@protobufjs/pool": ^1.1.0 + "@protobufjs/utf8": ^1.1.0 + "@types/long": ^4.0.1 + "@types/node": ">=13.7.0" + long: ^4.0.0 + bin: + pbjs: bin/pbjs + pbts: bin/pbts + checksum: 4a6ce1964167e4c45c53fd8a312d7646415c777dd31b4ba346719947b88e61654912326101f927da387d6b6473ab52a7ea4f54d6f15d63b31130ce28e2e15070 + languageName: node + linkType: hard + "protocols@npm:^1.1.0, protocols@npm:^1.4.0": version: 1.4.7 resolution: "protocols@npm:1.4.7" From 5b1bd6b261ede1aa9414b1f69dba96e8770ccb7d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 21 Sep 2022 00:42:13 +0000 Subject: [PATCH 062/117] fix(deps): update dependency @google-cloud/storage to v6.5.0 Signed-off-by: Renovate Bot --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index dc85bf56f9..d7f3252e2b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8136,8 +8136,8 @@ __metadata: linkType: hard "@google-cloud/storage@npm:^6.0.0": - version: 6.4.2 - resolution: "@google-cloud/storage@npm:6.4.2" + version: 6.5.0 + resolution: "@google-cloud/storage@npm:6.5.0" dependencies: "@google-cloud/paginator": ^3.0.7 "@google-cloud/projectify": ^3.0.0 @@ -8157,7 +8157,7 @@ __metadata: retry-request: ^5.0.0 teeny-request: ^8.0.0 uuid: ^8.0.0 - checksum: ebd8bf46675f21b429915d9889c56574acc395745126e40f96803334c1e2d8b35a60d22b1f0ecf9db4bb67c373f53e4eeef9406af334cdf9c0ca8461da777ab3 + checksum: b97dc19814e4154ef0920202e79feaf14c3d7de2ea9aa295bc2e2784b3b0ba4e7feabdd4b499d0f2e996accc4fa965b974174bdb60d5f51408967a268bdc5b9f languageName: node linkType: hard From 05979ea9ec3deebe3226eda2c1f7409911a19922 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 21 Sep 2022 01:10:33 +0000 Subject: [PATCH 063/117] fix(deps): update dependency @swc/core to v1.3.2 Signed-off-by: Renovate Bot --- storybook/yarn.lock | 110 ++++++++++++++++++++++---------------------- yarn.lock | 110 ++++++++++++++++++++++---------------------- 2 files changed, 110 insertions(+), 110 deletions(-) diff --git a/storybook/yarn.lock b/storybook/yarn.lock index 3409a96314..4a5d57c5b2 100644 --- a/storybook/yarn.lock +++ b/storybook/yarn.lock @@ -2977,126 +2977,126 @@ __metadata: languageName: node linkType: hard -"@swc/core-android-arm-eabi@npm:1.2.249": - version: 1.2.249 - resolution: "@swc/core-android-arm-eabi@npm:1.2.249" +"@swc/core-android-arm-eabi@npm:1.3.2": + version: 1.3.2 + resolution: "@swc/core-android-arm-eabi@npm:1.3.2" dependencies: "@swc/wasm": 1.2.122 conditions: os=android & cpu=arm languageName: node linkType: hard -"@swc/core-android-arm64@npm:1.2.249": - version: 1.2.249 - resolution: "@swc/core-android-arm64@npm:1.2.249" +"@swc/core-android-arm64@npm:1.3.2": + version: 1.3.2 + resolution: "@swc/core-android-arm64@npm:1.3.2" dependencies: "@swc/wasm": 1.2.130 conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.2.249": - version: 1.2.249 - resolution: "@swc/core-darwin-arm64@npm:1.2.249" +"@swc/core-darwin-arm64@npm:1.3.2": + version: 1.3.2 + resolution: "@swc/core-darwin-arm64@npm:1.3.2" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.2.249": - version: 1.2.249 - resolution: "@swc/core-darwin-x64@npm:1.2.249" +"@swc/core-darwin-x64@npm:1.3.2": + version: 1.3.2 + resolution: "@swc/core-darwin-x64@npm:1.3.2" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-freebsd-x64@npm:1.2.249": - version: 1.2.249 - resolution: "@swc/core-freebsd-x64@npm:1.2.249" +"@swc/core-freebsd-x64@npm:1.3.2": + version: 1.3.2 + resolution: "@swc/core-freebsd-x64@npm:1.3.2" dependencies: "@swc/wasm": 1.2.130 conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.2.249": - version: 1.2.249 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.2.249" +"@swc/core-linux-arm-gnueabihf@npm:1.3.2": + version: 1.3.2 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.2" dependencies: "@swc/wasm": 1.2.130 conditions: os=linux & cpu=arm languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.2.249": - version: 1.2.249 - resolution: "@swc/core-linux-arm64-gnu@npm:1.2.249" +"@swc/core-linux-arm64-gnu@npm:1.3.2": + version: 1.3.2 + resolution: "@swc/core-linux-arm64-gnu@npm:1.3.2" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.2.249": - version: 1.2.249 - resolution: "@swc/core-linux-arm64-musl@npm:1.2.249" +"@swc/core-linux-arm64-musl@npm:1.3.2": + version: 1.3.2 + resolution: "@swc/core-linux-arm64-musl@npm:1.3.2" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.2.249": - version: 1.2.249 - resolution: "@swc/core-linux-x64-gnu@npm:1.2.249" +"@swc/core-linux-x64-gnu@npm:1.3.2": + version: 1.3.2 + resolution: "@swc/core-linux-x64-gnu@npm:1.3.2" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.2.249": - version: 1.2.249 - resolution: "@swc/core-linux-x64-musl@npm:1.2.249" +"@swc/core-linux-x64-musl@npm:1.3.2": + version: 1.3.2 + resolution: "@swc/core-linux-x64-musl@npm:1.3.2" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.2.249": - version: 1.2.249 - resolution: "@swc/core-win32-arm64-msvc@npm:1.2.249" +"@swc/core-win32-arm64-msvc@npm:1.3.2": + version: 1.3.2 + resolution: "@swc/core-win32-arm64-msvc@npm:1.3.2" dependencies: "@swc/wasm": 1.2.130 conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.2.249": - version: 1.2.249 - resolution: "@swc/core-win32-ia32-msvc@npm:1.2.249" +"@swc/core-win32-ia32-msvc@npm:1.3.2": + version: 1.3.2 + resolution: "@swc/core-win32-ia32-msvc@npm:1.3.2" dependencies: "@swc/wasm": 1.2.130 conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.2.249": - version: 1.2.249 - resolution: "@swc/core-win32-x64-msvc@npm:1.2.249" +"@swc/core-win32-x64-msvc@npm:1.3.2": + version: 1.3.2 + resolution: "@swc/core-win32-x64-msvc@npm:1.3.2" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@swc/core@npm:^1.2.239": - version: 1.2.249 - resolution: "@swc/core@npm:1.2.249" + version: 1.3.2 + resolution: "@swc/core@npm:1.3.2" dependencies: - "@swc/core-android-arm-eabi": 1.2.249 - "@swc/core-android-arm64": 1.2.249 - "@swc/core-darwin-arm64": 1.2.249 - "@swc/core-darwin-x64": 1.2.249 - "@swc/core-freebsd-x64": 1.2.249 - "@swc/core-linux-arm-gnueabihf": 1.2.249 - "@swc/core-linux-arm64-gnu": 1.2.249 - "@swc/core-linux-arm64-musl": 1.2.249 - "@swc/core-linux-x64-gnu": 1.2.249 - "@swc/core-linux-x64-musl": 1.2.249 - "@swc/core-win32-arm64-msvc": 1.2.249 - "@swc/core-win32-ia32-msvc": 1.2.249 - "@swc/core-win32-x64-msvc": 1.2.249 + "@swc/core-android-arm-eabi": 1.3.2 + "@swc/core-android-arm64": 1.3.2 + "@swc/core-darwin-arm64": 1.3.2 + "@swc/core-darwin-x64": 1.3.2 + "@swc/core-freebsd-x64": 1.3.2 + "@swc/core-linux-arm-gnueabihf": 1.3.2 + "@swc/core-linux-arm64-gnu": 1.3.2 + "@swc/core-linux-arm64-musl": 1.3.2 + "@swc/core-linux-x64-gnu": 1.3.2 + "@swc/core-linux-x64-musl": 1.3.2 + "@swc/core-win32-arm64-msvc": 1.3.2 + "@swc/core-win32-ia32-msvc": 1.3.2 + "@swc/core-win32-x64-msvc": 1.3.2 dependenciesMeta: "@swc/core-android-arm-eabi": optional: true @@ -3126,7 +3126,7 @@ __metadata: optional: true bin: swcx: run_swcx.js - checksum: c47f17fefccd94fb7be3787e832f3e3fd62c07e22f8bf566435bd1de032efd9fdefb4a64e0eefd684a9a24902509a235afeacb5ed93e03512fa09064bf1e1268 + checksum: c2c83d0e6b4c56d65fb3723aa0be5e777823a6efe5b12702d4d44827a6c6dd8fac3c5dec7ff45222c7b22b4084bffc846f8497d697e61a1706817977256a65dc languageName: node linkType: hard diff --git a/yarn.lock b/yarn.lock index 9fa0cd8539..c6b4fe05d7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13105,126 +13105,126 @@ __metadata: languageName: node linkType: hard -"@swc/core-android-arm-eabi@npm:1.2.249": - version: 1.2.249 - resolution: "@swc/core-android-arm-eabi@npm:1.2.249" +"@swc/core-android-arm-eabi@npm:1.3.2": + version: 1.3.2 + resolution: "@swc/core-android-arm-eabi@npm:1.3.2" dependencies: "@swc/wasm": 1.2.122 conditions: os=android & cpu=arm languageName: node linkType: hard -"@swc/core-android-arm64@npm:1.2.249": - version: 1.2.249 - resolution: "@swc/core-android-arm64@npm:1.2.249" +"@swc/core-android-arm64@npm:1.3.2": + version: 1.3.2 + resolution: "@swc/core-android-arm64@npm:1.3.2" dependencies: "@swc/wasm": 1.2.130 conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.2.249": - version: 1.2.249 - resolution: "@swc/core-darwin-arm64@npm:1.2.249" +"@swc/core-darwin-arm64@npm:1.3.2": + version: 1.3.2 + resolution: "@swc/core-darwin-arm64@npm:1.3.2" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.2.249": - version: 1.2.249 - resolution: "@swc/core-darwin-x64@npm:1.2.249" +"@swc/core-darwin-x64@npm:1.3.2": + version: 1.3.2 + resolution: "@swc/core-darwin-x64@npm:1.3.2" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-freebsd-x64@npm:1.2.249": - version: 1.2.249 - resolution: "@swc/core-freebsd-x64@npm:1.2.249" +"@swc/core-freebsd-x64@npm:1.3.2": + version: 1.3.2 + resolution: "@swc/core-freebsd-x64@npm:1.3.2" dependencies: "@swc/wasm": 1.2.130 conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.2.249": - version: 1.2.249 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.2.249" +"@swc/core-linux-arm-gnueabihf@npm:1.3.2": + version: 1.3.2 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.2" dependencies: "@swc/wasm": 1.2.130 conditions: os=linux & cpu=arm languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.2.249": - version: 1.2.249 - resolution: "@swc/core-linux-arm64-gnu@npm:1.2.249" +"@swc/core-linux-arm64-gnu@npm:1.3.2": + version: 1.3.2 + resolution: "@swc/core-linux-arm64-gnu@npm:1.3.2" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.2.249": - version: 1.2.249 - resolution: "@swc/core-linux-arm64-musl@npm:1.2.249" +"@swc/core-linux-arm64-musl@npm:1.3.2": + version: 1.3.2 + resolution: "@swc/core-linux-arm64-musl@npm:1.3.2" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.2.249": - version: 1.2.249 - resolution: "@swc/core-linux-x64-gnu@npm:1.2.249" +"@swc/core-linux-x64-gnu@npm:1.3.2": + version: 1.3.2 + resolution: "@swc/core-linux-x64-gnu@npm:1.3.2" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.2.249": - version: 1.2.249 - resolution: "@swc/core-linux-x64-musl@npm:1.2.249" +"@swc/core-linux-x64-musl@npm:1.3.2": + version: 1.3.2 + resolution: "@swc/core-linux-x64-musl@npm:1.3.2" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.2.249": - version: 1.2.249 - resolution: "@swc/core-win32-arm64-msvc@npm:1.2.249" +"@swc/core-win32-arm64-msvc@npm:1.3.2": + version: 1.3.2 + resolution: "@swc/core-win32-arm64-msvc@npm:1.3.2" dependencies: "@swc/wasm": 1.2.130 conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.2.249": - version: 1.2.249 - resolution: "@swc/core-win32-ia32-msvc@npm:1.2.249" +"@swc/core-win32-ia32-msvc@npm:1.3.2": + version: 1.3.2 + resolution: "@swc/core-win32-ia32-msvc@npm:1.3.2" dependencies: "@swc/wasm": 1.2.130 conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.2.249": - version: 1.2.249 - resolution: "@swc/core-win32-x64-msvc@npm:1.2.249" +"@swc/core-win32-x64-msvc@npm:1.3.2": + version: 1.3.2 + resolution: "@swc/core-win32-x64-msvc@npm:1.3.2" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@swc/core@npm:^1.2.239": - version: 1.2.249 - resolution: "@swc/core@npm:1.2.249" + version: 1.3.2 + resolution: "@swc/core@npm:1.3.2" dependencies: - "@swc/core-android-arm-eabi": 1.2.249 - "@swc/core-android-arm64": 1.2.249 - "@swc/core-darwin-arm64": 1.2.249 - "@swc/core-darwin-x64": 1.2.249 - "@swc/core-freebsd-x64": 1.2.249 - "@swc/core-linux-arm-gnueabihf": 1.2.249 - "@swc/core-linux-arm64-gnu": 1.2.249 - "@swc/core-linux-arm64-musl": 1.2.249 - "@swc/core-linux-x64-gnu": 1.2.249 - "@swc/core-linux-x64-musl": 1.2.249 - "@swc/core-win32-arm64-msvc": 1.2.249 - "@swc/core-win32-ia32-msvc": 1.2.249 - "@swc/core-win32-x64-msvc": 1.2.249 + "@swc/core-android-arm-eabi": 1.3.2 + "@swc/core-android-arm64": 1.3.2 + "@swc/core-darwin-arm64": 1.3.2 + "@swc/core-darwin-x64": 1.3.2 + "@swc/core-freebsd-x64": 1.3.2 + "@swc/core-linux-arm-gnueabihf": 1.3.2 + "@swc/core-linux-arm64-gnu": 1.3.2 + "@swc/core-linux-arm64-musl": 1.3.2 + "@swc/core-linux-x64-gnu": 1.3.2 + "@swc/core-linux-x64-musl": 1.3.2 + "@swc/core-win32-arm64-msvc": 1.3.2 + "@swc/core-win32-ia32-msvc": 1.3.2 + "@swc/core-win32-x64-msvc": 1.3.2 dependenciesMeta: "@swc/core-android-arm-eabi": optional: true @@ -13254,7 +13254,7 @@ __metadata: optional: true bin: swcx: run_swcx.js - checksum: c47f17fefccd94fb7be3787e832f3e3fd62c07e22f8bf566435bd1de032efd9fdefb4a64e0eefd684a9a24902509a235afeacb5ed93e03512fa09064bf1e1268 + checksum: c2c83d0e6b4c56d65fb3723aa0be5e777823a6efe5b12702d4d44827a6c6dd8fac3c5dec7ff45222c7b22b4084bffc846f8497d697e61a1706817977256a65dc languageName: node linkType: hard From ece1a7d8251b43ce46d94cb586700cf8a609de35 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 21 Sep 2022 01:55:17 +0000 Subject: [PATCH 064/117] fix(deps): update dependency @tanstack/react-query to v4.3.9 Signed-off-by: Renovate Bot --- yarn.lock | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/yarn.lock b/yarn.lock index f5b027bfcf..8ff19b5192 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13301,19 +13301,18 @@ __metadata: languageName: node linkType: hard -"@tanstack/query-core@npm:4.2.3": - version: 4.2.3 - resolution: "@tanstack/query-core@npm:4.2.3" - checksum: b37efdc32b1731575eba398eda3b7a4cd3ed25ee1032d5200124c37ab4e58711d310e2e29e9e51284553a7c03c85e55cf8da6833bc3b1e215e0e43e7399ab3ca +"@tanstack/query-core@npm:4.3.8": + version: 4.3.8 + resolution: "@tanstack/query-core@npm:4.3.8" + checksum: 25ea16db7632f5acc7c80e60b9f1410cf9df430240ec5077a1607c3ffea14db2c78db800f7bc70efafd7ce26f7216cda767824fa279049cc9c7e40ac1818f38e languageName: node linkType: hard "@tanstack/react-query@npm:^4.1.3": - version: 4.2.3 - resolution: "@tanstack/react-query@npm:4.2.3" + version: 4.3.9 + resolution: "@tanstack/react-query@npm:4.3.9" dependencies: - "@tanstack/query-core": 4.2.3 - "@types/use-sync-external-store": ^0.0.3 + "@tanstack/query-core": 4.3.8 use-sync-external-store: ^1.2.0 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -13324,7 +13323,7 @@ __metadata: optional: true react-native: optional: true - checksum: 0a38ae05271e1669c6efd5cc77608103b6dfde577ecdc88c3f0e72953aea11c102c9b5a49fa2ca822f260a68f9f9646c5e847e7d87c99117b2c2e3b1356cbc8b + checksum: 1f77aadda55722519458185b4db5378d05d95bcbe9f7c4fda0ef82121a975223ede1a56729db6030984b336e533c04b1c7aa8fed344e5c52ec73a0486b65f8e7 languageName: node linkType: hard @@ -15318,13 +15317,6 @@ __metadata: languageName: node linkType: hard -"@types/use-sync-external-store@npm:^0.0.3": - version: 0.0.3 - resolution: "@types/use-sync-external-store@npm:0.0.3" - checksum: 161ddb8eec5dbe7279ac971531217e9af6b99f7783213566d2b502e2e2378ea19cf5e5ea4595039d730aa79d3d35c6567d48599f69773a02ffcff1776ec2a44e - languageName: node - linkType: hard - "@types/uuid@npm:^8.0.0": version: 8.3.4 resolution: "@types/uuid@npm:8.3.4" From 01206e334c6f6afa06ba7d682250b3db3d094d06 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 4 Sep 2022 14:01:47 +0200 Subject: [PATCH 065/117] replace usage of lerna with yarn workspaces foreach Signed-off-by: Patrik Oldsberg --- .github/workflows/deploy_nightly.yml | 2 +- .github/workflows/deploy_packages.yml | 4 ++-- package.json | 1 - 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/deploy_nightly.yml b/.github/workflows/deploy_nightly.yml index e776c47537..0432876aca 100644 --- a/.github/workflows/deploy_nightly.yml +++ b/.github/workflows/deploy_nightly.yml @@ -55,7 +55,7 @@ jobs: # not flagged as the latest release, which means that people will not get this # version of the package unless requested explicitly - name: publish nightly release - run: yarn changeset publish --tag nightly + run: yarn workspaces foreach -v --no-private npm publish --tag nightly env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.github/workflows/deploy_packages.yml b/.github/workflows/deploy_packages.yml index f2e4cbeb4c..063a6107b6 100644 --- a/.github/workflows/deploy_packages.yml +++ b/.github/workflows/deploy_packages.yml @@ -163,9 +163,9 @@ jobs: - name: publish run: | if [ -f ".changeset/pre.json" ]; then - yarn lerna publish from-package --yes --dist-tag next + yarn workspaces foreach -v --exclude=root --no-private npm publish --tag next else - yarn lerna publish from-package --yes + yarn workspaces foreach -v --exclude=root --no-private npm publish fi env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/package.json b/package.json index 95c2fa73da..061951a350 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,6 @@ "create-plugin": "echo \"use 'yarn new' instead\"", "release": "node scripts/prepare-release.js && changeset version && yarn prettier --write '{packages,plugins}/*/{package.json,CHANGELOG.md}' '.changeset/*.json' && yarn install --no-immutable", "prettier:check": "prettier --check .", - "lerna": "lerna", "storybook": "yarn ./storybook run start", "snyk:test": "npx snyk test --yarn-workspaces --strict-out-of-sync=false", "snyk:test:package": "yarn snyk:test --include", From 7f465a92ea8d504da1a210f0d10ef04a1d778936 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 4 Sep 2022 17:32:00 +0200 Subject: [PATCH 066/117] root: remove lerna Signed-off-by: Patrik Oldsberg --- package.json | 1 - yarn.lock | 2097 +------------------------------------------------- 2 files changed, 42 insertions(+), 2056 deletions(-) diff --git a/package.json b/package.json index 061951a350..31b0c194d2 100644 --- a/package.json +++ b/package.json @@ -70,7 +70,6 @@ "eslint-plugin-notice": "^0.9.10", "fs-extra": "10.1.0", "husky": "^8.0.0", - "lerna": "~5.0.0", "lint-staged": "^13.0.0", "minimist": "^1.2.5", "prettier": "^2.2.1", diff --git a/yarn.lock b/yarn.lock index f5b027bfcf..57aafed159 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9062,13 +9062,6 @@ __metadata: languageName: node linkType: hard -"@hutson/parse-repository-url@npm:^3.0.0": - version: 3.0.2 - resolution: "@hutson/parse-repository-url@npm:3.0.2" - checksum: 39992c5f183c5ca3d761d6ed9dfabcb79b5f3750bf1b7f3532e1dc439ca370138bbd426ee250fdaba460bc948e6761fbefd484b8f4f36885d71ded96138340d1 - languageName: node - linkType: hard - "@iarna/toml@npm:^2.2.5": version: 2.2.5 resolution: "@iarna/toml@npm:2.2.5" @@ -10074,808 +10067,6 @@ __metadata: languageName: node linkType: hard -"@lerna/add@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/add@npm:5.0.0" - dependencies: - "@lerna/bootstrap": 5.0.0 - "@lerna/command": 5.0.0 - "@lerna/filter-options": 5.0.0 - "@lerna/npm-conf": 5.0.0 - "@lerna/validation-error": 5.0.0 - dedent: ^0.7.0 - npm-package-arg: ^8.1.0 - p-map: ^4.0.0 - pacote: ^13.4.1 - semver: ^7.3.4 - checksum: 3ac24d8c37b6da4078d10926d3ad840868c0b60c71118ca6120e1b286d6300423164cffca7a9a2a943b56c91d7357dd8b05103bdeb70a0ccdf8e114c64ad3c32 - languageName: node - linkType: hard - -"@lerna/bootstrap@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/bootstrap@npm:5.0.0" - dependencies: - "@lerna/command": 5.0.0 - "@lerna/filter-options": 5.0.0 - "@lerna/has-npm-version": 5.0.0 - "@lerna/npm-install": 5.0.0 - "@lerna/package-graph": 5.0.0 - "@lerna/pulse-till-done": 5.0.0 - "@lerna/rimraf-dir": 5.0.0 - "@lerna/run-lifecycle": 5.0.0 - "@lerna/run-topologically": 5.0.0 - "@lerna/symlink-binary": 5.0.0 - "@lerna/symlink-dependencies": 5.0.0 - "@lerna/validation-error": 5.0.0 - "@npmcli/arborist": 5.2.0 - dedent: ^0.7.0 - get-port: ^5.1.1 - multimatch: ^5.0.0 - npm-package-arg: ^8.1.0 - npmlog: ^4.1.2 - p-map: ^4.0.0 - p-map-series: ^2.1.0 - p-waterfall: ^2.1.1 - semver: ^7.3.4 - checksum: 2e2f4e6b508667ce4d3d6588b790cf980d08413a24dda80d61ef37d7bad31b63cc949fc80987717fd6c41cd5d776ef32fa77d672ee6df570397397203842ec1c - languageName: node - linkType: hard - -"@lerna/changed@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/changed@npm:5.0.0" - dependencies: - "@lerna/collect-updates": 5.0.0 - "@lerna/command": 5.0.0 - "@lerna/listable": 5.0.0 - "@lerna/output": 5.0.0 - checksum: 8f53e5e056bba10eda23f44b0eb04b046c382660650d2005719673688465ed124011dec00ba18ae2050b49edbdbe1a587bb62b3414f9bfad15bacc3d84953a3f - languageName: node - linkType: hard - -"@lerna/check-working-tree@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/check-working-tree@npm:5.0.0" - dependencies: - "@lerna/collect-uncommitted": 5.0.0 - "@lerna/describe-ref": 5.0.0 - "@lerna/validation-error": 5.0.0 - checksum: 8bf7b24016c875adcd9f318300f9d5acc6e51b49da519f85e9207026a867b40b7980df8bcbb88ed6c55b3b82e44f71d9553f9402d663e70418951413816de0b5 - languageName: node - linkType: hard - -"@lerna/child-process@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/child-process@npm:5.0.0" - dependencies: - chalk: ^4.1.0 - execa: ^5.0.0 - strong-log-transformer: ^2.1.0 - checksum: 6e1e6075173d776a1f816502714694be8e593e60c512c3e5c4af5fe7f300ebc6b50bd541794e61e988114ea402fb2c919f5fa095554cf885204bb165c171ecf6 - languageName: node - linkType: hard - -"@lerna/clean@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/clean@npm:5.0.0" - dependencies: - "@lerna/command": 5.0.0 - "@lerna/filter-options": 5.0.0 - "@lerna/prompt": 5.0.0 - "@lerna/pulse-till-done": 5.0.0 - "@lerna/rimraf-dir": 5.0.0 - p-map: ^4.0.0 - p-map-series: ^2.1.0 - p-waterfall: ^2.1.1 - checksum: f839ea948d52a9aa907063de974e79cb6c06acb9fb6e80e0ec227d23c956426e46cf77586985873f34e185145b8224608228ceba6aa82aed88f8e7d1f2d70f69 - languageName: node - linkType: hard - -"@lerna/cli@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/cli@npm:5.0.0" - dependencies: - "@lerna/global-options": 5.0.0 - dedent: ^0.7.0 - npmlog: ^4.1.2 - yargs: ^16.2.0 - checksum: 9531a3a74277f1d82febc687826a3c7f84e3407504170824ca5f373da213f8a1f7ff53a9dd44f9004ce72ae8aaae488760bf7f6d22df2240e0011635fcafc541 - languageName: node - linkType: hard - -"@lerna/collect-uncommitted@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/collect-uncommitted@npm:5.0.0" - dependencies: - "@lerna/child-process": 5.0.0 - chalk: ^4.1.0 - npmlog: ^4.1.2 - checksum: b77e63e033b3a9f81a16f636e73824c695e7b97347755ef1adaa961169fd36762fec5214c6db81e612642a4ec50afff6d84824d5a850484092bb2752ff280d33 - languageName: node - linkType: hard - -"@lerna/collect-updates@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/collect-updates@npm:5.0.0" - dependencies: - "@lerna/child-process": 5.0.0 - "@lerna/describe-ref": 5.0.0 - minimatch: ^3.0.4 - npmlog: ^4.1.2 - slash: ^3.0.0 - checksum: a3da2e8aced69e83b7c599eb4e2ccee2216d5964fb647874b1c2956d8089d1df15cc6ba8b3a0334d2de6b6071985e2ff77655b56d0bee6021d14b22e26b4a6a7 - languageName: node - linkType: hard - -"@lerna/command@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/command@npm:5.0.0" - dependencies: - "@lerna/child-process": 5.0.0 - "@lerna/package-graph": 5.0.0 - "@lerna/project": 5.0.0 - "@lerna/validation-error": 5.0.0 - "@lerna/write-log-file": 5.0.0 - clone-deep: ^4.0.1 - dedent: ^0.7.0 - execa: ^5.0.0 - is-ci: ^2.0.0 - npmlog: ^4.1.2 - checksum: 4fd54db1f1749013da6d8bba59fa62953f874108a74c79cd6a9bafa0516ee2cf373ca27641fd862b22a59b8904ef6c7090c7156fa408846cbc1302545a3ea4db - languageName: node - linkType: hard - -"@lerna/conventional-commits@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/conventional-commits@npm:5.0.0" - dependencies: - "@lerna/validation-error": 5.0.0 - conventional-changelog-angular: ^5.0.12 - conventional-changelog-core: ^4.2.2 - conventional-recommended-bump: ^6.1.0 - fs-extra: ^9.1.0 - get-stream: ^6.0.0 - lodash.template: ^4.5.0 - npm-package-arg: ^8.1.0 - npmlog: ^4.1.2 - pify: ^5.0.0 - semver: ^7.3.4 - checksum: 3b1cf3117c0f1e0dfad824de6771e8f831badc122b2fe27a6011a39d20b959c4b49448e512c6715ea10d9ff97f2b946d98c158ce6a44a971a75bae1621eb3f4d - languageName: node - linkType: hard - -"@lerna/create-symlink@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/create-symlink@npm:5.0.0" - dependencies: - cmd-shim: ^4.1.0 - fs-extra: ^9.1.0 - npmlog: ^4.1.2 - checksum: 75985da76c3a2666f1e8a6175bf6f652e0417290416d01e6d55b05e8f67e3b07d7852cb9c9c96bc36346c27c204c8ee3546db916c0ea356a95ffece51e25e1b3 - languageName: node - linkType: hard - -"@lerna/create@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/create@npm:5.0.0" - dependencies: - "@lerna/child-process": 5.0.0 - "@lerna/command": 5.0.0 - "@lerna/npm-conf": 5.0.0 - "@lerna/validation-error": 5.0.0 - dedent: ^0.7.0 - fs-extra: ^9.1.0 - globby: ^11.0.2 - init-package-json: ^2.0.2 - npm-package-arg: ^8.1.0 - p-reduce: ^2.1.0 - pacote: ^13.4.1 - pify: ^5.0.0 - semver: ^7.3.4 - slash: ^3.0.0 - validate-npm-package-license: ^3.0.4 - validate-npm-package-name: ^3.0.0 - whatwg-url: ^8.4.0 - yargs-parser: 20.2.4 - checksum: 916ce096b71e7e859d19c0f25e4eb8a2fee2cab608f805f698f6d2c5fef2fe6359d18a7ca5019c2aa2535a31b2e0e1416514d4994f7e0124ac88e3a7fa222b36 - languageName: node - linkType: hard - -"@lerna/describe-ref@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/describe-ref@npm:5.0.0" - dependencies: - "@lerna/child-process": 5.0.0 - npmlog: ^4.1.2 - checksum: 784cb6ed5bc231c3de0f2b21657511ec3beb633b19826c4af3e54d313bd3040b9bfc575de8ce1960358ec95333d7b77a4b9ba19d74b61737a5a32f0c4c5d708c - languageName: node - linkType: hard - -"@lerna/diff@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/diff@npm:5.0.0" - dependencies: - "@lerna/child-process": 5.0.0 - "@lerna/command": 5.0.0 - "@lerna/validation-error": 5.0.0 - npmlog: ^4.1.2 - checksum: 1629da4e07f67beed4ef150699fdb295bbed851f8c69663883149e32c4596e781d1cee1d8a10bb6413a6c79a96aff4918bef76dffc707a7aa1b053939bc1074c - languageName: node - linkType: hard - -"@lerna/exec@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/exec@npm:5.0.0" - dependencies: - "@lerna/child-process": 5.0.0 - "@lerna/command": 5.0.0 - "@lerna/filter-options": 5.0.0 - "@lerna/profiler": 5.0.0 - "@lerna/run-topologically": 5.0.0 - "@lerna/validation-error": 5.0.0 - p-map: ^4.0.0 - checksum: 6dd5b13f82843eeaf21e5030380c5c15c40affe230f42bd56ea568330da89cf3e9713a7f3c65068ba98fbae74ab05d7fd60e904a5f006ff2ecdbcce195952fd1 - languageName: node - linkType: hard - -"@lerna/filter-options@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/filter-options@npm:5.0.0" - dependencies: - "@lerna/collect-updates": 5.0.0 - "@lerna/filter-packages": 5.0.0 - dedent: ^0.7.0 - npmlog: ^4.1.2 - checksum: 0adeb55b94ec758b6d3c2ced6c3ec7315abe98333a742a72658238a96bee22bb14bebb892777ed1b13b7a305116e1eea4d02fb99793909a6284ddda572107eaa - languageName: node - linkType: hard - -"@lerna/filter-packages@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/filter-packages@npm:5.0.0" - dependencies: - "@lerna/validation-error": 5.0.0 - multimatch: ^5.0.0 - npmlog: ^4.1.2 - checksum: 3d0117cc1cb96a194a1d9a862c70cf1f41cef823b82e9ec16fdea34405151daade6ac8f39c03082c11f5225fdb7236284c08a4e7bfda598f238fc33bd23e3b4f - languageName: node - linkType: hard - -"@lerna/get-npm-exec-opts@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/get-npm-exec-opts@npm:5.0.0" - dependencies: - npmlog: ^4.1.2 - checksum: 48c0673ca1a4862140a82fef95001e4f6a8f5b0f700c1df6998f75d8f21bbe241ad5ad3ee5af43b068a77b79fd14746155f7b086d31b67d96579f5eab19f26d4 - languageName: node - linkType: hard - -"@lerna/get-packed@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/get-packed@npm:5.0.0" - dependencies: - fs-extra: ^9.1.0 - ssri: ^8.0.1 - tar: ^6.1.0 - checksum: f246da047d9f2703b35309a83cd92bb1d8af0a06405024ce99c25f5b2909d687f534ba44bed3f4419abe5710f228b6b980d9dff568baa569cb6f324d3088a9e8 - languageName: node - linkType: hard - -"@lerna/github-client@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/github-client@npm:5.0.0" - dependencies: - "@lerna/child-process": 5.0.0 - "@octokit/plugin-enterprise-rest": ^6.0.1 - "@octokit/rest": ^18.1.0 - git-url-parse: ^11.4.4 - npmlog: ^4.1.2 - checksum: 936ecbfd382867465bc9d269eb7ceb071a3764ba0c8cd89c014fa4edc3f769b42193cc8a490a5a93a0d86b65bcab52d57f7a6e7c8f9eecdd0076e5d7e53a3a44 - languageName: node - linkType: hard - -"@lerna/gitlab-client@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/gitlab-client@npm:5.0.0" - dependencies: - node-fetch: ^2.6.1 - npmlog: ^4.1.2 - whatwg-url: ^8.4.0 - checksum: 6d533a4b381094d7f87c276341f15789729e06aeb44e3c3bb4e57d17485113d3d741ed2d15de36cccedef0adfc0b82a52847764bcfb0a0780f97ca1a53e05cbe - languageName: node - linkType: hard - -"@lerna/global-options@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/global-options@npm:5.0.0" - checksum: b65a9e8f3e87f2d0e764cc3f6ec7ae047816395b80ff155fc0ad5ffc3df8f254df0ebc01d58ce21da970d23783a463d5e6c054148762112ceb15bd277a44933d - languageName: node - linkType: hard - -"@lerna/has-npm-version@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/has-npm-version@npm:5.0.0" - dependencies: - "@lerna/child-process": 5.0.0 - semver: ^7.3.4 - checksum: 7ddcaf2b41fbc2b50e70cd0f5d259fa55d83a1cf8663b7ad7dd427ed0ec9d9008ddd342c3beed15225255192e16504ed0feef3aa7ce8c46bc1d9ad187073bd29 - languageName: node - linkType: hard - -"@lerna/import@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/import@npm:5.0.0" - dependencies: - "@lerna/child-process": 5.0.0 - "@lerna/command": 5.0.0 - "@lerna/prompt": 5.0.0 - "@lerna/pulse-till-done": 5.0.0 - "@lerna/validation-error": 5.0.0 - dedent: ^0.7.0 - fs-extra: ^9.1.0 - p-map-series: ^2.1.0 - checksum: 07606a434dcf3c14afb664539f4ff4d89e67ba3f140fda8a9b5e92da932918bca6e5ac710ce98e19b00b73fc2332c19260a9c50407baed4b97083b92b731568f - languageName: node - linkType: hard - -"@lerna/info@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/info@npm:5.0.0" - dependencies: - "@lerna/command": 5.0.0 - "@lerna/output": 5.0.0 - envinfo: ^7.7.4 - checksum: a598499a1679ef27f32dbf08ab00fb02fc8f12fcf67da5129a7cce00d9fca943b0014276398ac57e27856e443d67a994ae33c343f3a41824c6a0cf629eecc631 - languageName: node - linkType: hard - -"@lerna/init@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/init@npm:5.0.0" - dependencies: - "@lerna/child-process": 5.0.0 - "@lerna/command": 5.0.0 - fs-extra: ^9.1.0 - p-map: ^4.0.0 - write-json-file: ^4.3.0 - checksum: e10c42cc9164f8518c2a713906d648ab37d081ad13d13c2397336b357d8412f35e628537acc668b3da55744e343697dbe606e36039b9aab648c4605ff9ad666b - languageName: node - linkType: hard - -"@lerna/link@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/link@npm:5.0.0" - dependencies: - "@lerna/command": 5.0.0 - "@lerna/package-graph": 5.0.0 - "@lerna/symlink-dependencies": 5.0.0 - p-map: ^4.0.0 - slash: ^3.0.0 - checksum: 68bb4ad21dae956234b36f333fcb5ba996ecf549e5c7b46ae01b8a1005c69bdeabb4f59a6bfc1d8f4a08a715b14c7b5398233cc7e2e70218adca28ed8f6c300b - languageName: node - linkType: hard - -"@lerna/list@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/list@npm:5.0.0" - dependencies: - "@lerna/command": 5.0.0 - "@lerna/filter-options": 5.0.0 - "@lerna/listable": 5.0.0 - "@lerna/output": 5.0.0 - checksum: 1b7d89dc241c8e1caa3b4f182e9634a87ed8c11e85abe20c1d39e857ce19ca4f1d3d0ed283aa272f5e708d29145c20f187153728569e708c6b2116f836ca61ff - languageName: node - linkType: hard - -"@lerna/listable@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/listable@npm:5.0.0" - dependencies: - "@lerna/query-graph": 5.0.0 - chalk: ^4.1.0 - columnify: ^1.5.4 - checksum: 86148764bddc5ad70d8a4693333d79d87cac50300a48601bc68bb05ac21f5ad7c371ee73290a2db2331e8ca1f447368c80133847494730f3ae43348660321977 - languageName: node - linkType: hard - -"@lerna/log-packed@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/log-packed@npm:5.0.0" - dependencies: - byte-size: ^7.0.0 - columnify: ^1.5.4 - has-unicode: ^2.0.1 - npmlog: ^4.1.2 - checksum: 06f34d1d52725a4141290ea89ad433c55384876b725a0571a96d93a507333ea16750a85a2a29439d002b764b5c737aeba51b4aefaabde7a1269dcfd9d108fe72 - languageName: node - linkType: hard - -"@lerna/npm-conf@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/npm-conf@npm:5.0.0" - dependencies: - config-chain: ^1.1.12 - pify: ^5.0.0 - checksum: d5df3d249c548ca1d976c5273dbb6702d2d6d05078db34312a56a60dd6916568bbdc478b11fbe4f6109a202cc7aad15b565cee730c7d91d8c3c1631858cb1e9e - languageName: node - linkType: hard - -"@lerna/npm-dist-tag@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/npm-dist-tag@npm:5.0.0" - dependencies: - "@lerna/otplease": 5.0.0 - npm-package-arg: ^8.1.0 - npm-registry-fetch: ^9.0.0 - npmlog: ^4.1.2 - checksum: 3e25f91f7076ebf28c4e01dfd558ba4ee6ea6c01d64fd02e6dc565adb9f6421b7eff4fd5c5324bf62ac10602843fbc3c74b8f7075e149616e5957fd2e5afc6ff - languageName: node - linkType: hard - -"@lerna/npm-install@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/npm-install@npm:5.0.0" - dependencies: - "@lerna/child-process": 5.0.0 - "@lerna/get-npm-exec-opts": 5.0.0 - fs-extra: ^9.1.0 - npm-package-arg: ^8.1.0 - npmlog: ^4.1.2 - signal-exit: ^3.0.3 - write-pkg: ^4.0.0 - checksum: fc23f1c2cbc3114c8dddc70676c77aee995a29279753bf5a0ce9190e03f004a787c9fd83c7d7a861b58ac63a16540c6bb40afbe045e1642a18e05b1d7276d53e - languageName: node - linkType: hard - -"@lerna/npm-publish@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/npm-publish@npm:5.0.0" - dependencies: - "@lerna/otplease": 5.0.0 - "@lerna/run-lifecycle": 5.0.0 - fs-extra: ^9.1.0 - libnpmpublish: ^4.0.0 - npm-package-arg: ^8.1.0 - npmlog: ^4.1.2 - pify: ^5.0.0 - read-package-json: ^3.0.0 - checksum: 828b74413bb8b77bc6a808feb27823827fcdbf74e4b14a2b41cb580cceba3e5f971cb3ff69deed71c5cf58cee03b345256b4444b01723ae8abd291356a3746cb - languageName: node - linkType: hard - -"@lerna/npm-run-script@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/npm-run-script@npm:5.0.0" - dependencies: - "@lerna/child-process": 5.0.0 - "@lerna/get-npm-exec-opts": 5.0.0 - npmlog: ^4.1.2 - checksum: 17d4adf9ab021939fb6863a068a02813862c71f301b0a0bab9fa6c884ef4f53f8dceb44fcfd1c641115edd4ee928f4e02888651ec9a024278fc310d69c1e11b8 - languageName: node - linkType: hard - -"@lerna/otplease@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/otplease@npm:5.0.0" - dependencies: - "@lerna/prompt": 5.0.0 - checksum: 31825528376f2dfacbef0eded9569eef623f1a012cc719f5285e1c7b27553e4ea06c0e44dcf606fd24a8bda15cd249eb538b9db467794b3d07ea6f0c2b210945 - languageName: node - linkType: hard - -"@lerna/output@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/output@npm:5.0.0" - dependencies: - npmlog: ^4.1.2 - checksum: 8571aa7cc60ddc894a695af50c09b8c9c137b3b1227e15bde45665fffca7a686bdc0749595155b1a97e90fe0f0a696bf0770601f11f1c6d62585d5ef1926ede8 - languageName: node - linkType: hard - -"@lerna/pack-directory@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/pack-directory@npm:5.0.0" - dependencies: - "@lerna/get-packed": 5.0.0 - "@lerna/package": 5.0.0 - "@lerna/run-lifecycle": 5.0.0 - "@lerna/temp-write": 5.0.0 - npm-packlist: ^2.1.4 - npmlog: ^4.1.2 - tar: ^6.1.0 - checksum: 5388b765420714a0bb03e717d868c22191d1e72a981932d32d7336874b4d550a72dac6286349f1d5bc6dfd51696cde9a61580369bab9796a20d3b3daccc19c9d - languageName: node - linkType: hard - -"@lerna/package-graph@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/package-graph@npm:5.0.0" - dependencies: - "@lerna/prerelease-id-from-version": 5.0.0 - "@lerna/validation-error": 5.0.0 - npm-package-arg: ^8.1.0 - npmlog: ^4.1.2 - semver: ^7.3.4 - checksum: b0b3115f264d00861718e5b7c061230daec37687c7c48966c0a6be0bb2f6b4238829b05190a73e54e2ea7807977c69455aa61a9050253e7af56ba765b1ec37de - languageName: node - linkType: hard - -"@lerna/package@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/package@npm:5.0.0" - dependencies: - load-json-file: ^6.2.0 - npm-package-arg: ^8.1.0 - write-pkg: ^4.0.0 - checksum: f26f677fd43eaf4588455edbfc79353434a411ff506f62dee8d9293bfe7b1cb4e4801252002476a4ec701064891841f7dae1ee43f5fdada7733d367e727e7a62 - languageName: node - linkType: hard - -"@lerna/prerelease-id-from-version@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/prerelease-id-from-version@npm:5.0.0" - dependencies: - semver: ^7.3.4 - checksum: 85eba3339fb3d17f6d95e361762fa5277ce4bbc84e2e66b013253b1ba29087a2cbbfcd090dcbda65a54d6e759a342d791635fd6397b8e3b941d620390d8af533 - languageName: node - linkType: hard - -"@lerna/profiler@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/profiler@npm:5.0.0" - dependencies: - fs-extra: ^9.1.0 - npmlog: ^4.1.2 - upath: ^2.0.1 - checksum: 3f23a917e8330fddefa610a01dddb55aea6737e763e06b58b7614bcc5c74caf5fe8bdee3b344345ea847de348a8c4d914d87039600dd6772c713611fec47bdd6 - languageName: node - linkType: hard - -"@lerna/project@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/project@npm:5.0.0" - dependencies: - "@lerna/package": 5.0.0 - "@lerna/validation-error": 5.0.0 - cosmiconfig: ^7.0.0 - dedent: ^0.7.0 - dot-prop: ^6.0.1 - glob-parent: ^5.1.1 - globby: ^11.0.2 - load-json-file: ^6.2.0 - npmlog: ^4.1.2 - p-map: ^4.0.0 - resolve-from: ^5.0.0 - write-json-file: ^4.3.0 - checksum: ee6a3c40e1bb753255bef0f74078750d6787fd26b34a4eb4505e71502484d955de79b83d3e417b52ee67ffab3acb7588555ceaa6a7675a623bc9f54b16bd6f87 - languageName: node - linkType: hard - -"@lerna/prompt@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/prompt@npm:5.0.0" - dependencies: - inquirer: ^7.3.3 - npmlog: ^4.1.2 - checksum: 4cd44c1ecfb18dff50e8ddbe4db3a180eadd173be479aaa4f1ce951353846bdf20fdc48a94c1bae34b5788989e0c8b997a17c2baed9d12a5bc86f43b81c9d709 - languageName: node - linkType: hard - -"@lerna/publish@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/publish@npm:5.0.0" - dependencies: - "@lerna/check-working-tree": 5.0.0 - "@lerna/child-process": 5.0.0 - "@lerna/collect-updates": 5.0.0 - "@lerna/command": 5.0.0 - "@lerna/describe-ref": 5.0.0 - "@lerna/log-packed": 5.0.0 - "@lerna/npm-conf": 5.0.0 - "@lerna/npm-dist-tag": 5.0.0 - "@lerna/npm-publish": 5.0.0 - "@lerna/otplease": 5.0.0 - "@lerna/output": 5.0.0 - "@lerna/pack-directory": 5.0.0 - "@lerna/prerelease-id-from-version": 5.0.0 - "@lerna/prompt": 5.0.0 - "@lerna/pulse-till-done": 5.0.0 - "@lerna/run-lifecycle": 5.0.0 - "@lerna/run-topologically": 5.0.0 - "@lerna/validation-error": 5.0.0 - "@lerna/version": 5.0.0 - fs-extra: ^9.1.0 - libnpmaccess: ^4.0.1 - npm-package-arg: ^8.1.0 - npm-registry-fetch: ^9.0.0 - npmlog: ^4.1.2 - p-map: ^4.0.0 - p-pipe: ^3.1.0 - pacote: ^13.4.1 - semver: ^7.3.4 - checksum: c45d6fd3968655c46c236b40f27cec21003232a8f165ca71c249affa27fc455d9d7f01ed2b40b5cd7e9125f807bbf3beb6b573e5e30dc812ffc74bd94f0657f5 - languageName: node - linkType: hard - -"@lerna/pulse-till-done@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/pulse-till-done@npm:5.0.0" - dependencies: - npmlog: ^4.1.2 - checksum: 9c66c24c95a64b9b0dc092da948208420f2f479ea355d2d9e8e03a2ed96f621ac557da52beb7063b457c97c87580d00c2264ec1d1a154304cb26b14ea4e12a31 - languageName: node - linkType: hard - -"@lerna/query-graph@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/query-graph@npm:5.0.0" - dependencies: - "@lerna/package-graph": 5.0.0 - checksum: 12cec89a007b24400de880a6265c7dfd4fe06e29792c409bb2cfa376137332876f7fc5fc528db193be416a5e795a6b80bc7b5ab46ee41a183135597184c1eb3a - languageName: node - linkType: hard - -"@lerna/resolve-symlink@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/resolve-symlink@npm:5.0.0" - dependencies: - fs-extra: ^9.1.0 - npmlog: ^4.1.2 - read-cmd-shim: ^2.0.0 - checksum: 657f64b02abb3cf24ac4db0453ec7e729fddebd338c844e84d000b642a931d9b2c473da39e37e042cfe7d7054203c448b9485aba486c215684a2c086a8bc9eb8 - languageName: node - linkType: hard - -"@lerna/rimraf-dir@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/rimraf-dir@npm:5.0.0" - dependencies: - "@lerna/child-process": 5.0.0 - npmlog: ^4.1.2 - path-exists: ^4.0.0 - rimraf: ^3.0.2 - checksum: a7b2023e1c54465df018dfd564ebb01bd10baf5a3612076a981533419654f3af4720de0e0d4260f6fcb48edbe63a79a7b1289229faa3750ae53652226fc903f7 - languageName: node - linkType: hard - -"@lerna/run-lifecycle@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/run-lifecycle@npm:5.0.0" - dependencies: - "@lerna/npm-conf": 5.0.0 - "@npmcli/run-script": ^3.0.2 - npmlog: ^4.1.2 - checksum: 1d893f441f54c3b95fafe356ebc22e85134a4f9f1aacaf31141657107b858517f79de5eec3ad054ee0d0042abb765e6aeafdf6eeeefecb41b785318fbce953dc - languageName: node - linkType: hard - -"@lerna/run-topologically@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/run-topologically@npm:5.0.0" - dependencies: - "@lerna/query-graph": 5.0.0 - p-queue: ^6.6.2 - checksum: 0fc337f315d23bf4035f5bdd15a4a1abb687172b0556faf3b8e3b6a848975bbdd6cba960d95755783371e66864af8e6f82bc08f70e1ef173156eeb8833f773d3 - languageName: node - linkType: hard - -"@lerna/run@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/run@npm:5.0.0" - dependencies: - "@lerna/command": 5.0.0 - "@lerna/filter-options": 5.0.0 - "@lerna/npm-run-script": 5.0.0 - "@lerna/output": 5.0.0 - "@lerna/profiler": 5.0.0 - "@lerna/run-topologically": 5.0.0 - "@lerna/timer": 5.0.0 - "@lerna/validation-error": 5.0.0 - p-map: ^4.0.0 - checksum: c05484f746b3df4e364b1abb99b02aebed518ccec6b6e3e4a5b080efdebfb3387a9b6f2ee432085d3352c853b4c623f9d61d26693d0d1fd92201a4c90dfe3086 - languageName: node - linkType: hard - -"@lerna/symlink-binary@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/symlink-binary@npm:5.0.0" - dependencies: - "@lerna/create-symlink": 5.0.0 - "@lerna/package": 5.0.0 - fs-extra: ^9.1.0 - p-map: ^4.0.0 - checksum: f2a702a12cda02d29070fe73d3bb357e8552e701d490d56d5251118be98acd1632f4e8b0e25a9d84a158b26ba4cdae4e3279ecf76a77ee6fbea2cd114d017058 - languageName: node - linkType: hard - -"@lerna/symlink-dependencies@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/symlink-dependencies@npm:5.0.0" - dependencies: - "@lerna/create-symlink": 5.0.0 - "@lerna/resolve-symlink": 5.0.0 - "@lerna/symlink-binary": 5.0.0 - fs-extra: ^9.1.0 - p-map: ^4.0.0 - p-map-series: ^2.1.0 - checksum: e76f12bbb37e85a27d3a5099679accd5b6307f900102c54bdd835c0f98c0f32adea5d01dcf262e4e0014e907615383edb2e33189e316e5d710332fbae84fd10d - languageName: node - linkType: hard - -"@lerna/temp-write@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/temp-write@npm:5.0.0" - dependencies: - graceful-fs: ^4.1.15 - is-stream: ^2.0.0 - make-dir: ^3.0.0 - temp-dir: ^1.0.0 - uuid: ^8.3.2 - checksum: 298fb6c7d11ad8c372e2e3f84a1c37f806d1498431aec03794225b28b68819881260fbffc058124e23f497ab1a9260340c1c97e478bd8fe6cee14938085e9ff0 - languageName: node - linkType: hard - -"@lerna/timer@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/timer@npm:5.0.0" - checksum: a410d33c9e0c7ceb77e05f94c550597e6dc416c644ce3a963c7a7837af22ad4046fea4733946bf984a25b67b125bb661f22d14e41799c30b091d415c85b71884 - languageName: node - linkType: hard - -"@lerna/validation-error@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/validation-error@npm:5.0.0" - dependencies: - npmlog: ^4.1.2 - checksum: 5e0d6bc2e01b622c584ed966749943073169ff7445bc203c017204cfeb62dc9e116ef3e01b0bf0733c7259db32815bc4241e4ddf6717d5ede9a092635c2fa78a - languageName: node - linkType: hard - -"@lerna/version@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/version@npm:5.0.0" - dependencies: - "@lerna/check-working-tree": 5.0.0 - "@lerna/child-process": 5.0.0 - "@lerna/collect-updates": 5.0.0 - "@lerna/command": 5.0.0 - "@lerna/conventional-commits": 5.0.0 - "@lerna/github-client": 5.0.0 - "@lerna/gitlab-client": 5.0.0 - "@lerna/output": 5.0.0 - "@lerna/prerelease-id-from-version": 5.0.0 - "@lerna/prompt": 5.0.0 - "@lerna/run-lifecycle": 5.0.0 - "@lerna/run-topologically": 5.0.0 - "@lerna/temp-write": 5.0.0 - "@lerna/validation-error": 5.0.0 - chalk: ^4.1.0 - dedent: ^0.7.0 - load-json-file: ^6.2.0 - minimatch: ^3.0.4 - npmlog: ^4.1.2 - p-map: ^4.0.0 - p-pipe: ^3.1.0 - p-reduce: ^2.1.0 - p-waterfall: ^2.1.1 - semver: ^7.3.4 - slash: ^3.0.0 - write-json-file: ^4.3.0 - checksum: 53efe53bce922b002f1a573032c893a76062732cb40aed343cc20a72c7182a0430086231d930a3d58b08daaeb7048aadd4691b2c0a8c5c2827a2a9f73e078633 - languageName: node - linkType: hard - -"@lerna/write-log-file@npm:5.0.0": - version: 5.0.0 - resolution: "@lerna/write-log-file@npm:5.0.0" - dependencies: - npmlog: ^4.1.2 - write-file-atomic: ^3.0.3 - checksum: a925093a939d71b7d80efd4b651921f56218745c468dab22bef45633708f7943eb3e69f609476e94a2a94b0e2ed909155958d1b23c8501a82224aaa9bc456178 - languageName: node - linkType: hard - "@lezer/common@npm:^1.0.0": version: 1.0.0 resolution: "@lezer/common@npm:1.0.0" @@ -11424,50 +10615,6 @@ __metadata: languageName: node linkType: hard -"@npmcli/arborist@npm:5.2.0": - version: 5.2.0 - resolution: "@npmcli/arborist@npm:5.2.0" - dependencies: - "@isaacs/string-locale-compare": ^1.1.0 - "@npmcli/installed-package-contents": ^1.0.7 - "@npmcli/map-workspaces": ^2.0.3 - "@npmcli/metavuln-calculator": ^3.0.1 - "@npmcli/move-file": ^2.0.0 - "@npmcli/name-from-folder": ^1.0.1 - "@npmcli/node-gyp": ^2.0.0 - "@npmcli/package-json": ^2.0.0 - "@npmcli/run-script": ^3.0.0 - bin-links: ^3.0.0 - cacache: ^16.0.6 - common-ancestor-path: ^1.0.1 - json-parse-even-better-errors: ^2.3.1 - json-stringify-nice: ^1.1.4 - mkdirp: ^1.0.4 - mkdirp-infer-owner: ^2.0.0 - nopt: ^5.0.0 - npm-install-checks: ^5.0.0 - npm-package-arg: ^9.0.0 - npm-pick-manifest: ^7.0.0 - npm-registry-fetch: ^13.0.0 - npmlog: ^6.0.2 - pacote: ^13.0.5 - parse-conflict-json: ^2.0.1 - proc-log: ^2.0.0 - promise-all-reject-late: ^1.0.0 - promise-call-limit: ^1.0.1 - read-package-json-fast: ^2.0.2 - readdir-scoped-modules: ^1.1.0 - rimraf: ^3.0.2 - semver: ^7.3.7 - ssri: ^9.0.0 - treeverse: ^2.0.0 - walk-up-path: ^1.0.0 - bin: - arborist: bin/index.js - checksum: e466133cb564619f1544b53ed48632082e90d294a2c7f31103bc685b029c4ba6cb63cea845212148f28b5328ad42fd137936e3395039028b1bd84ed542b9108c - languageName: node - linkType: hard - "@npmcli/arborist@npm:^4.0.4": version: 4.3.1 resolution: "@npmcli/arborist@npm:4.3.1" @@ -11510,13 +10657,6 @@ __metadata: languageName: node linkType: hard -"@npmcli/ci-detect@npm:^1.0.0": - version: 1.3.0 - resolution: "@npmcli/ci-detect@npm:1.3.0" - checksum: 3ba5e974c71596edf5327def31fd6af02f7ca4ec08bce39f9cfb44132dda748f9f5ad631d6f1b168e983c58d01555d31ff37f26c7d45731a9784fb936a5af11e - languageName: node - linkType: hard - "@npmcli/fs@npm:^1.0.0": version: 1.0.0 resolution: "@npmcli/fs@npm:1.0.0" @@ -11553,23 +10693,6 @@ __metadata: languageName: node linkType: hard -"@npmcli/git@npm:^3.0.0": - version: 3.0.1 - resolution: "@npmcli/git@npm:3.0.1" - dependencies: - "@npmcli/promise-spawn": ^3.0.0 - lru-cache: ^7.4.4 - mkdirp: ^1.0.4 - npm-pick-manifest: ^7.0.0 - proc-log: ^2.0.0 - promise-inflight: ^1.0.1 - promise-retry: ^2.0.1 - semver: ^7.3.5 - which: ^2.0.2 - checksum: 0e289d11e2d6034652993f2d05f68396d8377603a1c1f983b2d0893e7591a22bcf3896a43c7dfbcc43f03c308a110f0b9ec37e0191e48b0bd1d236e0f57a3ec6 - languageName: node - linkType: hard - "@npmcli/installed-package-contents@npm:^1.0.6, @npmcli/installed-package-contents@npm:^1.0.7": version: 1.0.7 resolution: "@npmcli/installed-package-contents@npm:1.0.7" @@ -11594,18 +10717,6 @@ __metadata: languageName: node linkType: hard -"@npmcli/map-workspaces@npm:^2.0.3": - version: 2.0.3 - resolution: "@npmcli/map-workspaces@npm:2.0.3" - dependencies: - "@npmcli/name-from-folder": ^1.0.1 - glob: ^8.0.1 - minimatch: ^5.0.1 - read-package-json-fast: ^2.0.3 - checksum: c9878a22168d3f2d8df9e339ed0799628db3ea8502bd623b5bbe7b0dfcac065b3310e4093df94667a4a28ef2c54c02ce6956467a8aaa2e150305f2fe1cd64f9d - languageName: node - linkType: hard - "@npmcli/metavuln-calculator@npm:^2.0.0": version: 2.0.0 resolution: "@npmcli/metavuln-calculator@npm:2.0.0" @@ -11618,18 +10729,6 @@ __metadata: languageName: node linkType: hard -"@npmcli/metavuln-calculator@npm:^3.0.1": - version: 3.1.0 - resolution: "@npmcli/metavuln-calculator@npm:3.1.0" - dependencies: - cacache: ^16.0.0 - json-parse-even-better-errors: ^2.3.1 - pacote: ^13.0.3 - semver: ^7.3.5 - checksum: 39fb474e239d3f221178f0c2f6089cd4a2fce8183343b7f52f8f9fe0b3cb0a98b386b15c9afe63a0b0dc2ae5302497d00eb2de2f4b3431953dbf05e69d613c9a - languageName: node - linkType: hard - "@npmcli/move-file@npm:^1.0.1": version: 1.0.1 resolution: "@npmcli/move-file@npm:1.0.1" @@ -11673,13 +10772,6 @@ __metadata: languageName: node linkType: hard -"@npmcli/node-gyp@npm:^2.0.0": - version: 2.0.0 - resolution: "@npmcli/node-gyp@npm:2.0.0" - checksum: b6bbf0015000f9b64d31aefdc30f244b0348c57adb64017667e0304e96c38644d83da46a4581252652f5d606268df49118f9c9993b41d8020f62b7b15dd2c8d8 - languageName: node - linkType: hard - "@npmcli/package-json@npm:^1.0.1": version: 1.0.1 resolution: "@npmcli/package-json@npm:1.0.1" @@ -11689,15 +10781,6 @@ __metadata: languageName: node linkType: hard -"@npmcli/package-json@npm:^2.0.0": - version: 2.0.0 - resolution: "@npmcli/package-json@npm:2.0.0" - dependencies: - json-parse-even-better-errors: ^2.3.1 - checksum: 7a598e42d2778654ec87438ebfafbcbafbe5a5f5e89ed2ca1db6ca3f94ef14655e304aa41f77632a2a3f5c66b6bd5960bd9370e0ceb4902ea09346720364f9e4 - languageName: node - linkType: hard - "@npmcli/promise-spawn@npm:^1.2.0, @npmcli/promise-spawn@npm:^1.3.2": version: 1.3.2 resolution: "@npmcli/promise-spawn@npm:1.3.2" @@ -11707,15 +10790,6 @@ __metadata: languageName: node linkType: hard -"@npmcli/promise-spawn@npm:^3.0.0": - version: 3.0.0 - resolution: "@npmcli/promise-spawn@npm:3.0.0" - dependencies: - infer-owner: ^1.0.4 - checksum: 3454465a2731cea5875ba51f80873e2205e5bd878c31517286b0ede4ea931c7bf3de895382287e906d03710fff6f9e44186bd0eee068ce578901c5d3b58e7692 - languageName: node - linkType: hard - "@npmcli/run-script@npm:^2.0.0": version: 2.0.0 resolution: "@npmcli/run-script@npm:2.0.0" @@ -11728,18 +10802,6 @@ __metadata: languageName: node linkType: hard -"@npmcli/run-script@npm:^3.0.0, @npmcli/run-script@npm:^3.0.1, @npmcli/run-script@npm:^3.0.2": - version: 3.0.3 - resolution: "@npmcli/run-script@npm:3.0.3" - dependencies: - "@npmcli/node-gyp": ^2.0.0 - "@npmcli/promise-spawn": ^3.0.0 - node-gyp: ^8.4.1 - read-package-json-fast: ^2.0.3 - checksum: 3d0540a95620420d6e77c796a9e9d4fdf2600b5cf5b8d1ceabda15b1dd1d88cc5abf11e28b0494f03eee79c075a1549127bcfa550eb758b08f3948557d77b27a - languageName: node - linkType: hard - "@nuxtjs/opencollective@npm:0.3.2": version: 0.3.2 resolution: "@nuxtjs/opencollective@npm:0.3.2" @@ -12044,13 +11106,6 @@ __metadata: languageName: node linkType: hard -"@octokit/plugin-enterprise-rest@npm:^6.0.1": - version: 6.0.1 - resolution: "@octokit/plugin-enterprise-rest@npm:6.0.1" - checksum: 1c9720002f31daf62f4f48e73557dcdd7fcde6e0f6d43256e3f2ec827b5548417297186c361fb1af497fdcc93075a7b681e6ff06e2f20e4a8a3e74cc09d1f7e3 - languageName: node - linkType: hard - "@octokit/plugin-paginate-rest@npm:^2.6.2": version: 2.7.0 resolution: "@octokit/plugin-paginate-rest@npm:2.7.0" @@ -12198,7 +11253,7 @@ __metadata: languageName: node linkType: hard -"@octokit/rest@npm:^18.1.0, @octokit/rest@npm:^18.5.3": +"@octokit/rest@npm:^18.5.3": version: 18.5.6 resolution: "@octokit/rest@npm:18.5.6" dependencies: @@ -15969,18 +15024,6 @@ __metadata: languageName: node linkType: hard -"JSONStream@npm:^1.0.4": - version: 1.3.5 - resolution: "JSONStream@npm:1.3.5" - dependencies: - jsonparse: ^1.2.0 - through: ">=2.2.7 <3" - bin: - JSONStream: ./bin.js - checksum: 2605fa124260c61bad38bb65eba30d2f72216a78e94d0ab19b11b4e0327d572b8d530c0c9cc3b0764f727ad26d39e00bf7ebad57781ca6368394d73169c59e46 - languageName: node - linkType: hard - "a-sync-waterfall@npm:^1.0.0": version: 1.0.1 resolution: "a-sync-waterfall@npm:1.0.1" @@ -16104,13 +15147,6 @@ __metadata: languageName: node linkType: hard -"add-stream@npm:^1.0.0": - version: 1.0.0 - resolution: "add-stream@npm:1.0.0" - checksum: 3e9e8b0b8f0170406d7c3a9a39bfbdf419ccccb0fd2a396338c0fda0a339af73bf738ad414fc520741de74517acf0dd92b4a36fd3298a47fd5371eee8f2c5a06 - languageName: node - linkType: hard - "address@npm:^1.0.1, address@npm:^1.1.2": version: 1.1.2 resolution: "address@npm:1.1.2" @@ -16514,7 +15550,7 @@ __metadata: languageName: node linkType: hard -"aproba@npm:^1.0.3 || ^2.0.0, aproba@npm:^2.0.0": +"aproba@npm:^1.0.3 || ^2.0.0": version: 2.0.0 resolution: "aproba@npm:2.0.0" checksum: 5615cadcfb45289eea63f8afd064ab656006361020e1735112e346593856f87435e02d8dcc7ff0d11928bc7d425f27bc7c2a84f6c0b35ab0ff659c814c138a24 @@ -16692,13 +15728,6 @@ __metadata: languageName: node linkType: hard -"array-ify@npm:^1.0.0": - version: 1.0.0 - resolution: "array-ify@npm:1.0.0" - checksum: c0502015b319c93dd4484f18036bcc4b654eb76a4aa1f04afbcef11ac918859bb1f5d71ba1f0f1141770db9eef1a4f40f1761753650873068010bbf7bcdae4a4 - languageName: node - linkType: hard - "array-includes@npm:^3.1.2, array-includes@npm:^3.1.4": version: 3.1.4 resolution: "array-includes@npm:3.1.4" @@ -17978,15 +17007,6 @@ __metadata: languageName: node linkType: hard -"builtins@npm:^5.0.0": - version: 5.0.1 - resolution: "builtins@npm:5.0.1" - dependencies: - semver: ^7.0.0 - checksum: 66d204657fe36522822a95b288943ad11b58f5eaede235b11d8c4edaa28ce4800087d44a2681524c340494aadb120a0068011acabe99d30e8f11a7d826d83515 - languageName: node - linkType: hard - "busboy@npm:^1.6.0": version: 1.6.0 resolution: "busboy@npm:1.6.0" @@ -18003,13 +17023,6 @@ __metadata: languageName: node linkType: hard -"byte-size@npm:^7.0.0": - version: 7.0.0 - resolution: "byte-size@npm:7.0.0" - checksum: 6cdd45fb64ac3f80d5cbbc01df7974a4613b3e64bd792b6b8211c8669ca3d1f7efd9379ba24cebfc371ce3e890817dcdaf0bd7ed99571fe2de4b946e6c31a138 - languageName: node - linkType: hard - "bytes@npm:3.0.0": version: 3.0.0 resolution: "bytes@npm:3.0.0" @@ -18050,7 +17063,7 @@ __metadata: languageName: node linkType: hard -"cacache@npm:^16.0.0, cacache@npm:^16.0.6, cacache@npm:^16.1.0": +"cacache@npm:^16.1.0": version: 16.1.1 resolution: "cacache@npm:16.1.1" dependencies: @@ -18486,13 +17499,6 @@ __metadata: languageName: node linkType: hard -"ci-info@npm:^2.0.0": - version: 2.0.0 - resolution: "ci-info@npm:2.0.0" - checksum: 3b374666a85ea3ca43fa49aa3a048d21c9b475c96eb13c133505d2324e7ae5efd6a454f41efe46a152269e9b6a00c9edbe63ec7fa1921957165aae16625acd67 - languageName: node - linkType: hard - "ci-info@npm:^3.1.0, ci-info@npm:^3.2.0": version: 3.3.2 resolution: "ci-info@npm:3.3.2" @@ -18739,7 +17745,7 @@ __metadata: languageName: node linkType: hard -"cmd-shim@npm:^4.0.1, cmd-shim@npm:^4.1.0": +"cmd-shim@npm:^4.0.1": version: 4.1.0 resolution: "cmd-shim@npm:4.1.0" dependencies: @@ -18891,7 +17897,7 @@ __metadata: languageName: node linkType: hard -"color-support@npm:^1.1.2, color-support@npm:^1.1.3": +"color-support@npm:^1.1.2": version: 1.1.3 resolution: "color-support@npm:1.1.3" bin: @@ -18972,16 +17978,6 @@ __metadata: languageName: node linkType: hard -"columnify@npm:^1.5.4": - version: 1.5.4 - resolution: "columnify@npm:1.5.4" - dependencies: - strip-ansi: ^3.0.0 - wcwidth: ^1.0.0 - checksum: f0693937412ec41d387f8ae89ff8cd5811a07ad636f753f0276ba8394fd76c0f610621ebeb379d6adcb30d98696919546dbbf93a28bd4e546efc7e30d905edc2 - languageName: node - linkType: hard - "combined-stream@npm:^1.0.6, combined-stream@npm:^1.0.8, combined-stream@npm:~1.0.6": version: 1.0.8 resolution: "combined-stream@npm:1.0.8" @@ -19096,16 +18092,6 @@ __metadata: languageName: node linkType: hard -"compare-func@npm:^2.0.0": - version: 2.0.0 - resolution: "compare-func@npm:2.0.0" - dependencies: - array-ify: ^1.0.0 - dot-prop: ^5.1.0 - checksum: fb71d70632baa1e93283cf9d80f30ac97f003aabee026e0b4426c9716678079ef5fea7519b84d012cbed938c476493866a38a79760564a9e21ae9433e40e6f0d - languageName: node - linkType: hard - "compare-versions@npm:4.1.3": version: 4.1.3 resolution: "compare-versions@npm:4.1.3" @@ -19276,16 +18262,6 @@ __metadata: languageName: node linkType: hard -"config-chain@npm:^1.1.12": - version: 1.1.12 - resolution: "config-chain@npm:1.1.12" - dependencies: - ini: ^1.3.4 - proto-list: ~1.2.1 - checksum: a16332f87212b4015afcdfc95fe42b40b162e7f10b4f4370ab3239979b6e69a41b4e6fb34d7891aa028a557f2340da236f810df433b18dfa5c408b2eb8489bf7 - languageName: node - linkType: hard - "connect-history-api-fallback@npm:^2.0.0": version: 2.0.0 resolution: "connect-history-api-fallback@npm:2.0.0" @@ -19364,109 +18340,6 @@ __metadata: languageName: node linkType: hard -"conventional-changelog-angular@npm:^5.0.12": - version: 5.0.12 - resolution: "conventional-changelog-angular@npm:5.0.12" - dependencies: - compare-func: ^2.0.0 - q: ^1.5.1 - checksum: 552db8762d210a5172b1ad8cd95312e2e2a0483ba43f8d30b075a56ccf05231fdca1d4d5843028d43bec6bc7f903f480005efc5386587321a15a1fc4d2b73016 - languageName: node - linkType: hard - -"conventional-changelog-core@npm:^4.2.2": - version: 4.2.4 - resolution: "conventional-changelog-core@npm:4.2.4" - dependencies: - add-stream: ^1.0.0 - conventional-changelog-writer: ^5.0.0 - conventional-commits-parser: ^3.2.0 - dateformat: ^3.0.0 - get-pkg-repo: ^4.0.0 - git-raw-commits: ^2.0.8 - git-remote-origin-url: ^2.0.0 - git-semver-tags: ^4.1.1 - lodash: ^4.17.15 - normalize-package-data: ^3.0.0 - q: ^1.5.1 - read-pkg: ^3.0.0 - read-pkg-up: ^3.0.0 - through2: ^4.0.0 - checksum: 56d5194040495ea316e53fd64cb3614462c318f0fe54b1bf25aba6fba9b3d51cb9fdf7ac5b766f17e5529a3f90e317257394e00b0a9a5ce42caf3a59f82afb3a - languageName: node - linkType: hard - -"conventional-changelog-preset-loader@npm:^2.3.4": - version: 2.3.4 - resolution: "conventional-changelog-preset-loader@npm:2.3.4" - checksum: 23a889b7fcf6fe7653e61f32a048877b2f954dcc1e0daa2848c5422eb908e6f24c78372f8d0d2130b5ed941c02e7010c599dccf44b8552602c6c8db9cb227453 - languageName: node - linkType: hard - -"conventional-changelog-writer@npm:^5.0.0": - version: 5.0.1 - resolution: "conventional-changelog-writer@npm:5.0.1" - dependencies: - conventional-commits-filter: ^2.0.7 - dateformat: ^3.0.0 - handlebars: ^4.7.7 - json-stringify-safe: ^5.0.1 - lodash: ^4.17.15 - meow: ^8.0.0 - semver: ^6.0.0 - split: ^1.0.0 - through2: ^4.0.0 - bin: - conventional-changelog-writer: cli.js - checksum: 5c0129db44577f14b1f8de225b62a392a9927ba7fe3422cb21ad71a771b8472bd03badb7c87cb47419913abc3f2ce3759b69f59550cdc6f7a7b0459015b3b44c - languageName: node - linkType: hard - -"conventional-commits-filter@npm:^2.0.7": - version: 2.0.7 - resolution: "conventional-commits-filter@npm:2.0.7" - dependencies: - lodash.ismatch: ^4.4.0 - modify-values: ^1.0.0 - checksum: feb567f680a6da1baaa1ef3cff393b3c56a5828f77ab9df5e70626475425d109a6fee0289b4979223c62bbd63bf9c98ef532baa6fcb1b66ee8b5f49077f5d46c - languageName: node - linkType: hard - -"conventional-commits-parser@npm:^3.2.0": - version: 3.2.1 - resolution: "conventional-commits-parser@npm:3.2.1" - dependencies: - JSONStream: ^1.0.4 - is-text-path: ^1.0.1 - lodash: ^4.17.15 - meow: ^8.0.0 - split2: ^3.0.0 - through2: ^4.0.0 - trim-off-newlines: ^1.0.0 - bin: - conventional-commits-parser: cli.js - checksum: 01b83c625ac3d8f9dca0510a5e21385c9bb410b80bcb60dcfdef20e1fa7fe7fad5a280aa5e1dff8ac32ea0aea5966fa973696557d38f831f8630d4fcf31756d5 - languageName: node - linkType: hard - -"conventional-recommended-bump@npm:^6.1.0": - version: 6.1.0 - resolution: "conventional-recommended-bump@npm:6.1.0" - dependencies: - concat-stream: ^2.0.0 - conventional-changelog-preset-loader: ^2.3.4 - conventional-commits-filter: ^2.0.7 - conventional-commits-parser: ^3.2.0 - git-raw-commits: ^2.0.8 - git-semver-tags: ^4.1.1 - meow: ^8.0.0 - q: ^1.5.1 - bin: - conventional-recommended-bump: cli.js - checksum: da1d7a5f3b9f7706bede685cdcb3db67997fdaa43c310fd5bf340955c84a4b85dbb9427031522ee06dad290b730a54be987b08629d79c73720dbad3a2531146b - languageName: node - linkType: hard - "convert-source-map@npm:^1.4.0, convert-source-map@npm:^1.6.0, convert-source-map@npm:^1.7.0": version: 1.7.0 resolution: "convert-source-map@npm:1.7.0" @@ -20482,13 +19355,6 @@ __metadata: languageName: node linkType: hard -"dargs@npm:^7.0.0": - version: 7.0.0 - resolution: "dargs@npm:7.0.0" - checksum: b8f1e3cba59c42e1f13a114ad4848c3fc1cf7470f633ee9e9f1043762429bc97d91ae31b826fb135eefde203a3fdb20deb0c0a0222ac29d937b8046085d668d1 - languageName: node - linkType: hard - "dashdash@npm:^1.12.0": version: 1.14.1 resolution: "dashdash@npm:1.14.1" @@ -20548,7 +19414,7 @@ __metadata: languageName: node linkType: hard -"dateformat@npm:^3.0.0, dateformat@npm:^3.0.3": +"dateformat@npm:^3.0.3": version: 3.0.3 resolution: "dateformat@npm:3.0.3" checksum: ca4911148abb09887bd9bdcd632c399b06f3ecad709a18eb594d289a1031982f441e08e281db77ffebcb2cbcbfa1ac578a7cbfbf8743f41009aa5adc1846ed34 @@ -20916,13 +19782,6 @@ __metadata: languageName: node linkType: hard -"detect-indent@npm:^5.0.0": - version: 5.0.0 - resolution: "detect-indent@npm:5.0.0" - checksum: 61763211daa498e00eec073aba95d544ae5baed19286a0a655697fa4fffc9f4539c8376e2c7df8fa11d6f8eaa16c1e6a689f403ac41ee78a060278cdadefe2ff - languageName: node - linkType: hard - "detect-indent@npm:^6.0.0": version: 6.1.0 resolution: "detect-indent@npm:6.1.0" @@ -21261,24 +20120,6 @@ __metadata: languageName: node linkType: hard -"dot-prop@npm:^5.1.0": - version: 5.3.0 - resolution: "dot-prop@npm:5.3.0" - dependencies: - is-obj: ^2.0.0 - checksum: d5775790093c234ef4bfd5fbe40884ff7e6c87573e5339432870616331189f7f5d86575c5b5af2dcf0f61172990f4f734d07844b1f23482fff09e3c4bead05ea - languageName: node - linkType: hard - -"dot-prop@npm:^6.0.1": - version: 6.0.1 - resolution: "dot-prop@npm:6.0.1" - dependencies: - is-obj: ^2.0.0 - checksum: 0f47600a4b93e1dc37261da4e6909652c008832a5d3684b5bf9a9a0d3f4c67ea949a86dceed9b72f5733ed8e8e6383cc5958df3bbd0799ee317fd181f2ece700 - languageName: node - linkType: hard - "dotenv@npm:^16.0.0": version: 16.0.0 resolution: "dotenv@npm:16.0.0" @@ -21300,13 +20141,6 @@ __metadata: languageName: node linkType: hard -"duplexer@npm:^0.1.1, duplexer@npm:~0.1.1": - version: 0.1.1 - resolution: "duplexer@npm:0.1.1" - checksum: fc7937c4a43808493cd63dfa59f4deb6cf02beea783cb17f39677b53ccacb9fba48f87731b8944048dd6dfa8f456d0725f86f3fd587ab780532d9a8e2914e8b7 - languageName: node - linkType: hard - "duplexer@npm:^0.1.2": version: 0.1.2 resolution: "duplexer@npm:0.1.2" @@ -21314,6 +20148,13 @@ __metadata: languageName: node linkType: hard +"duplexer@npm:~0.1.1": + version: 0.1.1 + resolution: "duplexer@npm:0.1.1" + checksum: fc7937c4a43808493cd63dfa59f4deb6cf02beea783cb17f39677b53ccacb9fba48f87731b8944048dd6dfa8f456d0725f86f3fd587ab780532d9a8e2914e8b7 + languageName: node + linkType: hard + "duplexify@npm:^4.0.0": version: 4.1.1 resolution: "duplexify@npm:4.1.1" @@ -21628,15 +20469,6 @@ __metadata: languageName: node linkType: hard -"envinfo@npm:^7.7.4": - version: 7.7.4 - resolution: "envinfo@npm:7.7.4" - bin: - envinfo: dist/cli.js - checksum: 73fb993dd9845c61ce52118fcbe4de4d3644d8163130e7bf266f223f32e75e2d33a2c59db83fa0f01f147f122c76567f5f613457a151eb8c6835013538506704 - languageName: node - linkType: hard - "eol@npm:^0.9.1": version: 0.9.1 resolution: "eol@npm:0.9.1" @@ -23397,7 +22229,7 @@ __metadata: languageName: node linkType: hard -"find-up@npm:^2.0.0, find-up@npm:^2.1.0": +"find-up@npm:^2.1.0": version: 2.1.0 resolution: "find-up@npm:2.1.0" dependencies: @@ -23910,22 +22742,6 @@ __metadata: languageName: node linkType: hard -"gauge@npm:^4.0.3": - version: 4.0.4 - resolution: "gauge@npm:4.0.4" - dependencies: - aproba: ^1.0.3 || ^2.0.0 - color-support: ^1.1.3 - console-control-strings: ^1.1.0 - has-unicode: ^2.0.1 - signal-exit: ^3.0.7 - string-width: ^4.2.3 - strip-ansi: ^6.0.1 - wide-align: ^1.1.5 - checksum: 788b6bfe52f1dd8e263cda800c26ac0ca2ff6de0b6eee2fe0d9e3abf15e149b651bd27bf5226be10e6e3edb5c4e5d5985a5a1a98137e7a892f75eff76467ad2d - languageName: node - linkType: hard - "gauge@npm:~2.7.3": version: 2.7.4 resolution: "gauge@npm:2.7.4" @@ -24054,20 +22870,6 @@ __metadata: languageName: node linkType: hard -"get-pkg-repo@npm:^4.0.0": - version: 4.2.1 - resolution: "get-pkg-repo@npm:4.2.1" - dependencies: - "@hutson/parse-repository-url": ^3.0.0 - hosted-git-info: ^4.0.0 - through2: ^2.0.0 - yargs: ^16.2.0 - bin: - get-pkg-repo: src/cli.js - checksum: 5abf169137665e45b09a857b33ad2fdcf2f4a09f0ecbd0ebdd789a7ce78c39186a21f58621127eb724d2d4a3a7ee8e6bd4ac7715efda01ad5200665afc218e0d - languageName: node - linkType: hard - "get-port@npm:^5.1.1": version: 5.1.1 resolution: "get-port@npm:5.1.1" @@ -24140,53 +22942,6 @@ __metadata: languageName: node linkType: hard -"git-raw-commits@npm:^2.0.8": - version: 2.0.10 - resolution: "git-raw-commits@npm:2.0.10" - dependencies: - dargs: ^7.0.0 - lodash: ^4.17.15 - meow: ^8.0.0 - split2: ^3.0.0 - through2: ^4.0.0 - bin: - git-raw-commits: cli.js - checksum: 66e2d7b4cdeff946ac639e1bba37f5dcbd9f5c9245348b31e027e4529f6b6733d23f75768d285d5f29c1f08d3485705a4932300a81a45b77b660fe3ce6089c29 - languageName: node - linkType: hard - -"git-remote-origin-url@npm:^2.0.0": - version: 2.0.0 - resolution: "git-remote-origin-url@npm:2.0.0" - dependencies: - gitconfiglocal: ^1.0.0 - pify: ^2.3.0 - checksum: 85263a09c044b5f4fe2acc45cbb3c5331ab2bd4484bb53dfe7f3dd593a4bf90a9786a2e00b9884524331f50b3da18e8c924f01c2944087fc7f342282c4437b73 - languageName: node - linkType: hard - -"git-semver-tags@npm:^4.1.1": - version: 4.1.1 - resolution: "git-semver-tags@npm:4.1.1" - dependencies: - meow: ^8.0.0 - semver: ^6.0.0 - bin: - git-semver-tags: cli.js - checksum: e16d02a515c0f88289a28b5bf59bf42c0dc053765922d3b617ae4b50546bd4f74a25bf3ad53b91cb6c1159319a2e92533b160c573b856c2629125c8b26b3b0e3 - languageName: node - linkType: hard - -"git-up@npm:^4.0.0": - version: 4.0.1 - resolution: "git-up@npm:4.0.1" - dependencies: - is-ssh: ^1.3.0 - parse-url: ^5.0.0 - checksum: fbbd8f8f5a57dbd6830592f051564498d322acbbccec5b85b7eff41aade8e175dbd702ae9f6caa80d5ce3cb5435b03711c9d706f26e07923eba6d940fc7dcebf - languageName: node - linkType: hard - "git-up@npm:^7.0.0": version: 7.0.0 resolution: "git-up@npm:7.0.0" @@ -24197,15 +22952,6 @@ __metadata: languageName: node linkType: hard -"git-url-parse@npm:^11.4.4": - version: 11.6.0 - resolution: "git-url-parse@npm:11.6.0" - dependencies: - git-up: ^4.0.0 - checksum: 18a7d0bbac76c55fe8a501d4bd4c6b5f5528883a4dadcfce1152b4902e3e5831df8e97f36ea3f564de633e9ab44d9ab09bb2f319e41af1b6e4f627af139d35d5 - languageName: node - linkType: hard - "git-url-parse@npm:^13.0.0": version: 13.0.0 resolution: "git-url-parse@npm:13.0.0" @@ -24215,15 +22961,6 @@ __metadata: languageName: node linkType: hard -"gitconfiglocal@npm:^1.0.0": - version: 1.0.0 - resolution: "gitconfiglocal@npm:1.0.0" - dependencies: - ini: ^1.3.2 - checksum: e6d2764c15bbab6d1d1000d1181bb907f6b3796bb04f63614dba571b18369e0ecb1beaf27ce8da5b24307ef607e3a5f262a67cb9575510b9446aac697d421beb - languageName: node - linkType: hard - "github-from-package@npm:0.0.0": version: 0.0.0 resolution: "github-from-package@npm:0.0.0" @@ -24231,7 +22968,7 @@ __metadata: languageName: node linkType: hard -"glob-parent@npm:^5.1.1, glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": +"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": version: 5.1.2 resolution: "glob-parent@npm:5.1.2" dependencies: @@ -24389,7 +23126,7 @@ __metadata: languageName: node linkType: hard -"globby@npm:^11.0.0, globby@npm:^11.0.1, globby@npm:^11.0.2, globby@npm:^11.0.3, globby@npm:^11.0.4, globby@npm:^11.1.0": +"globby@npm:^11.0.0, globby@npm:^11.0.1, globby@npm:^11.0.3, globby@npm:^11.0.4, globby@npm:^11.1.0": version: 11.1.0 resolution: "globby@npm:11.1.0" dependencies: @@ -24537,7 +23274,7 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.15, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": +"graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.9 resolution: "graceful-fs@npm:4.2.9" checksum: 68ea4e07ff2c041ada184f9278b830375f8e0b75154e3f080af6b70f66172fabb4108d19b3863a96b53fc068a310b9b6493d86d1291acc5f3861eb4b79d26ad6 @@ -24800,7 +23537,7 @@ __metadata: languageName: node linkType: hard -"handlebars@npm:^4.7.3, handlebars@npm:^4.7.7": +"handlebars@npm:^4.7.3": version: 4.7.7 resolution: "handlebars@npm:4.7.7" dependencies: @@ -25129,16 +23866,7 @@ __metadata: languageName: node linkType: hard -"hosted-git-info@npm:^3.0.6": - version: 3.0.8 - resolution: "hosted-git-info@npm:3.0.8" - dependencies: - lru-cache: ^6.0.0 - checksum: 5af7a69581acb84206a7b8e009f4680c36396814e92c8a83973dfb3b87e44e44d1f7b8eaf3e4a953686482770ecb78406a4ce4666bfdfe447762434127871d8d - languageName: node - linkType: hard - -"hosted-git-info@npm:^4.0.0, hosted-git-info@npm:^4.0.1": +"hosted-git-info@npm:^4.0.1": version: 4.1.0 resolution: "hosted-git-info@npm:4.1.0" dependencies: @@ -25147,15 +23875,6 @@ __metadata: languageName: node linkType: hard -"hosted-git-info@npm:^5.0.0": - version: 5.0.0 - resolution: "hosted-git-info@npm:5.0.0" - dependencies: - lru-cache: ^7.5.1 - checksum: 515e69463d123635f70d70656c5ec648951ffc1987f92a87cb4a038e1794bfed833cf87569b358b137ebbc75d992c073ed0408d420c9e5b717c2b4f0a291490c - languageName: node - linkType: hard - "hpack.js@npm:^2.1.6": version: 2.1.6 resolution: "hpack.js@npm:2.1.6" @@ -25534,15 +24253,6 @@ __metadata: languageName: node linkType: hard -"ignore-walk@npm:^3.0.3": - version: 3.0.3 - resolution: "ignore-walk@npm:3.0.3" - dependencies: - minimatch: ^3.0.4 - checksum: 34bc6f0497276a9bfad7ba1ae301c7d16bc6424890755a21d90536eaa1f4b7acd598686a01033e64345483b2fef41dad8f93794af73c8b13a7cf21a3cae34a4e - languageName: node - linkType: hard - "ignore-walk@npm:^4.0.1": version: 4.0.1 resolution: "ignore-walk@npm:4.0.1" @@ -25748,29 +24458,13 @@ __metadata: languageName: node linkType: hard -"ini@npm:^1.3.2, ini@npm:^1.3.4, ini@npm:^1.3.5, ini@npm:~1.3.0": +"ini@npm:^1.3.5, ini@npm:~1.3.0": version: 1.3.8 resolution: "ini@npm:1.3.8" checksum: dfd98b0ca3a4fc1e323e38a6c8eb8936e31a97a918d3b377649ea15bdb15d481207a0dda1021efbd86b464cae29a0d33c1d7dcaf6c5672bee17fa849bc50a1b3 languageName: node linkType: hard -"init-package-json@npm:^2.0.2": - version: 2.0.2 - resolution: "init-package-json@npm:2.0.2" - dependencies: - glob: ^7.1.1 - npm-package-arg: ^8.1.0 - promzard: ^0.3.0 - read: ~1.0.1 - read-package-json: ^3.0.0 - semver: ^7.3.2 - validate-npm-package-license: ^3.0.4 - validate-npm-package-name: ^3.0.0 - checksum: d8bfd3bd0de46411768011d441c6c96299e639279d7720184f51796533d0088a04a1010ad675718ec899bf6991e84a5e2de6b1ffa3c9357cea919b87c9fb4f73 - languageName: node - linkType: hard - "inline-style-parser@npm:0.1.1": version: 0.1.1 resolution: "inline-style-parser@npm:0.1.1" @@ -25809,27 +24503,6 @@ __metadata: languageName: node linkType: hard -"inquirer@npm:^7.3.3": - version: 7.3.3 - resolution: "inquirer@npm:7.3.3" - dependencies: - ansi-escapes: ^4.2.1 - chalk: ^4.1.0 - cli-cursor: ^3.1.0 - cli-width: ^3.0.0 - external-editor: ^3.0.3 - figures: ^3.0.0 - lodash: ^4.17.19 - mute-stream: 0.0.8 - run-async: ^2.4.0 - rxjs: ^6.6.0 - string-width: ^4.1.0 - strip-ansi: ^6.0.0 - through: ^2.3.6 - checksum: 4d387fc1eb6126acbd58cbdb9ad99d2887d181df86ab0c2b9abdf734e751093e2d5882c2b6dc7144d9ab16b7ab30a78a1d7f01fb6a2850a44aeb175d1e3f8778 - languageName: node - linkType: hard - "inquirer@npm:^8.0.0, inquirer@npm:^8.2.0": version: 8.2.4 resolution: "inquirer@npm:8.2.4" @@ -26097,17 +24770,6 @@ __metadata: languageName: node linkType: hard -"is-ci@npm:^2.0.0": - version: 2.0.0 - resolution: "is-ci@npm:2.0.0" - dependencies: - ci-info: ^2.0.0 - bin: - is-ci: bin.js - checksum: 77b869057510f3efa439bbb36e9be429d53b3f51abd4776eeea79ab3b221337fe1753d1e50058a9e2c650d38246108beffb15ccfd443929d77748d8c0cc90144 - languageName: node - linkType: hard - "is-ci@npm:^3.0.0, is-ci@npm:^3.0.1": version: 3.0.1 resolution: "is-ci@npm:3.0.1" @@ -26404,13 +25066,6 @@ __metadata: languageName: node linkType: hard -"is-obj@npm:^2.0.0": - version: 2.0.0 - resolution: "is-obj@npm:2.0.0" - checksum: c9916ac8f4621962a42f5e80e7ffdb1d79a3fab7456ceaeea394cd9e0858d04f985a9ace45be44433bf605673c8be8810540fe4cc7f4266fc7526ced95af5a08 - languageName: node - linkType: hard - "is-object@npm:^1.0.1": version: 1.0.1 resolution: "is-object@npm:1.0.1" @@ -26432,20 +25087,13 @@ __metadata: languageName: node linkType: hard -"is-plain-obj@npm:^1.0.0, is-plain-obj@npm:^1.1.0": +"is-plain-obj@npm:^1.1.0": version: 1.1.0 resolution: "is-plain-obj@npm:1.1.0" checksum: 0ee04807797aad50859652a7467481816cbb57e5cc97d813a7dcd8915da8195dc68c436010bf39d195226cde6a2d352f4b815f16f26b7bf486a5754290629931 languageName: node linkType: hard -"is-plain-obj@npm:^2.0.0": - version: 2.1.0 - resolution: "is-plain-obj@npm:2.1.0" - checksum: cec9100678b0a9fe0248a81743041ed990c2d4c99f893d935545cfbc42876cbe86d207f3b895700c690ad2fa520e568c44afc1605044b535a7820c1d40e38daa - languageName: node - linkType: hard - "is-plain-obj@npm:^3.0.0": version: 3.0.0 resolution: "is-plain-obj@npm:3.0.0" @@ -26571,15 +25219,6 @@ __metadata: languageName: node linkType: hard -"is-ssh@npm:^1.3.0": - version: 1.3.1 - resolution: "is-ssh@npm:1.3.1" - dependencies: - protocols: ^1.1.0 - checksum: 769a6ce56477881b66cc3f9ef7924785d32bd904d7fff39bef8eac08251fc5cc9e02fd4b3d99f0b357312b550c2122d9202a887f5630c67cf890263f2c7f1acc - languageName: node - linkType: hard - "is-ssh@npm:^1.4.0": version: 1.4.0 resolution: "is-ssh@npm:1.4.0" @@ -26637,15 +25276,6 @@ __metadata: languageName: node linkType: hard -"is-text-path@npm:^1.0.1": - version: 1.0.1 - resolution: "is-text-path@npm:1.0.1" - dependencies: - text-extensions: ^1.0.0 - checksum: fb5d78752c22b3f73a7c9540768f765ffcfa38c9e421e2b9af869565307fa1ae5e3d3a2ba016a43549742856846566d327da406e94a5846ec838a288b1704fd2 - languageName: node - linkType: hard - "is-typed-array@npm:^1.1.3": version: 1.1.5 resolution: "is-typed-array@npm:1.1.5" @@ -26659,7 +25289,7 @@ __metadata: languageName: node linkType: hard -"is-typedarray@npm:^1.0.0, is-typedarray@npm:~1.0.0": +"is-typedarray@npm:~1.0.0": version: 1.0.0 resolution: "is-typedarray@npm:1.0.0" checksum: 3508c6cd0a9ee2e0df2fa2e9baabcdc89e911c7bd5cf64604586697212feec525aa21050e48affb5ffc3df20f0f5d2e2cf79b08caa64e1ccc9578e251763aef7 @@ -28078,7 +26708,7 @@ __metadata: languageName: node linkType: hard -"jsonparse@npm:^1.2.0, jsonparse@npm:^1.3.1": +"jsonparse@npm:^1.3.1": version: 1.3.1 resolution: "jsonparse@npm:1.3.1" checksum: 6514a7be4674ebf407afca0eda3ba284b69b07f9958a8d3113ef1005f7ec610860c312be067e450c569aab8b89635e332cee3696789c750692bb60daba627f4d @@ -28574,34 +27204,6 @@ __metadata: languageName: node linkType: hard -"lerna@npm:~5.0.0": - version: 5.0.0 - resolution: "lerna@npm:5.0.0" - dependencies: - "@lerna/add": 5.0.0 - "@lerna/bootstrap": 5.0.0 - "@lerna/changed": 5.0.0 - "@lerna/clean": 5.0.0 - "@lerna/cli": 5.0.0 - "@lerna/create": 5.0.0 - "@lerna/diff": 5.0.0 - "@lerna/exec": 5.0.0 - "@lerna/import": 5.0.0 - "@lerna/info": 5.0.0 - "@lerna/init": 5.0.0 - "@lerna/link": 5.0.0 - "@lerna/list": 5.0.0 - "@lerna/publish": 5.0.0 - "@lerna/run": 5.0.0 - "@lerna/version": 5.0.0 - import-local: ^3.0.2 - npmlog: ^4.1.2 - bin: - lerna: cli.js - checksum: 27383b3dba162041dbd9de8ca3cd134fe6c6fe57082fee3f12fbf795dfc0e9e513eca9a1cc0aacbea29ef19c6009c3ba64d620ef3e67143e001fbcd4eebeebf5 - languageName: node - linkType: hard - "leven@npm:2.1.0": version: 2.1.0 resolution: "leven@npm:2.1.0" @@ -28643,31 +27245,6 @@ __metadata: languageName: node linkType: hard -"libnpmaccess@npm:^4.0.1": - version: 4.0.1 - resolution: "libnpmaccess@npm:4.0.1" - dependencies: - aproba: ^2.0.0 - minipass: ^3.1.1 - npm-package-arg: ^8.0.0 - npm-registry-fetch: ^9.0.0 - checksum: ca89f579311b2d348236107566f9c9a9e84678428fc267c3ed284ab99b4179ae560864fee36b676726c906e9dd83725d2e91b334d0c4cb7b2d3a52827fa75dd9 - languageName: node - linkType: hard - -"libnpmpublish@npm:^4.0.0": - version: 4.0.0 - resolution: "libnpmpublish@npm:4.0.0" - dependencies: - normalize-package-data: ^3.0.0 - npm-package-arg: ^8.1.0 - npm-registry-fetch: ^9.0.0 - semver: ^7.1.3 - ssri: ^8.0.0 - checksum: 382cb15b19053b7097cdd6fe36e1c760cbb4906e5a3fac02f8909e4f2792e66f4652a655cd74c6744ad412a000a769d40fee23a58e8c38299535c0d76a1ff3a9 - languageName: node - linkType: hard - "lilconfig@npm:2.0.5": version: 2.0.5 resolution: "lilconfig@npm:2.0.5" @@ -28804,18 +27381,6 @@ __metadata: languageName: node linkType: hard -"load-json-file@npm:^6.2.0": - version: 6.2.0 - resolution: "load-json-file@npm:6.2.0" - dependencies: - graceful-fs: ^4.1.15 - parse-json: ^5.0.0 - strip-bom: ^4.0.0 - type-fest: ^0.6.0 - checksum: 4429e430ebb99375fc7cd936348e4f7ba729486080ced4272091c1e386a7f5f738ea3337d8ffd4b01c2f5bc3ddde92f2c780045b66838fe98bdb79f901884643 - languageName: node - linkType: hard - "load-yaml-file@npm:^0.2.0": version: 0.2.0 resolution: "load-yaml-file@npm:0.2.0" @@ -28909,13 +27474,6 @@ __metadata: languageName: node linkType: hard -"lodash._reinterpolate@npm:^3.0.0": - version: 3.0.0 - resolution: "lodash._reinterpolate@npm:3.0.0" - checksum: 06d2d5f33169604fa5e9f27b6067ed9fb85d51a84202a656901e5ffb63b426781a601508466f039c720af111b0c685d12f1a5c14ff8df5d5f27e491e562784b2 - languageName: node - linkType: hard - "lodash.assign@npm:^4.1.0, lodash.assign@npm:^4.2.0": version: 4.2.0 resolution: "lodash.assign@npm:4.2.0" @@ -29042,13 +27600,6 @@ __metadata: languageName: node linkType: hard -"lodash.ismatch@npm:^4.4.0": - version: 4.4.0 - resolution: "lodash.ismatch@npm:4.4.0" - checksum: a393917578842705c7fc1a30fb80613d1ac42d20b67eb26a2a6004d6d61ee90b419f9eb320508ddcd608e328d91eeaa2651411727eaa9a12534ed6ccb02fc705 - languageName: node - linkType: hard - "lodash.isnil@npm:^4.0.0": version: 4.0.0 resolution: "lodash.isnil@npm:4.0.0" @@ -29133,25 +27684,6 @@ __metadata: languageName: node linkType: hard -"lodash.template@npm:^4.5.0": - version: 4.5.0 - resolution: "lodash.template@npm:4.5.0" - dependencies: - lodash._reinterpolate: ^3.0.0 - lodash.templatesettings: ^4.0.0 - checksum: ca64e5f07b6646c9d3dbc0fe3aaa995cb227c4918abd1cef7a9024cd9c924f2fa389a0ec4296aa6634667e029bc81d4bbdb8efbfde11df76d66085e6c529b450 - languageName: node - linkType: hard - -"lodash.templatesettings@npm:^4.0.0": - version: 4.2.0 - resolution: "lodash.templatesettings@npm:4.2.0" - dependencies: - lodash._reinterpolate: ^3.0.0 - checksum: 863e025478b092997e11a04e9d9e735875eeff1ffcd6c61742aa8272e3c2cddc89ce795eb9726c4e74cef5991f722897ff37df7738a125895f23fc7d12a7bb59 - languageName: node - linkType: hard - "lodash.throttle@npm:^4.1.1": version: 4.1.1 resolution: "lodash.throttle@npm:4.1.1" @@ -29317,7 +27849,7 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^7.10.1, lru-cache@npm:^7.4.4, lru-cache@npm:^7.5.1, lru-cache@npm:^7.7.1": +"lru-cache@npm:^7.10.1, lru-cache@npm:^7.7.1": version: 7.10.1 resolution: "lru-cache@npm:7.10.1" checksum: e8b190d71ed0fcd7b29c71a3e9b01f851c92d1ef8865ff06b5581ca991db1e5e006920ed4da8b56da1910664ed51abfd76c46fb55e82ac252ff6c970ff910d72 @@ -29460,53 +27992,6 @@ __metadata: languageName: node linkType: hard -"make-fetch-happen@npm:^10.0.6": - version: 10.1.7 - resolution: "make-fetch-happen@npm:10.1.7" - dependencies: - agentkeepalive: ^4.2.1 - cacache: ^16.1.0 - http-cache-semantics: ^4.1.0 - http-proxy-agent: ^5.0.0 - https-proxy-agent: ^5.0.0 - is-lambda: ^1.0.1 - lru-cache: ^7.7.1 - minipass: ^3.1.6 - minipass-collect: ^1.0.2 - minipass-fetch: ^2.0.3 - minipass-flush: ^1.0.5 - minipass-pipeline: ^1.2.4 - negotiator: ^0.6.3 - promise-retry: ^2.0.1 - socks-proxy-agent: ^7.0.0 - ssri: ^9.0.0 - checksum: 2b7301256e18a2f825c1c3cad14e11492428531ecdea04d846dc12c2d69658d65832746ce965e67c7f98b0d0506115674cf43676c3322709278620bfc886cf4a - languageName: node - linkType: hard - -"make-fetch-happen@npm:^8.0.9": - version: 8.0.14 - resolution: "make-fetch-happen@npm:8.0.14" - dependencies: - agentkeepalive: ^4.1.3 - cacache: ^15.0.5 - http-cache-semantics: ^4.1.0 - http-proxy-agent: ^4.0.1 - https-proxy-agent: ^5.0.0 - is-lambda: ^1.0.1 - lru-cache: ^6.0.0 - minipass: ^3.1.3 - minipass-collect: ^1.0.2 - minipass-fetch: ^1.3.2 - minipass-flush: ^1.0.5 - minipass-pipeline: ^1.2.4 - promise-retry: ^2.0.1 - socks-proxy-agent: ^5.0.0 - ssri: ^8.0.0 - checksum: 326fefde1aec1f1314e548be74baaaa322208718d1b51c9688a326f73dea70f57767b4f5423230e39408cfe7c6dcf7adcf86ca4798c919c3ea78f54532910434 - languageName: node - linkType: hard - "make-fetch-happen@npm:^9.1.0": version: 9.1.0 resolution: "make-fetch-happen@npm:9.1.0" @@ -29920,25 +28405,6 @@ __metadata: languageName: node linkType: hard -"meow@npm:^8.0.0": - version: 8.1.2 - resolution: "meow@npm:8.1.2" - dependencies: - "@types/minimist": ^1.2.0 - camelcase-keys: ^6.2.2 - decamelize-keys: ^1.1.0 - hard-rejection: ^2.1.0 - minimist-options: 4.1.0 - normalize-package-data: ^3.0.0 - read-pkg-up: ^7.0.1 - redent: ^3.0.0 - trim-newlines: ^3.0.0 - type-fest: ^0.18.0 - yargs-parser: ^20.2.3 - checksum: bc23bf1b4423ef6a821dff9734406bce4b91ea257e7f10a8b7f896f45b59649f07adc0926e2917eacd8cf1df9e4cd89c77623cf63dfd0f8bf54de07a32ee5a85 - languageName: node - linkType: hard - "merge-descriptors@npm:1.0.1": version: 1.0.1 resolution: "merge-descriptors@npm:1.0.1" @@ -30535,7 +29001,7 @@ __metadata: languageName: node linkType: hard -"minimist-options@npm:4.1.0, minimist-options@npm:^4.0.2": +"minimist-options@npm:^4.0.2": version: 4.1.0 resolution: "minimist-options@npm:4.1.0" dependencies: @@ -30571,7 +29037,7 @@ __metadata: languageName: node linkType: hard -"minipass-fetch@npm:^1.3.0, minipass-fetch@npm:^1.3.2, minipass-fetch@npm:^1.4.1": +"minipass-fetch@npm:^1.3.2, minipass-fetch@npm:^1.4.1": version: 1.4.1 resolution: "minipass-fetch@npm:1.4.1" dependencies: @@ -30751,13 +29217,6 @@ __metadata: languageName: node linkType: hard -"modify-values@npm:^1.0.0": - version: 1.0.1 - resolution: "modify-values@npm:1.0.1" - checksum: 8296610c608bc97b03c2cf889c6cdf4517e32fa2d836440096374c2209f6b7b3e256c209493a0b32584b9cb32d528e99d0dd19dcd9a14d2d915a312d391cc7e9 - languageName: node - linkType: hard - "moment@npm:^2.27.0, moment@npm:^2.29.1": version: 2.29.4 resolution: "moment@npm:2.29.4" @@ -30902,7 +29361,7 @@ __metadata: languageName: node linkType: hard -"mute-stream@npm:0.0.8, mute-stream@npm:~0.0.4": +"mute-stream@npm:0.0.8": version: 0.0.8 resolution: "mute-stream@npm:0.0.8" checksum: ff48d251fc3f827e5b1206cda0ffdaec885e56057ee86a3155e1951bc940fd5f33531774b1cc8414d7668c10a8907f863f6561875ee6e8768931a62121a531a1 @@ -31145,7 +29604,7 @@ __metadata: languageName: node linkType: hard -"node-gyp@npm:^8.2.0, node-gyp@npm:^8.4.1": +"node-gyp@npm:^8.2.0": version: 8.4.1 resolution: "node-gyp@npm:8.4.1" dependencies: @@ -31298,30 +29757,6 @@ __metadata: languageName: node linkType: hard -"normalize-package-data@npm:^3.0.0": - version: 3.0.0 - resolution: "normalize-package-data@npm:3.0.0" - dependencies: - hosted-git-info: ^3.0.6 - resolve: ^1.17.0 - semver: ^7.3.2 - validate-npm-package-license: ^3.0.1 - checksum: 665ad6e3d0463f56ee8acc1f8f71c5f62535e4c689ed389521c36e8fd34273306f978c934154de3a43f5b128ed7010872ce3381948f8d4a63d70f50ed01ac2e0 - languageName: node - linkType: hard - -"normalize-package-data@npm:^4.0.0": - version: 4.0.0 - resolution: "normalize-package-data@npm:4.0.0" - dependencies: - hosted-git-info: ^5.0.0 - is-core-module: ^2.8.1 - semver: ^7.3.5 - validate-npm-package-license: ^3.0.4 - checksum: b0f47de4295a0f8499bd478e84b9f9592a29f65227c2b4446ae80f7dff6e7a5ec6ef25ea8f06f3dcb9b7b7d945c2daa274385925b3d85e77e34eaffa0b42e316 - languageName: node - linkType: hard - "normalize-path@npm:^2.1.1": version: 2.1.1 resolution: "normalize-path@npm:2.1.1" @@ -31338,13 +29773,6 @@ __metadata: languageName: node linkType: hard -"normalize-url@npm:^3.3.0": - version: 3.3.0 - resolution: "normalize-url@npm:3.3.0" - checksum: f6aa4a1a94c3b799812f3e7fc987fb4599d869bfa8e9a160b6f2c5a2b4e62ada998d64dca30d9e20769d8bd95d3da1da3d4841dba2cc3c4d85364e1eb46219a2 - languageName: node - linkType: hard - "normalize-url@npm:^6.0.1": version: 6.1.0 resolution: "normalize-url@npm:6.1.0" @@ -31379,15 +29807,6 @@ __metadata: languageName: node linkType: hard -"npm-install-checks@npm:^5.0.0": - version: 5.0.0 - resolution: "npm-install-checks@npm:5.0.0" - dependencies: - semver: ^7.1.1 - checksum: 0e7d1aae52b1fe9d3a0fd4a008850c7047931722dd49ee908afd13fd0297ac5ddb10964d9c59afcdaaa2ca04b51d75af2788f668c729ae71fec0e4cdac590ffc - languageName: node - linkType: hard - "npm-normalize-package-bin@npm:^1.0.0, npm-normalize-package-bin@npm:^1.0.1": version: 1.0.1 resolution: "npm-normalize-package-bin@npm:1.0.1" @@ -31402,7 +29821,7 @@ __metadata: languageName: node linkType: hard -"npm-package-arg@npm:^8.0.0, npm-package-arg@npm:^8.0.1, npm-package-arg@npm:^8.1.0, npm-package-arg@npm:^8.1.2, npm-package-arg@npm:^8.1.5": +"npm-package-arg@npm:^8.0.1, npm-package-arg@npm:^8.1.2, npm-package-arg@npm:^8.1.5": version: 8.1.5 resolution: "npm-package-arg@npm:8.1.5" dependencies: @@ -31413,31 +29832,6 @@ __metadata: languageName: node linkType: hard -"npm-package-arg@npm:^9.0.0, npm-package-arg@npm:^9.0.1": - version: 9.0.2 - resolution: "npm-package-arg@npm:9.0.2" - dependencies: - hosted-git-info: ^5.0.0 - semver: ^7.3.5 - validate-npm-package-name: ^4.0.0 - checksum: 07828f330f611214a0aa1e87f402b30b3dc90388671470ad8dc1551f28b0cb886f1f75fa7c37e894a9598640a555c05643642994ecacb9a6c68f655e571968f7 - languageName: node - linkType: hard - -"npm-packlist@npm:^2.1.4": - version: 2.1.4 - resolution: "npm-packlist@npm:2.1.4" - dependencies: - glob: ^7.1.6 - ignore-walk: ^3.0.3 - npm-bundled: ^1.1.1 - npm-normalize-package-bin: ^1.0.1 - bin: - npm-packlist: bin/index.js - checksum: 916eb67d81c52124b01e20a72168e83fed6fbc168fb6ecd659f5581f515818b9668dab9c1a6b19c7fd6dbe583ad2ed7ceb06924aa884336696f1b08f0f637b22 - languageName: node - linkType: hard - "npm-packlist@npm:^3.0.0": version: 3.0.0 resolution: "npm-packlist@npm:3.0.0" @@ -31452,7 +29846,7 @@ __metadata: languageName: node linkType: hard -"npm-packlist@npm:^5.0.0, npm-packlist@npm:^5.1.0": +"npm-packlist@npm:^5.0.0": version: 5.1.3 resolution: "npm-packlist@npm:5.1.3" dependencies: @@ -31478,18 +29872,6 @@ __metadata: languageName: node linkType: hard -"npm-pick-manifest@npm:^7.0.0": - version: 7.0.1 - resolution: "npm-pick-manifest@npm:7.0.1" - dependencies: - npm-install-checks: ^5.0.0 - npm-normalize-package-bin: ^1.0.1 - npm-package-arg: ^9.0.0 - semver: ^7.3.5 - checksum: 9a4a8e64d2214783b2b74a361845000f5d91bb40c7858e2a30af2ac7876d9296efc37f8cacf60335e96a45effee2035b033d9bdefb4889757cc60d85959accbb - languageName: node - linkType: hard - "npm-registry-fetch@npm:^12.0.0, npm-registry-fetch@npm:^12.0.1": version: 12.0.2 resolution: "npm-registry-fetch@npm:12.0.2" @@ -31504,37 +29886,6 @@ __metadata: languageName: node linkType: hard -"npm-registry-fetch@npm:^13.0.0, npm-registry-fetch@npm:^13.0.1": - version: 13.1.1 - resolution: "npm-registry-fetch@npm:13.1.1" - dependencies: - make-fetch-happen: ^10.0.6 - minipass: ^3.1.6 - minipass-fetch: ^2.0.3 - minipass-json-stream: ^1.0.1 - minizlib: ^2.1.2 - npm-package-arg: ^9.0.1 - proc-log: ^2.0.0 - checksum: e085faf5cdc1cfe9b8f825065a0823531b2a28799d84614b3971e344dde087f9089c0f0220360771a81f110c5444978c6f7309084ff7d7d396252b068148bb44 - languageName: node - linkType: hard - -"npm-registry-fetch@npm:^9.0.0": - version: 9.0.0 - resolution: "npm-registry-fetch@npm:9.0.0" - dependencies: - "@npmcli/ci-detect": ^1.0.0 - lru-cache: ^6.0.0 - make-fetch-happen: ^8.0.9 - minipass: ^3.1.3 - minipass-fetch: ^1.3.0 - minipass-json-stream: ^1.0.1 - minizlib: ^2.0.0 - npm-package-arg: ^8.0.0 - checksum: b5376b72efc503e46a84cda967b79c08b093f040bfa819b59db32dfa9b057c810401a740dbf739a94a2ebbd0f6a3888bc0918db6506553ab97afb555260a5a22 - languageName: node - linkType: hard - "npm-run-path@npm:^4.0.0, npm-run-path@npm:^4.0.1": version: 4.0.1 resolution: "npm-run-path@npm:4.0.1" @@ -31589,18 +29940,6 @@ __metadata: languageName: node linkType: hard -"npmlog@npm:^6.0.2": - version: 6.0.2 - resolution: "npmlog@npm:6.0.2" - dependencies: - are-we-there-yet: ^3.0.0 - console-control-strings: ^1.1.0 - gauge: ^4.0.3 - set-blocking: ^2.0.0 - checksum: ae238cd264a1c3f22091cdd9e2b106f684297d3c184f1146984ecbe18aaa86343953f26b9520dedd1b1372bc0316905b736c1932d778dbeb1fcf5a1001390e2a - languageName: node - linkType: hard - "nth-check@npm:^2.0.0": version: 2.0.1 resolution: "nth-check@npm:2.0.1" @@ -32141,13 +30480,6 @@ __metadata: languageName: node linkType: hard -"p-map-series@npm:^2.1.0": - version: 2.1.0 - resolution: "p-map-series@npm:2.1.0" - checksum: 69d4efbb6951c0dd62591d5a18c3af0af78496eae8b55791e049da239d70011aa3af727dece3fc9943e0bb3fd4fa64d24177cfbecc46efaf193179f0feeac486 - languageName: node - linkType: hard - "p-map@npm:^2.0.0": version: 2.1.0 resolution: "p-map@npm:2.1.0" @@ -32164,13 +30496,6 @@ __metadata: languageName: node linkType: hard -"p-pipe@npm:^3.1.0": - version: 3.1.0 - resolution: "p-pipe@npm:3.1.0" - checksum: ee9a2609685f742c6ceb3122281ec4453bbbcc80179b13e66fd139dcf19b1c327cf6c2fdfc815b548d6667e7eaefe5396323f6d49c4f7933e4cef47939e3d65c - languageName: node - linkType: hard - "p-queue@npm:^6.6.2": version: 6.6.2 resolution: "p-queue@npm:6.6.2" @@ -32181,13 +30506,6 @@ __metadata: languageName: node linkType: hard -"p-reduce@npm:^2.0.0, p-reduce@npm:^2.1.0": - version: 2.1.0 - resolution: "p-reduce@npm:2.1.0" - checksum: 99b26d36066a921982f25c575e78355824da0787c486e3dd9fc867460e8bf17d5fb3ce98d006b41bdc81ffc0aa99edf5faee53d11fe282a20291fb721b0cb1c7 - languageName: node - linkType: hard - "p-retry@npm:^4.5.0": version: 4.5.0 resolution: "p-retry@npm:4.5.0" @@ -32231,15 +30549,6 @@ __metadata: languageName: node linkType: hard -"p-waterfall@npm:^2.1.1": - version: 2.1.1 - resolution: "p-waterfall@npm:2.1.1" - dependencies: - p-reduce: ^2.0.0 - checksum: 8588bb8b004ee37e559c7e940a480c1742c42725d477b0776ff30b894920a3e48bddf8f60aa0ae82773e500a8fc99d75e947c450e0c2ce187aff72cc1b248f6d - languageName: node - linkType: hard - "packet-reader@npm:1.0.0": version: 1.0.0 resolution: "packet-reader@npm:1.0.0" @@ -32276,37 +30585,6 @@ __metadata: languageName: node linkType: hard -"pacote@npm:^13.0.3, pacote@npm:^13.0.5, pacote@npm:^13.4.1": - version: 13.6.0 - resolution: "pacote@npm:13.6.0" - dependencies: - "@npmcli/git": ^3.0.0 - "@npmcli/installed-package-contents": ^1.0.7 - "@npmcli/promise-spawn": ^3.0.0 - "@npmcli/run-script": ^3.0.1 - cacache: ^16.0.0 - chownr: ^2.0.0 - fs-minipass: ^2.1.0 - infer-owner: ^1.0.4 - minipass: ^3.1.6 - mkdirp: ^1.0.4 - npm-package-arg: ^9.0.0 - npm-packlist: ^5.1.0 - npm-pick-manifest: ^7.0.0 - npm-registry-fetch: ^13.0.1 - proc-log: ^2.0.0 - promise-retry: ^2.0.1 - read-package-json: ^5.0.0 - read-package-json-fast: ^2.0.3 - rimraf: ^3.0.2 - ssri: ^9.0.0 - tar: ^6.1.11 - bin: - pacote: lib/bin.js - checksum: 9e68300fbe35d4f004444f949b88ce3f5a92c44b92b63e57514962b228ef78bb1a92208f8f2a5fc8066e639c76a442e1cf6fad2a1d29efa63f07aece3cccc6f7 - languageName: node - linkType: hard - "pako@npm:^1.0.10, pako@npm:^1.0.5, pako@npm:~1.0.5": version: 1.0.11 resolution: "pako@npm:1.0.11" @@ -32473,16 +30751,6 @@ __metadata: languageName: node linkType: hard -"parse-path@npm:^4.0.0": - version: 4.0.1 - resolution: "parse-path@npm:4.0.1" - dependencies: - is-ssh: ^1.3.0 - protocols: ^1.4.0 - checksum: dbe025d5827359fee9162932757bf7eb964220a6636ec6d233f9acc981a646aa605d5b49df585792a56e9fdd238d8d5daf2d532d1cd45642f15a47817e4352f6 - languageName: node - linkType: hard - "parse-path@npm:^7.0.0": version: 7.0.0 resolution: "parse-path@npm:7.0.0" @@ -32492,18 +30760,6 @@ __metadata: languageName: node linkType: hard -"parse-url@npm:^5.0.0": - version: 5.0.1 - resolution: "parse-url@npm:5.0.1" - dependencies: - is-ssh: ^1.3.0 - normalize-url: ^3.3.0 - parse-path: ^4.0.0 - protocols: ^1.4.0 - checksum: 05c8e88f8c918b11a4feeedfa693a547987eb11266e852746d362bfb92662bd79fa5a422dd41ed297d73e2cfe659dad8c594d97f4ca9e523bec1af289a9a4366 - languageName: node - linkType: hard - "parse-url@npm:^8.1.0": version: 8.1.0 resolution: "parse-url@npm:8.1.0" @@ -33830,13 +32086,6 @@ __metadata: languageName: node linkType: hard -"proc-log@npm:^2.0.0": - version: 2.0.1 - resolution: "proc-log@npm:2.0.1" - checksum: f6f23564ff759097db37443e6e2765af84979a703d2c52c1b9df506ee9f87caa101ba49d8fdc115c1a313ec78e37e8134704e9069e6a870f3499d98bb24c436f - languageName: node - linkType: hard - "process-nextick-args@npm:^2.0.0, process-nextick-args@npm:~2.0.0": version: 2.0.1 resolution: "process-nextick-args@npm:2.0.1" @@ -33931,15 +32180,6 @@ __metadata: languageName: node linkType: hard -"promzard@npm:^0.3.0": - version: 0.3.0 - resolution: "promzard@npm:0.3.0" - dependencies: - read: 1 - checksum: 443a3b39ac916099988ee0161ab4e22edd1fa27e3d39a38d60e48c11ca6df3f5a90bfe44d95af06ed8659c4050b789ffe64c3f9f8e49a4bea1ea19105c98445a - languageName: node - linkType: hard - "prop-types@npm:^15.0.0, prop-types@npm:^15.5.10, prop-types@npm:^15.5.7, prop-types@npm:^15.5.8, prop-types@npm:^15.6.0, prop-types@npm:^15.6.2, prop-types@npm:^15.7.2, prop-types@npm:^15.8.1": version: 15.8.1 resolution: "prop-types@npm:15.8.1" @@ -33983,13 +32223,6 @@ __metadata: languageName: node linkType: hard -"proto-list@npm:~1.2.1": - version: 1.2.4 - resolution: "proto-list@npm:1.2.4" - checksum: 4d4826e1713cbfa0f15124ab0ae494c91b597a3c458670c9714c36e8baddf5a6aad22842776f2f5b137f259c8533e741771445eb8df82e861eea37a6eaba03f7 - languageName: node - linkType: hard - "proto3-json-serializer@npm:^1.0.0": version: 1.0.0 resolution: "proto3-json-serializer@npm:1.0.0" @@ -34110,13 +32343,6 @@ __metadata: languageName: node linkType: hard -"protocols@npm:^1.1.0, protocols@npm:^1.4.0": - version: 1.4.7 - resolution: "protocols@npm:1.4.7" - checksum: e4be48f9304303bdbca6159cbbf04edc91ff34921e6e3e3e75ea29eb02e64b38191b73f3404d14f551af87b53572a321b59a402b31a3a2005d62b668b35a8b53 - languageName: node - linkType: hard - "protocols@npm:^2.0.0, protocols@npm:^2.0.1": version: 2.0.1 resolution: "protocols@npm:2.0.1" @@ -34260,13 +32486,6 @@ __metadata: languageName: node linkType: hard -"q@npm:^1.5.1": - version: 1.5.1 - resolution: "q@npm:1.5.1" - checksum: 147baa93c805bc1200ed698bdf9c72e9e42c05f96d007e33a558b5fdfd63e5ea130e99313f28efc1783e90e6bdb4e48b67a36fcc026b7b09202437ae88a1fb12 - languageName: node - linkType: hard - "qs@npm:6.10.3, qs@npm:^6.10.1, qs@npm:^6.10.2, qs@npm:^6.10.3, qs@npm:^6.9.1, qs@npm:^6.9.4, qs@npm:^6.9.6": version: 6.10.3 resolution: "qs@npm:6.10.3" @@ -35071,7 +33290,7 @@ __metadata: languageName: node linkType: hard -"read-package-json-fast@npm:^2.0.1, read-package-json-fast@npm:^2.0.2, read-package-json-fast@npm:^2.0.3": +"read-package-json-fast@npm:^2.0.1, read-package-json-fast@npm:^2.0.2": version: 2.0.3 resolution: "read-package-json-fast@npm:2.0.3" dependencies: @@ -35081,30 +33300,6 @@ __metadata: languageName: node linkType: hard -"read-package-json@npm:^3.0.0": - version: 3.0.0 - resolution: "read-package-json@npm:3.0.0" - dependencies: - glob: ^7.1.1 - json-parse-even-better-errors: ^2.3.0 - normalize-package-data: ^3.0.0 - npm-normalize-package-bin: ^1.0.0 - checksum: f17d10f7c3bd641c0462184cdeacfe22f9494911d4ab3232dd987accc75b6c26387c4573811486e733d1b403780de8c9b2187a51f8d56ff7165f79c199ddce71 - languageName: node - linkType: hard - -"read-package-json@npm:^5.0.0": - version: 5.0.1 - resolution: "read-package-json@npm:5.0.1" - dependencies: - glob: ^8.0.1 - json-parse-even-better-errors: ^2.3.1 - normalize-package-data: ^4.0.0 - npm-normalize-package-bin: ^1.0.1 - checksum: e8c2ad72df1f17e71268feabdb9bb0153ed2c7d38a05b759c5c49cf368a754bdd3c0e8a279fbc8d707802ff91d2cf144a995e6ebd5534de2848d52ab2c14034d - languageName: node - linkType: hard - "read-pkg-up@npm:^1.0.1": version: 1.0.1 resolution: "read-pkg-up@npm:1.0.1" @@ -35115,16 +33310,6 @@ __metadata: languageName: node linkType: hard -"read-pkg-up@npm:^3.0.0": - version: 3.0.0 - resolution: "read-pkg-up@npm:3.0.0" - dependencies: - find-up: ^2.0.0 - read-pkg: ^3.0.0 - checksum: 16175573f2914ab9788897bcbe2a62b5728d0075e62285b3680cebe97059e2911e0134a062cf6e51ebe3e3775312bc788ac2039ed6af38ec68d2c10c6f2b30fb - languageName: node - linkType: hard - "read-pkg-up@npm:^7.0.1": version: 7.0.1 resolution: "read-pkg-up@npm:7.0.1" @@ -35147,17 +33332,6 @@ __metadata: languageName: node linkType: hard -"read-pkg@npm:^3.0.0": - version: 3.0.0 - resolution: "read-pkg@npm:3.0.0" - dependencies: - load-json-file: ^4.0.0 - normalize-package-data: ^2.3.2 - path-type: ^3.0.0 - checksum: 398903ebae6c7e9965419a1062924436cc0b6f516c42c4679a90290d2f87448ed8f977e7aa2dbba4aa1ac09248628c43e493ac25b2bc76640e946035200e34c6 - languageName: node - linkType: hard - "read-pkg@npm:^5.2.0": version: 5.2.0 resolution: "read-pkg@npm:5.2.0" @@ -35182,15 +33356,6 @@ __metadata: languageName: node linkType: hard -"read@npm:1, read@npm:~1.0.1": - version: 1.0.7 - resolution: "read@npm:1.0.7" - dependencies: - mute-stream: ~0.0.4 - checksum: 2777c254e5732cac96f5d0a1c0f6b836c89ae23d8febd405b206f6f24d5de1873420f1a0795e0e3721066650d19adf802c7882c4027143ee0acf942a4f34f97b - languageName: node - linkType: hard - "readable-stream@npm:3, readable-stream@npm:^3.0.0, readable-stream@npm:^3.0.2, readable-stream@npm:^3.0.6, readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0, readable-stream@npm:^3.5.0, readable-stream@npm:^3.6.0": version: 3.6.0 resolution: "readable-stream@npm:3.6.0" @@ -35202,7 +33367,7 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:^2.0.0, readable-stream@npm:^2.0.1, readable-stream@npm:^2.0.2, readable-stream@npm:^2.0.5, readable-stream@npm:^2.0.6, readable-stream@npm:^2.3.3, readable-stream@npm:^2.3.5, readable-stream@npm:^2.3.6, readable-stream@npm:~2.3.6": +"readable-stream@npm:^2.0.0, readable-stream@npm:^2.0.1, readable-stream@npm:^2.0.2, readable-stream@npm:^2.0.5, readable-stream@npm:^2.0.6, readable-stream@npm:^2.3.3, readable-stream@npm:^2.3.5, readable-stream@npm:^2.3.6": version: 2.3.7 resolution: "readable-stream@npm:2.3.7" dependencies: @@ -36301,7 +34466,6 @@ __metadata: eslint-plugin-notice: ^0.9.10 fs-extra: 10.1.0 husky: ^8.0.0 - lerna: ~5.0.0 lint-staged: ^13.0.0 minimist: ^1.2.5 prettier: ^2.2.1 @@ -36353,7 +34517,7 @@ __metadata: languageName: node linkType: hard -"rxjs@npm:^6.6.0, rxjs@npm:^6.6.3": +"rxjs@npm:^6.6.3": version: 6.6.7 resolution: "rxjs@npm:6.6.7" dependencies: @@ -36613,7 +34777,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.1.2, semver@npm:^7.1.3, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:~7.3.0": +"semver@npm:^7.1.1, semver@npm:^7.1.2, semver@npm:^7.1.3, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:~7.3.0": version: 7.3.7 resolution: "semver@npm:7.3.7" dependencies: @@ -37170,17 +35334,6 @@ __metadata: languageName: node linkType: hard -"socks-proxy-agent@npm:^5.0.0": - version: 5.0.0 - resolution: "socks-proxy-agent@npm:5.0.0" - dependencies: - agent-base: 6 - debug: 4 - socks: ^2.3.3 - checksum: 1dd30d1cc346c33b3180a5bbe75ed93979ca3a916f453a6802f64642f07d30af7e93a640a607c920f10d4b1dfe1d0eec485f64c2a93c951a8d9a50090e6a7776 - languageName: node - linkType: hard - "socks-proxy-agent@npm:^6.0.0, socks-proxy-agent@npm:^6.1.1": version: 6.1.1 resolution: "socks-proxy-agent@npm:6.1.1" @@ -37203,7 +35356,7 @@ __metadata: languageName: node linkType: hard -"socks@npm:^2.3.3, socks@npm:^2.6.1, socks@npm:^2.6.2": +"socks@npm:^2.6.1, socks@npm:^2.6.2": version: 2.6.2 resolution: "socks@npm:2.6.2" dependencies: @@ -37223,24 +35376,6 @@ __metadata: languageName: node linkType: hard -"sort-keys@npm:^2.0.0": - version: 2.0.0 - resolution: "sort-keys@npm:2.0.0" - dependencies: - is-plain-obj: ^1.0.0 - checksum: f0fd827fa9f8f866e98588d2a38c35209afbf1e9a05bb0e4ceeeb8bbf31d923c8902b0a7e0f561590ddb65e58eba6a74f74b991c85360bcc52e83a3f0d1cffd7 - languageName: node - linkType: hard - -"sort-keys@npm:^4.0.0": - version: 4.2.0 - resolution: "sort-keys@npm:4.2.0" - dependencies: - is-plain-obj: ^2.0.0 - checksum: 1535ffd5a789259fc55107d5c3cec09b3e47803a9407fcaae37e1b9e0b813762c47dfee35b6e71e20ca7a69798d0a4791b2058a07f6cab5ef17b2dae83cedbda - languageName: node - linkType: hard - "source-list-map@npm:^2.0.1": version: 2.0.1 resolution: "source-list-map@npm:2.0.1" @@ -38016,19 +36151,6 @@ __metadata: languageName: node linkType: hard -"strong-log-transformer@npm:^2.1.0": - version: 2.1.0 - resolution: "strong-log-transformer@npm:2.1.0" - dependencies: - duplexer: ^0.1.1 - minimist: ^1.2.0 - through: ^2.3.4 - bin: - sl-log-transformer: bin/sl-log-transformer.js - checksum: abf9a4ac143118f26c3a0771b204b02f5cf4fa80384ae158f25e02bfbff761038accc44a7f65869ccd5a5995a7f2c16b1466b83149644ba6cecd3072a8927297 - languageName: node - linkType: hard - "strtok3@npm:^6.2.4": version: 6.2.4 resolution: "strtok3@npm:6.2.4" @@ -38509,13 +36631,6 @@ __metadata: languageName: node linkType: hard -"temp-dir@npm:^1.0.0": - version: 1.0.0 - resolution: "temp-dir@npm:1.0.0" - checksum: cb2b58ddfb12efa83e939091386ad73b425c9a8487ea0095fe4653192a40d49184a771a1beba99045fbd011e389fd563122d79f54f82be86a55620667e08a6b2 - languageName: node - linkType: hard - "temp@npm:^0.8.4": version: 0.8.4 resolution: "temp@npm:0.8.4" @@ -38616,13 +36731,6 @@ __metadata: languageName: node linkType: hard -"text-extensions@npm:^1.0.0": - version: 1.9.0 - resolution: "text-extensions@npm:1.9.0" - checksum: 56a9962c1b62d39b2bcb369b7558ca85c1b55e554b38dfd725edcc0a1babe5815782a60c17ff6b839093b163dfebb92b804208aaaea616ec7571c8059ae0cf44 - languageName: node - linkType: hard - "text-hex@npm:1.0.x": version: 1.0.0 resolution: "text-hex@npm:1.0.0" @@ -38676,16 +36784,6 @@ __metadata: languageName: node linkType: hard -"through2@npm:^2.0.0": - version: 2.0.5 - resolution: "through2@npm:2.0.5" - dependencies: - readable-stream: ~2.3.6 - xtend: ~4.0.1 - checksum: beb0f338aa2931e5660ec7bf3ad949e6d2e068c31f4737b9525e5201b824ac40cac6a337224856b56bd1ddd866334bbfb92a9f57cd6f66bc3f18d3d86fc0fe50 - languageName: node - linkType: hard - "through2@npm:^4.0.0": version: 4.0.2 resolution: "through2@npm:4.0.2" @@ -38695,7 +36793,7 @@ __metadata: languageName: node linkType: hard -"through@npm:2, through@npm:>=2.2.7 <3, through@npm:^2.3.4, through@npm:^2.3.6, through@npm:^2.3.8, through@npm:~2.3, through@npm:~2.3.1": +"through@npm:2, through@npm:^2.3.6, through@npm:^2.3.8, through@npm:~2.3, through@npm:~2.3.1": version: 2.3.8 resolution: "through@npm:2.3.8" checksum: a38c3e059853c494af95d50c072b83f8b676a9ba2818dcc5b108ef252230735c54e0185437618596c790bbba8fcdaef5b290405981ffa09dce67b1f1bf190cbd @@ -38989,13 +37087,6 @@ __metadata: languageName: node linkType: hard -"treeverse@npm:^2.0.0": - version: 2.0.0 - resolution: "treeverse@npm:2.0.0" - checksum: 3c6b2b890975a4d42c86b9a0f1eb932b4450db3fa874be5c301c4f5e306fd76330c6a490cf334b0937b3a44b049787ba5d98c88bc7b140f34fdb3ab1f83e5269 - languageName: node - linkType: hard - "trim-newlines@npm:^3.0.0": version: 3.0.1 resolution: "trim-newlines@npm:3.0.1" @@ -39003,13 +37094,6 @@ __metadata: languageName: node linkType: hard -"trim-off-newlines@npm:^1.0.0": - version: 1.0.3 - resolution: "trim-off-newlines@npm:1.0.3" - checksum: faf042bb7dd4cb097ab6d358cd51012a9ff5e06f7f2c6570da2ef6f01da9da3ff22ab01080866815e3927ffbf367d57c6aab4c275c67662676b60c563142a558 - languageName: node - linkType: hard - "triple-beam@npm:^1.3.0": version: 1.3.0 resolution: "triple-beam@npm:1.3.0" @@ -39239,13 +37323,6 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^0.18.0": - version: 0.18.1 - resolution: "type-fest@npm:0.18.1" - checksum: e96dcee18abe50ec82dab6cbc4751b3a82046da54c52e3b2d035b3c519732c0b3dd7a2fa9df24efd1a38d953d8d4813c50985f215f1957ee5e4f26b0fe0da395 - languageName: node - linkType: hard - "type-fest@npm:^0.20.2": version: 0.20.2 resolution: "type-fest@npm:0.20.2" @@ -39260,13 +37337,6 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^0.4.1": - version: 0.4.1 - resolution: "type-fest@npm:0.4.1" - checksum: 25f882d9cc2f24af7a0a529157f96dead157894c456bfbad16d48f990c43b470dfb79848e8d9c03fe1be72a7d169e44f6f3135b54628393c66a6189c5dc077f7 - languageName: node - linkType: hard - "type-fest@npm:^0.6.0": version: 0.6.0 resolution: "type-fest@npm:0.6.0" @@ -39316,15 +37386,6 @@ __metadata: languageName: node linkType: hard -"typedarray-to-buffer@npm:^3.1.5": - version: 3.1.5 - resolution: "typedarray-to-buffer@npm:3.1.5" - dependencies: - is-typedarray: ^1.0.0 - checksum: 99c11aaa8f45189fcfba6b8a4825fd684a321caa9bd7a76a27cf0c7732c174d198b99f449c52c3818107430b5f41c0ccbbfb75cb2ee3ca4a9451710986d61a60 - languageName: node - linkType: hard - "typedarray@npm:^0.0.6": version: 0.0.6 resolution: "typedarray@npm:0.0.6" @@ -39777,13 +37838,6 @@ __metadata: languageName: node linkType: hard -"upath@npm:^2.0.1": - version: 2.0.1 - resolution: "upath@npm:2.0.1" - checksum: 2db04f24a03ef72204c7b969d6991abec9e2cb06fb4c13a1fd1c59bc33b46526b16c3325e55930a11ff86a77a8cbbcda8f6399bf914087028c5beae21ecdb33c - languageName: node - linkType: hard - "update-browserslist-db@npm:^1.0.4": version: 1.0.5 resolution: "update-browserslist-db@npm:1.0.5" @@ -40077,7 +38131,7 @@ __metadata: languageName: node linkType: hard -"validate-npm-package-license@npm:^3.0.1, validate-npm-package-license@npm:^3.0.4": +"validate-npm-package-license@npm:^3.0.1": version: 3.0.4 resolution: "validate-npm-package-license@npm:3.0.4" dependencies: @@ -40096,15 +38150,6 @@ __metadata: languageName: node linkType: hard -"validate-npm-package-name@npm:^4.0.0": - version: 4.0.0 - resolution: "validate-npm-package-name@npm:4.0.0" - dependencies: - builtins: ^5.0.0 - checksum: a32fd537bad17fcb59cfd58ae95a414d443866020d448ec3b22e8d40550cb585026582a57efbe1f132b882eea4da8ac38ee35f7be0dd72988a3cb55d305a20c1 - languageName: node - linkType: hard - "validate.io-array@npm:^1.0.3": version: 1.0.6 resolution: "validate.io-array@npm:1.0.6" @@ -40352,7 +38397,7 @@ __metadata: languageName: node linkType: hard -"wcwidth@npm:>=1.0.1, wcwidth@npm:^1.0.0, wcwidth@npm:^1.0.1": +"wcwidth@npm:>=1.0.1, wcwidth@npm:^1.0.1": version: 1.0.1 resolution: "wcwidth@npm:1.0.1" dependencies: @@ -40626,7 +38671,7 @@ __metadata: languageName: node linkType: hard -"whatwg-url@npm:^8.0.0, whatwg-url@npm:^8.4.0, whatwg-url@npm:^8.5.0": +"whatwg-url@npm:^8.0.0, whatwg-url@npm:^8.5.0": version: 8.7.0 resolution: "whatwg-url@npm:8.7.0" dependencies: @@ -40711,7 +38756,7 @@ __metadata: languageName: node linkType: hard -"wide-align@npm:^1.1.0, wide-align@npm:^1.1.2, wide-align@npm:^1.1.5": +"wide-align@npm:^1.1.0, wide-align@npm:^1.1.2": version: 1.1.5 resolution: "wide-align@npm:1.1.5" dependencies: @@ -40812,7 +38857,7 @@ __metadata: languageName: node linkType: hard -"write-file-atomic@npm:^2.3.0, write-file-atomic@npm:^2.4.2": +"write-file-atomic@npm:^2.3.0": version: 2.4.3 resolution: "write-file-atomic@npm:2.4.3" dependencies: @@ -40823,18 +38868,6 @@ __metadata: languageName: node linkType: hard -"write-file-atomic@npm:^3.0.0, write-file-atomic@npm:^3.0.3": - version: 3.0.3 - resolution: "write-file-atomic@npm:3.0.3" - dependencies: - imurmurhash: ^0.1.4 - is-typedarray: ^1.0.0 - signal-exit: ^3.0.2 - typedarray-to-buffer: ^3.1.5 - checksum: c55b24617cc61c3a4379f425fc62a386cc51916a9b9d993f39734d005a09d5a4bb748bc251f1304e7abd71d0a26d339996c275955f527a131b1dcded67878280 - languageName: node - linkType: hard - "write-file-atomic@npm:^4.0.0": version: 4.0.1 resolution: "write-file-atomic@npm:4.0.1" @@ -40855,45 +38888,6 @@ __metadata: languageName: node linkType: hard -"write-json-file@npm:^3.2.0": - version: 3.2.0 - resolution: "write-json-file@npm:3.2.0" - dependencies: - detect-indent: ^5.0.0 - graceful-fs: ^4.1.15 - make-dir: ^2.1.0 - pify: ^4.0.1 - sort-keys: ^2.0.0 - write-file-atomic: ^2.4.2 - checksum: 2b97ce2027d53c28a33e4a8e7b0d565faf785988b3776f9e0c68d36477c1fb12639fd0d70877d92a861820707966c62ea9c5f7a36a165d615fd47ca8e24c8371 - languageName: node - linkType: hard - -"write-json-file@npm:^4.3.0": - version: 4.3.0 - resolution: "write-json-file@npm:4.3.0" - dependencies: - detect-indent: ^6.0.0 - graceful-fs: ^4.1.15 - is-plain-obj: ^2.0.0 - make-dir: ^3.0.0 - sort-keys: ^4.0.0 - write-file-atomic: ^3.0.0 - checksum: 33908c591923dc273e6574e7c0e2df157acfcf498e3a87c5615ced006a465c4058877df6abce6fc1acd2844fa3cf4518ace4a34d5d82ab28bcf896317ba1db6f - languageName: node - linkType: hard - -"write-pkg@npm:^4.0.0": - version: 4.0.0 - resolution: "write-pkg@npm:4.0.0" - dependencies: - sort-keys: ^2.0.0 - type-fest: ^0.4.1 - write-json-file: ^3.2.0 - checksum: 7864d44370f42a6761f6898d07ee2818c7a2faad45116580cf779f3adaf94e4bea5557612533a6c421c32323253ecb63b50615094960a637aeaef5df0fd2d6cd - languageName: node - linkType: hard - "ws@npm:8.8.1, ws@npm:^8.3.0, ws@npm:^8.8.0": version: 8.8.1 resolution: "ws@npm:8.8.1" @@ -41127,7 +39121,7 @@ __metadata: languageName: node linkType: hard -"xtend@npm:^4.0.0, xtend@npm:~4.0.1": +"xtend@npm:^4.0.0": version: 4.0.2 resolution: "xtend@npm:4.0.2" checksum: ac5dfa738b21f6e7f0dd6e65e1b3155036d68104e67e5d5d1bde74892e327d7e5636a076f625599dc394330a731861e87343ff184b0047fef1360a7ec0a5a36a @@ -41197,13 +39191,6 @@ __metadata: languageName: node linkType: hard -"yargs-parser@npm:20.2.4, yargs-parser@npm:^20.2.3": - version: 20.2.4 - resolution: "yargs-parser@npm:20.2.4" - checksum: d251998a374b2743a20271c2fd752b9fbef24eb881d53a3b99a7caa5e8227fcafd9abf1f345ac5de46435821be25ec12189a11030c12ee6481fef6863ed8b924 - languageName: node - linkType: hard - "yargs-parser@npm:^18.1.2, yargs-parser@npm:^18.1.3": version: 18.1.3 resolution: "yargs-parser@npm:18.1.3" From 153e6e49bd113bf859b1dca457b9469ecf677f42 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 4 Sep 2022 21:23:30 +0200 Subject: [PATCH 067/117] fix version range inconsistencies Signed-off-by: Patrik Oldsberg --- packages/app/package.json | 4 ++-- plugins/catalog-backend/package.json | 2 +- plugins/catalog-node/package.json | 2 +- plugins/playlist-backend/package.json | 2 +- plugins/techdocs-backend/package.json | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/app/package.json b/packages/app/package.json index 7bdf280d72..69513313be 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -43,7 +43,7 @@ "@backstage/plugin-newrelic": "^0.3.27", "@backstage/plugin-newrelic-dashboard": "^0.2.2", "@backstage/plugin-org": "^0.5.9", - "@backstage/plugin-pagerduty": "0.5.2", + "@backstage/plugin-pagerduty": "^0.5.2", "@backstage/plugin-permission-react": "^0.4.5", "@backstage/plugin-playlist": "^0.1.0", "@backstage/plugin-rollbar": "^0.4.9", @@ -62,7 +62,7 @@ "@backstage/plugin-todo": "^0.2.11", "@backstage/plugin-user-settings": "^0.4.8", "@backstage/theme": "^0.2.16", - "@internal/plugin-catalog-customized": "0.0.2", + "@internal/plugin-catalog-customized": "^0.0.2", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", diff --git a/plugins/catalog-backend/package.json b/plugins/catalog-backend/package.json index 471fdaaf26..12851ac50c 100644 --- a/plugins/catalog-backend/package.json +++ b/plugins/catalog-backend/package.json @@ -72,7 +72,7 @@ "@backstage/backend-test-utils": "^0.1.28", "@backstage/cli": "^0.19.0", "@backstage/plugin-permission-common": "^0.6.4", - "@backstage/plugin-search-backend-node": "1.0.2", + "@backstage/plugin-search-backend-node": "^1.0.2", "@types/core-js": "^2.5.4", "@types/git-url-parse": "^9.0.0", "@types/lodash": "^4.14.151", diff --git a/plugins/catalog-node/package.json b/plugins/catalog-node/package.json index bd80bde03c..487406f5bb 100644 --- a/plugins/catalog-node/package.json +++ b/plugins/catalog-node/package.json @@ -27,7 +27,7 @@ "@backstage/backend-plugin-api": "^0.1.2", "@backstage/catalog-client": "^1.1.0", "@backstage/catalog-model": "^1.1.1", - "@backstage/errors": "1.1.1", + "@backstage/errors": "^1.1.1", "@backstage/types": "^1.0.0" }, "devDependencies": { diff --git a/plugins/playlist-backend/package.json b/plugins/playlist-backend/package.json index 125b538138..c3028bd9f4 100644 --- a/plugins/playlist-backend/package.json +++ b/plugins/playlist-backend/package.json @@ -24,7 +24,7 @@ "dependencies": { "@backstage/backend-common": "^0.15.1", "@backstage/backend-test-utils": "^0.1.28", - "@backstage/catalog-client": "1.1.0", + "@backstage/catalog-client": "^1.1.0", "@backstage/catalog-model": "^1.1.1", "@backstage/config": "^1.0.2", "@backstage/errors": "^1.1.1", diff --git a/plugins/techdocs-backend/package.json b/plugins/techdocs-backend/package.json index 8ca2bd05e0..f1265b804f 100644 --- a/plugins/techdocs-backend/package.json +++ b/plugins/techdocs-backend/package.json @@ -57,7 +57,7 @@ "devDependencies": { "@backstage/backend-test-utils": "^0.1.28", "@backstage/cli": "^0.19.0", - "@backstage/plugin-search-backend-node": "1.0.2", + "@backstage/plugin-search-backend-node": "^1.0.2", "@types/dockerode": "^3.3.0", "msw": "^0.47.0", "supertest": "^6.1.3" From 31c78e570718eba763e6ab6c6bc0089e64efc62a Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 4 Sep 2022 21:19:05 +0200 Subject: [PATCH 068/117] scripts: add workspace range migration script Signed-off-by: Patrik Oldsberg --- scripts/switch-to-workspace-ranges.js | 78 +++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100755 scripts/switch-to-workspace-ranges.js diff --git a/scripts/switch-to-workspace-ranges.js b/scripts/switch-to-workspace-ranges.js new file mode 100755 index 0000000000..67d3602887 --- /dev/null +++ b/scripts/switch-to-workspace-ranges.js @@ -0,0 +1,78 @@ +#!/usr/bin/env node +/* + * Copyright 2021 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +const fs = require('fs-extra'); +const { resolve: resolvePath } = require('path'); +const { getPackages } = require('@manypkg/get-packages'); + +/** @typedef {import("@manypkg/get-packages").Package["packageJson"]} Pkg */ + +function transformDepField(deps) { + const newPkg = JSON.parse(JSON.stringify(deps)); + + for (const [name, version] of Object.entries(newPkg)) { + if (name.startsWith('@backstage/') || name.startsWith('@internal/')) { + const match = version.match(/^(\^|~)?[0-9]+\.[0-9]+\.[0-9]+/); + if (match) { + const specifier = match[1] || '*'; + newPkg[name] = `workspace:${specifier}`; + } + } + } + return newPkg; +} + +/** + * + * @param {Pkg} pkg + */ +function transformDeps(pkg) { + /** @type {Pkg} */ + const newPkg = JSON.parse(JSON.stringify(pkg)); + + if (newPkg.dependencies) { + newPkg.dependencies = transformDepField(newPkg.dependencies); + } + if (newPkg.devDependencies) { + newPkg.devDependencies = transformDepField(newPkg.devDependencies); + } + if (newPkg.peerDependencies) { + newPkg.peerDependencies = transformDepField(newPkg.peerDependencies); + } + if (newPkg.optionalDependencies) { + newPkg.optionalDependencies = transformDepField( + newPkg.optionalDependencies, + ); + } + + return newPkg; +} + +async function main() { + const { root, packages } = await getPackages(); + for (const { dir, packageJson } of [root, ...packages]) { + const pkgPath = resolvePath(dir, 'package.json'); + + const newPackageJson = transformDeps(packageJson); + await fs.writeJson(pkgPath, newPackageJson, { spaces: 2 }); + } +} + +main().catch(e => { + console.error(e); + process.exit(1); +}); From be5a837259a601d7680d872c6546070b42e0c957 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 4 Sep 2022 21:24:48 +0200 Subject: [PATCH 069/117] migrate to use workspace ranges Signed-off-by: Patrik Oldsberg --- packages/app-defaults/package.json | 14 +- packages/app/package.json | 114 +- packages/backend-app-api/package.json | 12 +- packages/backend-common/package.json | 16 +- packages/backend-defaults/package.json | 6 +- packages/backend-next/package.json | 8 +- packages/backend-plugin-api/package.json | 10 +- packages/backend-tasks/package.json | 12 +- packages/backend-test-utils/package.json | 12 +- packages/backend/package.json | 72 +- packages/catalog-client/package.json | 6 +- packages/catalog-model/package.json | 8 +- packages/cli-common/package.json | 2 +- packages/cli/package.json | 28 +- packages/codemods/package.json | 4 +- packages/config-loader/package.json | 10 +- packages/config/package.json | 6 +- packages/core-app-api/package.json | 12 +- packages/core-components/package.json | 16 +- packages/core-plugin-api/package.json | 12 +- packages/create-app/package.json | 4 +- packages/dev-utils/package.json | 20 +- packages/e2e-test/package.json | 6 +- packages/errors/package.json | 4 +- packages/integration-react/package.json | 16 +- packages/integration/package.json | 10 +- packages/release-manifests/package.json | 4 +- .../techdocs-cli-embedded-app/package.json | 28 +- packages/techdocs-cli/package.json | 12 +- packages/test-utils/package.json | 16 +- packages/theme/package.json | 2 +- packages/types/package.json | 2 +- packages/version-bridge/package.json | 2 +- plugins/adr-backend/package.json | 18 +- plugins/adr-common/package.json | 8 +- plugins/adr/package.json | 26 +- plugins/airbrake-backend/package.json | 6 +- plugins/airbrake/package.json | 22 +- plugins/allure/package.json | 18 +- plugins/analytics-module-ga/package.json | 16 +- plugins/apache-airflow/package.json | 12 +- .../package.json | 2 +- plugins/api-docs/package.json | 20 +- plugins/apollo-explorer/package.json | 14 +- plugins/app-backend/package.json | 14 +- plugins/auth-backend/package.json | 18 +- plugins/auth-node/package.json | 10 +- plugins/azure-devops-backend/package.json | 8 +- plugins/azure-devops-common/package.json | 2 +- plugins/azure-devops/package.json | 22 +- plugins/badges-backend/package.json | 12 +- plugins/badges/package.json | 20 +- plugins/bazaar-backend/package.json | 8 +- plugins/bazaar/package.json | 18 +- plugins/bitbucket-cloud-common/package.json | 4 +- plugins/bitrise/package.json | 18 +- .../catalog-backend-module-aws/package.json | 18 +- .../catalog-backend-module-azure/package.json | 20 +- .../package.json | 16 +- .../package.json | 18 +- .../package.json | 20 +- .../package.json | 18 +- .../package.json | 24 +- .../package.json | 20 +- .../catalog-backend-module-ldap/package.json | 14 +- .../package.json | 14 +- .../package.json | 18 +- plugins/catalog-backend/package.json | 36 +- plugins/catalog-common/package.json | 6 +- plugins/catalog-customized/package.json | 4 +- plugins/catalog-graph/package.json | 24 +- plugins/catalog-graphql/package.json | 10 +- plugins/catalog-import/package.json | 26 +- plugins/catalog-node/package.json | 16 +- plugins/catalog-react/package.json | 34 +- plugins/catalog/package.json | 34 +- .../package.json | 8 +- plugins/cicd-statistics/package.json | 8 +- plugins/circleci/package.json | 18 +- plugins/cloudbuild/package.json | 18 +- plugins/code-climate/package.json | 16 +- plugins/code-coverage-backend/package.json | 14 +- plugins/code-coverage/package.json | 22 +- plugins/codescene/package.json | 18 +- plugins/config-schema/package.json | 20 +- plugins/cost-insights-common/package.json | 2 +- plugins/cost-insights/package.json | 20 +- plugins/dynatrace/package.json | 18 +- .../example-todo-list-backend/package.json | 10 +- plugins/example-todo-list-common/package.json | 10 +- plugins/example-todo-list/package.json | 14 +- plugins/explore-react/package.json | 8 +- plugins/explore/package.json | 20 +- plugins/firehydrant/package.json | 16 +- plugins/fossa/package.json | 20 +- plugins/gcalendar/package.json | 16 +- plugins/gcp-projects/package.json | 14 +- plugins/git-release-manager/package.json | 16 +- plugins/github-actions/package.json | 20 +- plugins/github-deployments/package.json | 24 +- plugins/github-issues/package.json | 22 +- .../github-pull-requests-board/package.json | 18 +- plugins/gitops-profiles/package.json | 14 +- plugins/gocd/package.json | 20 +- plugins/graphiql/package.json | 14 +- plugins/graphql-backend/package.json | 8 +- plugins/home/package.json | 22 +- plugins/ilert/package.json | 20 +- plugins/jenkins-backend/package.json | 18 +- plugins/jenkins-common/package.json | 6 +- plugins/jenkins/package.json | 22 +- plugins/kafka-backend/package.json | 10 +- plugins/kafka/package.json | 20 +- plugins/kubernetes-backend/package.json | 16 +- plugins/kubernetes-common/package.json | 4 +- plugins/kubernetes/package.json | 22 +- plugins/lighthouse/package.json | 20 +- plugins/newrelic-dashboard/package.json | 14 +- plugins/newrelic/package.json | 14 +- plugins/org/package.json | 20 +- plugins/pagerduty/package.json | 20 +- plugins/periskop-backend/package.json | 6 +- plugins/periskop/package.json | 20 +- plugins/permission-backend/package.json | 14 +- plugins/permission-common/package.json | 6 +- plugins/permission-node/package.json | 14 +- plugins/permission-react/package.json | 10 +- plugins/playlist-backend/package.json | 22 +- plugins/playlist-common/package.json | 4 +- plugins/playlist/package.json | 30 +- plugins/proxy-backend/package.json | 6 +- plugins/rollbar-backend/package.json | 8 +- plugins/rollbar/package.json | 18 +- .../package.json | 14 +- .../package.json | 14 +- .../package.json | 10 +- plugins/scaffolder-backend/package.json | 28 +- plugins/scaffolder-common/package.json | 6 +- plugins/scaffolder/package.json | 38 +- .../package.json | 10 +- plugins/search-backend-module-pg/package.json | 12 +- plugins/search-backend-node/package.json | 16 +- plugins/search-backend/package.json | 20 +- plugins/search-common/package.json | 6 +- plugins/search-react/package.json | 18 +- plugins/search/package.json | 30 +- plugins/sentry/package.json | 18 +- plugins/shortcuts/package.json | 16 +- plugins/sonarqube-backend/package.json | 10 +- plugins/sonarqube/package.json | 18 +- plugins/splunk-on-call/package.json | 18 +- plugins/stack-overflow-backend/package.json | 6 +- plugins/stack-overflow/package.json | 20 +- .../package.json | 12 +- plugins/tech-insights-backend/package.json | 20 +- plugins/tech-insights-common/package.json | 4 +- plugins/tech-insights-node/package.json | 12 +- plugins/tech-insights/package.json | 24 +- plugins/tech-radar/package.json | 14 +- .../techdocs-addons-test-utils/package.json | 24 +- plugins/techdocs-backend/package.json | 26 +- .../package.json | 22 +- plugins/techdocs-node/package.json | 14 +- plugins/techdocs-react/package.json | 16 +- plugins/techdocs/package.json | 32 +- plugins/todo-backend/package.json | 14 +- plugins/todo/package.json | 20 +- plugins/user-settings-backend/package.json | 14 +- plugins/user-settings/package.json | 18 +- plugins/vault-backend/package.json | 12 +- plugins/vault/package.json | 20 +- plugins/xcmetrics/package.json | 16 +- yarn.lock | 2958 ++++++++--------- 173 files changed, 2852 insertions(+), 2852 deletions(-) diff --git a/packages/app-defaults/package.json b/packages/app-defaults/package.json index 35db38a130..0742d2cb13 100644 --- a/packages/app-defaults/package.json +++ b/packages/app-defaults/package.json @@ -32,11 +32,11 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/core-app-api": "^1.1.0", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/plugin-permission-react": "^0.4.5", - "@backstage/theme": "^0.2.16", + "@backstage/core-app-api": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/plugin-permission-react": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1" }, @@ -47,8 +47,8 @@ "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@types/node": "^16.11.26", diff --git a/packages/app/package.json b/packages/app/package.json index 69513313be..ad24f23c45 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -7,62 +7,62 @@ }, "bundled": true, "dependencies": { - "@backstage/app-defaults": "^1.0.6", - "@backstage/catalog-model": "^1.1.1", - "@backstage/cli": "^0.19.0", - "@backstage/config": "^1.0.2", - "@backstage/core-app-api": "^1.1.0", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/integration-react": "^1.1.4", - "@backstage/plugin-airbrake": "^0.3.9", - "@backstage/plugin-apache-airflow": "^0.2.2", - "@backstage/plugin-api-docs": "^0.8.9", - "@backstage/plugin-azure-devops": "^0.2.0", - "@backstage/plugin-badges": "^0.2.33", - "@backstage/plugin-catalog-common": "^1.0.6", - "@backstage/plugin-catalog-graph": "^0.2.21", - "@backstage/plugin-catalog-import": "^0.8.12", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/plugin-circleci": "^0.3.9", - "@backstage/plugin-cloudbuild": "^0.3.9", - "@backstage/plugin-code-coverage": "^0.2.2", - "@backstage/plugin-cost-insights": "^0.11.31", - "@backstage/plugin-dynatrace": "^0.2.0", - "@backstage/plugin-explore": "^0.3.40", - "@backstage/plugin-gcalendar": "^0.3.5", - "@backstage/plugin-gcp-projects": "^0.3.28", - "@backstage/plugin-github-actions": "^0.5.9", - "@backstage/plugin-gocd": "^0.1.15", - "@backstage/plugin-graphiql": "^0.2.41", - "@backstage/plugin-home": "^0.4.25", - "@backstage/plugin-jenkins": "^0.7.8", - "@backstage/plugin-kafka": "^0.3.9", - "@backstage/plugin-kubernetes": "^0.7.2", - "@backstage/plugin-lighthouse": "^0.3.9", - "@backstage/plugin-newrelic": "^0.3.27", - "@backstage/plugin-newrelic-dashboard": "^0.2.2", - "@backstage/plugin-org": "^0.5.9", - "@backstage/plugin-pagerduty": "^0.5.2", - "@backstage/plugin-permission-react": "^0.4.5", - "@backstage/plugin-playlist": "^0.1.0", - "@backstage/plugin-rollbar": "^0.4.9", - "@backstage/plugin-scaffolder": "^1.6.0", - "@backstage/plugin-search": "^1.0.2", - "@backstage/plugin-search-common": "^1.0.1", - "@backstage/plugin-search-react": "^1.1.0", - "@backstage/plugin-sentry": "^0.4.2", - "@backstage/plugin-shortcuts": "^0.3.1", - "@backstage/plugin-stack-overflow": "^0.1.5", - "@backstage/plugin-tech-insights": "^0.3.0", - "@backstage/plugin-tech-radar": "^0.5.16", - "@backstage/plugin-techdocs": "^1.3.2", - "@backstage/plugin-techdocs-module-addons-contrib": "^1.0.4", - "@backstage/plugin-techdocs-react": "^1.0.4", - "@backstage/plugin-todo": "^0.2.11", - "@backstage/plugin-user-settings": "^0.4.8", - "@backstage/theme": "^0.2.16", - "@internal/plugin-catalog-customized": "^0.0.2", + "@backstage/app-defaults": "workspace:^", + "@backstage/catalog-model": "workspace:^", + "@backstage/cli": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/integration-react": "workspace:^", + "@backstage/plugin-airbrake": "workspace:^", + "@backstage/plugin-apache-airflow": "workspace:^", + "@backstage/plugin-api-docs": "workspace:^", + "@backstage/plugin-azure-devops": "workspace:^", + "@backstage/plugin-badges": "workspace:^", + "@backstage/plugin-catalog-common": "workspace:^", + "@backstage/plugin-catalog-graph": "workspace:^", + "@backstage/plugin-catalog-import": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/plugin-circleci": "workspace:^", + "@backstage/plugin-cloudbuild": "workspace:^", + "@backstage/plugin-code-coverage": "workspace:^", + "@backstage/plugin-cost-insights": "workspace:^", + "@backstage/plugin-dynatrace": "workspace:^", + "@backstage/plugin-explore": "workspace:^", + "@backstage/plugin-gcalendar": "workspace:^", + "@backstage/plugin-gcp-projects": "workspace:^", + "@backstage/plugin-github-actions": "workspace:^", + "@backstage/plugin-gocd": "workspace:^", + "@backstage/plugin-graphiql": "workspace:^", + "@backstage/plugin-home": "workspace:^", + "@backstage/plugin-jenkins": "workspace:^", + "@backstage/plugin-kafka": "workspace:^", + "@backstage/plugin-kubernetes": "workspace:^", + "@backstage/plugin-lighthouse": "workspace:^", + "@backstage/plugin-newrelic": "workspace:^", + "@backstage/plugin-newrelic-dashboard": "workspace:^", + "@backstage/plugin-org": "workspace:^", + "@backstage/plugin-pagerduty": "workspace:^", + "@backstage/plugin-permission-react": "workspace:^", + "@backstage/plugin-playlist": "workspace:^", + "@backstage/plugin-rollbar": "workspace:^", + "@backstage/plugin-scaffolder": "workspace:^", + "@backstage/plugin-search": "workspace:^", + "@backstage/plugin-search-common": "workspace:^", + "@backstage/plugin-search-react": "workspace:^", + "@backstage/plugin-sentry": "workspace:^", + "@backstage/plugin-shortcuts": "workspace:^", + "@backstage/plugin-stack-overflow": "workspace:^", + "@backstage/plugin-tech-insights": "workspace:^", + "@backstage/plugin-tech-radar": "workspace:^", + "@backstage/plugin-techdocs": "workspace:^", + "@backstage/plugin-techdocs-module-addons-contrib": "workspace:^", + "@backstage/plugin-techdocs-react": "workspace:^", + "@backstage/plugin-todo": "workspace:^", + "@backstage/plugin-user-settings": "workspace:^", + "@backstage/theme": "workspace:^", + "@internal/plugin-catalog-customized": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -81,7 +81,7 @@ "zen-observable": "^0.8.15" }, "devDependencies": { - "@backstage/test-utils": "^1.2.0", + "@backstage/test-utils": "workspace:^", "@rjsf/core": "^3.2.1", "@testing-library/cypress": "^8.0.2", "@testing-library/jest-dom": "^5.10.1", diff --git a/packages/backend-app-api/package.json b/packages/backend-app-api/package.json index 07fc3e2725..2878de5aa3 100644 --- a/packages/backend-app-api/package.json +++ b/packages/backend-app-api/package.json @@ -33,17 +33,17 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/backend-plugin-api": "^0.1.2", - "@backstage/backend-tasks": "^0.3.5", - "@backstage/errors": "^1.1.1", - "@backstage/plugin-permission-node": "^0.6.5", + "@backstage/backend-common": "workspace:^", + "@backstage/backend-plugin-api": "workspace:^", + "@backstage/backend-tasks": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/plugin-permission-node": "workspace:^", "express": "^4.17.1", "express-promise-router": "^4.1.0", "winston": "^3.2.1" }, "devDependencies": { - "@backstage/cli": "^0.19.0" + "@backstage/cli": "workspace:^" }, "files": [ "dist", diff --git a/packages/backend-common/package.json b/packages/backend-common/package.json index 166a4eed7a..35e1ccdf10 100644 --- a/packages/backend-common/package.json +++ b/packages/backend-common/package.json @@ -34,12 +34,12 @@ "test:kubernetes": "backstage-cli package test -t KubernetesContainerRunner --no-watch" }, "dependencies": { - "@backstage/cli-common": "^0.1.10", - "@backstage/config": "^1.0.2", - "@backstage/config-loader": "^1.1.4", - "@backstage/errors": "^1.1.1", - "@backstage/integration": "^1.3.1", - "@backstage/types": "^1.0.0", + "@backstage/cli-common": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/config-loader": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/integration": "workspace:^", + "@backstage/types": "workspace:^", "@google-cloud/storage": "^6.0.0", "@keyv/redis": "^2.2.3", "@kubernetes/client-node": "^0.17.0", @@ -94,8 +94,8 @@ } }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.28", - "@backstage/cli": "^0.19.0", + "@backstage/backend-test-utils": "workspace:^", + "@backstage/cli": "workspace:^", "@types/archiver": "^5.1.0", "@types/base64-stream": "^1.0.2", "@types/compression": "^1.7.0", diff --git a/packages/backend-defaults/package.json b/packages/backend-defaults/package.json index 27855c4c30..23652120e2 100644 --- a/packages/backend-defaults/package.json +++ b/packages/backend-defaults/package.json @@ -32,11 +32,11 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-app-api": "^0.2.1", - "@backstage/backend-plugin-api": "^0.1.2" + "@backstage/backend-app-api": "workspace:^", + "@backstage/backend-plugin-api": "workspace:^" }, "devDependencies": { - "@backstage/cli": "^0.19.0" + "@backstage/cli": "workspace:^" }, "files": [ "dist" diff --git a/packages/backend-next/package.json b/packages/backend-next/package.json index 9c0e6cd53a..4e989c81cf 100644 --- a/packages/backend-next/package.json +++ b/packages/backend-next/package.json @@ -25,12 +25,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-defaults": "^0.1.1", - "@backstage/plugin-catalog-backend": "^1.4.0", - "@backstage/plugin-scaffolder-backend": "^1.6.0" + "@backstage/backend-defaults": "workspace:^", + "@backstage/plugin-catalog-backend": "workspace:^", + "@backstage/plugin-scaffolder-backend": "workspace:^" }, "devDependencies": { - "@backstage/cli": "^0.19.0" + "@backstage/cli": "workspace:^" }, "files": [ "dist" diff --git a/packages/backend-plugin-api/package.json b/packages/backend-plugin-api/package.json index 9dbe09ccb5..18c6c842fc 100644 --- a/packages/backend-plugin-api/package.json +++ b/packages/backend-plugin-api/package.json @@ -33,17 +33,17 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/backend-tasks": "^0.3.5", - "@backstage/config": "^1.0.2", - "@backstage/plugin-permission-common": "^0.6.4", + "@backstage/backend-common": "workspace:^", + "@backstage/backend-tasks": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/plugin-permission-common": "workspace:^", "@types/express": "^4.17.6", "express": "^4.17.1", "winston": "^3.2.1", "winston-transport": "^4.5.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0" + "@backstage/cli": "workspace:^" }, "files": [ "dist", diff --git a/packages/backend-tasks/package.json b/packages/backend-tasks/package.json index 75d8817465..88b8cf0345 100644 --- a/packages/backend-tasks/package.json +++ b/packages/backend-tasks/package.json @@ -32,10 +32,10 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/config": "^1.0.2", - "@backstage/errors": "^1.1.1", - "@backstage/types": "^1.0.0", + "@backstage/backend-common": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/types": "workspace:^", "@types/luxon": "^3.0.0", "cron": "^2.0.0", "knex": "^2.0.0", @@ -47,8 +47,8 @@ "zod": "^3.9.5" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.28", - "@backstage/cli": "^0.19.0", + "@backstage/backend-test-utils": "workspace:^", + "@backstage/cli": "workspace:^", "@types/cron": "^2.0.0", "wait-for-expect": "^3.0.2" }, diff --git a/packages/backend-test-utils/package.json b/packages/backend-test-utils/package.json index 5ebe72096e..b1006b8464 100644 --- a/packages/backend-test-utils/package.json +++ b/packages/backend-test-utils/package.json @@ -34,11 +34,11 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-app-api": "^0.2.1", - "@backstage/backend-common": "^0.15.1", - "@backstage/backend-plugin-api": "^0.1.2", - "@backstage/cli": "^0.19.0", - "@backstage/config": "^1.0.2", + "@backstage/backend-app-api": "workspace:^", + "@backstage/backend-common": "workspace:^", + "@backstage/backend-plugin-api": "workspace:^", + "@backstage/cli": "workspace:^", + "@backstage/config": "workspace:^", "better-sqlite3": "^7.5.0", "knex": "^2.0.0", "msw": "^0.47.0", @@ -48,7 +48,7 @@ "uuid": "^8.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0" + "@backstage/cli": "workspace:^" }, "files": [ "dist", diff --git a/packages/backend/package.json b/packages/backend/package.json index 4820d84c6e..54bf8c586e 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -26,41 +26,41 @@ "build-image": "docker build ../.. -f Dockerfile --tag example-backend" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/backend-tasks": "^0.3.5", - "@backstage/catalog-client": "^1.1.0", - "@backstage/catalog-model": "^1.1.1", - "@backstage/config": "^1.0.2", - "@backstage/integration": "^1.3.1", - "@backstage/plugin-app-backend": "^0.3.36", - "@backstage/plugin-auth-backend": "^0.16.0", - "@backstage/plugin-auth-node": "^0.2.5", - "@backstage/plugin-azure-devops-backend": "^0.3.15", - "@backstage/plugin-badges-backend": "^0.1.30", - "@backstage/plugin-catalog-backend": "^1.4.0", - "@backstage/plugin-code-coverage-backend": "^0.2.2", - "@backstage/plugin-graphql-backend": "^0.1.26", - "@backstage/plugin-jenkins-backend": "^0.1.26", - "@backstage/plugin-kafka-backend": "^0.2.29", - "@backstage/plugin-kubernetes-backend": "^0.7.2", - "@backstage/plugin-permission-backend": "^0.5.11", - "@backstage/plugin-permission-common": "^0.6.4", - "@backstage/plugin-permission-node": "^0.6.5", - "@backstage/plugin-playlist-backend": "^0.1.0", - "@backstage/plugin-proxy-backend": "^0.2.30", - "@backstage/plugin-rollbar-backend": "^0.1.33", - "@backstage/plugin-scaffolder-backend": "^1.6.0", - "@backstage/plugin-scaffolder-backend-module-rails": "^0.4.4", - "@backstage/plugin-search-backend": "^1.0.2", - "@backstage/plugin-search-backend-module-elasticsearch": "^1.0.2", - "@backstage/plugin-search-backend-module-pg": "^0.4.0", - "@backstage/plugin-search-backend-node": "^1.0.2", - "@backstage/plugin-search-common": "^1.0.1", - "@backstage/plugin-tech-insights-backend": "^0.5.2", - "@backstage/plugin-tech-insights-backend-module-jsonfc": "^0.1.20", - "@backstage/plugin-tech-insights-node": "^0.3.4", - "@backstage/plugin-techdocs-backend": "^1.3.0", - "@backstage/plugin-todo-backend": "^0.1.33", + "@backstage/backend-common": "workspace:^", + "@backstage/backend-tasks": "workspace:^", + "@backstage/catalog-client": "workspace:^", + "@backstage/catalog-model": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/integration": "workspace:^", + "@backstage/plugin-app-backend": "workspace:^", + "@backstage/plugin-auth-backend": "workspace:^", + "@backstage/plugin-auth-node": "workspace:^", + "@backstage/plugin-azure-devops-backend": "workspace:^", + "@backstage/plugin-badges-backend": "workspace:^", + "@backstage/plugin-catalog-backend": "workspace:^", + "@backstage/plugin-code-coverage-backend": "workspace:^", + "@backstage/plugin-graphql-backend": "workspace:^", + "@backstage/plugin-jenkins-backend": "workspace:^", + "@backstage/plugin-kafka-backend": "workspace:^", + "@backstage/plugin-kubernetes-backend": "workspace:^", + "@backstage/plugin-permission-backend": "workspace:^", + "@backstage/plugin-permission-common": "workspace:^", + "@backstage/plugin-permission-node": "workspace:^", + "@backstage/plugin-playlist-backend": "workspace:^", + "@backstage/plugin-proxy-backend": "workspace:^", + "@backstage/plugin-rollbar-backend": "workspace:^", + "@backstage/plugin-scaffolder-backend": "workspace:^", + "@backstage/plugin-scaffolder-backend-module-rails": "workspace:^", + "@backstage/plugin-search-backend": "workspace:^", + "@backstage/plugin-search-backend-module-elasticsearch": "workspace:^", + "@backstage/plugin-search-backend-module-pg": "workspace:^", + "@backstage/plugin-search-backend-node": "workspace:^", + "@backstage/plugin-search-common": "workspace:^", + "@backstage/plugin-tech-insights-backend": "workspace:^", + "@backstage/plugin-tech-insights-backend-module-jsonfc": "workspace:^", + "@backstage/plugin-tech-insights-node": "workspace:^", + "@backstage/plugin-techdocs-backend": "workspace:^", + "@backstage/plugin-todo-backend": "workspace:^", "@gitbeaker/node": "^35.1.0", "@octokit/rest": "^19.0.3", "azure-devops-node-api": "^11.0.1", @@ -77,7 +77,7 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/cli": "^0.19.0", + "@backstage/cli": "workspace:^", "@types/dockerode": "^3.3.0", "@types/express": "^4.17.6", "@types/express-serve-static-core": "^4.17.5", diff --git a/packages/catalog-client/package.json b/packages/catalog-client/package.json index 230c4695bd..fb1de71062 100644 --- a/packages/catalog-client/package.json +++ b/packages/catalog-client/package.json @@ -32,12 +32,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/errors": "^1.1.1", + "@backstage/catalog-model": "workspace:^", + "@backstage/errors": "workspace:^", "cross-fetch": "^3.1.5" }, "devDependencies": { - "@backstage/cli": "^0.19.0", + "@backstage/cli": "workspace:^", "msw": "^0.47.0" }, "files": [ diff --git a/packages/catalog-model/package.json b/packages/catalog-model/package.json index a4323cc913..ce2abee20a 100644 --- a/packages/catalog-model/package.json +++ b/packages/catalog-model/package.json @@ -33,16 +33,16 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/config": "^1.0.2", - "@backstage/errors": "^1.1.1", - "@backstage/types": "^1.0.0", + "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/types": "workspace:^", "ajv": "^8.10.0", "json-schema": "^0.4.0", "lodash": "^4.17.21", "uuid": "^8.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", + "@backstage/cli": "workspace:^", "@types/json-schema": "^7.0.5", "@types/lodash": "^4.14.151", "yaml": "^2.0.0" diff --git a/packages/cli-common/package.json b/packages/cli-common/package.json index c582c2f9c4..3b229071cf 100644 --- a/packages/cli-common/package.json +++ b/packages/cli-common/package.json @@ -32,7 +32,7 @@ "start": "backstage-cli package start" }, "devDependencies": { - "@backstage/cli": "^0.19.0", + "@backstage/cli": "workspace:^", "@types/node": "^16.0.0" }, "files": [ diff --git a/packages/cli/package.json b/packages/cli/package.json index 93bf98e022..b07f2a0263 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -30,12 +30,12 @@ "backstage-cli": "bin/backstage-cli" }, "dependencies": { - "@backstage/cli-common": "^0.1.10", - "@backstage/config": "^1.0.2", - "@backstage/config-loader": "^1.1.4", - "@backstage/errors": "^1.1.1", - "@backstage/release-manifests": "^0.0.6", - "@backstage/types": "^1.0.0", + "@backstage/cli-common": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/config-loader": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/release-manifests": "workspace:^", + "@backstage/types": "workspace:^", "@manypkg/get-packages": "^1.1.3", "@octokit/request": "^6.0.0", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.7", @@ -129,14 +129,14 @@ "zod": "^3.11.6" }, "devDependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/config": "^1.0.2", - "@backstage/core-app-api": "^1.1.0", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", - "@backstage/theme": "^0.2.16", + "@backstage/backend-common": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", + "@backstage/theme": "workspace:^", "@types/diff": "^5.0.0", "@types/express": "^4.17.6", "@types/fs-extra": "^9.0.1", diff --git a/packages/codemods/package.json b/packages/codemods/package.json index 3860c778d6..4be7e5a31c 100644 --- a/packages/codemods/package.json +++ b/packages/codemods/package.json @@ -33,13 +33,13 @@ "backstage-codemods": "bin/backstage-codemods" }, "dependencies": { - "@backstage/cli-common": "^0.1.10", + "@backstage/cli-common": "workspace:^", "chalk": "^4.0.0", "jscodeshift": "^0.13.0", "jscodeshift-add-imports": "^1.0.10" }, "devDependencies": { - "@backstage/cli": "^0.19.0", + "@backstage/cli": "workspace:^", "@types/jscodeshift": "^0.11.0", "@types/node": "^16.11.26", "commander": "^9.1.0", diff --git a/packages/config-loader/package.json b/packages/config-loader/package.json index 0dbba441cd..15d622cf5d 100644 --- a/packages/config-loader/package.json +++ b/packages/config-loader/package.json @@ -33,10 +33,10 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/cli-common": "^0.1.10", - "@backstage/config": "^1.0.2", - "@backstage/errors": "^1.1.1", - "@backstage/types": "^1.0.0", + "@backstage/cli-common": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/types": "workspace:^", "@types/json-schema": "^7.0.6", "ajv": "^8.10.0", "chokidar": "^3.5.2", @@ -50,7 +50,7 @@ "yup": "^0.32.9" }, "devDependencies": { - "@backstage/cli": "^0.19.0", + "@backstage/cli": "workspace:^", "@types/json-schema-merge-allof": "^0.6.0", "@types/mock-fs": "^4.10.0", "@types/node": "^16.11.26", diff --git a/packages/config/package.json b/packages/config/package.json index 81c7760c92..fec1fa88ad 100644 --- a/packages/config/package.json +++ b/packages/config/package.json @@ -32,12 +32,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/types": "^1.0.0", + "@backstage/types": "workspace:^", "lodash": "^4.17.21" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/test-utils": "workspace:^", "@types/node": "^16.0.0" }, "files": [ diff --git a/packages/core-app-api/package.json b/packages/core-app-api/package.json index f7b8d1633e..d3f8f04fc2 100644 --- a/packages/core-app-api/package.json +++ b/packages/core-app-api/package.json @@ -32,10 +32,10 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/config": "^1.0.2", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/types": "^1.0.0", - "@backstage/version-bridge": "^1.0.1", + "@backstage/config": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/types": "workspace:^", + "@backstage/version-bridge": "workspace:^", "@types/prop-types": "^15.7.3", "prop-types": "^15.7.2", "react-use": "^17.2.4", @@ -48,8 +48,8 @@ "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", diff --git a/packages/core-components/package.json b/packages/core-components/package.json index bd0d9af102..2c861c145a 100644 --- a/packages/core-components/package.json +++ b/packages/core-components/package.json @@ -32,11 +32,11 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/config": "^1.0.2", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/errors": "^1.1.1", - "@backstage/theme": "^0.2.16", - "@backstage/version-bridge": "^1.0.1", + "@backstage/config": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/theme": "workspace:^", + "@backstage/version-bridge": "workspace:^", "@material-table/core": "^3.1.0", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -78,9 +78,9 @@ "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", diff --git a/packages/core-plugin-api/package.json b/packages/core-plugin-api/package.json index 8089b94bbf..71372e26f1 100644 --- a/packages/core-plugin-api/package.json +++ b/packages/core-plugin-api/package.json @@ -33,9 +33,9 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/config": "^1.0.2", - "@backstage/types": "^1.0.0", - "@backstage/version-bridge": "^1.0.1", + "@backstage/config": "workspace:^", + "@backstage/types": "workspace:^", + "@backstage/version-bridge": "workspace:^", "history": "^5.0.0", "prop-types": "^15.7.2", "zen-observable": "^0.8.15" @@ -46,9 +46,9 @@ "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", diff --git a/packages/create-app/package.json b/packages/create-app/package.json index b9251becdd..de1f495abe 100644 --- a/packages/create-app/package.json +++ b/packages/create-app/package.json @@ -32,7 +32,7 @@ "start": "nodemon --" }, "dependencies": { - "@backstage/cli-common": "^0.1.10", + "@backstage/cli-common": "workspace:^", "chalk": "^4.0.0", "commander": "^9.1.0", "fs-extra": "10.1.0", @@ -42,7 +42,7 @@ "recursive-readdir": "^2.2.2" }, "devDependencies": { - "@backstage/cli": "^0.19.0", + "@backstage/cli": "workspace:^", "@types/fs-extra": "^9.0.1", "@types/inquirer": "^8.1.3", "@types/node": "^16.11.26", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 3bc6dd0f0e..4a43a0b8b3 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -32,15 +32,15 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/app-defaults": "^1.0.6", - "@backstage/catalog-model": "^1.1.1", - "@backstage/core-app-api": "^1.1.0", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/integration-react": "^1.1.4", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/test-utils": "^1.2.0", - "@backstage/theme": "^0.2.16", + "@backstage/app-defaults": "workspace:^", + "@backstage/catalog-model": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/integration-react": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/test-utils": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@testing-library/jest-dom": "^5.10.1", @@ -57,7 +57,7 @@ "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", + "@backstage/cli": "workspace:^", "@types/node": "^16.0.0" }, "files": [ diff --git a/packages/e2e-test/package.json b/packages/e2e-test/package.json index 12f430cad2..372e2c0f05 100644 --- a/packages/e2e-test/package.json +++ b/packages/e2e-test/package.json @@ -27,9 +27,9 @@ }, "bin": "bin/e2e-test", "devDependencies": { - "@backstage/cli": "^0.19.0-next.3", - "@backstage/cli-common": "^0.1.10-next.0", - "@backstage/errors": "^1.1.1-next.0", + "@backstage/cli": "workspace:^", + "@backstage/cli-common": "workspace:^", + "@backstage/errors": "workspace:^", "@types/fs-extra": "^9.0.1", "@types/node": "^16.11.26", "@types/puppeteer": "^5.4.4", diff --git a/packages/errors/package.json b/packages/errors/package.json index 0237984c35..eb3627f1ba 100644 --- a/packages/errors/package.json +++ b/packages/errors/package.json @@ -32,12 +32,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/types": "^1.0.0", + "@backstage/types": "workspace:^", "cross-fetch": "^3.1.5", "serialize-error": "^8.0.1" }, "devDependencies": { - "@backstage/cli": "^0.19.0" + "@backstage/cli": "workspace:^" }, "files": [ "dist" diff --git a/packages/integration-react/package.json b/packages/integration-react/package.json index aaa42faad6..3f23625aac 100644 --- a/packages/integration-react/package.json +++ b/packages/integration-react/package.json @@ -23,11 +23,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/config": "^1.0.2", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/integration": "^1.3.1", - "@backstage/theme": "^0.2.16", + "@backstage/config": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/integration": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -37,9 +37,9 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/packages/integration/package.json b/packages/integration/package.json index 559fd5ce75..6c2e070467 100644 --- a/packages/integration/package.json +++ b/packages/integration/package.json @@ -32,8 +32,8 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/config": "^1.0.2", - "@backstage/errors": "^1.1.1", + "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", "@octokit/auth-app": "^4.0.0", "@octokit/rest": "^19.0.3", "cross-fetch": "^3.1.5", @@ -42,9 +42,9 @@ "luxon": "^3.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/config-loader": "^1.1.4", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/config-loader": "workspace:^", + "@backstage/test-utils": "workspace:^", "@types/luxon": "^3.0.0", "msw": "^0.47.0" }, diff --git a/packages/release-manifests/package.json b/packages/release-manifests/package.json index 799b9ac912..949cd2bcd5 100644 --- a/packages/release-manifests/package.json +++ b/packages/release-manifests/package.json @@ -35,8 +35,8 @@ "cross-fetch": "^3.1.5" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/test-utils": "workspace:^", "@types/node": "^16.0.0", "msw": "^0.47.0" }, diff --git a/packages/techdocs-cli-embedded-app/package.json b/packages/techdocs-cli-embedded-app/package.json index 289cb9951c..060735636b 100644 --- a/packages/techdocs-cli-embedded-app/package.json +++ b/packages/techdocs-cli-embedded-app/package.json @@ -7,19 +7,19 @@ }, "bundled": true, "dependencies": { - "@backstage/app-defaults": "^1.0.6", - "@backstage/catalog-model": "^1.1.1", - "@backstage/cli": "^0.19.0", - "@backstage/config": "^1.0.2", - "@backstage/core-app-api": "^1.1.0", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/integration-react": "^1.1.4", - "@backstage/plugin-catalog": "^1.5.1", - "@backstage/plugin-techdocs": "^1.3.2", - "@backstage/plugin-techdocs-react": "^1.0.4", - "@backstage/test-utils": "^1.2.0", - "@backstage/theme": "^0.2.16", + "@backstage/app-defaults": "workspace:^", + "@backstage/catalog-model": "workspace:^", + "@backstage/cli": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/integration-react": "workspace:^", + "@backstage/plugin-catalog": "workspace:^", + "@backstage/plugin-techdocs": "workspace:^", + "@backstage/plugin-techdocs-react": "workspace:^", + "@backstage/test-utils": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.11.0", "@material-ui/icons": "^4.9.1", "history": "^5.0.0", @@ -30,7 +30,7 @@ "react-use": "^17.2.4" }, "devDependencies": { - "@backstage/cli": "^0.19.0", + "@backstage/cli": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/packages/techdocs-cli/package.json b/packages/techdocs-cli/package.json index 2af9f7e135..2e74c28c62 100644 --- a/packages/techdocs-cli/package.json +++ b/packages/techdocs-cli/package.json @@ -36,7 +36,7 @@ "techdocs-cli": "bin/techdocs-cli" }, "devDependencies": { - "@backstage/cli": "^0.19.0", + "@backstage/cli": "workspace:^", "@types/commander": "^2.12.2", "@types/fs-extra": "^9.0.6", "@types/http-proxy": "^1.17.4", @@ -60,11 +60,11 @@ "ext": "ts" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/catalog-model": "^1.1.1", - "@backstage/cli-common": "^0.1.10", - "@backstage/config": "^1.0.2", - "@backstage/plugin-techdocs-node": "^1.4.0", + "@backstage/backend-common": "workspace:^", + "@backstage/catalog-model": "workspace:^", + "@backstage/cli-common": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/plugin-techdocs-node": "workspace:^", "@types/dockerode": "^3.3.0", "commander": "^9.1.0", "dockerode": "^3.3.1", diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json index 5d67094575..4eba4e93fd 100644 --- a/packages/test-utils/package.json +++ b/packages/test-utils/package.json @@ -32,13 +32,13 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/config": "^1.0.2", - "@backstage/core-app-api": "^1.1.0", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/plugin-permission-common": "^0.6.4", - "@backstage/plugin-permission-react": "^0.4.5", - "@backstage/theme": "^0.2.16", - "@backstage/types": "^1.0.0", + "@backstage/config": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/plugin-permission-common": "workspace:^", + "@backstage/plugin-permission-react": "workspace:^", + "@backstage/theme": "workspace:^", + "@backstage/types": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.11.2", "@testing-library/jest-dom": "^5.10.1", @@ -55,7 +55,7 @@ "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", + "@backstage/cli": "workspace:^", "@types/node": "^16.11.26", "msw": "^0.47.0" }, diff --git a/packages/theme/package.json b/packages/theme/package.json index 4569c67eae..f311aa7c1f 100644 --- a/packages/theme/package.json +++ b/packages/theme/package.json @@ -35,7 +35,7 @@ "@material-ui/core": "^4.12.2" }, "devDependencies": { - "@backstage/cli": "^0.19.0-next.1" + "@backstage/cli": "workspace:^" }, "files": [ "dist" diff --git a/packages/types/package.json b/packages/types/package.json index 133b388ea9..b8ebeffce8 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -32,7 +32,7 @@ "clean": "backstage-cli package clean" }, "devDependencies": { - "@backstage/cli": "^0.19.0-next.1", + "@backstage/cli": "workspace:^", "@types/zen-observable": "^0.8.0", "zen-observable": "^0.8.15" }, diff --git a/packages/version-bridge/package.json b/packages/version-bridge/package.json index 52595c0cc9..3abfcd40f6 100644 --- a/packages/version-bridge/package.json +++ b/packages/version-bridge/package.json @@ -36,7 +36,7 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0-next.1", + "@backstage/cli": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0" diff --git a/plugins/adr-backend/package.json b/plugins/adr-backend/package.json index 6d9e85ca01..d8295c0e46 100644 --- a/plugins/adr-backend/package.json +++ b/plugins/adr-backend/package.json @@ -28,14 +28,14 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/catalog-client": "^1.1.0", - "@backstage/catalog-model": "^1.1.1", - "@backstage/config": "^1.0.2", - "@backstage/errors": "^1.1.1", - "@backstage/integration": "^1.3.1", - "@backstage/plugin-adr-common": "^0.2.1", - "@backstage/plugin-search-common": "^1.0.1", + "@backstage/backend-common": "workspace:^", + "@backstage/catalog-client": "workspace:^", + "@backstage/catalog-model": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/integration": "workspace:^", + "@backstage/plugin-adr-common": "workspace:^", + "@backstage/plugin-search-common": "workspace:^", "luxon": "^3.0.0", "marked": "^4.0.14", "node-fetch": "^2.6.5", @@ -43,7 +43,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", + "@backstage/cli": "workspace:^", "@types/marked": "^4.0.0", "@types/supertest": "^2.0.8", "msw": "^0.47.0", diff --git a/plugins/adr-common/package.json b/plugins/adr-common/package.json index 2451eee48b..02ae1d642d 100644 --- a/plugins/adr-common/package.json +++ b/plugins/adr-common/package.json @@ -29,12 +29,12 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/integration": "^1.3.1", - "@backstage/plugin-search-common": "^1.0.1" + "@backstage/catalog-model": "workspace:^", + "@backstage/integration": "workspace:^", + "@backstage/plugin-search-common": "workspace:^" }, "devDependencies": { - "@backstage/cli": "^0.19.0" + "@backstage/cli": "workspace:^" }, "files": [ "dist" diff --git a/plugins/adr/package.json b/plugins/adr/package.json index 428e2366f6..f64d901820 100644 --- a/plugins/adr/package.json +++ b/plugins/adr/package.json @@ -22,15 +22,15 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/integration-react": "^1.1.4", - "@backstage/plugin-adr-common": "^0.2.1", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/plugin-search-common": "^1.0.1", - "@backstage/plugin-search-react": "^1.1.0", - "@backstage/theme": "^0.2.16", + "@backstage/catalog-model": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/integration-react": "workspace:^", + "@backstage/plugin-adr-common": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/plugin-search-common": "workspace:^", + "@backstage/plugin-search-react": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -45,10 +45,10 @@ "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/airbrake-backend/package.json b/plugins/airbrake-backend/package.json index b4e91ad6c7..b79cdd80b1 100644 --- a/plugins/airbrake-backend/package.json +++ b/plugins/airbrake-backend/package.json @@ -22,8 +22,8 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/config": "^1.0.2", + "@backstage/backend-common": "workspace:^", + "@backstage/config": "workspace:^", "@types/express": "*", "express": "^4.17.1", "express-promise-router": "^4.1.0", @@ -32,7 +32,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", + "@backstage/cli": "workspace:^", "@types/http-proxy-middleware": "^0.19.3", "@types/supertest": "^2.0.8", "msw": "^0.47.0", diff --git a/plugins/airbrake/package.json b/plugins/airbrake/package.json index 708c264b22..5dc54ea863 100644 --- a/plugins/airbrake/package.json +++ b/plugins/airbrake/package.json @@ -22,13 +22,13 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/dev-utils": "^1.0.6", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/test-utils": "^1.2.0", - "@backstage/theme": "^0.2.16", + "@backstage/catalog-model": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/test-utils": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -40,10 +40,10 @@ "react-router": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/app-defaults": "^1.0.6", - "@backstage/cli": "^0.19.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/app-defaults": "workspace:^", + "@backstage/cli": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/allure/package.json b/plugins/allure/package.json index 110c428e87..3bfe92c6ee 100644 --- a/plugins/allure/package.json +++ b/plugins/allure/package.json @@ -23,11 +23,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/theme": "^0.2.16", + "@backstage/catalog-model": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -38,10 +38,10 @@ "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/analytics-module-ga/package.json b/plugins/analytics-module-ga/package.json index cc18b552ef..7e4ce38c20 100644 --- a/plugins/analytics-module-ga/package.json +++ b/plugins/analytics-module-ga/package.json @@ -22,10 +22,10 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/config": "^1.0.2", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/theme": "^0.2.16", + "@backstage/config": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -36,10 +36,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/apache-airflow/package.json b/plugins/apache-airflow/package.json index 686504830f..5555fd35fc 100644 --- a/plugins/apache-airflow/package.json +++ b/plugins/apache-airflow/package.json @@ -22,8 +22,8 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -35,10 +35,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/api-docs-module-protoc-gen-doc/package.json b/plugins/api-docs-module-protoc-gen-doc/package.json index 04088e7566..072304d2cf 100644 --- a/plugins/api-docs-module-protoc-gen-doc/package.json +++ b/plugins/api-docs-module-protoc-gen-doc/package.json @@ -37,7 +37,7 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0-next.1", + "@backstage/cli": "workspace:^", "@testing-library/jest-dom": "^5.16.4", "@types/react": "^16.13.1 || ^17.0.0" }, diff --git a/plugins/api-docs/package.json b/plugins/api-docs/package.json index b746738218..42cd8d5d74 100644 --- a/plugins/api-docs/package.json +++ b/plugins/api-docs/package.json @@ -33,12 +33,12 @@ }, "dependencies": { "@asyncapi/react-component": "1.0.0-next.42", - "@backstage/catalog-model": "^1.1.1", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/plugin-catalog": "^1.5.1", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/theme": "^0.2.16", + "@backstage/catalog-model": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/plugin-catalog": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -56,10 +56,10 @@ "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/apollo-explorer/package.json b/plugins/apollo-explorer/package.json index 79288a96a1..770af99853 100644 --- a/plugins/apollo-explorer/package.json +++ b/plugins/apollo-explorer/package.json @@ -23,9 +23,9 @@ }, "dependencies": { "@apollo/explorer": "^1.1.1", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/theme": "^0.2.16", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.9.13", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "^4.0.0-alpha.57", @@ -36,10 +36,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/app-backend/package.json b/plugins/app-backend/package.json index 22c7168733..ffd40b89c0 100644 --- a/plugins/app-backend/package.json +++ b/plugins/app-backend/package.json @@ -32,10 +32,10 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/config": "^1.0.2", - "@backstage/config-loader": "^1.1.4", - "@backstage/types": "^1.0.0", + "@backstage/backend-common": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/config-loader": "workspace:^", + "@backstage/types": "workspace:^", "@types/express": "^4.17.6", "express": "^4.17.1", "express-promise-router": "^4.1.0", @@ -49,9 +49,9 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.28", - "@backstage/cli": "^0.19.0", - "@backstage/types": "^1.0.0", + "@backstage/backend-test-utils": "workspace:^", + "@backstage/cli": "workspace:^", + "@backstage/types": "workspace:^", "@types/supertest": "^2.0.8", "mock-fs": "^5.1.0", "msw": "^0.47.0", diff --git a/plugins/auth-backend/package.json b/plugins/auth-backend/package.json index 8583d72bb8..d3c4fc2724 100644 --- a/plugins/auth-backend/package.json +++ b/plugins/auth-backend/package.json @@ -32,13 +32,13 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/catalog-client": "^1.1.0", - "@backstage/catalog-model": "^1.1.1", - "@backstage/config": "^1.0.2", - "@backstage/errors": "^1.1.1", - "@backstage/plugin-auth-node": "^0.2.5", - "@backstage/types": "^1.0.0", + "@backstage/backend-common": "workspace:^", + "@backstage/catalog-client": "workspace:^", + "@backstage/catalog-model": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/plugin-auth-node": "workspace:^", + "@backstage/types": "workspace:^", "@davidzemon/passport-okta-oauth": "^0.0.5", "@google-cloud/firestore": "^6.0.0", "@types/express": "^4.17.6", @@ -76,8 +76,8 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.28", - "@backstage/cli": "^0.19.0", + "@backstage/backend-test-utils": "workspace:^", + "@backstage/cli": "workspace:^", "@types/body-parser": "^1.19.0", "@types/cookie-parser": "^1.4.2", "@types/express-session": "^1.17.2", diff --git a/plugins/auth-node/package.json b/plugins/auth-node/package.json index d35009a09c..eac9d4e4d1 100644 --- a/plugins/auth-node/package.json +++ b/plugins/auth-node/package.json @@ -22,9 +22,9 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/config": "^1.0.2", - "@backstage/errors": "^1.1.1", + "@backstage/backend-common": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", "@types/express": "*", "express": "^4.17.1", "jose": "^4.6.0", @@ -32,8 +32,8 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.28", - "@backstage/cli": "^0.19.0", + "@backstage/backend-test-utils": "workspace:^", + "@backstage/cli": "workspace:^", "lodash": "^4.17.21", "msw": "^0.47.0", "uuid": "^8.0.0" diff --git a/plugins/azure-devops-backend/package.json b/plugins/azure-devops-backend/package.json index 36a21a5ed5..c77860abe5 100644 --- a/plugins/azure-devops-backend/package.json +++ b/plugins/azure-devops-backend/package.json @@ -22,9 +22,9 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/config": "^1.0.2", - "@backstage/plugin-azure-devops-common": "^0.3.0", + "@backstage/backend-common": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/plugin-azure-devops-common": "workspace:^", "@types/express": "^4.17.6", "azure-devops-node-api": "^11.0.1", "express": "^4.17.1", @@ -35,7 +35,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", + "@backstage/cli": "workspace:^", "@types/supertest": "^2.0.8", "msw": "^0.47.0", "supertest": "^6.1.6" diff --git a/plugins/azure-devops-common/package.json b/plugins/azure-devops-common/package.json index 7925445695..cf0b33275f 100644 --- a/plugins/azure-devops-common/package.json +++ b/plugins/azure-devops-common/package.json @@ -31,7 +31,7 @@ "clean": "backstage-cli package clean" }, "devDependencies": { - "@backstage/cli": "^0.19.0" + "@backstage/cli": "workspace:^" }, "files": [ "dist" diff --git a/plugins/azure-devops/package.json b/plugins/azure-devops/package.json index 7e993ddedd..9785fdf2b3 100644 --- a/plugins/azure-devops/package.json +++ b/plugins/azure-devops/package.json @@ -28,13 +28,13 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/errors": "^1.1.1", - "@backstage/plugin-azure-devops-common": "^0.3.0", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/theme": "^0.2.16", + "@backstage/catalog-model": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/plugin-azure-devops-common": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -47,10 +47,10 @@ "react-router": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/badges-backend/package.json b/plugins/badges-backend/package.json index 35fb89b336..0eaf8a9d0a 100644 --- a/plugins/badges-backend/package.json +++ b/plugins/badges-backend/package.json @@ -33,11 +33,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/catalog-client": "^1.1.0", - "@backstage/catalog-model": "^1.1.1", - "@backstage/config": "^1.0.2", - "@backstage/errors": "^1.1.1", + "@backstage/backend-common": "workspace:^", + "@backstage/catalog-client": "workspace:^", + "@backstage/catalog-model": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", "@types/express": "^4.17.6", "badge-maker": "^3.3.0", "cors": "^2.8.5", @@ -47,7 +47,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", + "@backstage/cli": "workspace:^", "@types/supertest": "^2.0.8", "supertest": "^6.1.3" }, diff --git a/plugins/badges/package.json b/plugins/badges/package.json index 33e2b14642..2e8081f3f6 100644 --- a/plugins/badges/package.json +++ b/plugins/badges/package.json @@ -29,12 +29,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/errors": "^1.1.1", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/theme": "^0.2.16", + "@backstage/catalog-model": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -45,10 +45,10 @@ "react-router": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/bazaar-backend/package.json b/plugins/bazaar-backend/package.json index e42e7afdca..5f11c694f8 100644 --- a/plugins/bazaar-backend/package.json +++ b/plugins/bazaar-backend/package.json @@ -22,9 +22,9 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/backend-test-utils": "^0.1.28", - "@backstage/config": "^1.0.2", + "@backstage/backend-common": "workspace:^", + "@backstage/backend-test-utils": "workspace:^", + "@backstage/config": "workspace:^", "@types/express": "^4.17.6", "express": "^4.17.1", "express-promise-router": "^4.1.0", @@ -33,7 +33,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0" + "@backstage/cli": "workspace:^" }, "files": [ "dist", diff --git a/plugins/bazaar/package.json b/plugins/bazaar/package.json index 28b41f3d52..919f8a7df7 100644 --- a/plugins/bazaar/package.json +++ b/plugins/bazaar/package.json @@ -22,13 +22,13 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-client": "^1.1.0", - "@backstage/catalog-model": "^1.1.1", - "@backstage/cli": "^0.19.0", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/plugin-catalog": "^1.5.1", - "@backstage/plugin-catalog-react": "^1.1.4", + "@backstage/catalog-client": "workspace:^", + "@backstage/catalog-model": "workspace:^", + "@backstage/cli": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/plugin-catalog": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", "@date-io/luxon": "1.x", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -44,8 +44,8 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/dev-utils": "^1.0.6", + "@backstage/cli": "workspace:^", + "@backstage/dev-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "cross-fetch": "^3.1.5" }, diff --git a/plugins/bitbucket-cloud-common/package.json b/plugins/bitbucket-cloud-common/package.json index 832e1d343e..1e8db8185f 100644 --- a/plugins/bitbucket-cloud-common/package.json +++ b/plugins/bitbucket-cloud-common/package.json @@ -27,11 +27,11 @@ "update-models": "yarn refresh-schema && yarn generate-models && yarn reduce-models" }, "dependencies": { - "@backstage/integration": "^1.3.1", + "@backstage/integration": "workspace:^", "cross-fetch": "^3.1.5" }, "devDependencies": { - "@backstage/cli": "^0.19.0", + "@backstage/cli": "workspace:^", "@openapitools/openapi-generator-cli": "^2.4.26", "msw": "^0.47.0", "ts-morph": "^15.0.0" diff --git a/plugins/bitrise/package.json b/plugins/bitrise/package.json index 864195c7e4..1a7e586e5c 100644 --- a/plugins/bitrise/package.json +++ b/plugins/bitrise/package.json @@ -23,11 +23,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/theme": "^0.2.16", + "@backstage/catalog-model": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -42,10 +42,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/catalog-backend-module-aws/package.json b/plugins/catalog-backend-module-aws/package.json index 84d85da036..c921aad767 100644 --- a/plugins/catalog-backend-module-aws/package.json +++ b/plugins/catalog-backend-module-aws/package.json @@ -32,14 +32,14 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/backend-tasks": "^0.3.5", - "@backstage/catalog-model": "^1.1.1", - "@backstage/config": "^1.0.2", - "@backstage/errors": "^1.1.1", - "@backstage/integration": "^1.3.1", - "@backstage/plugin-catalog-backend": "^1.4.0", - "@backstage/types": "^1.0.0", + "@backstage/backend-common": "workspace:^", + "@backstage/backend-tasks": "workspace:^", + "@backstage/catalog-model": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/integration": "workspace:^", + "@backstage/plugin-catalog-backend": "workspace:^", + "@backstage/types": "workspace:^", "aws-sdk": "^2.840.0", "lodash": "^4.17.21", "p-limit": "^3.0.2", @@ -47,7 +47,7 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/cli": "^0.19.0", + "@backstage/cli": "workspace:^", "@types/lodash": "^4.14.151", "aws-sdk-mock": "^5.2.1", "yaml": "^2.0.0" diff --git a/plugins/catalog-backend-module-azure/package.json b/plugins/catalog-backend-module-azure/package.json index b34c5187b1..afcfdf9f0f 100644 --- a/plugins/catalog-backend-module-azure/package.json +++ b/plugins/catalog-backend-module-azure/package.json @@ -32,14 +32,14 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/backend-tasks": "^0.3.5", - "@backstage/catalog-model": "^1.1.1", - "@backstage/config": "^1.0.2", - "@backstage/errors": "^1.1.1", - "@backstage/integration": "^1.3.1", - "@backstage/plugin-catalog-backend": "^1.4.0", - "@backstage/types": "^1.0.0", + "@backstage/backend-common": "workspace:^", + "@backstage/backend-tasks": "workspace:^", + "@backstage/catalog-model": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/integration": "workspace:^", + "@backstage/plugin-catalog-backend": "workspace:^", + "@backstage/types": "workspace:^", "lodash": "^4.17.21", "msw": "^0.47.0", "node-fetch": "^2.6.7", @@ -47,8 +47,8 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.28", - "@backstage/cli": "^0.19.0", + "@backstage/backend-test-utils": "workspace:^", + "@backstage/cli": "workspace:^", "@types/lodash": "^4.14.151" }, "files": [ diff --git a/plugins/catalog-backend-module-bitbucket-cloud/package.json b/plugins/catalog-backend-module-bitbucket-cloud/package.json index 57adc02ef5..4fdebd65bd 100644 --- a/plugins/catalog-backend-module-bitbucket-cloud/package.json +++ b/plugins/catalog-backend-module-bitbucket-cloud/package.json @@ -32,18 +32,18 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-tasks": "^0.3.5", - "@backstage/config": "^1.0.2", - "@backstage/integration": "^1.3.1", - "@backstage/plugin-bitbucket-cloud-common": "^0.1.3", - "@backstage/plugin-catalog-backend": "^1.4.0", + "@backstage/backend-tasks": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/integration": "workspace:^", + "@backstage/plugin-bitbucket-cloud-common": "workspace:^", + "@backstage/plugin-catalog-backend": "workspace:^", "uuid": "^8.0.0", "winston": "^3.2.1" }, "devDependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/backend-test-utils": "^0.1.28", - "@backstage/cli": "^0.19.0", + "@backstage/backend-common": "workspace:^", + "@backstage/backend-test-utils": "workspace:^", + "@backstage/cli": "workspace:^", "msw": "^0.47.0" }, "files": [ diff --git a/plugins/catalog-backend-module-bitbucket-server/package.json b/plugins/catalog-backend-module-bitbucket-server/package.json index d73fba5ff0..d4e27a8ec6 100644 --- a/plugins/catalog-backend-module-bitbucket-server/package.json +++ b/plugins/catalog-backend-module-bitbucket-server/package.json @@ -31,21 +31,21 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/backend-tasks": "^0.3.5", - "@backstage/catalog-model": "^1.1.1", - "@backstage/config": "^1.0.2", - "@backstage/errors": "^1.1.1", - "@backstage/integration": "^1.3.1", - "@backstage/plugin-catalog-backend": "^1.4.0", + "@backstage/backend-common": "workspace:^", + "@backstage/backend-tasks": "workspace:^", + "@backstage/catalog-model": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/integration": "workspace:^", + "@backstage/plugin-catalog-backend": "workspace:^", "@types/node-fetch": "^2.5.12", "node-fetch": "^2.6.7", "uuid": "^8.0.0", "winston": "^3.2.1" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.28", - "@backstage/cli": "^0.19.0", + "@backstage/backend-test-utils": "workspace:^", + "@backstage/cli": "workspace:^", "msw": "^0.47.0" }, "files": [ diff --git a/plugins/catalog-backend-module-bitbucket/package.json b/plugins/catalog-backend-module-bitbucket/package.json index a37222a575..171493dfc2 100644 --- a/plugins/catalog-backend-module-bitbucket/package.json +++ b/plugins/catalog-backend-module-bitbucket/package.json @@ -32,22 +32,22 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/catalog-model": "^1.1.1", - "@backstage/config": "^1.0.2", - "@backstage/errors": "^1.1.1", - "@backstage/integration": "^1.3.1", - "@backstage/plugin-bitbucket-cloud-common": "^0.1.3", - "@backstage/plugin-catalog-backend": "^1.4.0", - "@backstage/types": "^1.0.0", + "@backstage/backend-common": "workspace:^", + "@backstage/catalog-model": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/integration": "workspace:^", + "@backstage/plugin-bitbucket-cloud-common": "workspace:^", + "@backstage/plugin-catalog-backend": "workspace:^", + "@backstage/types": "workspace:^", "lodash": "^4.17.21", "msw": "^0.47.0", "node-fetch": "^2.6.7", "winston": "^3.2.1" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.28", - "@backstage/cli": "^0.19.0", + "@backstage/backend-test-utils": "workspace:^", + "@backstage/cli": "workspace:^", "@types/lodash": "^4.14.151" }, "files": [ diff --git a/plugins/catalog-backend-module-gerrit/package.json b/plugins/catalog-backend-module-gerrit/package.json index b4eb038874..6a115ea481 100644 --- a/plugins/catalog-backend-module-gerrit/package.json +++ b/plugins/catalog-backend-module-gerrit/package.json @@ -28,13 +28,13 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/backend-tasks": "^0.3.5", - "@backstage/catalog-model": "^1.1.1", - "@backstage/config": "^1.0.2", - "@backstage/errors": "^1.1.1", - "@backstage/integration": "^1.3.1", - "@backstage/plugin-catalog-backend": "^1.4.0", + "@backstage/backend-common": "workspace:^", + "@backstage/backend-tasks": "workspace:^", + "@backstage/catalog-model": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/integration": "workspace:^", + "@backstage/plugin-catalog-backend": "workspace:^", "fs-extra": "10.1.0", "msw": "^0.47.0", "node-fetch": "^2.6.7", @@ -42,8 +42,8 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.28", - "@backstage/cli": "^0.19.0", + "@backstage/backend-test-utils": "workspace:^", + "@backstage/cli": "workspace:^", "@types/fs-extra": "^9.0.1" }, "files": [ diff --git a/plugins/catalog-backend-module-github/package.json b/plugins/catalog-backend-module-github/package.json index fb1eda3a2b..278f108a7b 100644 --- a/plugins/catalog-backend-module-github/package.json +++ b/plugins/catalog-backend-module-github/package.json @@ -33,16 +33,16 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/backend-plugin-api": "^0.1.2", - "@backstage/backend-tasks": "^0.3.5", - "@backstage/catalog-model": "^1.1.1", - "@backstage/config": "^1.0.2", - "@backstage/errors": "^1.1.1", - "@backstage/integration": "^1.3.1", - "@backstage/plugin-catalog-backend": "^1.4.0", - "@backstage/plugin-catalog-node": "^1.1.0", - "@backstage/types": "^1.0.0", + "@backstage/backend-common": "workspace:^", + "@backstage/backend-plugin-api": "workspace:^", + "@backstage/backend-tasks": "workspace:^", + "@backstage/catalog-model": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/integration": "workspace:^", + "@backstage/plugin-catalog-backend": "workspace:^", + "@backstage/plugin-catalog-node": "workspace:^", + "@backstage/types": "workspace:^", "@octokit/graphql": "^5.0.0", "lodash": "^4.17.21", "msw": "^0.47.0", @@ -51,8 +51,8 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.28", - "@backstage/cli": "^0.19.0", + "@backstage/backend-test-utils": "workspace:^", + "@backstage/cli": "workspace:^", "@types/lodash": "^4.14.151" }, "files": [ diff --git a/plugins/catalog-backend-module-gitlab/package.json b/plugins/catalog-backend-module-gitlab/package.json index 16a8187835..457be11480 100644 --- a/plugins/catalog-backend-module-gitlab/package.json +++ b/plugins/catalog-backend-module-gitlab/package.json @@ -32,14 +32,14 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/backend-tasks": "^0.3.5", - "@backstage/catalog-model": "^1.1.1", - "@backstage/config": "^1.0.2", - "@backstage/errors": "^1.1.1", - "@backstage/integration": "^1.3.1", - "@backstage/plugin-catalog-backend": "^1.4.0", - "@backstage/types": "^1.0.0", + "@backstage/backend-common": "workspace:^", + "@backstage/backend-tasks": "workspace:^", + "@backstage/catalog-model": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/integration": "workspace:^", + "@backstage/plugin-catalog-backend": "workspace:^", + "@backstage/types": "workspace:^", "lodash": "^4.17.21", "msw": "^0.47.0", "node-fetch": "^2.6.7", @@ -47,8 +47,8 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.28", - "@backstage/cli": "^0.19.0", + "@backstage/backend-test-utils": "workspace:^", + "@backstage/cli": "workspace:^", "@types/lodash": "^4.14.151", "@types/uuid": "^8.0.0" }, diff --git a/plugins/catalog-backend-module-ldap/package.json b/plugins/catalog-backend-module-ldap/package.json index b5cd694fd6..ea00832f98 100644 --- a/plugins/catalog-backend-module-ldap/package.json +++ b/plugins/catalog-backend-module-ldap/package.json @@ -32,12 +32,12 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-tasks": "^0.3.5", - "@backstage/catalog-model": "^1.1.1", - "@backstage/config": "^1.0.2", - "@backstage/errors": "^1.1.1", - "@backstage/plugin-catalog-backend": "^1.4.0", - "@backstage/types": "^1.0.0", + "@backstage/backend-tasks": "workspace:^", + "@backstage/catalog-model": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/plugin-catalog-backend": "workspace:^", + "@backstage/types": "workspace:^", "@types/ldapjs": "^2.2.0", "ldapjs": "^2.2.0", "lodash": "^4.17.21", @@ -45,7 +45,7 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/cli": "^0.19.0", + "@backstage/cli": "workspace:^", "@types/lodash": "^4.14.151" }, "files": [ diff --git a/plugins/catalog-backend-module-msgraph/package.json b/plugins/catalog-backend-module-msgraph/package.json index 6d8ffe8683..5a5b90832e 100644 --- a/plugins/catalog-backend-module-msgraph/package.json +++ b/plugins/catalog-backend-module-msgraph/package.json @@ -33,10 +33,10 @@ }, "dependencies": { "@azure/identity": "^2.1.0", - "@backstage/backend-tasks": "^0.3.5", - "@backstage/catalog-model": "^1.1.1", - "@backstage/config": "^1.0.2", - "@backstage/plugin-catalog-backend": "^1.4.0", + "@backstage/backend-tasks": "workspace:^", + "@backstage/catalog-model": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/plugin-catalog-backend": "workspace:^", "@microsoft/microsoft-graph-types": "^2.6.0", "@types/node-fetch": "^2.5.12", "lodash": "^4.17.21", @@ -47,9 +47,9 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/backend-test-utils": "^0.1.28", - "@backstage/cli": "^0.19.0", + "@backstage/backend-common": "workspace:^", + "@backstage/backend-test-utils": "workspace:^", + "@backstage/cli": "workspace:^", "@types/lodash": "^4.14.151", "msw": "^0.47.0" }, diff --git a/plugins/catalog-backend-module-openapi/package.json b/plugins/catalog-backend-module-openapi/package.json index 7caf7a00aa..f3081f575b 100644 --- a/plugins/catalog-backend-module-openapi/package.json +++ b/plugins/catalog-backend-module-openapi/package.json @@ -33,19 +33,19 @@ }, "dependencies": { "@apidevtools/swagger-parser": "^10.1.0", - "@backstage/backend-common": "^0.15.1", - "@backstage/catalog-model": "^1.1.1", - "@backstage/config": "^1.0.2", - "@backstage/integration": "^1.3.1", - "@backstage/plugin-catalog-backend": "^1.4.0", - "@backstage/plugin-catalog-node": "^1.1.0", - "@backstage/types": "^1.0.0", + "@backstage/backend-common": "workspace:^", + "@backstage/catalog-model": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/integration": "workspace:^", + "@backstage/plugin-catalog-backend": "workspace:^", + "@backstage/plugin-catalog-node": "workspace:^", + "@backstage/types": "workspace:^", "winston": "^3.2.1", "yaml": "^2.1.1" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.28", - "@backstage/cli": "^0.19.0", + "@backstage/backend-test-utils": "workspace:^", + "@backstage/cli": "workspace:^", "openapi-types": "^12.0.0" }, "files": [ diff --git a/plugins/catalog-backend/package.json b/plugins/catalog-backend/package.json index 12851ac50c..f834b0e2e8 100644 --- a/plugins/catalog-backend/package.json +++ b/plugins/catalog-backend/package.json @@ -33,20 +33,20 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/backend-plugin-api": "^0.1.2", - "@backstage/catalog-client": "^1.1.0", - "@backstage/catalog-model": "^1.1.1", - "@backstage/config": "^1.0.2", - "@backstage/errors": "^1.1.1", - "@backstage/integration": "^1.3.1", - "@backstage/plugin-catalog-common": "^1.0.6", - "@backstage/plugin-catalog-node": "^1.1.0", - "@backstage/plugin-permission-common": "^0.6.4", - "@backstage/plugin-permission-node": "^0.6.5", - "@backstage/plugin-scaffolder-common": "^1.2.0", - "@backstage/plugin-search-common": "^1.0.1", - "@backstage/types": "^1.0.0", + "@backstage/backend-common": "workspace:^", + "@backstage/backend-plugin-api": "workspace:^", + "@backstage/catalog-client": "workspace:^", + "@backstage/catalog-model": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/integration": "workspace:^", + "@backstage/plugin-catalog-common": "workspace:^", + "@backstage/plugin-catalog-node": "workspace:^", + "@backstage/plugin-permission-common": "workspace:^", + "@backstage/plugin-permission-node": "workspace:^", + "@backstage/plugin-scaffolder-common": "workspace:^", + "@backstage/plugin-search-common": "workspace:^", + "@backstage/types": "workspace:^", "@types/express": "^4.17.6", "codeowners-utils": "^1.0.2", "core-js": "^3.6.5", @@ -69,10 +69,10 @@ "zod": "^3.11.6" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.28", - "@backstage/cli": "^0.19.0", - "@backstage/plugin-permission-common": "^0.6.4", - "@backstage/plugin-search-backend-node": "^1.0.2", + "@backstage/backend-test-utils": "workspace:^", + "@backstage/cli": "workspace:^", + "@backstage/plugin-permission-common": "workspace:^", + "@backstage/plugin-search-backend-node": "workspace:^", "@types/core-js": "^2.5.4", "@types/git-url-parse": "^9.0.0", "@types/lodash": "^4.14.151", diff --git a/plugins/catalog-common/package.json b/plugins/catalog-common/package.json index c4a9232fb9..357636341a 100644 --- a/plugins/catalog-common/package.json +++ b/plugins/catalog-common/package.json @@ -33,11 +33,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/plugin-permission-common": "^0.6.4", - "@backstage/plugin-search-common": "^1.0.1" + "@backstage/plugin-permission-common": "workspace:^", + "@backstage/plugin-search-common": "workspace:^" }, "devDependencies": { - "@backstage/cli": "^0.19.0" + "@backstage/cli": "workspace:^" }, "files": [ "dist", diff --git a/plugins/catalog-customized/package.json b/plugins/catalog-customized/package.json index 2c63efa860..a8ffbd7494 100644 --- a/plugins/catalog-customized/package.json +++ b/plugins/catalog-customized/package.json @@ -33,8 +33,8 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/plugin-catalog": "^1.5.1", - "@backstage/plugin-catalog-react": "^1.1.4" + "@backstage/plugin-catalog": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^" }, "devDependencies": { "@types/react": "^16.13.1 || ^17.0.0" diff --git a/plugins/catalog-graph/package.json b/plugins/catalog-graph/package.json index a9167a2220..88a45c4bde 100644 --- a/plugins/catalog-graph/package.json +++ b/plugins/catalog-graph/package.json @@ -22,12 +22,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-client": "^1.1.0", - "@backstage/catalog-model": "^1.1.1", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/theme": "^0.2.16", + "@backstage/catalog-client": "workspace:^", + "@backstage/catalog-model": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -43,12 +43,12 @@ "react-router": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/plugin-catalog": "^1.5.1", - "@backstage/test-utils": "^1.2.0", - "@backstage/types": "^1.0.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/plugin-catalog": "workspace:^", + "@backstage/test-utils": "workspace:^", + "@backstage/types": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", diff --git a/plugins/catalog-graphql/package.json b/plugins/catalog-graphql/package.json index 2872a8938d..7ad5fb68be 100644 --- a/plugins/catalog-graphql/package.json +++ b/plugins/catalog-graphql/package.json @@ -34,9 +34,9 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/config": "^1.0.2", - "@backstage/types": "^1.0.0", + "@backstage/catalog-model": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/types": "workspace:^", "apollo-server": "^3.0.0", "graphql": "^16.0.0", "graphql-modules": "^2.0.0", @@ -46,8 +46,8 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/test-utils": "workspace:^", "@graphql-codegen/cli": "^2.3.1", "@graphql-codegen/graphql-modules-preset": "^2.3.2", "@graphql-codegen/typescript": "^2.4.2", diff --git a/plugins/catalog-import/package.json b/plugins/catalog-import/package.json index ca2b9b2a10..7ec45fc6ed 100644 --- a/plugins/catalog-import/package.json +++ b/plugins/catalog-import/package.json @@ -32,15 +32,15 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-client": "^1.1.0", - "@backstage/catalog-model": "^1.1.1", - "@backstage/config": "^1.0.2", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/errors": "^1.1.1", - "@backstage/integration": "^1.3.1", - "@backstage/integration-react": "^1.1.4", - "@backstage/plugin-catalog-react": "^1.1.4", + "@backstage/catalog-client": "workspace:^", + "@backstage/catalog-model": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/integration": "workspace:^", + "@backstage/integration-react": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -58,10 +58,10 @@ "react-router": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", diff --git a/plugins/catalog-node/package.json b/plugins/catalog-node/package.json index 487406f5bb..4bd1f5259b 100644 --- a/plugins/catalog-node/package.json +++ b/plugins/catalog-node/package.json @@ -24,16 +24,16 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/backend-plugin-api": "^0.1.2", - "@backstage/catalog-client": "^1.1.0", - "@backstage/catalog-model": "^1.1.1", - "@backstage/errors": "^1.1.1", - "@backstage/types": "^1.0.0" + "@backstage/backend-plugin-api": "workspace:^", + "@backstage/catalog-client": "workspace:^", + "@backstage/catalog-model": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/types": "workspace:^" }, "devDependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/backend-test-utils": "^0.1.28", - "@backstage/cli": "^0.19.0" + "@backstage/backend-common": "workspace:^", + "@backstage/backend-test-utils": "workspace:^", + "@backstage/cli": "workspace:^" }, "files": [ "dist", diff --git a/plugins/catalog-react/package.json b/plugins/catalog-react/package.json index 3b3ac3833c..759aa6e4a9 100644 --- a/plugins/catalog-react/package.json +++ b/plugins/catalog-react/package.json @@ -33,18 +33,18 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/catalog-client": "^1.1.0", - "@backstage/catalog-model": "^1.1.1", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/errors": "^1.1.1", - "@backstage/integration": "^1.3.1", - "@backstage/plugin-catalog-common": "^1.0.6", - "@backstage/plugin-permission-common": "^0.6.4", - "@backstage/plugin-permission-react": "^0.4.5", - "@backstage/theme": "^0.2.16", - "@backstage/types": "^1.0.0", - "@backstage/version-bridge": "^1.0.1", + "@backstage/catalog-client": "workspace:^", + "@backstage/catalog-model": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/integration": "workspace:^", + "@backstage/plugin-catalog-common": "workspace:^", + "@backstage/plugin-permission-common": "workspace:^", + "@backstage/plugin-permission-react": "workspace:^", + "@backstage/theme": "workspace:^", + "@backstage/types": "workspace:^", + "@backstage/version-bridge": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -62,11 +62,11 @@ "react-router": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/plugin-catalog-common": "^1.0.6", - "@backstage/plugin-scaffolder-common": "^1.2.0", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/plugin-catalog-common": "workspace:^", + "@backstage/plugin-scaffolder-common": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", diff --git a/plugins/catalog/package.json b/plugins/catalog/package.json index 8adc77fd3f..99361b6a3d 100644 --- a/plugins/catalog/package.json +++ b/plugins/catalog/package.json @@ -32,18 +32,18 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-client": "^1.1.0", - "@backstage/catalog-model": "^1.1.1", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/errors": "^1.1.1", - "@backstage/integration-react": "^1.1.4", - "@backstage/plugin-catalog-common": "^1.0.6", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/plugin-search-common": "^1.0.1", - "@backstage/plugin-search-react": "^1.1.0", - "@backstage/theme": "^0.2.16", - "@backstage/types": "^1.0.0", + "@backstage/catalog-client": "workspace:^", + "@backstage/catalog-model": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/integration-react": "workspace:^", + "@backstage/plugin-catalog-common": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/plugin-search-common": "workspace:^", + "@backstage/plugin-search-react": "workspace:^", + "@backstage/theme": "workspace:^", + "@backstage/types": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -59,11 +59,11 @@ "react-router": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/plugin-permission-react": "^0.4.5", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/plugin-permission-react": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/cicd-statistics-module-gitlab/package.json b/plugins/cicd-statistics-module-gitlab/package.json index 93d63976a6..a8c4ef7dec 100644 --- a/plugins/cicd-statistics-module-gitlab/package.json +++ b/plugins/cicd-statistics-module-gitlab/package.json @@ -28,16 +28,16 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/plugin-cicd-statistics": "^0.1.11", + "@backstage/catalog-model": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/plugin-cicd-statistics": "workspace:^", "@gitbeaker/browser": "^35.6.0", "@gitbeaker/core": "^35.6.0", "luxon": "^3.0.0", "p-limit": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0" + "@backstage/cli": "workspace:^" }, "files": [ "dist" diff --git a/plugins/cicd-statistics/package.json b/plugins/cicd-statistics/package.json index d666331767..b4c1e7bb15 100644 --- a/plugins/cicd-statistics/package.json +++ b/plugins/cicd-statistics/package.json @@ -32,14 +32,14 @@ "start": "backstage-cli package start" }, "devDependencies": { - "@backstage/cli": "^0.19.0", + "@backstage/cli": "workspace:^", "@types/luxon": "^3.0.0", "@types/react": "^16.13.1 || ^17.0.0" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/plugin-catalog-react": "^1.1.4", + "@backstage/catalog-model": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", "@date-io/luxon": "^1.3.13", "@material-ui/core": "^4.9.13", "@material-ui/icons": "^4.11.2", diff --git a/plugins/circleci/package.json b/plugins/circleci/package.json index 1a64b6e29a..7363bd98f0 100644 --- a/plugins/circleci/package.json +++ b/plugins/circleci/package.json @@ -33,11 +33,11 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/theme": "^0.2.16", + "@backstage/catalog-model": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -53,10 +53,10 @@ "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/cloudbuild/package.json b/plugins/cloudbuild/package.json index cc4286f4d0..3b20b28c3d 100644 --- a/plugins/cloudbuild/package.json +++ b/plugins/cloudbuild/package.json @@ -33,11 +33,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/theme": "^0.2.16", + "@backstage/catalog-model": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -51,10 +51,10 @@ "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/code-climate/package.json b/plugins/code-climate/package.json index 89432bdfa9..1863e3e080 100644 --- a/plugins/code-climate/package.json +++ b/plugins/code-climate/package.json @@ -22,11 +22,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/theme": "^0.2.16", + "@backstage/catalog-model": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -39,9 +39,9 @@ "react-router": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/code-coverage-backend/package.json b/plugins/code-coverage-backend/package.json index 74a2fd6bda..3cf9b2f087 100644 --- a/plugins/code-coverage-backend/package.json +++ b/plugins/code-coverage-backend/package.json @@ -23,12 +23,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/catalog-client": "^1.1.0", - "@backstage/catalog-model": "^1.1.1", - "@backstage/config": "^1.0.2", - "@backstage/errors": "^1.1.1", - "@backstage/integration": "^1.3.1", + "@backstage/backend-common": "workspace:^", + "@backstage/catalog-client": "workspace:^", + "@backstage/catalog-model": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/integration": "workspace:^", "@types/express": "^4.17.6", "express": "^4.17.1", "express-promise-router": "^4.1.0", @@ -39,7 +39,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", + "@backstage/cli": "workspace:^", "@types/express-xml-bodyparser": "^0.3.2", "@types/supertest": "^2.0.8", "msw": "^0.47.0", diff --git a/plugins/code-coverage/package.json b/plugins/code-coverage/package.json index 4d3e932e3f..ab4e071ccc 100644 --- a/plugins/code-coverage/package.json +++ b/plugins/code-coverage/package.json @@ -23,13 +23,13 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/config": "^1.0.2", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/errors": "^1.1.1", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/theme": "^0.2.16", + "@backstage/catalog-model": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -45,10 +45,10 @@ "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/codescene/package.json b/plugins/codescene/package.json index 7fd45d9896..884b751347 100644 --- a/plugins/codescene/package.json +++ b/plugins/codescene/package.json @@ -22,11 +22,11 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/config": "^1.0.2", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/errors": "^1.1.1", - "@backstage/theme": "^0.2.16", + "@backstage/config": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.9.10", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "^4.0.0-alpha.57", @@ -38,10 +38,10 @@ "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/config-schema/package.json b/plugins/config-schema/package.json index 1658c507cd..cf2cb6cf90 100644 --- a/plugins/config-schema/package.json +++ b/plugins/config-schema/package.json @@ -23,12 +23,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/config": "^1.0.2", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/errors": "^1.1.1", - "@backstage/theme": "^0.2.16", - "@backstage/types": "^1.0.0", + "@backstage/config": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/theme": "workspace:^", + "@backstage/types": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -40,10 +40,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/cost-insights-common/package.json b/plugins/cost-insights-common/package.json index ff458b0a5c..d675e0a548 100644 --- a/plugins/cost-insights-common/package.json +++ b/plugins/cost-insights-common/package.json @@ -32,7 +32,7 @@ "clean": "backstage-cli package clean" }, "devDependencies": { - "@backstage/cli": "^0.19.0-next.1" + "@backstage/cli": "workspace:^" }, "files": [ "dist" diff --git a/plugins/cost-insights/package.json b/plugins/cost-insights/package.json index 3bf59e98b9..fc128f405f 100644 --- a/plugins/cost-insights/package.json +++ b/plugins/cost-insights/package.json @@ -32,12 +32,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/config": "^1.0.2", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/plugin-cost-insights-common": "^0.1.1", - "@backstage/theme": "^0.2.16", + "@backstage/catalog-model": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/plugin-cost-insights-common": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -59,10 +59,10 @@ "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/dynatrace/package.json b/plugins/dynatrace/package.json index 45e5fc85a4..d8b3cb06a8 100644 --- a/plugins/dynatrace/package.json +++ b/plugins/dynatrace/package.json @@ -22,24 +22,24 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/theme": "^0.2.16", + "@backstage/catalog-model": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/theme": "workspace:^", "@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" }, "peerDependencies": { - "@backstage/plugin-catalog-react": "^1.1.4-next.0", + "@backstage/plugin-catalog-react": "workspace:^", "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/example-todo-list-backend/package.json b/plugins/example-todo-list-backend/package.json index 5a5c2720da..295aad4021 100644 --- a/plugins/example-todo-list-backend/package.json +++ b/plugins/example-todo-list-backend/package.json @@ -23,10 +23,10 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/config": "^1.0.2", - "@backstage/errors": "^1.1.1", - "@backstage/plugin-auth-node": "^0.2.5", + "@backstage/backend-common": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/plugin-auth-node": "workspace:^", "@types/express": "^4.17.6", "express": "^4.17.1", "express-promise-router": "^4.1.0", @@ -35,7 +35,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", + "@backstage/cli": "workspace:^", "@types/supertest": "^2.0.8", "@types/uuid": "^8.0.0", "msw": "^0.47.0", diff --git a/plugins/example-todo-list-common/package.json b/plugins/example-todo-list-common/package.json index 69d7433897..32dfe96ef4 100644 --- a/plugins/example-todo-list-common/package.json +++ b/plugins/example-todo-list-common/package.json @@ -23,13 +23,13 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/plugin-permission-common": "^0.6.4" + "@backstage/plugin-permission-common": "workspace:^" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@types/node": "^16.11.26", "cross-fetch": "^3.1.5", "msw": "^0.47.0" diff --git a/plugins/example-todo-list/package.json b/plugins/example-todo-list/package.json index 84fadc46bd..9b66c0c0a9 100644 --- a/plugins/example-todo-list/package.json +++ b/plugins/example-todo-list/package.json @@ -23,9 +23,9 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/theme": "^0.2.16", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -35,10 +35,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/explore-react/package.json b/plugins/explore-react/package.json index 765a71e352..66ac17f785 100644 --- a/plugins/explore-react/package.json +++ b/plugins/explore-react/package.json @@ -32,12 +32,12 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/core-plugin-api": "^1.0.6" + "@backstage/core-plugin-api": "workspace:^" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/explore/package.json b/plugins/explore/package.json index d09e759d01..b9b9257a3a 100644 --- a/plugins/explore/package.json +++ b/plugins/explore/package.json @@ -32,12 +32,12 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/plugin-explore-react": "^0.0.21", - "@backstage/theme": "^0.2.16", + "@backstage/catalog-model": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/plugin-explore-react": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -51,10 +51,10 @@ "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/firehydrant/package.json b/plugins/firehydrant/package.json index bcce19759f..37aa7b259b 100644 --- a/plugins/firehydrant/package.json +++ b/plugins/firehydrant/package.json @@ -23,10 +23,10 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/theme": "^0.2.16", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -37,10 +37,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/fossa/package.json b/plugins/fossa/package.json index 29a6b913dc..bf249c1b9d 100644 --- a/plugins/fossa/package.json +++ b/plugins/fossa/package.json @@ -33,12 +33,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/errors": "^1.1.1", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/theme": "^0.2.16", + "@backstage/catalog-model": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -51,10 +51,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/gcalendar/package.json b/plugins/gcalendar/package.json index e47498bc82..9ef566e95c 100644 --- a/plugins/gcalendar/package.json +++ b/plugins/gcalendar/package.json @@ -22,10 +22,10 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/errors": "^1.1.1", - "@backstage/theme": "^0.2.16", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -43,10 +43,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/gcp-projects/package.json b/plugins/gcp-projects/package.json index 4669877e15..d2926de41b 100644 --- a/plugins/gcp-projects/package.json +++ b/plugins/gcp-projects/package.json @@ -33,9 +33,9 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/theme": "^0.2.16", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -46,10 +46,10 @@ "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/git-release-manager/package.json b/plugins/git-release-manager/package.json index 061229e9fd..89061cc510 100644 --- a/plugins/git-release-manager/package.json +++ b/plugins/git-release-manager/package.json @@ -23,10 +23,10 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/integration": "^1.3.1", - "@backstage/theme": "^0.2.16", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/integration": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -42,10 +42,10 @@ "react-router": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", diff --git a/plugins/github-actions/package.json b/plugins/github-actions/package.json index 88d2ecb6d9..596e844c11 100644 --- a/plugins/github-actions/package.json +++ b/plugins/github-actions/package.json @@ -34,12 +34,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/integration": "^1.3.1", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/theme": "^0.2.16", + "@backstage/catalog-model": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/integration": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -53,10 +53,10 @@ "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/github-deployments/package.json b/plugins/github-deployments/package.json index 3ca6ae88f0..a0f94015dd 100644 --- a/plugins/github-deployments/package.json +++ b/plugins/github-deployments/package.json @@ -23,14 +23,14 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/errors": "^1.1.1", - "@backstage/integration": "^1.3.1", - "@backstage/integration-react": "^1.1.4", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/theme": "^0.2.16", + "@backstage/catalog-model": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/integration": "workspace:^", + "@backstage/integration-react": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -42,10 +42,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/github-issues/package.json b/plugins/github-issues/package.json index aac0fb964a..c393e4db8a 100644 --- a/plugins/github-issues/package.json +++ b/plugins/github-issues/package.json @@ -22,13 +22,13 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/errors": "^1.1.1", - "@backstage/integration": "^1.3.1", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/theme": "^0.2.15", + "@backstage/catalog-model": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/integration": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.4", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "^4.0.0-alpha.61", @@ -40,10 +40,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@spotify/prettier-config": "^14.0.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", diff --git a/plugins/github-pull-requests-board/package.json b/plugins/github-pull-requests-board/package.json index fd4696d2bc..62826918a9 100644 --- a/plugins/github-pull-requests-board/package.json +++ b/plugins/github-pull-requests-board/package.json @@ -34,12 +34,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/integration": "^1.3.1", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/theme": "^0.2.16", + "@backstage/catalog-model": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/integration": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -48,9 +48,9 @@ "react-use": "^17.2.4" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/gitops-profiles/package.json b/plugins/gitops-profiles/package.json index e397694088..9c2114a91f 100644 --- a/plugins/gitops-profiles/package.json +++ b/plugins/gitops-profiles/package.json @@ -33,9 +33,9 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/theme": "^0.2.16", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -46,10 +46,10 @@ "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/gocd/package.json b/plugins/gocd/package.json index e7469549c3..6ed5489b61 100644 --- a/plugins/gocd/package.json +++ b/plugins/gocd/package.json @@ -29,12 +29,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/errors": "^1.1.1", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/theme": "^0.2.16", + "@backstage/catalog-model": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -47,10 +47,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/graphiql/package.json b/plugins/graphiql/package.json index 650172a170..2ad33b0f9a 100644 --- a/plugins/graphiql/package.json +++ b/plugins/graphiql/package.json @@ -32,9 +32,9 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/theme": "^0.2.16", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -48,10 +48,10 @@ "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/graphql-backend/package.json b/plugins/graphql-backend/package.json index a7c175c36b..8575323fe6 100644 --- a/plugins/graphql-backend/package.json +++ b/plugins/graphql-backend/package.json @@ -33,9 +33,9 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/config": "^1.0.2", - "@backstage/plugin-catalog-graphql": "^0.3.13", + "@backstage/backend-common": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/plugin-catalog-graphql": "workspace:^", "@graphql-tools/schema": "^9.0.0", "@types/express": "^4.17.6", "apollo-server": "^3.0.0", @@ -50,7 +50,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", + "@backstage/cli": "workspace:^", "@types/supertest": "^2.0.8", "msw": "^0.47.0", "supertest": "^6.1.3" diff --git a/plugins/home/package.json b/plugins/home/package.json index 4ad0e623f3..bfa3d388c3 100644 --- a/plugins/home/package.json +++ b/plugins/home/package.json @@ -33,13 +33,13 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/config": "^1.0.2", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/plugin-stack-overflow": "^0.1.5", - "@backstage/theme": "^0.2.16", + "@backstage/catalog-model": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/plugin-stack-overflow": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -52,10 +52,10 @@ "react-router": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/ilert/package.json b/plugins/ilert/package.json index 19e79a108d..391a9e495d 100644 --- a/plugins/ilert/package.json +++ b/plugins/ilert/package.json @@ -23,12 +23,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/errors": "^1.1.1", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/theme": "^0.2.16", + "@backstage/catalog-model": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/theme": "workspace:^", "@date-io/luxon": "1.x", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -42,10 +42,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/jenkins-backend/package.json b/plugins/jenkins-backend/package.json index 0814533429..7c2203a866 100644 --- a/plugins/jenkins-backend/package.json +++ b/plugins/jenkins-backend/package.json @@ -24,14 +24,14 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/catalog-client": "^1.1.0", - "@backstage/catalog-model": "^1.1.1", - "@backstage/config": "^1.0.2", - "@backstage/errors": "^1.1.1", - "@backstage/plugin-auth-node": "^0.2.5", - "@backstage/plugin-jenkins-common": "^0.1.8", - "@backstage/plugin-permission-common": "^0.6.4", + "@backstage/backend-common": "workspace:^", + "@backstage/catalog-client": "workspace:^", + "@backstage/catalog-model": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/plugin-auth-node": "workspace:^", + "@backstage/plugin-jenkins-common": "workspace:^", + "@backstage/plugin-permission-common": "workspace:^", "@types/express": "^4.17.6", "express": "^4.17.1", "express-promise-router": "^4.1.0", @@ -41,7 +41,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", + "@backstage/cli": "workspace:^", "@types/jenkins": "^0.23.1", "@types/supertest": "^2.0.8", "msw": "^0.47.0", diff --git a/plugins/jenkins-common/package.json b/plugins/jenkins-common/package.json index 625183828b..fd752b9d84 100644 --- a/plugins/jenkins-common/package.json +++ b/plugins/jenkins-common/package.json @@ -22,11 +22,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/plugin-catalog-common": "^1.0.6", - "@backstage/plugin-permission-common": "^0.6.4" + "@backstage/plugin-catalog-common": "workspace:^", + "@backstage/plugin-permission-common": "workspace:^" }, "devDependencies": { - "@backstage/cli": "^0.19.0" + "@backstage/cli": "workspace:^" }, "files": [ "dist" diff --git a/plugins/jenkins/package.json b/plugins/jenkins/package.json index ea78c0133e..18b4507b48 100644 --- a/plugins/jenkins/package.json +++ b/plugins/jenkins/package.json @@ -33,13 +33,13 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/errors": "^1.1.1", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/plugin-jenkins-common": "^0.1.8", - "@backstage/theme": "^0.2.16", + "@backstage/catalog-model": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/plugin-jenkins-common": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -52,10 +52,10 @@ "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/kafka-backend/package.json b/plugins/kafka-backend/package.json index 860c1ed16f..5c56582454 100644 --- a/plugins/kafka-backend/package.json +++ b/plugins/kafka-backend/package.json @@ -34,10 +34,10 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/catalog-model": "^1.1.1", - "@backstage/config": "^1.0.2", - "@backstage/errors": "^1.1.1", + "@backstage/backend-common": "workspace:^", + "@backstage/catalog-model": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", "@types/express": "^4.17.6", "express": "^4.17.1", "express-promise-router": "^4.1.0", @@ -46,7 +46,7 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/cli": "^0.19.0", + "@backstage/cli": "workspace:^", "@types/jest-when": "^3.5.0", "@types/lodash": "^4.14.151", "jest-when": "^3.1.0", diff --git a/plugins/kafka/package.json b/plugins/kafka/package.json index 82d3549b19..228b2d6bc9 100644 --- a/plugins/kafka/package.json +++ b/plugins/kafka/package.json @@ -24,12 +24,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/config": "^1.0.2", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/theme": "^0.2.16", + "@backstage/catalog-model": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -40,10 +40,10 @@ "react-router": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", diff --git a/plugins/kubernetes-backend/package.json b/plugins/kubernetes-backend/package.json index 1f322efca4..9adb3d4c22 100644 --- a/plugins/kubernetes-backend/package.json +++ b/plugins/kubernetes-backend/package.json @@ -35,13 +35,13 @@ }, "dependencies": { "@azure/identity": "^2.0.4", - "@backstage/backend-common": "^0.15.1", - "@backstage/catalog-client": "^1.1.0", - "@backstage/catalog-model": "^1.1.1", - "@backstage/config": "^1.0.2", - "@backstage/errors": "^1.1.1", - "@backstage/plugin-auth-node": "^0.2.5", - "@backstage/plugin-kubernetes-common": "^0.4.2", + "@backstage/backend-common": "workspace:^", + "@backstage/catalog-client": "workspace:^", + "@backstage/catalog-model": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/plugin-auth-node": "workspace:^", + "@backstage/plugin-kubernetes-common": "workspace:^", "@google-cloud/container": "^4.0.0", "@kubernetes/client-node": "^0.17.0", "@types/express": "^4.17.6", @@ -62,7 +62,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", + "@backstage/cli": "workspace:^", "@types/aws4": "^1.5.1", "aws-sdk-mock": "^5.2.1", "supertest": "^6.1.3" diff --git a/plugins/kubernetes-common/package.json b/plugins/kubernetes-common/package.json index a79d23acc8..5baa12800d 100644 --- a/plugins/kubernetes-common/package.json +++ b/plugins/kubernetes-common/package.json @@ -38,11 +38,11 @@ "url": "https://github.com/backstage/backstage/issues" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", + "@backstage/catalog-model": "workspace:^", "@kubernetes/client-node": "^0.17.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0" + "@backstage/cli": "workspace:^" }, "jest": { "roots": [ diff --git a/plugins/kubernetes/package.json b/plugins/kubernetes/package.json index 9158781530..a6c3171529 100644 --- a/plugins/kubernetes/package.json +++ b/plugins/kubernetes/package.json @@ -33,13 +33,13 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/config": "^1.0.2", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/plugin-kubernetes-common": "^0.4.2", - "@backstage/theme": "^0.2.16", + "@backstage/catalog-model": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/plugin-kubernetes-common": "workspace:^", + "@backstage/theme": "workspace:^", "@kubernetes/client-node": "^0.17.0", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -56,10 +56,10 @@ "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", diff --git a/plugins/lighthouse/package.json b/plugins/lighthouse/package.json index 11b69adeef..78ae3237cb 100644 --- a/plugins/lighthouse/package.json +++ b/plugins/lighthouse/package.json @@ -33,12 +33,12 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/config": "^1.0.2", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/theme": "^0.2.16", + "@backstage/catalog-model": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -49,10 +49,10 @@ "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", diff --git a/plugins/newrelic-dashboard/package.json b/plugins/newrelic-dashboard/package.json index d83bb5f57f..986ebd44ab 100644 --- a/plugins/newrelic-dashboard/package.json +++ b/plugins/newrelic-dashboard/package.json @@ -22,19 +22,19 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/errors": "^1.1.1", - "@backstage/plugin-catalog-react": "^1.1.4", + "@backstage/catalog-model": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", "react-use": "^17.2.4" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/dev-utils": "^1.0.6", + "@backstage/cli": "workspace:^", + "@backstage/dev-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@types/react": "^16.13.1 || ^17.0.0", "cross-fetch": "^3.1.5" diff --git a/plugins/newrelic/package.json b/plugins/newrelic/package.json index e7a6423bd5..c76f73c41a 100644 --- a/plugins/newrelic/package.json +++ b/plugins/newrelic/package.json @@ -33,9 +33,9 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/theme": "^0.2.16", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -45,10 +45,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/org/package.json b/plugins/org/package.json index c9454c3d24..9fb4b45a32 100644 --- a/plugins/org/package.json +++ b/plugins/org/package.json @@ -28,11 +28,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/theme": "^0.2.16", + "@backstage/catalog-model": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -47,11 +47,11 @@ "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/catalog-client": "^1.1.0", - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/catalog-client": "workspace:^", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/pagerduty/package.json b/plugins/pagerduty/package.json index c9dc5862c2..4909465deb 100644 --- a/plugins/pagerduty/package.json +++ b/plugins/pagerduty/package.json @@ -33,12 +33,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/errors": "^1.1.1", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/theme": "^0.2.16", + "@backstage/catalog-model": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -52,10 +52,10 @@ "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/periskop-backend/package.json b/plugins/periskop-backend/package.json index 9b744f0da2..4704370394 100644 --- a/plugins/periskop-backend/package.json +++ b/plugins/periskop-backend/package.json @@ -23,8 +23,8 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/config": "^1.0.2", + "@backstage/backend-common": "workspace:^", + "@backstage/config": "workspace:^", "@types/express": "*", "express": "^4.17.1", "express-promise-router": "^4.1.0", @@ -33,7 +33,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", + "@backstage/cli": "workspace:^", "@types/supertest": "^2.0.8", "msw": "^0.47.0", "supertest": "^6.1.6" diff --git a/plugins/periskop/package.json b/plugins/periskop/package.json index 29a656c773..94ec1fdc21 100644 --- a/plugins/periskop/package.json +++ b/plugins/periskop/package.json @@ -23,12 +23,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/errors": "^1.1.1", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/theme": "^0.2.16", + "@backstage/catalog-model": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -40,10 +40,10 @@ "react-dom": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/permission-backend/package.json b/plugins/permission-backend/package.json index f513ed500c..234e633482 100644 --- a/plugins/permission-backend/package.json +++ b/plugins/permission-backend/package.json @@ -22,12 +22,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/config": "^1.0.2", - "@backstage/errors": "^1.1.1", - "@backstage/plugin-auth-node": "^0.2.5", - "@backstage/plugin-permission-common": "^0.6.4", - "@backstage/plugin-permission-node": "^0.6.5", + "@backstage/backend-common": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/plugin-auth-node": "workspace:^", + "@backstage/plugin-permission-common": "workspace:^", + "@backstage/plugin-permission-node": "workspace:^", "@types/express": "*", "dataloader": "^2.0.0", "express": "^4.17.1", @@ -39,7 +39,7 @@ "zod": "^3.11.6" }, "devDependencies": { - "@backstage/cli": "^0.19.0", + "@backstage/cli": "workspace:^", "@types/lodash": "^4.14.151", "@types/supertest": "^2.0.8", "msw": "^0.47.0", diff --git a/plugins/permission-common/package.json b/plugins/permission-common/package.json index 59a0e50fb6..e83131387a 100644 --- a/plugins/permission-common/package.json +++ b/plugins/permission-common/package.json @@ -41,14 +41,14 @@ "url": "https://github.com/backstage/backstage/issues" }, "dependencies": { - "@backstage/config": "^1.0.2", - "@backstage/errors": "^1.1.1", + "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", "cross-fetch": "^3.1.5", "uuid": "^8.0.0", "zod": "^3.11.6" }, "devDependencies": { - "@backstage/cli": "^0.19.0", + "@backstage/cli": "workspace:^", "msw": "^0.47.0" } } diff --git a/plugins/permission-node/package.json b/plugins/permission-node/package.json index e1f37d4e61..354aced054 100644 --- a/plugins/permission-node/package.json +++ b/plugins/permission-node/package.json @@ -33,19 +33,19 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/config": "^1.0.2", - "@backstage/errors": "^1.1.1", - "@backstage/plugin-auth-node": "^0.2.5", - "@backstage/plugin-permission-common": "^0.6.4", + "@backstage/backend-common": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/plugin-auth-node": "workspace:^", + "@backstage/plugin-permission-common": "workspace:^", "@types/express": "^4.17.6", "express": "^4.17.1", "express-promise-router": "^4.1.0", "zod": "^3.11.6" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.28", - "@backstage/cli": "^0.19.0", + "@backstage/backend-test-utils": "workspace:^", + "@backstage/cli": "workspace:^", "@types/supertest": "^2.0.8", "msw": "^0.47.0", "supertest": "^6.1.3" diff --git a/plugins/permission-react/package.json b/plugins/permission-react/package.json index 7626909eb4..faaca8829f 100644 --- a/plugins/permission-react/package.json +++ b/plugins/permission-react/package.json @@ -31,9 +31,9 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/config": "^1.0.2", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/plugin-permission-common": "^0.6.4", + "@backstage/config": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/plugin-permission-common": "workspace:^", "cross-fetch": "^3.1.5", "react-use": "^17.2.4", "swr": "^1.1.2" @@ -44,8 +44,8 @@ "react-router": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3" }, diff --git a/plugins/playlist-backend/package.json b/plugins/playlist-backend/package.json index c3028bd9f4..ae472da767 100644 --- a/plugins/playlist-backend/package.json +++ b/plugins/playlist-backend/package.json @@ -22,16 +22,16 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/backend-test-utils": "^0.1.28", - "@backstage/catalog-client": "^1.1.0", - "@backstage/catalog-model": "^1.1.1", - "@backstage/config": "^1.0.2", - "@backstage/errors": "^1.1.1", - "@backstage/plugin-auth-node": "^0.2.5", - "@backstage/plugin-permission-common": "^0.6.4", - "@backstage/plugin-permission-node": "^0.6.5", - "@backstage/plugin-playlist-common": "^0.1.0", + "@backstage/backend-common": "workspace:^", + "@backstage/backend-test-utils": "workspace:^", + "@backstage/catalog-client": "workspace:^", + "@backstage/catalog-model": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/plugin-auth-node": "workspace:^", + "@backstage/plugin-permission-common": "workspace:^", + "@backstage/plugin-permission-node": "workspace:^", + "@backstage/plugin-playlist-common": "workspace:^", "@types/express": "*", "express": "^4.17.1", "express-promise-router": "^4.1.0", @@ -42,7 +42,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", + "@backstage/cli": "workspace:^", "@types/supertest": "^2.0.8", "msw": "^0.47.0", "supertest": "^6.1.3" diff --git a/plugins/playlist-common/package.json b/plugins/playlist-common/package.json index 9599a5aeae..87dbc7d9f5 100644 --- a/plugins/playlist-common/package.json +++ b/plugins/playlist-common/package.json @@ -23,10 +23,10 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/plugin-permission-common": "^0.6.4" + "@backstage/plugin-permission-common": "workspace:^" }, "devDependencies": { - "@backstage/cli": "^0.19.0" + "@backstage/cli": "workspace:^" }, "files": [ "dist" diff --git a/plugins/playlist/package.json b/plugins/playlist/package.json index 79e6d1f080..7da8d4ba08 100644 --- a/plugins/playlist/package.json +++ b/plugins/playlist/package.json @@ -22,17 +22,17 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/errors": "^1.1.1", - "@backstage/plugin-catalog-common": "^1.0.6", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/plugin-permission-common": "^0.6.4", - "@backstage/plugin-permission-react": "^0.4.5", - "@backstage/plugin-playlist-common": "^0.1.0", - "@backstage/plugin-search-react": "^1.1.0", - "@backstage/theme": "^0.2.16", + "@backstage/catalog-model": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/plugin-catalog-common": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/plugin-permission-common": "workspace:^", + "@backstage/plugin-permission-react": "workspace:^", + "@backstage/plugin-playlist-common": "workspace:^", + "@backstage/plugin-search-react": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.9.13", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "^4.0.0-alpha.57", @@ -47,10 +47,10 @@ "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", diff --git a/plugins/proxy-backend/package.json b/plugins/proxy-backend/package.json index ba7da75e40..553c43051d 100644 --- a/plugins/proxy-backend/package.json +++ b/plugins/proxy-backend/package.json @@ -32,8 +32,8 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/config": "^1.0.2", + "@backstage/backend-common": "workspace:^", + "@backstage/config": "workspace:^", "@types/express": "^4.17.6", "express": "^4.17.1", "express-promise-router": "^4.1.0", @@ -46,7 +46,7 @@ "yup": "^0.32.9" }, "devDependencies": { - "@backstage/cli": "^0.19.0", + "@backstage/cli": "workspace:^", "@types/http-proxy-middleware": "^0.19.3", "@types/supertest": "^2.0.8", "@types/uuid": "^8.0.0", diff --git a/plugins/rollbar-backend/package.json b/plugins/rollbar-backend/package.json index e5c64087fb..aca54df1b2 100644 --- a/plugins/rollbar-backend/package.json +++ b/plugins/rollbar-backend/package.json @@ -33,8 +33,8 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/config": "^1.0.2", + "@backstage/backend-common": "workspace:^", + "@backstage/config": "workspace:^", "@types/express": "^4.17.6", "camelcase-keys": "^7.0.1", "compression": "^1.7.4", @@ -49,8 +49,8 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.28", - "@backstage/cli": "^0.19.0", + "@backstage/backend-test-utils": "workspace:^", + "@backstage/cli": "workspace:^", "@types/supertest": "^2.0.8", "msw": "^0.47.0", "supertest": "^6.1.3" diff --git a/plugins/rollbar/package.json b/plugins/rollbar/package.json index f111c50b9a..6c31befc6b 100644 --- a/plugins/rollbar/package.json +++ b/plugins/rollbar/package.json @@ -33,11 +33,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/theme": "^0.2.16", + "@backstage/catalog-model": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -51,10 +51,10 @@ "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@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 a881e93693..200b7bffa0 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/package.json +++ b/plugins/scaffolder-backend-module-cookiecutter/package.json @@ -23,19 +23,19 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/config": "^1.0.2", - "@backstage/errors": "^1.1.1", - "@backstage/integration": "^1.3.1", - "@backstage/plugin-scaffolder-backend": "^1.6.0", - "@backstage/types": "^1.0.0", + "@backstage/backend-common": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/integration": "workspace:^", + "@backstage/plugin-scaffolder-backend": "workspace:^", + "@backstage/types": "workspace:^", "command-exists": "^1.2.9", "fs-extra": "10.1.0", "winston": "^3.2.1", "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", + "@backstage/cli": "workspace:^", "@types/command-exists": "^1.2.0", "@types/fs-extra": "^9.0.1", "@types/mock-fs": "^4.13.0", diff --git a/plugins/scaffolder-backend-module-rails/package.json b/plugins/scaffolder-backend-module-rails/package.json index 43da566b7c..9418190ece 100644 --- a/plugins/scaffolder-backend-module-rails/package.json +++ b/plugins/scaffolder-backend-module-rails/package.json @@ -23,17 +23,17 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/config": "^1.0.2", - "@backstage/errors": "^1.1.1", - "@backstage/integration": "^1.3.1", - "@backstage/plugin-scaffolder-backend": "^1.6.0", - "@backstage/types": "^1.0.0", + "@backstage/backend-common": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/integration": "workspace:^", + "@backstage/plugin-scaffolder-backend": "workspace:^", + "@backstage/types": "workspace:^", "command-exists": "^1.2.9", "fs-extra": "^10.0.1" }, "devDependencies": { - "@backstage/cli": "^0.19.0", + "@backstage/cli": "workspace:^", "@types/command-exists": "^1.2.0", "@types/fs-extra": "^9.0.1", "@types/mock-fs": "^4.13.0", diff --git a/plugins/scaffolder-backend-module-yeoman/package.json b/plugins/scaffolder-backend-module-yeoman/package.json index 291b5f0328..a7fa872f6d 100644 --- a/plugins/scaffolder-backend-module-yeoman/package.json +++ b/plugins/scaffolder-backend-module-yeoman/package.json @@ -22,15 +22,15 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/config": "^1.0.2", - "@backstage/plugin-scaffolder-backend": "^1.6.0", - "@backstage/types": "^1.0.0", + "@backstage/config": "workspace:^", + "@backstage/plugin-scaffolder-backend": "workspace:^", + "@backstage/types": "workspace:^", "winston": "^3.2.1", "yeoman-environment": "^3.9.1" }, "devDependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/cli": "^0.19.0" + "@backstage/backend-common": "workspace:^", + "@backstage/cli": "workspace:^" }, "files": [ "dist" diff --git a/plugins/scaffolder-backend/package.json b/plugins/scaffolder-backend/package.json index 2b8a731587..2812150b39 100644 --- a/plugins/scaffolder-backend/package.json +++ b/plugins/scaffolder-backend/package.json @@ -34,18 +34,18 @@ "build:assets": "node scripts/build-nunjucks.js" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/backend-plugin-api": "^0.1.2", - "@backstage/catalog-client": "^1.1.0", - "@backstage/catalog-model": "^1.1.1", - "@backstage/config": "^1.0.2", - "@backstage/errors": "^1.1.1", - "@backstage/integration": "^1.3.1", - "@backstage/plugin-auth-node": "^0.2.5", - "@backstage/plugin-catalog-backend": "^1.4.0", - "@backstage/plugin-catalog-node": "^1.1.0", - "@backstage/plugin-scaffolder-common": "^1.2.0", - "@backstage/types": "^1.0.0", + "@backstage/backend-common": "workspace:^", + "@backstage/backend-plugin-api": "workspace:^", + "@backstage/catalog-client": "workspace:^", + "@backstage/catalog-model": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/integration": "workspace:^", + "@backstage/plugin-auth-node": "workspace:^", + "@backstage/plugin-catalog-backend": "workspace:^", + "@backstage/plugin-catalog-node": "workspace:^", + "@backstage/plugin-scaffolder-common": "workspace:^", + "@backstage/types": "workspace:^", "@gitbeaker/core": "^35.6.0", "@gitbeaker/node": "^35.1.0", "@octokit/webhooks": "^10.0.0", @@ -79,8 +79,8 @@ "zod": "^3.11.6" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.28", - "@backstage/cli": "^0.19.0", + "@backstage/backend-test-utils": "workspace:^", + "@backstage/cli": "workspace:^", "@types/command-exists": "^1.2.0", "@types/fs-extra": "^9.0.1", "@types/git-url-parse": "^9.0.0", diff --git a/plugins/scaffolder-common/package.json b/plugins/scaffolder-common/package.json index 11951c052f..ab7508d215 100644 --- a/plugins/scaffolder-common/package.json +++ b/plugins/scaffolder-common/package.json @@ -38,10 +38,10 @@ "url": "https://github.com/backstage/backstage/issues" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/types": "^1.0.0" + "@backstage/catalog-model": "workspace:^", + "@backstage/types": "workspace:^" }, "devDependencies": { - "@backstage/cli": "^0.19.0" + "@backstage/cli": "workspace:^" } } diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json index dbc19b48c4..0debc7dd23 100644 --- a/plugins/scaffolder/package.json +++ b/plugins/scaffolder/package.json @@ -33,20 +33,20 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-client": "^1.1.0", - "@backstage/catalog-model": "^1.1.1", - "@backstage/config": "^1.0.2", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/errors": "^1.1.1", - "@backstage/integration": "^1.3.1", - "@backstage/integration-react": "^1.1.4", - "@backstage/plugin-catalog-common": "^1.0.6", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/plugin-permission-react": "^0.4.5", - "@backstage/plugin-scaffolder-common": "^1.2.0", - "@backstage/theme": "^0.2.16", - "@backstage/types": "^1.0.0", + "@backstage/catalog-client": "workspace:^", + "@backstage/catalog-model": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/integration": "workspace:^", + "@backstage/integration-react": "workspace:^", + "@backstage/plugin-catalog-common": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/plugin-permission-react": "workspace:^", + "@backstage/plugin-scaffolder-common": "workspace:^", + "@backstage/theme": "workspace:^", + "@backstage/types": "workspace:^", "@codemirror/language": "^6.0.0", "@codemirror/legacy-modes": "^6.1.0", "@codemirror/view": "^6.0.0", @@ -79,11 +79,11 @@ "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/plugin-catalog": "^1.5.1", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/plugin-catalog": "workspace:^", + "@backstage/test-utils": "workspace:^", "@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-backend-module-elasticsearch/package.json b/plugins/search-backend-module-elasticsearch/package.json index 9962769ccc..b161905d75 100644 --- a/plugins/search-backend-module-elasticsearch/package.json +++ b/plugins/search-backend-module-elasticsearch/package.json @@ -23,9 +23,9 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/config": "^1.0.2", - "@backstage/plugin-search-backend-node": "^1.0.2", - "@backstage/plugin-search-common": "^1.0.1", + "@backstage/config": "workspace:^", + "@backstage/plugin-search-backend-node": "workspace:^", + "@backstage/plugin-search-common": "workspace:^", "@elastic/elasticsearch": "^7.13.0", "@opensearch-project/opensearch": "^2.0.0", "aws-os-connection": "^0.2.0", @@ -36,8 +36,8 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/cli": "^0.19.0", + "@backstage/backend-common": "workspace:^", + "@backstage/cli": "workspace:^", "@elastic/elasticsearch-mock": "^1.0.0", "@short.io/opensearch-mock": "^0.3.1" }, diff --git a/plugins/search-backend-module-pg/package.json b/plugins/search-backend-module-pg/package.json index 70d2a48b22..8af9d8a4c8 100644 --- a/plugins/search-backend-module-pg/package.json +++ b/plugins/search-backend-module-pg/package.json @@ -23,17 +23,17 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/config": "^1.0.2", - "@backstage/plugin-search-backend-node": "^1.0.2", - "@backstage/plugin-search-common": "^1.0.1", + "@backstage/backend-common": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/plugin-search-backend-node": "workspace:^", + "@backstage/plugin-search-common": "workspace:^", "knex": "^2.0.0", "lodash": "^4.17.21", "uuid": "^8.3.2" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.28", - "@backstage/cli": "^0.19.0" + "@backstage/backend-test-utils": "workspace:^", + "@backstage/cli": "workspace:^" }, "files": [ "dist", diff --git a/plugins/search-backend-node/package.json b/plugins/search-backend-node/package.json index 837b4fcd3c..43f8597fd5 100644 --- a/plugins/search-backend-node/package.json +++ b/plugins/search-backend-node/package.json @@ -23,12 +23,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/backend-tasks": "^0.3.5", - "@backstage/config": "^1.0.2", - "@backstage/errors": "^1.1.1", - "@backstage/plugin-permission-common": "^0.6.4", - "@backstage/plugin-search-common": "^1.0.1", + "@backstage/backend-common": "workspace:^", + "@backstage/backend-tasks": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/plugin-permission-common": "workspace:^", + "@backstage/plugin-search-common": "workspace:^", "@types/lunr": "^2.3.3", "lodash": "^4.17.21", "lunr": "^2.3.9", @@ -38,8 +38,8 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/cli": "^0.19.0", + "@backstage/backend-common": "workspace:^", + "@backstage/cli": "workspace:^", "@types/ndjson": "^2.0.1" }, "files": [ diff --git a/plugins/search-backend/package.json b/plugins/search-backend/package.json index acfc5347d5..d01a8b2ff0 100644 --- a/plugins/search-backend/package.json +++ b/plugins/search-backend/package.json @@ -23,15 +23,15 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/config": "^1.0.2", - "@backstage/errors": "^1.1.1", - "@backstage/plugin-auth-node": "^0.2.5", - "@backstage/plugin-permission-common": "^0.6.4", - "@backstage/plugin-permission-node": "^0.6.5", - "@backstage/plugin-search-backend-node": "^1.0.2", - "@backstage/plugin-search-common": "^1.0.1", - "@backstage/types": "^1.0.0", + "@backstage/backend-common": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/plugin-auth-node": "workspace:^", + "@backstage/plugin-permission-common": "workspace:^", + "@backstage/plugin-permission-node": "workspace:^", + "@backstage/plugin-search-backend-node": "workspace:^", + "@backstage/plugin-search-common": "workspace:^", + "@backstage/types": "workspace:^", "@types/express": "^4.17.6", "dataloader": "^2.0.0", "express": "^4.17.1", @@ -43,7 +43,7 @@ "zod": "^3.11.6" }, "devDependencies": { - "@backstage/cli": "^0.19.0", + "@backstage/cli": "workspace:^", "@types/supertest": "^2.0.8", "supertest": "^6.1.3" }, diff --git a/plugins/search-common/package.json b/plugins/search-common/package.json index 1493f8c47e..0907468fdd 100644 --- a/plugins/search-common/package.json +++ b/plugins/search-common/package.json @@ -38,11 +38,11 @@ "url": "https://github.com/backstage/backstage/issues" }, "dependencies": { - "@backstage/plugin-permission-common": "^0.6.4", - "@backstage/types": "^1.0.0" + "@backstage/plugin-permission-common": "workspace:^", + "@backstage/types": "workspace:^" }, "devDependencies": { - "@backstage/cli": "^0.19.0" + "@backstage/cli": "workspace:^" }, "jest": { "roots": [ diff --git a/plugins/search-react/package.json b/plugins/search-react/package.json index 0e927a0f8c..d3b8105076 100644 --- a/plugins/search-react/package.json +++ b/plugins/search-react/package.json @@ -31,12 +31,12 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/plugin-search-common": "^1.0.1", - "@backstage/theme": "^0.2.16", - "@backstage/types": "^1.0.0", - "@backstage/version-bridge": "^1.0.1", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/plugin-search-common": "workspace:^", + "@backstage/theme": "workspace:^", + "@backstage/types": "workspace:^", + "@backstage/version-bridge": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -50,9 +50,9 @@ "react-router": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/test-utils": "workspace:^", "@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/package.json b/plugins/search/package.json index 7e95bafa02..f25c8a11f1 100644 --- a/plugins/search/package.json +++ b/plugins/search/package.json @@ -32,17 +32,17 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/config": "^1.0.2", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/errors": "^1.1.1", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/plugin-search-common": "^1.0.1", - "@backstage/plugin-search-react": "^1.1.0", - "@backstage/theme": "^0.2.16", - "@backstage/types": "^1.0.0", - "@backstage/version-bridge": "^1.0.1", + "@backstage/catalog-model": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/plugin-search-common": "workspace:^", + "@backstage/plugin-search-react": "workspace:^", + "@backstage/theme": "workspace:^", + "@backstage/types": "workspace:^", + "@backstage/version-bridge": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -56,10 +56,10 @@ "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", diff --git a/plugins/sentry/package.json b/plugins/sentry/package.json index 9cb074366e..65cac51b8f 100644 --- a/plugins/sentry/package.json +++ b/plugins/sentry/package.json @@ -33,11 +33,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/theme": "^0.2.16", + "@backstage/catalog-model": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/theme": "workspace:^", "@material-table/core": "^3.1.0", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", @@ -51,10 +51,10 @@ "react-router": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@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/package.json b/plugins/shortcuts/package.json index 082989fc4a..e0eda5cd4c 100644 --- a/plugins/shortcuts/package.json +++ b/plugins/shortcuts/package.json @@ -23,10 +23,10 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/theme": "^0.2.16", - "@backstage/types": "^1.0.0", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/theme": "workspace:^", + "@backstage/types": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -41,10 +41,10 @@ "react-router": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/sonarqube-backend/package.json b/plugins/sonarqube-backend/package.json index 032b45445d..2552407db8 100644 --- a/plugins/sonarqube-backend/package.json +++ b/plugins/sonarqube-backend/package.json @@ -22,9 +22,9 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/config": "^1.0.2", - "@backstage/errors": "^1.1.1", + "@backstage/backend-common": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", "@types/express": "*", "express": "^4.18.1", "express-promise-router": "^4.1.0", @@ -33,8 +33,8 @@ "yn": "^5.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/test-utils": "workspace:^", "@types/supertest": "^2.0.12", "msw": "^0.47.0", "supertest": "^6.2.4" diff --git a/plugins/sonarqube/package.json b/plugins/sonarqube/package.json index 91b6bd7f4d..a06019e867 100644 --- a/plugins/sonarqube/package.json +++ b/plugins/sonarqube/package.json @@ -34,11 +34,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/theme": "^0.2.16", + "@backstage/catalog-model": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -51,10 +51,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@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/package.json b/plugins/splunk-on-call/package.json index 4758fd122b..f52594b8dd 100644 --- a/plugins/splunk-on-call/package.json +++ b/plugins/splunk-on-call/package.json @@ -33,11 +33,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/theme": "^0.2.16", + "@backstage/catalog-model": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -50,10 +50,10 @@ "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@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/package.json b/plugins/stack-overflow-backend/package.json index ced4110525..4407219bf2 100644 --- a/plugins/stack-overflow-backend/package.json +++ b/plugins/stack-overflow-backend/package.json @@ -32,9 +32,9 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/config": "^1.0.2", - "@backstage/plugin-search-common": "^1.0.1", + "@backstage/cli": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/plugin-search-common": "workspace:^", "node-fetch": "^2.6.7", "qs": "^6.9.4", "winston": "^3.2.1" diff --git a/plugins/stack-overflow/package.json b/plugins/stack-overflow/package.json index 9cafb21b20..2a1884280d 100644 --- a/plugins/stack-overflow/package.json +++ b/plugins/stack-overflow/package.json @@ -22,12 +22,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/config": "^1.0.2", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/plugin-home": "^0.4.25", - "@backstage/plugin-search-common": "^1.0.1", - "@backstage/theme": "^0.2.16", + "@backstage/config": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/plugin-home": "workspace:^", + "@backstage/plugin-search-common": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@testing-library/jest-dom": "^5.10.1", @@ -41,10 +41,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", "@types/node": "^16.11.26", diff --git a/plugins/tech-insights-backend-module-jsonfc/package.json b/plugins/tech-insights-backend-module-jsonfc/package.json index 2703693b52..8109697054 100644 --- a/plugins/tech-insights-backend-module-jsonfc/package.json +++ b/plugins/tech-insights-backend-module-jsonfc/package.json @@ -33,11 +33,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/config": "^1.0.2", - "@backstage/errors": "^1.1.1", - "@backstage/plugin-tech-insights-common": "^0.2.6", - "@backstage/plugin-tech-insights-node": "^0.3.4", + "@backstage/backend-common": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/plugin-tech-insights-common": "workspace:^", + "@backstage/plugin-tech-insights-node": "workspace:^", "ajv": "^8.10.0", "json-rules-engine": "^6.1.2", "lodash": "^4.17.21", @@ -45,7 +45,7 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/cli": "^0.19.0" + "@backstage/cli": "workspace:^" }, "files": [ "dist" diff --git a/plugins/tech-insights-backend/package.json b/plugins/tech-insights-backend/package.json index 50ba01d20d..d2d1838bc1 100644 --- a/plugins/tech-insights-backend/package.json +++ b/plugins/tech-insights-backend/package.json @@ -33,14 +33,14 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/backend-tasks": "^0.3.5", - "@backstage/catalog-client": "^1.1.0", - "@backstage/catalog-model": "^1.1.1", - "@backstage/config": "^1.0.2", - "@backstage/errors": "^1.1.1", - "@backstage/plugin-tech-insights-common": "^0.2.6", - "@backstage/plugin-tech-insights-node": "^0.3.4", + "@backstage/backend-common": "workspace:^", + "@backstage/backend-tasks": "workspace:^", + "@backstage/catalog-client": "workspace:^", + "@backstage/catalog-model": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/plugin-tech-insights-common": "workspace:^", + "@backstage/plugin-tech-insights-node": "workspace:^", "@types/express": "^4.17.6", "@types/luxon": "^3.0.0", "express": "^4.17.1", @@ -54,8 +54,8 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.28", - "@backstage/cli": "^0.19.0", + "@backstage/backend-test-utils": "workspace:^", + "@backstage/cli": "workspace:^", "@types/semver": "^7.3.8", "@types/supertest": "^2.0.8", "supertest": "^6.1.3", diff --git a/plugins/tech-insights-common/package.json b/plugins/tech-insights-common/package.json index fbebd558b5..fda306c580 100644 --- a/plugins/tech-insights-common/package.json +++ b/plugins/tech-insights-common/package.json @@ -32,12 +32,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/types": "^1.0.0", + "@backstage/types": "workspace:^", "@types/luxon": "^3.0.0", "luxon": "^3.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0-next.1" + "@backstage/cli": "workspace:^" }, "files": [ "dist" diff --git a/plugins/tech-insights-node/package.json b/plugins/tech-insights-node/package.json index baa504976c..5ac11128d9 100644 --- a/plugins/tech-insights-node/package.json +++ b/plugins/tech-insights-node/package.json @@ -32,17 +32,17 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/backend-tasks": "^0.3.5", - "@backstage/config": "^1.0.2", - "@backstage/plugin-tech-insights-common": "^0.2.6", - "@backstage/types": "^1.0.0", + "@backstage/backend-common": "workspace:^", + "@backstage/backend-tasks": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/plugin-tech-insights-common": "workspace:^", + "@backstage/types": "workspace:^", "@types/luxon": "^3.0.0", "luxon": "^3.0.0", "winston": "^3.2.1" }, "devDependencies": { - "@backstage/cli": "^0.19.0" + "@backstage/cli": "workspace:^" }, "files": [ "dist" diff --git a/plugins/tech-insights/package.json b/plugins/tech-insights/package.json index dad3263f10..8a839daaf3 100644 --- a/plugins/tech-insights/package.json +++ b/plugins/tech-insights/package.json @@ -27,14 +27,14 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/errors": "^1.1.1", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/plugin-tech-insights-common": "^0.2.6", - "@backstage/theme": "^0.2.16", - "@backstage/types": "^1.0.0", + "@backstage/catalog-model": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/plugin-tech-insights-common": "workspace:^", + "@backstage/theme": "workspace:^", + "@backstage/types": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -46,10 +46,10 @@ "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@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/package.json b/plugins/tech-radar/package.json index ded203d4d0..19bd64d67c 100644 --- a/plugins/tech-radar/package.json +++ b/plugins/tech-radar/package.json @@ -32,9 +32,9 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/theme": "^0.2.16", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -47,10 +47,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@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-addons-test-utils/package.json b/plugins/techdocs-addons-test-utils/package.json index fecbb5d685..b891a28679 100644 --- a/plugins/techdocs-addons-test-utils/package.json +++ b/plugins/techdocs-addons-test-utils/package.json @@ -32,16 +32,16 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/core-app-api": "^1.1.0", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/integration-react": "^1.1.4", - "@backstage/plugin-catalog": "^1.5.1", - "@backstage/plugin-search-react": "^1.1.0", - "@backstage/plugin-techdocs": "^1.3.2", - "@backstage/plugin-techdocs-react": "^1.0.4", - "@backstage/test-utils": "^1.2.0", - "@backstage/theme": "^0.2.16", + "@backstage/core-app-api": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/integration-react": "workspace:^", + "@backstage/plugin-catalog": "workspace:^", + "@backstage/plugin-search-react": "workspace:^", + "@backstage/plugin-techdocs": "workspace:^", + "@backstage/plugin-techdocs-react": "workspace:^", + "@backstage/test-utils": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.9.13", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -56,8 +56,8 @@ "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/dev-utils": "^1.0.6", + "@backstage/cli": "workspace:^", + "@backstage/dev-utils": "workspace:^", "@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 f1265b804f..d31bc9fe84 100644 --- a/plugins/techdocs-backend/package.json +++ b/plugins/techdocs-backend/package.json @@ -33,16 +33,16 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/catalog-client": "^1.1.0", - "@backstage/catalog-model": "^1.1.1", - "@backstage/config": "^1.0.2", - "@backstage/errors": "^1.1.1", - "@backstage/integration": "^1.3.1", - "@backstage/plugin-catalog-common": "^1.0.6", - "@backstage/plugin-permission-common": "^0.6.4", - "@backstage/plugin-search-common": "^1.0.1", - "@backstage/plugin-techdocs-node": "^1.4.0", + "@backstage/backend-common": "workspace:^", + "@backstage/catalog-client": "workspace:^", + "@backstage/catalog-model": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/integration": "workspace:^", + "@backstage/plugin-catalog-common": "workspace:^", + "@backstage/plugin-permission-common": "workspace:^", + "@backstage/plugin-search-common": "workspace:^", + "@backstage/plugin-techdocs-node": "workspace:^", "@types/express": "^4.17.6", "dockerode": "^3.3.1", "express": "^4.17.1", @@ -55,9 +55,9 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.28", - "@backstage/cli": "^0.19.0", - "@backstage/plugin-search-backend-node": "^1.0.2", + "@backstage/backend-test-utils": "workspace:^", + "@backstage/cli": "workspace:^", + "@backstage/plugin-search-backend-node": "workspace:^", "@types/dockerode": "^3.3.0", "msw": "^0.47.0", "supertest": "^6.1.3" diff --git a/plugins/techdocs-module-addons-contrib/package.json b/plugins/techdocs-module-addons-contrib/package.json index 13bb293067..a5a054dd9f 100644 --- a/plugins/techdocs-module-addons-contrib/package.json +++ b/plugins/techdocs-module-addons-contrib/package.json @@ -33,12 +33,12 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/integration": "^1.3.1", - "@backstage/integration-react": "^1.1.4", - "@backstage/plugin-techdocs-react": "^1.0.4", - "@backstage/theme": "^0.2.16", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/integration": "workspace:^", + "@backstage/integration-react": "workspace:^", + "@backstage/plugin-techdocs-react": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.9.13", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -50,11 +50,11 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/plugin-techdocs-addons-test-utils": "^1.0.4", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/plugin-techdocs-addons-test-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@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 dfc1179eac..c096f5199c 100644 --- a/plugins/techdocs-node/package.json +++ b/plugins/techdocs-node/package.json @@ -41,12 +41,12 @@ "dependencies": { "@azure/identity": "^2.0.1", "@azure/storage-blob": "^12.5.0", - "@backstage/backend-common": "^0.15.1", - "@backstage/catalog-model": "^1.1.1", - "@backstage/config": "^1.0.2", - "@backstage/errors": "^1.1.1", - "@backstage/integration": "^1.3.1", - "@backstage/plugin-search-common": "^1.0.1", + "@backstage/backend-common": "workspace:^", + "@backstage/catalog-model": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/integration": "workspace:^", + "@backstage/plugin-search-common": "workspace:^", "@google-cloud/storage": "^6.0.0", "@trendyol-js/openstack-swift-sdk": "^0.0.5", "@types/express": "^4.17.6", @@ -63,7 +63,7 @@ "winston": "^3.2.1" }, "devDependencies": { - "@backstage/cli": "^0.19.0", + "@backstage/cli": "workspace:^", "@types/fs-extra": "^9.0.5", "@types/js-yaml": "^4.0.0", "@types/mime-types": "^2.1.0", diff --git a/plugins/techdocs-react/package.json b/plugins/techdocs-react/package.json index 76ab6aa765..a7f469a4a9 100644 --- a/plugins/techdocs-react/package.json +++ b/plugins/techdocs-react/package.json @@ -34,11 +34,11 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/config": "^1.0.2", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/version-bridge": "^1.0.1", + "@backstage/catalog-model": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/version-bridge": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/lab": "4.0.0-alpha.57", "@material-ui/styles": "^4.11.0", @@ -53,9 +53,9 @@ "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/test-utils": "^1.2.0", - "@backstage/theme": "^0.2.16", + "@backstage/cli": "workspace:^", + "@backstage/test-utils": "workspace:^", + "@backstage/theme": "workspace:^", "@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/package.json b/plugins/techdocs/package.json index 5f6cb757c9..ec8c1bf515 100644 --- a/plugins/techdocs/package.json +++ b/plugins/techdocs/package.json @@ -33,18 +33,18 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/config": "^1.0.2", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/errors": "^1.1.1", - "@backstage/integration": "^1.3.1", - "@backstage/integration-react": "^1.1.4", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/plugin-search-common": "^1.0.1", - "@backstage/plugin-search-react": "^1.1.0", - "@backstage/plugin-techdocs-react": "^1.0.4", - "@backstage/theme": "^0.2.16", + "@backstage/catalog-model": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/integration": "workspace:^", + "@backstage/integration-react": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/plugin-search-common": "workspace:^", + "@backstage/plugin-search-react": "workspace:^", + "@backstage/plugin-techdocs-react": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -65,10 +65,10 @@ "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^8.0.0", diff --git a/plugins/todo-backend/package.json b/plugins/todo-backend/package.json index 451349da26..5ac93bc1bd 100644 --- a/plugins/todo-backend/package.json +++ b/plugins/todo-backend/package.json @@ -29,12 +29,12 @@ "start": "backstage-cli package start" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/catalog-client": "^1.1.0", - "@backstage/catalog-model": "^1.1.1", - "@backstage/config": "^1.0.2", - "@backstage/errors": "^1.1.1", - "@backstage/integration": "^1.3.1", + "@backstage/backend-common": "workspace:^", + "@backstage/catalog-client": "workspace:^", + "@backstage/catalog-model": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/integration": "workspace:^", "@types/express": "^4.17.6", "express": "^4.17.1", "express-promise-router": "^4.1.0", @@ -43,7 +43,7 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", + "@backstage/cli": "workspace:^", "@types/supertest": "^2.0.8", "msw": "^0.47.0", "supertest": "^6.1.3" diff --git a/plugins/todo/package.json b/plugins/todo/package.json index 2b72606317..9c9956a1ef 100644 --- a/plugins/todo/package.json +++ b/plugins/todo/package.json @@ -29,12 +29,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/errors": "^1.1.1", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/theme": "^0.2.16", + "@backstage/catalog-model": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -45,10 +45,10 @@ "react-router": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/plugins/user-settings-backend/package.json b/plugins/user-settings-backend/package.json index 3ab91f5008..429d12d3d3 100644 --- a/plugins/user-settings-backend/package.json +++ b/plugins/user-settings-backend/package.json @@ -28,11 +28,11 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/catalog-model": "^1.1.1", - "@backstage/errors": "^1.1.1", - "@backstage/plugin-auth-node": "^0.2.5", - "@backstage/types": "^1.0.0", + "@backstage/backend-common": "workspace:^", + "@backstage/catalog-model": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/plugin-auth-node": "workspace:^", + "@backstage/types": "workspace:^", "@types/express": "^4.17.6", "express": "^4.17.1", "express-promise-router": "^4.1.0", @@ -41,8 +41,8 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/backend-test-utils": "^0.1.28", - "@backstage/cli": "^0.19.0", + "@backstage/backend-test-utils": "workspace:^", + "@backstage/cli": "workspace:^", "@types/supertest": "^2.0.8", "supertest": "^6.1.3" }, diff --git a/plugins/user-settings/package.json b/plugins/user-settings/package.json index c10438c25a..e00cf09bb8 100644 --- a/plugins/user-settings/package.json +++ b/plugins/user-settings/package.json @@ -32,12 +32,12 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-app-api": "^1.1.0", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/errors": "^1.1.1", - "@backstage/theme": "^0.2.16", - "@backstage/types": "^1.0.0", + "@backstage/core-app-api": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/theme": "workspace:^", + "@backstage/types": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -50,9 +50,9 @@ "react-router": "6.0.0-beta.0 || ^6.3.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@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/package.json b/plugins/vault-backend/package.json index 47f6887094..e4f0774b45 100644 --- a/plugins/vault-backend/package.json +++ b/plugins/vault-backend/package.json @@ -33,11 +33,11 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/backend-common": "^0.15.1", - "@backstage/backend-tasks": "^0.3.5", - "@backstage/backend-test-utils": "^0.1.28", - "@backstage/config": "^1.0.2", - "@backstage/errors": "^1.1.1", + "@backstage/backend-common": "workspace:^", + "@backstage/backend-tasks": "workspace:^", + "@backstage/backend-test-utils": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", "@types/express": "*", "compression": "^1.7.4", "cors": "^2.8.5", @@ -50,7 +50,7 @@ "yn": "^5.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", + "@backstage/cli": "workspace:^", "@types/compression": "^1.7.2", "@types/supertest": "^2.0.8", "msw": "^0.47.0", diff --git a/plugins/vault/package.json b/plugins/vault/package.json index f7723c6f61..843434be41 100644 --- a/plugins/vault/package.json +++ b/plugins/vault/package.json @@ -33,12 +33,12 @@ "postpack": "backstage-cli package postpack" }, "dependencies": { - "@backstage/catalog-model": "^1.1.1", - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/errors": "^1.1.1", - "@backstage/plugin-catalog-react": "^1.1.4", - "@backstage/theme": "^0.2.16", + "@backstage/catalog-model": "workspace:^", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/plugin-catalog-react": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "^4.0.0-alpha.57", @@ -48,10 +48,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@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/package.json b/plugins/xcmetrics/package.json index c01535c93d..afed40f10d 100644 --- a/plugins/xcmetrics/package.json +++ b/plugins/xcmetrics/package.json @@ -23,10 +23,10 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-components": "^0.11.1", - "@backstage/core-plugin-api": "^1.0.6", - "@backstage/errors": "^1.1.1", - "@backstage/theme": "^0.2.16", + "@backstage/core-components": "workspace:^", + "@backstage/core-plugin-api": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", @@ -39,10 +39,10 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.19.0", - "@backstage/core-app-api": "^1.1.0", - "@backstage/dev-utils": "^1.0.6", - "@backstage/test-utils": "^1.2.0", + "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", + "@backstage/dev-utils": "workspace:^", + "@backstage/test-utils": "workspace:^", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", diff --git a/yarn.lock b/yarn.lock index 57aafed159..3de1b2dda7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2955,17 +2955,17 @@ __metadata: languageName: node linkType: hard -"@backstage/app-defaults@^1.0.6, @backstage/app-defaults@workspace:packages/app-defaults": +"@backstage/app-defaults@workspace:^, @backstage/app-defaults@workspace:packages/app-defaults": version: 0.0.0-use.local resolution: "@backstage/app-defaults@workspace:packages/app-defaults" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/plugin-permission-react": ^0.4.5 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/plugin-permission-react": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@testing-library/jest-dom": ^5.10.1 @@ -2980,34 +2980,34 @@ __metadata: languageName: unknown linkType: soft -"@backstage/backend-app-api@^0.2.1, @backstage/backend-app-api@workspace:packages/backend-app-api": +"@backstage/backend-app-api@workspace:^, @backstage/backend-app-api@workspace:packages/backend-app-api": version: 0.0.0-use.local resolution: "@backstage/backend-app-api@workspace:packages/backend-app-api" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/backend-plugin-api": ^0.1.2 - "@backstage/backend-tasks": ^0.3.5 - "@backstage/cli": ^0.19.0 - "@backstage/errors": ^1.1.1 - "@backstage/plugin-permission-node": ^0.6.5 + "@backstage/backend-common": "workspace:^" + "@backstage/backend-plugin-api": "workspace:^" + "@backstage/backend-tasks": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/plugin-permission-node": "workspace:^" express: ^4.17.1 express-promise-router: ^4.1.0 winston: ^3.2.1 languageName: unknown linkType: soft -"@backstage/backend-common@^0.15.1, @backstage/backend-common@workspace:packages/backend-common": +"@backstage/backend-common@workspace:^, @backstage/backend-common@workspace:packages/backend-common": version: 0.0.0-use.local resolution: "@backstage/backend-common@workspace:packages/backend-common" dependencies: - "@backstage/backend-test-utils": ^0.1.28 - "@backstage/cli": ^0.19.0 - "@backstage/cli-common": ^0.1.10 - "@backstage/config": ^1.0.2 - "@backstage/config-loader": ^1.1.4 - "@backstage/errors": ^1.1.1 - "@backstage/integration": ^1.3.1 - "@backstage/types": ^1.0.0 + "@backstage/backend-test-utils": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/cli-common": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/config-loader": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/integration": "workspace:^" + "@backstage/types": "workspace:^" "@google-cloud/storage": ^6.0.0 "@keyv/redis": ^2.2.3 "@kubernetes/client-node": ^0.17.0 @@ -3082,25 +3082,25 @@ __metadata: languageName: unknown linkType: soft -"@backstage/backend-defaults@^0.1.1, @backstage/backend-defaults@workspace:packages/backend-defaults": +"@backstage/backend-defaults@workspace:^, @backstage/backend-defaults@workspace:packages/backend-defaults": version: 0.0.0-use.local resolution: "@backstage/backend-defaults@workspace:packages/backend-defaults" dependencies: - "@backstage/backend-app-api": ^0.2.1 - "@backstage/backend-plugin-api": ^0.1.2 - "@backstage/cli": ^0.19.0 + "@backstage/backend-app-api": "workspace:^" + "@backstage/backend-plugin-api": "workspace:^" + "@backstage/cli": "workspace:^" languageName: unknown linkType: soft -"@backstage/backend-plugin-api@^0.1.2, @backstage/backend-plugin-api@workspace:packages/backend-plugin-api": +"@backstage/backend-plugin-api@workspace:^, @backstage/backend-plugin-api@workspace:packages/backend-plugin-api": version: 0.0.0-use.local resolution: "@backstage/backend-plugin-api@workspace:packages/backend-plugin-api" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/backend-tasks": ^0.3.5 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/plugin-permission-common": ^0.6.4 + "@backstage/backend-common": "workspace:^" + "@backstage/backend-tasks": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/plugin-permission-common": "workspace:^" "@types/express": ^4.17.6 express: ^4.17.1 winston: ^3.2.1 @@ -3108,16 +3108,16 @@ __metadata: languageName: unknown linkType: soft -"@backstage/backend-tasks@^0.3.5, @backstage/backend-tasks@workspace:packages/backend-tasks": +"@backstage/backend-tasks@workspace:^, @backstage/backend-tasks@workspace:packages/backend-tasks": version: 0.0.0-use.local resolution: "@backstage/backend-tasks@workspace:packages/backend-tasks" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/backend-test-utils": ^0.1.28 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/errors": ^1.1.1 - "@backstage/types": ^1.0.0 + "@backstage/backend-common": "workspace:^" + "@backstage/backend-test-utils": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/types": "workspace:^" "@types/cron": ^2.0.0 "@types/luxon": ^3.0.0 cron: ^2.0.0 @@ -3132,15 +3132,15 @@ __metadata: languageName: unknown linkType: soft -"@backstage/backend-test-utils@^0.1.28, @backstage/backend-test-utils@workspace:packages/backend-test-utils": +"@backstage/backend-test-utils@workspace:^, @backstage/backend-test-utils@workspace:packages/backend-test-utils": version: 0.0.0-use.local resolution: "@backstage/backend-test-utils@workspace:packages/backend-test-utils" dependencies: - "@backstage/backend-app-api": ^0.2.1 - "@backstage/backend-common": ^0.15.1 - "@backstage/backend-plugin-api": ^0.1.2 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 + "@backstage/backend-app-api": "workspace:^" + "@backstage/backend-common": "workspace:^" + "@backstage/backend-plugin-api": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" better-sqlite3: ^7.5.0 knex: ^2.0.0 msw: ^0.47.0 @@ -3151,26 +3151,26 @@ __metadata: languageName: unknown linkType: soft -"@backstage/catalog-client@1.1.0, @backstage/catalog-client@^1.1.0, @backstage/catalog-client@workspace:packages/catalog-client": +"@backstage/catalog-client@workspace:^, @backstage/catalog-client@workspace:packages/catalog-client": version: 0.0.0-use.local resolution: "@backstage/catalog-client@workspace:packages/catalog-client" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/errors": ^1.1.1 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/errors": "workspace:^" cross-fetch: ^3.1.5 msw: ^0.47.0 languageName: unknown linkType: soft -"@backstage/catalog-model@^1.0.0, @backstage/catalog-model@^1.1.1, @backstage/catalog-model@workspace:packages/catalog-model": +"@backstage/catalog-model@^1.0.0, @backstage/catalog-model@workspace:^, @backstage/catalog-model@workspace:packages/catalog-model": version: 0.0.0-use.local resolution: "@backstage/catalog-model@workspace:packages/catalog-model" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/errors": ^1.1.1 - "@backstage/types": ^1.0.0 + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/types": "workspace:^" "@types/json-schema": ^7.0.5 "@types/lodash": ^4.14.151 ajv: ^8.10.0 @@ -3181,32 +3181,32 @@ __metadata: languageName: unknown linkType: soft -"@backstage/cli-common@^0.1.10, @backstage/cli-common@^0.1.10-next.0, @backstage/cli-common@workspace:packages/cli-common": +"@backstage/cli-common@workspace:^, @backstage/cli-common@workspace:packages/cli-common": version: 0.0.0-use.local resolution: "@backstage/cli-common@workspace:packages/cli-common" dependencies: - "@backstage/cli": ^0.19.0 + "@backstage/cli": "workspace:^" "@types/node": ^16.0.0 languageName: unknown linkType: soft -"@backstage/cli@^0.19.0, @backstage/cli@^0.19.0-next.1, @backstage/cli@^0.19.0-next.3, @backstage/cli@workspace:*, @backstage/cli@workspace:packages/cli": +"@backstage/cli@workspace:*, @backstage/cli@workspace:^, @backstage/cli@workspace:packages/cli": version: 0.0.0-use.local resolution: "@backstage/cli@workspace:packages/cli" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/cli-common": ^0.1.10 - "@backstage/config": ^1.0.2 - "@backstage/config-loader": ^1.1.4 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/errors": ^1.1.1 - "@backstage/release-manifests": ^0.0.6 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 - "@backstage/types": ^1.0.0 + "@backstage/backend-common": "workspace:^" + "@backstage/cli-common": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/config-loader": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/release-manifests": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" + "@backstage/types": "workspace:^" "@manypkg/get-packages": ^1.1.3 "@octokit/request": ^6.0.0 "@pmmmwh/react-refresh-webpack-plugin": ^0.5.7 @@ -3334,8 +3334,8 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/codemods@workspace:packages/codemods" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/cli-common": ^0.1.10 + "@backstage/cli": "workspace:^" + "@backstage/cli-common": "workspace:^" "@types/jscodeshift": ^0.11.0 "@types/node": ^16.11.26 chalk: ^4.0.0 @@ -3348,15 +3348,15 @@ __metadata: languageName: unknown linkType: soft -"@backstage/config-loader@^1.1.4, @backstage/config-loader@workspace:packages/config-loader": +"@backstage/config-loader@workspace:^, @backstage/config-loader@workspace:packages/config-loader": version: 0.0.0-use.local resolution: "@backstage/config-loader@workspace:packages/config-loader" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/cli-common": ^0.1.10 - "@backstage/config": ^1.0.2 - "@backstage/errors": ^1.1.1 - "@backstage/types": ^1.0.0 + "@backstage/cli": "workspace:^" + "@backstage/cli-common": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/types": "workspace:^" "@types/json-schema": ^7.0.6 "@types/json-schema-merge-allof": ^0.6.0 "@types/mock-fs": ^4.10.0 @@ -3377,28 +3377,28 @@ __metadata: languageName: unknown linkType: soft -"@backstage/config@^1.0.2, @backstage/config@workspace:packages/config": +"@backstage/config@workspace:^, @backstage/config@workspace:packages/config": version: 0.0.0-use.local resolution: "@backstage/config@workspace:packages/config" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/test-utils": ^1.2.0 - "@backstage/types": ^1.0.0 + "@backstage/cli": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/types": "workspace:^" "@types/node": ^16.0.0 lodash: ^4.17.21 languageName: unknown linkType: soft -"@backstage/core-app-api@^1.1.0, @backstage/core-app-api@workspace:packages/core-app-api": +"@backstage/core-app-api@workspace:^, @backstage/core-app-api@workspace:packages/core-app-api": version: 0.0.0-use.local resolution: "@backstage/core-app-api@workspace:packages/core-app-api" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/test-utils": ^1.2.0 - "@backstage/types": ^1.0.0 - "@backstage/version-bridge": ^1.0.1 + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/types": "workspace:^" + "@backstage/version-bridge": "workspace:^" "@testing-library/jest-dom": ^5.10.1 "@testing-library/react": ^12.1.3 "@testing-library/react-hooks": ^8.0.0 @@ -3423,18 +3423,18 @@ __metadata: languageName: unknown linkType: soft -"@backstage/core-components@^0.11.0, @backstage/core-components@^0.11.1, @backstage/core-components@workspace:packages/core-components": +"@backstage/core-components@^0.11.0, @backstage/core-components@workspace:^, @backstage/core-components@workspace:packages/core-components": version: 0.0.0-use.local resolution: "@backstage/core-components@workspace:packages/core-components" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/errors": ^1.1.1 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 - "@backstage/version-bridge": ^1.0.1 + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" + "@backstage/version-bridge": "workspace:^" "@material-table/core": ^3.1.0 "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 @@ -3495,16 +3495,16 @@ __metadata: languageName: unknown linkType: soft -"@backstage/core-plugin-api@^1.0.0, @backstage/core-plugin-api@^1.0.6, @backstage/core-plugin-api@workspace:packages/core-plugin-api": +"@backstage/core-plugin-api@^1.0.0, @backstage/core-plugin-api@workspace:^, @backstage/core-plugin-api@workspace:packages/core-plugin-api": version: 0.0.0-use.local resolution: "@backstage/core-plugin-api@workspace:packages/core-plugin-api" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/core-app-api": ^1.1.0 - "@backstage/test-utils": ^1.2.0 - "@backstage/types": ^1.0.0 - "@backstage/version-bridge": ^1.0.1 + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/types": "workspace:^" + "@backstage/version-bridge": "workspace:^" "@testing-library/jest-dom": ^5.10.1 "@testing-library/react": ^12.1.3 "@testing-library/react-hooks": ^8.0.0 @@ -3528,8 +3528,8 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/create-app@workspace:packages/create-app" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/cli-common": ^0.1.10 + "@backstage/cli": "workspace:^" + "@backstage/cli-common": "workspace:^" "@types/fs-extra": ^9.0.1 "@types/inquirer": ^8.1.3 "@types/node": ^16.11.26 @@ -3548,20 +3548,20 @@ __metadata: languageName: unknown linkType: soft -"@backstage/dev-utils@^1.0.6, @backstage/dev-utils@workspace:packages/dev-utils": +"@backstage/dev-utils@workspace:^, @backstage/dev-utils@workspace:packages/dev-utils": version: 0.0.0-use.local resolution: "@backstage/dev-utils@workspace:packages/dev-utils" dependencies: - "@backstage/app-defaults": ^1.0.6 - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/integration-react": ^1.1.4 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/app-defaults": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/integration-react": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@testing-library/jest-dom": ^5.10.1 @@ -3579,29 +3579,29 @@ __metadata: languageName: unknown linkType: soft -"@backstage/errors@1.1.1, @backstage/errors@^1.1.1, @backstage/errors@^1.1.1-next.0, @backstage/errors@workspace:packages/errors": +"@backstage/errors@workspace:^, @backstage/errors@workspace:packages/errors": version: 0.0.0-use.local resolution: "@backstage/errors@workspace:packages/errors" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/types": ^1.0.0 + "@backstage/cli": "workspace:^" + "@backstage/types": "workspace:^" cross-fetch: ^3.1.5 serialize-error: ^8.0.1 languageName: unknown linkType: soft -"@backstage/integration-react@^1.0.0, @backstage/integration-react@^1.1.4, @backstage/integration-react@workspace:packages/integration-react": +"@backstage/integration-react@^1.0.0, @backstage/integration-react@workspace:^, @backstage/integration-react@workspace:packages/integration-react": version: 0.0.0-use.local resolution: "@backstage/integration-react@workspace:packages/integration-react" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/integration": ^1.3.1 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/integration": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -3617,15 +3617,15 @@ __metadata: languageName: unknown linkType: soft -"@backstage/integration@^1.3.1, @backstage/integration@workspace:packages/integration": +"@backstage/integration@workspace:^, @backstage/integration@workspace:packages/integration": version: 0.0.0-use.local resolution: "@backstage/integration@workspace:packages/integration" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/config-loader": ^1.1.4 - "@backstage/errors": ^1.1.1 - "@backstage/test-utils": ^1.2.0 + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/config-loader": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/test-utils": "workspace:^" "@octokit/auth-app": ^4.0.0 "@octokit/rest": ^19.0.3 "@types/luxon": ^3.0.0 @@ -3641,15 +3641,15 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-adr-backend@workspace:plugins/adr-backend" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/catalog-client": ^1.1.0 - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/errors": ^1.1.1 - "@backstage/integration": ^1.3.1 - "@backstage/plugin-adr-common": ^0.2.1 - "@backstage/plugin-search-common": ^1.0.1 + "@backstage/backend-common": "workspace:^" + "@backstage/catalog-client": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/integration": "workspace:^" + "@backstage/plugin-adr-common": "workspace:^" + "@backstage/plugin-search-common": "workspace:^" "@types/marked": ^4.0.0 "@types/supertest": ^2.0.8 luxon: ^3.0.0 @@ -3662,14 +3662,14 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-adr-common@^0.2.1, @backstage/plugin-adr-common@workspace:plugins/adr-common": +"@backstage/plugin-adr-common@workspace:^, @backstage/plugin-adr-common@workspace:plugins/adr-common": version: 0.0.0-use.local resolution: "@backstage/plugin-adr-common@workspace:plugins/adr-common" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/integration": ^1.3.1 - "@backstage/plugin-search-common": ^1.0.1 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/integration": "workspace:^" + "@backstage/plugin-search-common": "workspace:^" languageName: unknown linkType: soft @@ -3677,19 +3677,19 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-adr@workspace:plugins/adr" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/integration-react": ^1.1.4 - "@backstage/plugin-adr-common": ^0.2.1 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/plugin-search-common": ^1.0.1 - "@backstage/plugin-search-react": ^1.1.0 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/integration-react": "workspace:^" + "@backstage/plugin-adr-common": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/plugin-search-common": "workspace:^" + "@backstage/plugin-search-react": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -3715,9 +3715,9 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-airbrake-backend@workspace:plugins/airbrake-backend" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 + "@backstage/backend-common": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" "@types/express": "*" "@types/http-proxy-middleware": ^0.19.3 "@types/supertest": ^2.0.8 @@ -3731,19 +3731,19 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-airbrake@^0.3.9, @backstage/plugin-airbrake@workspace:plugins/airbrake": +"@backstage/plugin-airbrake@workspace:^, @backstage/plugin-airbrake@workspace:plugins/airbrake": version: 0.0.0-use.local resolution: "@backstage/plugin-airbrake@workspace:plugins/airbrake" dependencies: - "@backstage/app-defaults": ^1.0.6 - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/app-defaults": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -3766,15 +3766,15 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-allure@workspace:plugins/allure" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -3795,14 +3795,14 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-analytics-module-ga@workspace:plugins/analytics-module-ga" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -3819,16 +3819,16 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-apache-airflow@^0.2.2, @backstage/plugin-apache-airflow@workspace:plugins/apache-airflow": +"@backstage/plugin-apache-airflow@workspace:^, @backstage/plugin-apache-airflow@workspace:plugins/apache-airflow": version: 0.0.0-use.local resolution: "@backstage/plugin-apache-airflow@workspace:plugins/apache-airflow" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/test-utils": ^1.2.0 + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/test-utils": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -3849,7 +3849,7 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-api-docs-module-protoc-gen-doc@workspace:plugins/api-docs-module-protoc-gen-doc" dependencies: - "@backstage/cli": ^0.19.0-next.1 + "@backstage/cli": "workspace:^" "@testing-library/jest-dom": ^5.16.4 "@types/react": ^16.13.1 || ^17.0.0 grpc-docs: ^1.1.2 @@ -3858,21 +3858,21 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-api-docs@^0.8.9, @backstage/plugin-api-docs@workspace:plugins/api-docs": +"@backstage/plugin-api-docs@workspace:^, @backstage/plugin-api-docs@workspace:plugins/api-docs": version: 0.0.0-use.local resolution: "@backstage/plugin-api-docs@workspace:plugins/api-docs" dependencies: "@asyncapi/react-component": 1.0.0-next.42 - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/plugin-catalog": ^1.5.1 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/plugin-catalog": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -3902,13 +3902,13 @@ __metadata: resolution: "@backstage/plugin-apollo-explorer@workspace:plugins/apollo-explorer" dependencies: "@apollo/explorer": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.9.13 "@material-ui/icons": ^4.9.1 "@material-ui/lab": ^4.0.0-alpha.57 @@ -3925,16 +3925,16 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-app-backend@^0.3.36, @backstage/plugin-app-backend@workspace:plugins/app-backend": +"@backstage/plugin-app-backend@workspace:^, @backstage/plugin-app-backend@workspace:plugins/app-backend": version: 0.0.0-use.local resolution: "@backstage/plugin-app-backend@workspace:plugins/app-backend" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/backend-test-utils": ^0.1.28 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/config-loader": ^1.1.4 - "@backstage/types": ^1.0.0 + "@backstage/backend-common": "workspace:^" + "@backstage/backend-test-utils": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/config-loader": "workspace:^" + "@backstage/types": "workspace:^" "@types/express": ^4.17.6 "@types/supertest": ^2.0.8 express: ^4.17.1 @@ -3953,19 +3953,19 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-auth-backend@^0.16.0, @backstage/plugin-auth-backend@workspace:plugins/auth-backend": +"@backstage/plugin-auth-backend@workspace:^, @backstage/plugin-auth-backend@workspace:plugins/auth-backend": version: 0.0.0-use.local resolution: "@backstage/plugin-auth-backend@workspace:plugins/auth-backend" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/backend-test-utils": ^0.1.28 - "@backstage/catalog-client": ^1.1.0 - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/errors": ^1.1.1 - "@backstage/plugin-auth-node": ^0.2.5 - "@backstage/types": ^1.0.0 + "@backstage/backend-common": "workspace:^" + "@backstage/backend-test-utils": "workspace:^" + "@backstage/catalog-client": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/plugin-auth-node": "workspace:^" + "@backstage/types": "workspace:^" "@davidzemon/passport-okta-oauth": ^0.0.5 "@google-cloud/firestore": ^6.0.0 "@types/body-parser": ^1.19.0 @@ -4017,15 +4017,15 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-auth-node@^0.2.5, @backstage/plugin-auth-node@workspace:plugins/auth-node": +"@backstage/plugin-auth-node@workspace:^, @backstage/plugin-auth-node@workspace:plugins/auth-node": version: 0.0.0-use.local resolution: "@backstage/plugin-auth-node@workspace:plugins/auth-node" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/backend-test-utils": ^0.1.28 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/errors": ^1.1.1 + "@backstage/backend-common": "workspace:^" + "@backstage/backend-test-utils": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" "@types/express": "*" express: ^4.17.1 jose: ^4.6.0 @@ -4037,14 +4037,14 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-azure-devops-backend@^0.3.15, @backstage/plugin-azure-devops-backend@workspace:plugins/azure-devops-backend": +"@backstage/plugin-azure-devops-backend@workspace:^, @backstage/plugin-azure-devops-backend@workspace:plugins/azure-devops-backend": version: 0.0.0-use.local resolution: "@backstage/plugin-azure-devops-backend@workspace:plugins/azure-devops-backend" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/plugin-azure-devops-common": ^0.3.0 + "@backstage/backend-common": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/plugin-azure-devops-common": "workspace:^" "@types/express": ^4.17.6 "@types/supertest": ^2.0.8 azure-devops-node-api: ^11.0.1 @@ -4059,29 +4059,29 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-azure-devops-common@^0.3.0, @backstage/plugin-azure-devops-common@workspace:plugins/azure-devops-common": +"@backstage/plugin-azure-devops-common@workspace:^, @backstage/plugin-azure-devops-common@workspace:plugins/azure-devops-common": version: 0.0.0-use.local resolution: "@backstage/plugin-azure-devops-common@workspace:plugins/azure-devops-common" dependencies: - "@backstage/cli": ^0.19.0 + "@backstage/cli": "workspace:^" languageName: unknown linkType: soft -"@backstage/plugin-azure-devops@^0.2.0, @backstage/plugin-azure-devops@workspace:plugins/azure-devops": +"@backstage/plugin-azure-devops@workspace:^, @backstage/plugin-azure-devops@workspace:plugins/azure-devops": version: 0.0.0-use.local resolution: "@backstage/plugin-azure-devops@workspace:plugins/azure-devops" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/errors": ^1.1.1 - "@backstage/plugin-azure-devops-common": ^0.3.0 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/plugin-azure-devops-common": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -4100,16 +4100,16 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-badges-backend@^0.1.30, @backstage/plugin-badges-backend@workspace:plugins/badges-backend": +"@backstage/plugin-badges-backend@workspace:^, @backstage/plugin-badges-backend@workspace:plugins/badges-backend": version: 0.0.0-use.local resolution: "@backstage/plugin-badges-backend@workspace:plugins/badges-backend" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/catalog-client": ^1.1.0 - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/errors": ^1.1.1 + "@backstage/backend-common": "workspace:^" + "@backstage/catalog-client": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" "@types/express": ^4.17.6 "@types/supertest": ^2.0.8 badge-maker: ^3.3.0 @@ -4122,20 +4122,20 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-badges@^0.2.33, @backstage/plugin-badges@workspace:plugins/badges": +"@backstage/plugin-badges@workspace:^, @backstage/plugin-badges@workspace:plugins/badges": version: 0.0.0-use.local resolution: "@backstage/plugin-badges@workspace:plugins/badges" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/errors": ^1.1.1 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -4156,10 +4156,10 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-bazaar-backend@workspace:plugins/bazaar-backend" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/backend-test-utils": ^0.1.28 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 + "@backstage/backend-common": "workspace:^" + "@backstage/backend-test-utils": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" "@types/express": ^4.17.6 express: ^4.17.1 express-promise-router: ^4.1.0 @@ -4173,14 +4173,14 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-bazaar@workspace:plugins/bazaar" dependencies: - "@backstage/catalog-client": ^1.1.0 - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/plugin-catalog": ^1.5.1 - "@backstage/plugin-catalog-react": ^1.1.4 + "@backstage/catalog-client": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/plugin-catalog": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" "@date-io/luxon": 1.x "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 @@ -4197,12 +4197,12 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-bitbucket-cloud-common@^0.1.3, @backstage/plugin-bitbucket-cloud-common@workspace:plugins/bitbucket-cloud-common": +"@backstage/plugin-bitbucket-cloud-common@workspace:^, @backstage/plugin-bitbucket-cloud-common@workspace:plugins/bitbucket-cloud-common": version: 0.0.0-use.local resolution: "@backstage/plugin-bitbucket-cloud-common@workspace:plugins/bitbucket-cloud-common" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/integration": ^1.3.1 + "@backstage/cli": "workspace:^" + "@backstage/integration": "workspace:^" "@openapitools/openapi-generator-cli": ^2.4.26 cross-fetch: ^3.1.5 msw: ^0.47.0 @@ -4214,15 +4214,15 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-bitrise@workspace:plugins/bitrise" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -4247,15 +4247,15 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-catalog-backend-module-aws@workspace:plugins/catalog-backend-module-aws" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/backend-tasks": ^0.3.5 - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/errors": ^1.1.1 - "@backstage/integration": ^1.3.1 - "@backstage/plugin-catalog-backend": ^1.4.0 - "@backstage/types": ^1.0.0 + "@backstage/backend-common": "workspace:^" + "@backstage/backend-tasks": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/integration": "workspace:^" + "@backstage/plugin-catalog-backend": "workspace:^" + "@backstage/types": "workspace:^" "@types/lodash": ^4.14.151 aws-sdk: ^2.840.0 aws-sdk-mock: ^5.2.1 @@ -4271,16 +4271,16 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-catalog-backend-module-azure@workspace:plugins/catalog-backend-module-azure" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/backend-tasks": ^0.3.5 - "@backstage/backend-test-utils": ^0.1.28 - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/errors": ^1.1.1 - "@backstage/integration": ^1.3.1 - "@backstage/plugin-catalog-backend": ^1.4.0 - "@backstage/types": ^1.0.0 + "@backstage/backend-common": "workspace:^" + "@backstage/backend-tasks": "workspace:^" + "@backstage/backend-test-utils": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/integration": "workspace:^" + "@backstage/plugin-catalog-backend": "workspace:^" + "@backstage/types": "workspace:^" "@types/lodash": ^4.14.151 lodash: ^4.17.21 msw: ^0.47.0 @@ -4294,14 +4294,14 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-catalog-backend-module-bitbucket-cloud@workspace:plugins/catalog-backend-module-bitbucket-cloud" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/backend-tasks": ^0.3.5 - "@backstage/backend-test-utils": ^0.1.28 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/integration": ^1.3.1 - "@backstage/plugin-bitbucket-cloud-common": ^0.1.3 - "@backstage/plugin-catalog-backend": ^1.4.0 + "@backstage/backend-common": "workspace:^" + "@backstage/backend-tasks": "workspace:^" + "@backstage/backend-test-utils": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/integration": "workspace:^" + "@backstage/plugin-bitbucket-cloud-common": "workspace:^" + "@backstage/plugin-catalog-backend": "workspace:^" msw: ^0.47.0 uuid: ^8.0.0 winston: ^3.2.1 @@ -4312,15 +4312,15 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-catalog-backend-module-bitbucket-server@workspace:plugins/catalog-backend-module-bitbucket-server" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/backend-tasks": ^0.3.5 - "@backstage/backend-test-utils": ^0.1.28 - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/errors": ^1.1.1 - "@backstage/integration": ^1.3.1 - "@backstage/plugin-catalog-backend": ^1.4.0 + "@backstage/backend-common": "workspace:^" + "@backstage/backend-tasks": "workspace:^" + "@backstage/backend-test-utils": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/integration": "workspace:^" + "@backstage/plugin-catalog-backend": "workspace:^" "@types/node-fetch": ^2.5.12 msw: ^0.47.0 node-fetch: ^2.6.7 @@ -4333,16 +4333,16 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-catalog-backend-module-bitbucket@workspace:plugins/catalog-backend-module-bitbucket" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/backend-test-utils": ^0.1.28 - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/errors": ^1.1.1 - "@backstage/integration": ^1.3.1 - "@backstage/plugin-bitbucket-cloud-common": ^0.1.3 - "@backstage/plugin-catalog-backend": ^1.4.0 - "@backstage/types": ^1.0.0 + "@backstage/backend-common": "workspace:^" + "@backstage/backend-test-utils": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/integration": "workspace:^" + "@backstage/plugin-bitbucket-cloud-common": "workspace:^" + "@backstage/plugin-catalog-backend": "workspace:^" + "@backstage/types": "workspace:^" "@types/lodash": ^4.14.151 lodash: ^4.17.21 msw: ^0.47.0 @@ -4355,15 +4355,15 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-catalog-backend-module-gerrit@workspace:plugins/catalog-backend-module-gerrit" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/backend-tasks": ^0.3.5 - "@backstage/backend-test-utils": ^0.1.28 - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/errors": ^1.1.1 - "@backstage/integration": ^1.3.1 - "@backstage/plugin-catalog-backend": ^1.4.0 + "@backstage/backend-common": "workspace:^" + "@backstage/backend-tasks": "workspace:^" + "@backstage/backend-test-utils": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/integration": "workspace:^" + "@backstage/plugin-catalog-backend": "workspace:^" "@types/fs-extra": ^9.0.1 fs-extra: 10.1.0 msw: ^0.47.0 @@ -4377,18 +4377,18 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-catalog-backend-module-github@workspace:plugins/catalog-backend-module-github" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/backend-plugin-api": ^0.1.2 - "@backstage/backend-tasks": ^0.3.5 - "@backstage/backend-test-utils": ^0.1.28 - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/errors": ^1.1.1 - "@backstage/integration": ^1.3.1 - "@backstage/plugin-catalog-backend": ^1.4.0 - "@backstage/plugin-catalog-node": ^1.1.0 - "@backstage/types": ^1.0.0 + "@backstage/backend-common": "workspace:^" + "@backstage/backend-plugin-api": "workspace:^" + "@backstage/backend-tasks": "workspace:^" + "@backstage/backend-test-utils": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/integration": "workspace:^" + "@backstage/plugin-catalog-backend": "workspace:^" + "@backstage/plugin-catalog-node": "workspace:^" + "@backstage/types": "workspace:^" "@octokit/graphql": ^5.0.0 "@types/lodash": ^4.14.151 lodash: ^4.17.21 @@ -4403,16 +4403,16 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-catalog-backend-module-gitlab@workspace:plugins/catalog-backend-module-gitlab" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/backend-tasks": ^0.3.5 - "@backstage/backend-test-utils": ^0.1.28 - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/errors": ^1.1.1 - "@backstage/integration": ^1.3.1 - "@backstage/plugin-catalog-backend": ^1.4.0 - "@backstage/types": ^1.0.0 + "@backstage/backend-common": "workspace:^" + "@backstage/backend-tasks": "workspace:^" + "@backstage/backend-test-utils": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/integration": "workspace:^" + "@backstage/plugin-catalog-backend": "workspace:^" + "@backstage/types": "workspace:^" "@types/lodash": ^4.14.151 "@types/uuid": ^8.0.0 lodash: ^4.17.21 @@ -4427,13 +4427,13 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-catalog-backend-module-ldap@workspace:plugins/catalog-backend-module-ldap" dependencies: - "@backstage/backend-tasks": ^0.3.5 - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/errors": ^1.1.1 - "@backstage/plugin-catalog-backend": ^1.4.0 - "@backstage/types": ^1.0.0 + "@backstage/backend-tasks": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/plugin-catalog-backend": "workspace:^" + "@backstage/types": "workspace:^" "@types/ldapjs": ^2.2.0 "@types/lodash": ^4.14.151 ldapjs: ^2.2.0 @@ -4448,13 +4448,13 @@ __metadata: resolution: "@backstage/plugin-catalog-backend-module-msgraph@workspace:plugins/catalog-backend-module-msgraph" dependencies: "@azure/identity": ^2.1.0 - "@backstage/backend-common": ^0.15.1 - "@backstage/backend-tasks": ^0.3.5 - "@backstage/backend-test-utils": ^0.1.28 - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/plugin-catalog-backend": ^1.4.0 + "@backstage/backend-common": "workspace:^" + "@backstage/backend-tasks": "workspace:^" + "@backstage/backend-test-utils": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/plugin-catalog-backend": "workspace:^" "@microsoft/microsoft-graph-types": ^2.6.0 "@types/lodash": ^4.14.151 "@types/node-fetch": ^2.5.12 @@ -4473,42 +4473,42 @@ __metadata: resolution: "@backstage/plugin-catalog-backend-module-openapi@workspace:plugins/catalog-backend-module-openapi" dependencies: "@apidevtools/swagger-parser": ^10.1.0 - "@backstage/backend-common": ^0.15.1 - "@backstage/backend-test-utils": ^0.1.28 - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/integration": ^1.3.1 - "@backstage/plugin-catalog-backend": ^1.4.0 - "@backstage/plugin-catalog-node": ^1.1.0 - "@backstage/types": ^1.0.0 + "@backstage/backend-common": "workspace:^" + "@backstage/backend-test-utils": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/integration": "workspace:^" + "@backstage/plugin-catalog-backend": "workspace:^" + "@backstage/plugin-catalog-node": "workspace:^" + "@backstage/types": "workspace:^" openapi-types: ^12.0.0 winston: ^3.2.1 yaml: ^2.1.1 languageName: unknown linkType: soft -"@backstage/plugin-catalog-backend@^1.4.0, @backstage/plugin-catalog-backend@workspace:plugins/catalog-backend": +"@backstage/plugin-catalog-backend@workspace:^, @backstage/plugin-catalog-backend@workspace:plugins/catalog-backend": version: 0.0.0-use.local resolution: "@backstage/plugin-catalog-backend@workspace:plugins/catalog-backend" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/backend-plugin-api": ^0.1.2 - "@backstage/backend-test-utils": ^0.1.28 - "@backstage/catalog-client": ^1.1.0 - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/errors": ^1.1.1 - "@backstage/integration": ^1.3.1 - "@backstage/plugin-catalog-common": ^1.0.6 - "@backstage/plugin-catalog-node": ^1.1.0 - "@backstage/plugin-permission-common": ^0.6.4 - "@backstage/plugin-permission-node": ^0.6.5 - "@backstage/plugin-scaffolder-common": ^1.2.0 - "@backstage/plugin-search-backend-node": 1.0.2 - "@backstage/plugin-search-common": ^1.0.1 - "@backstage/types": ^1.0.0 + "@backstage/backend-common": "workspace:^" + "@backstage/backend-plugin-api": "workspace:^" + "@backstage/backend-test-utils": "workspace:^" + "@backstage/catalog-client": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/integration": "workspace:^" + "@backstage/plugin-catalog-common": "workspace:^" + "@backstage/plugin-catalog-node": "workspace:^" + "@backstage/plugin-permission-common": "workspace:^" + "@backstage/plugin-permission-node": "workspace:^" + "@backstage/plugin-scaffolder-common": "workspace:^" + "@backstage/plugin-search-backend-node": "workspace:^" + "@backstage/plugin-search-common": "workspace:^" + "@backstage/types": "workspace:^" "@types/core-js": ^2.5.4 "@types/express": ^4.17.6 "@types/git-url-parse": ^9.0.0 @@ -4541,32 +4541,32 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-catalog-common@^1.0.6, @backstage/plugin-catalog-common@workspace:plugins/catalog-common": +"@backstage/plugin-catalog-common@workspace:^, @backstage/plugin-catalog-common@workspace:plugins/catalog-common": version: 0.0.0-use.local resolution: "@backstage/plugin-catalog-common@workspace:plugins/catalog-common" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/plugin-permission-common": ^0.6.4 - "@backstage/plugin-search-common": ^1.0.1 + "@backstage/cli": "workspace:^" + "@backstage/plugin-permission-common": "workspace:^" + "@backstage/plugin-search-common": "workspace:^" languageName: unknown linkType: soft -"@backstage/plugin-catalog-graph@^0.2.21, @backstage/plugin-catalog-graph@workspace:plugins/catalog-graph": +"@backstage/plugin-catalog-graph@workspace:^, @backstage/plugin-catalog-graph@workspace:plugins/catalog-graph": version: 0.0.0-use.local resolution: "@backstage/plugin-catalog-graph@workspace:plugins/catalog-graph" dependencies: - "@backstage/catalog-client": ^1.1.0 - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/plugin-catalog": ^1.5.1 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 - "@backstage/types": ^1.0.0 + "@backstage/catalog-client": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/plugin-catalog": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" + "@backstage/types": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -4586,15 +4586,15 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-catalog-graphql@^0.3.13, @backstage/plugin-catalog-graphql@workspace:plugins/catalog-graphql": +"@backstage/plugin-catalog-graphql@workspace:^, @backstage/plugin-catalog-graphql@workspace:plugins/catalog-graphql": version: 0.0.0-use.local resolution: "@backstage/plugin-catalog-graphql@workspace:plugins/catalog-graphql" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/test-utils": ^1.2.0 - "@backstage/types": ^1.0.0 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/types": "workspace:^" "@graphql-codegen/cli": ^2.3.1 "@graphql-codegen/graphql-modules-preset": ^2.3.2 "@graphql-codegen/typescript": ^2.4.2 @@ -4611,23 +4611,23 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-catalog-import@^0.8.12, @backstage/plugin-catalog-import@workspace:plugins/catalog-import": +"@backstage/plugin-catalog-import@workspace:^, @backstage/plugin-catalog-import@workspace:plugins/catalog-import": version: 0.0.0-use.local resolution: "@backstage/plugin-catalog-import@workspace:plugins/catalog-import" dependencies: - "@backstage/catalog-client": ^1.1.0 - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/errors": ^1.1.1 - "@backstage/integration": ^1.3.1 - "@backstage/integration-react": ^1.1.4 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/test-utils": ^1.2.0 + "@backstage/catalog-client": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/integration": "workspace:^" + "@backstage/integration-react": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/test-utils": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -4651,41 +4651,41 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-catalog-node@^1.1.0, @backstage/plugin-catalog-node@workspace:plugins/catalog-node": +"@backstage/plugin-catalog-node@workspace:^, @backstage/plugin-catalog-node@workspace:plugins/catalog-node": version: 0.0.0-use.local resolution: "@backstage/plugin-catalog-node@workspace:plugins/catalog-node" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/backend-plugin-api": ^0.1.2 - "@backstage/backend-test-utils": ^0.1.28 - "@backstage/catalog-client": ^1.1.0 - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/errors": 1.1.1 - "@backstage/types": ^1.0.0 + "@backstage/backend-common": "workspace:^" + "@backstage/backend-plugin-api": "workspace:^" + "@backstage/backend-test-utils": "workspace:^" + "@backstage/catalog-client": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/types": "workspace:^" languageName: unknown linkType: soft -"@backstage/plugin-catalog-react@^1.0.0, @backstage/plugin-catalog-react@^1.1.4, @backstage/plugin-catalog-react@workspace:plugins/catalog-react": +"@backstage/plugin-catalog-react@^1.0.0, @backstage/plugin-catalog-react@workspace:^, @backstage/plugin-catalog-react@workspace:plugins/catalog-react": version: 0.0.0-use.local resolution: "@backstage/plugin-catalog-react@workspace:plugins/catalog-react" dependencies: - "@backstage/catalog-client": ^1.1.0 - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/errors": ^1.1.1 - "@backstage/integration": ^1.3.1 - "@backstage/plugin-catalog-common": ^1.0.6 - "@backstage/plugin-permission-common": ^0.6.4 - "@backstage/plugin-permission-react": ^0.4.5 - "@backstage/plugin-scaffolder-common": ^1.2.0 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 - "@backstage/types": ^1.0.0 - "@backstage/version-bridge": ^1.0.1 + "@backstage/catalog-client": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/integration": "workspace:^" + "@backstage/plugin-catalog-common": "workspace:^" + "@backstage/plugin-permission-common": "workspace:^" + "@backstage/plugin-permission-react": "workspace:^" + "@backstage/plugin-scaffolder-common": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" + "@backstage/types": "workspace:^" + "@backstage/version-bridge": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -4711,27 +4711,27 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-catalog@^1.5.1, @backstage/plugin-catalog@workspace:plugins/catalog": +"@backstage/plugin-catalog@workspace:^, @backstage/plugin-catalog@workspace:plugins/catalog": version: 0.0.0-use.local resolution: "@backstage/plugin-catalog@workspace:plugins/catalog" dependencies: - "@backstage/catalog-client": ^1.1.0 - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/errors": ^1.1.1 - "@backstage/integration-react": ^1.1.4 - "@backstage/plugin-catalog-common": ^1.0.6 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/plugin-permission-react": ^0.4.5 - "@backstage/plugin-search-common": ^1.0.1 - "@backstage/plugin-search-react": ^1.1.0 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 - "@backstage/types": ^1.0.0 + "@backstage/catalog-client": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/integration-react": "workspace:^" + "@backstage/plugin-catalog-common": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/plugin-permission-react": "workspace:^" + "@backstage/plugin-search-common": "workspace:^" + "@backstage/plugin-search-react": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" + "@backstage/types": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -4755,10 +4755,10 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-cicd-statistics-module-gitlab@workspace:plugins/cicd-statistics-module-gitlab" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/plugin-cicd-statistics": ^0.1.11 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/plugin-cicd-statistics": "workspace:^" "@gitbeaker/browser": ^35.6.0 "@gitbeaker/core": ^35.6.0 luxon: ^3.0.0 @@ -4766,14 +4766,14 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-cicd-statistics@^0.1.11, @backstage/plugin-cicd-statistics@workspace:plugins/cicd-statistics": +"@backstage/plugin-cicd-statistics@workspace:^, @backstage/plugin-cicd-statistics@workspace:plugins/cicd-statistics": version: 0.0.0-use.local resolution: "@backstage/plugin-cicd-statistics@workspace:plugins/cicd-statistics" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/plugin-catalog-react": ^1.1.4 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" "@date-io/luxon": ^1.3.13 "@material-ui/core": ^4.9.13 "@material-ui/icons": ^4.11.2 @@ -4792,19 +4792,19 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-circleci@^0.3.9, @backstage/plugin-circleci@workspace:plugins/circleci": +"@backstage/plugin-circleci@workspace:^, @backstage/plugin-circleci@workspace:plugins/circleci": version: 0.0.0-use.local resolution: "@backstage/plugin-circleci@workspace:plugins/circleci" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -4827,19 +4827,19 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-cloudbuild@^0.3.9, @backstage/plugin-cloudbuild@workspace:plugins/cloudbuild": +"@backstage/plugin-cloudbuild@workspace:^, @backstage/plugin-cloudbuild@workspace:plugins/cloudbuild": version: 0.0.0-use.local resolution: "@backstage/plugin-cloudbuild@workspace:plugins/cloudbuild" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -4863,14 +4863,14 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-code-climate@workspace:plugins/code-climate" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -4891,17 +4891,17 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-code-coverage-backend@^0.2.2, @backstage/plugin-code-coverage-backend@workspace:plugins/code-coverage-backend": +"@backstage/plugin-code-coverage-backend@workspace:^, @backstage/plugin-code-coverage-backend@workspace:plugins/code-coverage-backend": version: 0.0.0-use.local resolution: "@backstage/plugin-code-coverage-backend@workspace:plugins/code-coverage-backend" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/catalog-client": ^1.1.0 - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/errors": ^1.1.1 - "@backstage/integration": ^1.3.1 + "@backstage/backend-common": "workspace:^" + "@backstage/catalog-client": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/integration": "workspace:^" "@types/express": ^4.17.6 "@types/express-xml-bodyparser": ^0.3.2 "@types/supertest": ^2.0.8 @@ -4918,21 +4918,21 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-code-coverage@^0.2.2, @backstage/plugin-code-coverage@workspace:plugins/code-coverage": +"@backstage/plugin-code-coverage@workspace:^, @backstage/plugin-code-coverage@workspace:plugins/code-coverage": version: 0.0.0-use.local resolution: "@backstage/plugin-code-coverage@workspace:plugins/code-coverage" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/errors": ^1.1.1 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -4960,15 +4960,15 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-codescene@workspace:plugins/codescene" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/errors": ^1.1.1 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.9.10 "@material-ui/icons": ^4.9.1 "@material-ui/lab": ^4.0.0-alpha.57 @@ -4990,16 +4990,16 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-config-schema@workspace:plugins/config-schema" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/errors": ^1.1.1 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 - "@backstage/types": ^1.0.0 + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" + "@backstage/types": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -5017,28 +5017,28 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-cost-insights-common@^0.1.1, @backstage/plugin-cost-insights-common@workspace:plugins/cost-insights-common": +"@backstage/plugin-cost-insights-common@workspace:^, @backstage/plugin-cost-insights-common@workspace:plugins/cost-insights-common": version: 0.0.0-use.local resolution: "@backstage/plugin-cost-insights-common@workspace:plugins/cost-insights-common" dependencies: - "@backstage/cli": ^0.19.0-next.1 + "@backstage/cli": "workspace:^" languageName: unknown linkType: soft -"@backstage/plugin-cost-insights@^0.11.31, @backstage/plugin-cost-insights@workspace:plugins/cost-insights": +"@backstage/plugin-cost-insights@workspace:^, @backstage/plugin-cost-insights@workspace:plugins/cost-insights": version: 0.0.0-use.local resolution: "@backstage/plugin-cost-insights@workspace:plugins/cost-insights" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/plugin-cost-insights-common": ^0.1.1 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/plugin-cost-insights-common": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -5070,18 +5070,18 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-dynatrace@^0.2.0, @backstage/plugin-dynatrace@workspace:plugins/dynatrace": +"@backstage/plugin-dynatrace@workspace:^, @backstage/plugin-dynatrace@workspace:plugins/dynatrace": version: 0.0.0-use.local resolution: "@backstage/plugin-dynatrace@workspace:plugins/dynatrace" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.9.13 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -5093,19 +5093,19 @@ __metadata: msw: ^0.47.0 react-use: ^17.2.4 peerDependencies: - "@backstage/plugin-catalog-react": ^1.1.4-next.0 + "@backstage/plugin-catalog-react": "workspace:^" react: ^16.13.1 || ^17.0.0 languageName: unknown linkType: soft -"@backstage/plugin-explore-react@^0.0.21, @backstage/plugin-explore-react@workspace:plugins/explore-react": +"@backstage/plugin-explore-react@workspace:^, @backstage/plugin-explore-react@workspace:plugins/explore-react": version: 0.0.0-use.local resolution: "@backstage/plugin-explore-react@workspace:plugins/explore-react" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/test-utils": ^1.2.0 + "@backstage/cli": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/test-utils": "workspace:^" "@testing-library/jest-dom": ^5.10.1 "@testing-library/react": ^12.1.3 "@testing-library/user-event": ^14.0.0 @@ -5115,20 +5115,20 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-explore@^0.3.40, @backstage/plugin-explore@workspace:plugins/explore": +"@backstage/plugin-explore@workspace:^, @backstage/plugin-explore@workspace:plugins/explore": version: 0.0.0-use.local resolution: "@backstage/plugin-explore@workspace:plugins/explore" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/plugin-explore-react": ^0.0.21 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/plugin-explore-react": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -5152,14 +5152,14 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-firehydrant@workspace:plugins/firehydrant" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -5180,16 +5180,16 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-fossa@workspace:plugins/fossa" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/errors": ^1.1.1 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -5207,18 +5207,18 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-gcalendar@^0.3.5, @backstage/plugin-gcalendar@workspace:plugins/gcalendar": +"@backstage/plugin-gcalendar@workspace:^, @backstage/plugin-gcalendar@workspace:plugins/gcalendar": version: 0.0.0-use.local resolution: "@backstage/plugin-gcalendar@workspace:plugins/gcalendar" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/errors": ^1.1.1 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -5243,17 +5243,17 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-gcp-projects@^0.3.28, @backstage/plugin-gcp-projects@workspace:plugins/gcp-projects": +"@backstage/plugin-gcp-projects@workspace:^, @backstage/plugin-gcp-projects@workspace:plugins/gcp-projects": version: 0.0.0-use.local resolution: "@backstage/plugin-gcp-projects@workspace:plugins/gcp-projects" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -5274,14 +5274,14 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-git-release-manager@workspace:plugins/git-release-manager" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/integration": ^1.3.1 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/integration": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -5305,20 +5305,20 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-github-actions@^0.5.9, @backstage/plugin-github-actions@workspace:plugins/github-actions": +"@backstage/plugin-github-actions@workspace:^, @backstage/plugin-github-actions@workspace:plugins/github-actions": version: 0.0.0-use.local resolution: "@backstage/plugin-github-actions@workspace:plugins/github-actions" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/integration": ^1.3.1 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/integration": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -5342,18 +5342,18 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-github-deployments@workspace:plugins/github-deployments" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/errors": ^1.1.1 - "@backstage/integration": ^1.3.1 - "@backstage/integration-react": ^1.1.4 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/integration": "workspace:^" + "@backstage/integration-react": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -5375,17 +5375,17 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-github-issues@workspace:plugins/github-issues" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/errors": ^1.1.1 - "@backstage/integration": ^1.3.1 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.15 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/integration": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.4 "@material-ui/icons": ^4.9.1 "@material-ui/lab": ^4.0.0-alpha.61 @@ -5409,15 +5409,15 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-github-pull-requests-board@workspace:plugins/github-pull-requests-board" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/integration": ^1.3.1 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/integration": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -5441,13 +5441,13 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-gitops-profiles@workspace:plugins/gitops-profiles" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -5464,20 +5464,20 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-gocd@^0.1.15, @backstage/plugin-gocd@workspace:plugins/gocd": +"@backstage/plugin-gocd@workspace:^, @backstage/plugin-gocd@workspace:plugins/gocd": version: 0.0.0-use.local resolution: "@backstage/plugin-gocd@workspace:plugins/gocd" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/errors": ^1.1.1 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -5498,17 +5498,17 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-graphiql@^0.2.41, @backstage/plugin-graphiql@workspace:plugins/graphiql": +"@backstage/plugin-graphiql@workspace:^, @backstage/plugin-graphiql@workspace:plugins/graphiql": version: 0.0.0-use.local resolution: "@backstage/plugin-graphiql@workspace:plugins/graphiql" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -5529,14 +5529,14 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-graphql-backend@^0.1.26, @backstage/plugin-graphql-backend@workspace:plugins/graphql-backend": +"@backstage/plugin-graphql-backend@workspace:^, @backstage/plugin-graphql-backend@workspace:plugins/graphql-backend": version: 0.0.0-use.local resolution: "@backstage/plugin-graphql-backend@workspace:plugins/graphql-backend" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/plugin-catalog-graphql": ^0.3.13 + "@backstage/backend-common": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/plugin-catalog-graphql": "workspace:^" "@graphql-tools/schema": ^9.0.0 "@types/express": ^4.17.6 "@types/supertest": ^2.0.8 @@ -5555,21 +5555,21 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-home@^0.4.19, @backstage/plugin-home@^0.4.25, @backstage/plugin-home@workspace:plugins/home": +"@backstage/plugin-home@^0.4.19, @backstage/plugin-home@workspace:^, @backstage/plugin-home@workspace:plugins/home": version: 0.0.0-use.local resolution: "@backstage/plugin-home@workspace:plugins/home" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/plugin-stack-overflow": ^0.1.5 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/plugin-stack-overflow": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -5592,16 +5592,16 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-ilert@workspace:plugins/ilert" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/errors": ^1.1.1 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@date-io/luxon": 1.x "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 @@ -5621,19 +5621,19 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-jenkins-backend@^0.1.26, @backstage/plugin-jenkins-backend@workspace:plugins/jenkins-backend": +"@backstage/plugin-jenkins-backend@workspace:^, @backstage/plugin-jenkins-backend@workspace:plugins/jenkins-backend": version: 0.0.0-use.local resolution: "@backstage/plugin-jenkins-backend@workspace:plugins/jenkins-backend" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/catalog-client": ^1.1.0 - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/errors": ^1.1.1 - "@backstage/plugin-auth-node": ^0.2.5 - "@backstage/plugin-jenkins-common": ^0.1.8 - "@backstage/plugin-permission-common": ^0.6.4 + "@backstage/backend-common": "workspace:^" + "@backstage/catalog-client": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/plugin-auth-node": "workspace:^" + "@backstage/plugin-jenkins-common": "workspace:^" + "@backstage/plugin-permission-common": "workspace:^" "@types/express": ^4.17.6 "@types/jenkins": ^0.23.1 "@types/supertest": ^2.0.8 @@ -5648,31 +5648,31 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-jenkins-common@^0.1.8, @backstage/plugin-jenkins-common@workspace:plugins/jenkins-common": +"@backstage/plugin-jenkins-common@workspace:^, @backstage/plugin-jenkins-common@workspace:plugins/jenkins-common": version: 0.0.0-use.local resolution: "@backstage/plugin-jenkins-common@workspace:plugins/jenkins-common" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/plugin-catalog-common": ^1.0.6 - "@backstage/plugin-permission-common": ^0.6.4 + "@backstage/cli": "workspace:^" + "@backstage/plugin-catalog-common": "workspace:^" + "@backstage/plugin-permission-common": "workspace:^" languageName: unknown linkType: soft -"@backstage/plugin-jenkins@^0.7.8, @backstage/plugin-jenkins@workspace:plugins/jenkins": +"@backstage/plugin-jenkins@workspace:^, @backstage/plugin-jenkins@workspace:plugins/jenkins": version: 0.0.0-use.local resolution: "@backstage/plugin-jenkins@workspace:plugins/jenkins" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/errors": ^1.1.1 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/plugin-jenkins-common": ^0.1.8 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/plugin-jenkins-common": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -5692,15 +5692,15 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-kafka-backend@^0.2.29, @backstage/plugin-kafka-backend@workspace:plugins/kafka-backend": +"@backstage/plugin-kafka-backend@workspace:^, @backstage/plugin-kafka-backend@workspace:plugins/kafka-backend": version: 0.0.0-use.local resolution: "@backstage/plugin-kafka-backend@workspace:plugins/kafka-backend" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/errors": ^1.1.1 + "@backstage/backend-common": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" "@types/express": ^4.17.6 "@types/jest-when": ^3.5.0 "@types/lodash": ^4.14.151 @@ -5714,20 +5714,20 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-kafka@^0.3.9, @backstage/plugin-kafka@workspace:plugins/kafka": +"@backstage/plugin-kafka@workspace:^, @backstage/plugin-kafka@workspace:plugins/kafka": version: 0.0.0-use.local resolution: "@backstage/plugin-kafka@workspace:plugins/kafka" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -5746,19 +5746,19 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-kubernetes-backend@^0.7.2, @backstage/plugin-kubernetes-backend@workspace:plugins/kubernetes-backend": +"@backstage/plugin-kubernetes-backend@workspace:^, @backstage/plugin-kubernetes-backend@workspace:plugins/kubernetes-backend": version: 0.0.0-use.local resolution: "@backstage/plugin-kubernetes-backend@workspace:plugins/kubernetes-backend" dependencies: "@azure/identity": ^2.0.4 - "@backstage/backend-common": ^0.15.1 - "@backstage/catalog-client": ^1.1.0 - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/errors": ^1.1.1 - "@backstage/plugin-auth-node": ^0.2.5 - "@backstage/plugin-kubernetes-common": ^0.4.2 + "@backstage/backend-common": "workspace:^" + "@backstage/catalog-client": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/plugin-auth-node": "workspace:^" + "@backstage/plugin-kubernetes-common": "workspace:^" "@google-cloud/container": ^4.0.0 "@kubernetes/client-node": ^0.17.0 "@types/aws4": ^1.5.1 @@ -5783,31 +5783,31 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-kubernetes-common@^0.4.2, @backstage/plugin-kubernetes-common@workspace:plugins/kubernetes-common": +"@backstage/plugin-kubernetes-common@workspace:^, @backstage/plugin-kubernetes-common@workspace:plugins/kubernetes-common": version: 0.0.0-use.local resolution: "@backstage/plugin-kubernetes-common@workspace:plugins/kubernetes-common" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" "@kubernetes/client-node": ^0.17.0 languageName: unknown linkType: soft -"@backstage/plugin-kubernetes@^0.7.2, @backstage/plugin-kubernetes@workspace:plugins/kubernetes": +"@backstage/plugin-kubernetes@workspace:^, @backstage/plugin-kubernetes@workspace:plugins/kubernetes": version: 0.0.0-use.local resolution: "@backstage/plugin-kubernetes@workspace:plugins/kubernetes" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/plugin-kubernetes-common": ^0.4.2 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/plugin-kubernetes-common": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@kubernetes/client-node": ^0.17.0 "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 @@ -5831,20 +5831,20 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-lighthouse@^0.3.9, @backstage/plugin-lighthouse@workspace:plugins/lighthouse": +"@backstage/plugin-lighthouse@workspace:^, @backstage/plugin-lighthouse@workspace:plugins/lighthouse": version: 0.0.0-use.local resolution: "@backstage/plugin-lighthouse@workspace:plugins/lighthouse" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -5863,17 +5863,17 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-newrelic-dashboard@^0.2.2, @backstage/plugin-newrelic-dashboard@workspace:plugins/newrelic-dashboard": +"@backstage/plugin-newrelic-dashboard@workspace:^, @backstage/plugin-newrelic-dashboard@workspace:plugins/newrelic-dashboard": version: 0.0.0-use.local resolution: "@backstage/plugin-newrelic-dashboard@workspace:plugins/newrelic-dashboard" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/errors": ^1.1.1 - "@backstage/plugin-catalog-react": ^1.1.4 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -5886,17 +5886,17 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-newrelic@^0.3.27, @backstage/plugin-newrelic@workspace:plugins/newrelic": +"@backstage/plugin-newrelic@workspace:^, @backstage/plugin-newrelic@workspace:plugins/newrelic": version: 0.0.0-use.local resolution: "@backstage/plugin-newrelic@workspace:plugins/newrelic" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -5912,20 +5912,20 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-org@^0.5.9, @backstage/plugin-org@workspace:plugins/org": +"@backstage/plugin-org@workspace:^, @backstage/plugin-org@workspace:plugins/org": version: 0.0.0-use.local resolution: "@backstage/plugin-org@workspace:plugins/org" dependencies: - "@backstage/catalog-client": ^1.1.0 - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/catalog-client": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -5946,20 +5946,20 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-pagerduty@0.5.2, @backstage/plugin-pagerduty@workspace:plugins/pagerduty": +"@backstage/plugin-pagerduty@workspace:^, @backstage/plugin-pagerduty@workspace:plugins/pagerduty": version: 0.0.0-use.local resolution: "@backstage/plugin-pagerduty@workspace:plugins/pagerduty" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/errors": ^1.1.1 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -5983,9 +5983,9 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-periskop-backend@workspace:plugins/periskop-backend" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 + "@backstage/backend-common": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" "@types/express": "*" "@types/supertest": ^2.0.8 express: ^4.17.1 @@ -6002,16 +6002,16 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-periskop@workspace:plugins/periskop" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/errors": ^1.1.1 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -6030,17 +6030,17 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-permission-backend@^0.5.11, @backstage/plugin-permission-backend@workspace:plugins/permission-backend": +"@backstage/plugin-permission-backend@workspace:^, @backstage/plugin-permission-backend@workspace:plugins/permission-backend": version: 0.0.0-use.local resolution: "@backstage/plugin-permission-backend@workspace:plugins/permission-backend" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/errors": ^1.1.1 - "@backstage/plugin-auth-node": ^0.2.5 - "@backstage/plugin-permission-common": ^0.6.4 - "@backstage/plugin-permission-node": ^0.6.5 + "@backstage/backend-common": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/plugin-auth-node": "workspace:^" + "@backstage/plugin-permission-common": "workspace:^" + "@backstage/plugin-permission-node": "workspace:^" "@types/express": "*" "@types/lodash": ^4.14.151 "@types/supertest": ^2.0.8 @@ -6057,13 +6057,13 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-permission-common@^0.6.4, @backstage/plugin-permission-common@workspace:plugins/permission-common": +"@backstage/plugin-permission-common@workspace:^, @backstage/plugin-permission-common@workspace:plugins/permission-common": version: 0.0.0-use.local resolution: "@backstage/plugin-permission-common@workspace:plugins/permission-common" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/errors": ^1.1.1 + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" cross-fetch: ^3.1.5 msw: ^0.47.0 uuid: ^8.0.0 @@ -6071,17 +6071,17 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-permission-node@^0.6.5, @backstage/plugin-permission-node@workspace:plugins/permission-node": +"@backstage/plugin-permission-node@workspace:^, @backstage/plugin-permission-node@workspace:plugins/permission-node": version: 0.0.0-use.local resolution: "@backstage/plugin-permission-node@workspace:plugins/permission-node" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/backend-test-utils": ^0.1.28 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/errors": ^1.1.1 - "@backstage/plugin-auth-node": ^0.2.5 - "@backstage/plugin-permission-common": ^0.6.4 + "@backstage/backend-common": "workspace:^" + "@backstage/backend-test-utils": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/plugin-auth-node": "workspace:^" + "@backstage/plugin-permission-common": "workspace:^" "@types/express": ^4.17.6 "@types/supertest": ^2.0.8 express: ^4.17.1 @@ -6092,15 +6092,15 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-permission-react@^0.4.5, @backstage/plugin-permission-react@workspace:plugins/permission-react": +"@backstage/plugin-permission-react@workspace:^, @backstage/plugin-permission-react@workspace:plugins/permission-react": version: 0.0.0-use.local resolution: "@backstage/plugin-permission-react@workspace:plugins/permission-react" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/plugin-permission-common": ^0.6.4 - "@backstage/test-utils": ^1.2.0 + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/plugin-permission-common": "workspace:^" + "@backstage/test-utils": "workspace:^" "@testing-library/jest-dom": ^5.10.1 "@testing-library/react": ^12.1.3 cross-fetch: ^3.1.5 @@ -6113,21 +6113,21 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-playlist-backend@^0.1.0, @backstage/plugin-playlist-backend@workspace:plugins/playlist-backend": +"@backstage/plugin-playlist-backend@workspace:^, @backstage/plugin-playlist-backend@workspace:plugins/playlist-backend": version: 0.0.0-use.local resolution: "@backstage/plugin-playlist-backend@workspace:plugins/playlist-backend" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/backend-test-utils": ^0.1.28 - "@backstage/catalog-client": 1.1.0 - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/errors": ^1.1.1 - "@backstage/plugin-auth-node": ^0.2.5 - "@backstage/plugin-permission-common": ^0.6.4 - "@backstage/plugin-permission-node": ^0.6.5 - "@backstage/plugin-playlist-common": ^0.1.0 + "@backstage/backend-common": "workspace:^" + "@backstage/backend-test-utils": "workspace:^" + "@backstage/catalog-client": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/plugin-auth-node": "workspace:^" + "@backstage/plugin-permission-common": "workspace:^" + "@backstage/plugin-permission-node": "workspace:^" + "@backstage/plugin-playlist-common": "workspace:^" "@types/express": "*" "@types/supertest": ^2.0.8 express: ^4.17.1 @@ -6142,34 +6142,34 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-playlist-common@^0.1.0, @backstage/plugin-playlist-common@workspace:plugins/playlist-common": +"@backstage/plugin-playlist-common@workspace:^, @backstage/plugin-playlist-common@workspace:plugins/playlist-common": version: 0.0.0-use.local resolution: "@backstage/plugin-playlist-common@workspace:plugins/playlist-common" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/plugin-permission-common": ^0.6.4 + "@backstage/cli": "workspace:^" + "@backstage/plugin-permission-common": "workspace:^" languageName: unknown linkType: soft -"@backstage/plugin-playlist@^0.1.0, @backstage/plugin-playlist@workspace:plugins/playlist": +"@backstage/plugin-playlist@workspace:^, @backstage/plugin-playlist@workspace:plugins/playlist": version: 0.0.0-use.local resolution: "@backstage/plugin-playlist@workspace:plugins/playlist" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/errors": ^1.1.1 - "@backstage/plugin-catalog-common": ^1.0.6 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/plugin-permission-common": ^0.6.4 - "@backstage/plugin-permission-react": ^0.4.5 - "@backstage/plugin-playlist-common": ^0.1.0 - "@backstage/plugin-search-react": ^1.1.0 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/plugin-catalog-common": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/plugin-permission-common": "workspace:^" + "@backstage/plugin-permission-react": "workspace:^" + "@backstage/plugin-playlist-common": "workspace:^" + "@backstage/plugin-search-react": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.9.13 "@material-ui/icons": ^4.9.1 "@material-ui/lab": ^4.0.0-alpha.57 @@ -6192,13 +6192,13 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-proxy-backend@^0.2.30, @backstage/plugin-proxy-backend@workspace:plugins/proxy-backend": +"@backstage/plugin-proxy-backend@workspace:^, @backstage/plugin-proxy-backend@workspace:plugins/proxy-backend": version: 0.0.0-use.local resolution: "@backstage/plugin-proxy-backend@workspace:plugins/proxy-backend" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 + "@backstage/backend-common": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" "@types/express": ^4.17.6 "@types/http-proxy-middleware": ^0.19.3 "@types/supertest": ^2.0.8 @@ -6218,14 +6218,14 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-rollbar-backend@^0.1.33, @backstage/plugin-rollbar-backend@workspace:plugins/rollbar-backend": +"@backstage/plugin-rollbar-backend@workspace:^, @backstage/plugin-rollbar-backend@workspace:plugins/rollbar-backend": version: 0.0.0-use.local resolution: "@backstage/plugin-rollbar-backend@workspace:plugins/rollbar-backend" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/backend-test-utils": ^0.1.28 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 + "@backstage/backend-common": "workspace:^" + "@backstage/backend-test-utils": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" "@types/express": ^4.17.6 "@types/supertest": ^2.0.8 camelcase-keys: ^7.0.1 @@ -6244,19 +6244,19 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-rollbar@^0.4.9, @backstage/plugin-rollbar@workspace:plugins/rollbar": +"@backstage/plugin-rollbar@workspace:^, @backstage/plugin-rollbar@workspace:plugins/rollbar": version: 0.0.0-use.local resolution: "@backstage/plugin-rollbar@workspace:plugins/rollbar" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -6282,13 +6282,13 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-scaffolder-backend-module-cookiecutter@workspace:plugins/scaffolder-backend-module-cookiecutter" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/errors": ^1.1.1 - "@backstage/integration": ^1.3.1 - "@backstage/plugin-scaffolder-backend": ^1.6.0 - "@backstage/types": ^1.0.0 + "@backstage/backend-common": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/integration": "workspace:^" + "@backstage/plugin-scaffolder-backend": "workspace:^" + "@backstage/types": "workspace:^" "@types/command-exists": ^1.2.0 "@types/fs-extra": ^9.0.1 "@types/mock-fs": ^4.13.0 @@ -6301,17 +6301,17 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-scaffolder-backend-module-rails@^0.4.4, @backstage/plugin-scaffolder-backend-module-rails@workspace:plugins/scaffolder-backend-module-rails": +"@backstage/plugin-scaffolder-backend-module-rails@workspace:^, @backstage/plugin-scaffolder-backend-module-rails@workspace:plugins/scaffolder-backend-module-rails": version: 0.0.0-use.local resolution: "@backstage/plugin-scaffolder-backend-module-rails@workspace:plugins/scaffolder-backend-module-rails" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/errors": ^1.1.1 - "@backstage/integration": ^1.3.1 - "@backstage/plugin-scaffolder-backend": ^1.6.0 - "@backstage/types": ^1.0.0 + "@backstage/backend-common": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/integration": "workspace:^" + "@backstage/plugin-scaffolder-backend": "workspace:^" + "@backstage/types": "workspace:^" "@types/command-exists": ^1.2.0 "@types/fs-extra": ^9.0.1 "@types/mock-fs": ^4.13.0 @@ -6327,34 +6327,34 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-scaffolder-backend-module-yeoman@workspace:plugins/scaffolder-backend-module-yeoman" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/plugin-scaffolder-backend": ^1.6.0 - "@backstage/types": ^1.0.0 + "@backstage/backend-common": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/plugin-scaffolder-backend": "workspace:^" + "@backstage/types": "workspace:^" winston: ^3.2.1 yeoman-environment: ^3.9.1 languageName: unknown linkType: soft -"@backstage/plugin-scaffolder-backend@^1.6.0, @backstage/plugin-scaffolder-backend@workspace:plugins/scaffolder-backend": +"@backstage/plugin-scaffolder-backend@workspace:^, @backstage/plugin-scaffolder-backend@workspace:plugins/scaffolder-backend": version: 0.0.0-use.local resolution: "@backstage/plugin-scaffolder-backend@workspace:plugins/scaffolder-backend" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/backend-plugin-api": ^0.1.2 - "@backstage/backend-test-utils": ^0.1.28 - "@backstage/catalog-client": ^1.1.0 - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/errors": ^1.1.1 - "@backstage/integration": ^1.3.1 - "@backstage/plugin-auth-node": ^0.2.5 - "@backstage/plugin-catalog-backend": ^1.4.0 - "@backstage/plugin-catalog-node": ^1.1.0 - "@backstage/plugin-scaffolder-common": ^1.2.0 - "@backstage/types": ^1.0.0 + "@backstage/backend-common": "workspace:^" + "@backstage/backend-plugin-api": "workspace:^" + "@backstage/backend-test-utils": "workspace:^" + "@backstage/catalog-client": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/integration": "workspace:^" + "@backstage/plugin-auth-node": "workspace:^" + "@backstage/plugin-catalog-backend": "workspace:^" + "@backstage/plugin-catalog-node": "workspace:^" + "@backstage/plugin-scaffolder-common": "workspace:^" + "@backstage/types": "workspace:^" "@gitbeaker/core": ^35.6.0 "@gitbeaker/node": ^35.1.0 "@octokit/webhooks": ^10.0.0 @@ -6401,39 +6401,39 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-scaffolder-common@^1.2.0, @backstage/plugin-scaffolder-common@workspace:plugins/scaffolder-common": +"@backstage/plugin-scaffolder-common@workspace:^, @backstage/plugin-scaffolder-common@workspace:plugins/scaffolder-common": version: 0.0.0-use.local resolution: "@backstage/plugin-scaffolder-common@workspace:plugins/scaffolder-common" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/types": ^1.0.0 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/types": "workspace:^" languageName: unknown linkType: soft -"@backstage/plugin-scaffolder@^1.6.0, @backstage/plugin-scaffolder@workspace:plugins/scaffolder": +"@backstage/plugin-scaffolder@workspace:^, @backstage/plugin-scaffolder@workspace:plugins/scaffolder": version: 0.0.0-use.local resolution: "@backstage/plugin-scaffolder@workspace:plugins/scaffolder" dependencies: - "@backstage/catalog-client": ^1.1.0 - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/errors": ^1.1.1 - "@backstage/integration": ^1.3.1 - "@backstage/integration-react": ^1.1.4 - "@backstage/plugin-catalog": ^1.5.1 - "@backstage/plugin-catalog-common": ^1.0.6 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/plugin-permission-react": ^0.4.5 - "@backstage/plugin-scaffolder-common": ^1.2.0 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 - "@backstage/types": ^1.0.0 + "@backstage/catalog-client": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/integration": "workspace:^" + "@backstage/integration-react": "workspace:^" + "@backstage/plugin-catalog": "workspace:^" + "@backstage/plugin-catalog-common": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/plugin-permission-react": "workspace:^" + "@backstage/plugin-scaffolder-common": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" + "@backstage/types": "workspace:^" "@codemirror/language": ^6.0.0 "@codemirror/legacy-modes": ^6.1.0 "@codemirror/view": ^6.0.0 @@ -6475,15 +6475,15 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-search-backend-module-elasticsearch@^1.0.2, @backstage/plugin-search-backend-module-elasticsearch@workspace:plugins/search-backend-module-elasticsearch": +"@backstage/plugin-search-backend-module-elasticsearch@workspace:^, @backstage/plugin-search-backend-module-elasticsearch@workspace:plugins/search-backend-module-elasticsearch": version: 0.0.0-use.local resolution: "@backstage/plugin-search-backend-module-elasticsearch@workspace:plugins/search-backend-module-elasticsearch" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/plugin-search-backend-node": ^1.0.2 - "@backstage/plugin-search-common": ^1.0.1 + "@backstage/backend-common": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/plugin-search-backend-node": "workspace:^" + "@backstage/plugin-search-common": "workspace:^" "@elastic/elasticsearch": ^7.13.0 "@elastic/elasticsearch-mock": ^1.0.0 "@opensearch-project/opensearch": ^2.0.0 @@ -6497,33 +6497,33 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-search-backend-module-pg@^0.4.0, @backstage/plugin-search-backend-module-pg@workspace:plugins/search-backend-module-pg": +"@backstage/plugin-search-backend-module-pg@workspace:^, @backstage/plugin-search-backend-module-pg@workspace:plugins/search-backend-module-pg": version: 0.0.0-use.local resolution: "@backstage/plugin-search-backend-module-pg@workspace:plugins/search-backend-module-pg" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/backend-test-utils": ^0.1.28 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/plugin-search-backend-node": ^1.0.2 - "@backstage/plugin-search-common": ^1.0.1 + "@backstage/backend-common": "workspace:^" + "@backstage/backend-test-utils": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/plugin-search-backend-node": "workspace:^" + "@backstage/plugin-search-common": "workspace:^" knex: ^2.0.0 lodash: ^4.17.21 uuid: ^8.3.2 languageName: unknown linkType: soft -"@backstage/plugin-search-backend-node@1.0.2, @backstage/plugin-search-backend-node@^1.0.2, @backstage/plugin-search-backend-node@workspace:plugins/search-backend-node": +"@backstage/plugin-search-backend-node@workspace:^, @backstage/plugin-search-backend-node@workspace:plugins/search-backend-node": version: 0.0.0-use.local resolution: "@backstage/plugin-search-backend-node@workspace:plugins/search-backend-node" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/backend-tasks": ^0.3.5 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/errors": ^1.1.1 - "@backstage/plugin-permission-common": ^0.6.4 - "@backstage/plugin-search-common": ^1.0.1 + "@backstage/backend-common": "workspace:^" + "@backstage/backend-tasks": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/plugin-permission-common": "workspace:^" + "@backstage/plugin-search-common": "workspace:^" "@types/lunr": ^2.3.3 "@types/ndjson": ^2.0.1 lodash: ^4.17.21 @@ -6535,20 +6535,20 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-search-backend@^1.0.2, @backstage/plugin-search-backend@workspace:plugins/search-backend": +"@backstage/plugin-search-backend@workspace:^, @backstage/plugin-search-backend@workspace:plugins/search-backend": version: 0.0.0-use.local resolution: "@backstage/plugin-search-backend@workspace:plugins/search-backend" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/errors": ^1.1.1 - "@backstage/plugin-auth-node": ^0.2.5 - "@backstage/plugin-permission-common": ^0.6.4 - "@backstage/plugin-permission-node": ^0.6.5 - "@backstage/plugin-search-backend-node": ^1.0.2 - "@backstage/plugin-search-common": ^1.0.1 - "@backstage/types": ^1.0.0 + "@backstage/backend-common": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/plugin-auth-node": "workspace:^" + "@backstage/plugin-permission-common": "workspace:^" + "@backstage/plugin-permission-node": "workspace:^" + "@backstage/plugin-search-backend-node": "workspace:^" + "@backstage/plugin-search-common": "workspace:^" + "@backstage/types": "workspace:^" "@types/express": ^4.17.6 "@types/supertest": ^2.0.8 dataloader: ^2.0.0 @@ -6563,29 +6563,29 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-search-common@^1.0.1, @backstage/plugin-search-common@workspace:plugins/search-common": +"@backstage/plugin-search-common@workspace:^, @backstage/plugin-search-common@workspace:plugins/search-common": version: 0.0.0-use.local resolution: "@backstage/plugin-search-common@workspace:plugins/search-common" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/plugin-permission-common": ^0.6.4 - "@backstage/types": ^1.0.0 + "@backstage/cli": "workspace:^" + "@backstage/plugin-permission-common": "workspace:^" + "@backstage/types": "workspace:^" languageName: unknown linkType: soft -"@backstage/plugin-search-react@^1.1.0, @backstage/plugin-search-react@workspace:plugins/search-react": +"@backstage/plugin-search-react@workspace:^, @backstage/plugin-search-react@workspace:plugins/search-react": version: 0.0.0-use.local resolution: "@backstage/plugin-search-react@workspace:plugins/search-react" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/plugin-search-common": ^1.0.1 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 - "@backstage/types": ^1.0.0 - "@backstage/version-bridge": ^1.0.1 + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/plugin-search-common": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" + "@backstage/types": "workspace:^" + "@backstage/version-bridge": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -6603,25 +6603,25 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-search@^1.0.2, @backstage/plugin-search@workspace:plugins/search": +"@backstage/plugin-search@workspace:^, @backstage/plugin-search@workspace:plugins/search": version: 0.0.0-use.local resolution: "@backstage/plugin-search@workspace:plugins/search" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/errors": ^1.1.1 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/plugin-search-common": ^1.0.1 - "@backstage/plugin-search-react": ^1.1.0 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 - "@backstage/types": ^1.0.0 - "@backstage/version-bridge": ^1.0.1 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/plugin-search-common": "workspace:^" + "@backstage/plugin-search-react": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" + "@backstage/types": "workspace:^" + "@backstage/version-bridge": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -6642,19 +6642,19 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-sentry@^0.4.2, @backstage/plugin-sentry@workspace:plugins/sentry": +"@backstage/plugin-sentry@workspace:^, @backstage/plugin-sentry@workspace:plugins/sentry": version: 0.0.0-use.local resolution: "@backstage/plugin-sentry@workspace:plugins/sentry" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-table/core": ^3.1.0 "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 @@ -6676,18 +6676,18 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-shortcuts@^0.3.1, @backstage/plugin-shortcuts@workspace:plugins/shortcuts": +"@backstage/plugin-shortcuts@workspace:^, @backstage/plugin-shortcuts@workspace:plugins/shortcuts": version: 0.0.0-use.local resolution: "@backstage/plugin-shortcuts@workspace:plugins/shortcuts" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 - "@backstage/types": ^1.0.0 + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" + "@backstage/types": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -6712,11 +6712,11 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-sonarqube-backend@workspace:plugins/sonarqube-backend" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/errors": ^1.1.1 - "@backstage/test-utils": ^1.2.0 + "@backstage/backend-common": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/test-utils": "workspace:^" "@types/express": "*" "@types/supertest": ^2.0.12 express: ^4.18.1 @@ -6733,15 +6733,15 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-sonarqube@workspace:plugins/sonarqube" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -6763,15 +6763,15 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-splunk-on-call@workspace:plugins/splunk-on-call" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -6795,29 +6795,29 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-stack-overflow-backend@workspace:plugins/stack-overflow-backend" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/plugin-search-common": ^1.0.1 + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/plugin-search-common": "workspace:^" node-fetch: ^2.6.7 qs: ^6.9.4 winston: ^3.2.1 languageName: unknown linkType: soft -"@backstage/plugin-stack-overflow@^0.1.5, @backstage/plugin-stack-overflow@workspace:plugins/stack-overflow": +"@backstage/plugin-stack-overflow@workspace:^, @backstage/plugin-stack-overflow@workspace:plugins/stack-overflow": version: 0.0.0-use.local resolution: "@backstage/plugin-stack-overflow@workspace:plugins/stack-overflow" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/plugin-home": ^0.4.25 - "@backstage/plugin-search-common": ^1.0.1 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/plugin-home": "workspace:^" + "@backstage/plugin-search-common": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@testing-library/jest-dom": ^5.10.1 @@ -6835,16 +6835,16 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-tech-insights-backend-module-jsonfc@^0.1.20, @backstage/plugin-tech-insights-backend-module-jsonfc@workspace:plugins/tech-insights-backend-module-jsonfc": +"@backstage/plugin-tech-insights-backend-module-jsonfc@workspace:^, @backstage/plugin-tech-insights-backend-module-jsonfc@workspace:plugins/tech-insights-backend-module-jsonfc": version: 0.0.0-use.local resolution: "@backstage/plugin-tech-insights-backend-module-jsonfc@workspace:plugins/tech-insights-backend-module-jsonfc" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/errors": ^1.1.1 - "@backstage/plugin-tech-insights-common": ^0.2.6 - "@backstage/plugin-tech-insights-node": ^0.3.4 + "@backstage/backend-common": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/plugin-tech-insights-common": "workspace:^" + "@backstage/plugin-tech-insights-node": "workspace:^" ajv: ^8.10.0 json-rules-engine: ^6.1.2 lodash: ^4.17.21 @@ -6853,20 +6853,20 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-tech-insights-backend@^0.5.2, @backstage/plugin-tech-insights-backend@workspace:plugins/tech-insights-backend": +"@backstage/plugin-tech-insights-backend@workspace:^, @backstage/plugin-tech-insights-backend@workspace:plugins/tech-insights-backend": version: 0.0.0-use.local resolution: "@backstage/plugin-tech-insights-backend@workspace:plugins/tech-insights-backend" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/backend-tasks": ^0.3.5 - "@backstage/backend-test-utils": ^0.1.28 - "@backstage/catalog-client": ^1.1.0 - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/errors": ^1.1.1 - "@backstage/plugin-tech-insights-common": ^0.2.6 - "@backstage/plugin-tech-insights-node": ^0.3.4 + "@backstage/backend-common": "workspace:^" + "@backstage/backend-tasks": "workspace:^" + "@backstage/backend-test-utils": "workspace:^" + "@backstage/catalog-client": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/plugin-tech-insights-common": "workspace:^" + "@backstage/plugin-tech-insights-node": "workspace:^" "@types/express": ^4.17.6 "@types/luxon": ^3.0.0 "@types/semver": ^7.3.8 @@ -6885,49 +6885,49 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-tech-insights-common@^0.2.6, @backstage/plugin-tech-insights-common@workspace:plugins/tech-insights-common": +"@backstage/plugin-tech-insights-common@workspace:^, @backstage/plugin-tech-insights-common@workspace:plugins/tech-insights-common": version: 0.0.0-use.local resolution: "@backstage/plugin-tech-insights-common@workspace:plugins/tech-insights-common" dependencies: - "@backstage/cli": ^0.19.0-next.1 - "@backstage/types": ^1.0.0 + "@backstage/cli": "workspace:^" + "@backstage/types": "workspace:^" "@types/luxon": ^3.0.0 luxon: ^3.0.0 languageName: unknown linkType: soft -"@backstage/plugin-tech-insights-node@^0.3.4, @backstage/plugin-tech-insights-node@workspace:plugins/tech-insights-node": +"@backstage/plugin-tech-insights-node@workspace:^, @backstage/plugin-tech-insights-node@workspace:plugins/tech-insights-node": version: 0.0.0-use.local resolution: "@backstage/plugin-tech-insights-node@workspace:plugins/tech-insights-node" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/backend-tasks": ^0.3.5 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/plugin-tech-insights-common": ^0.2.6 - "@backstage/types": ^1.0.0 + "@backstage/backend-common": "workspace:^" + "@backstage/backend-tasks": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/plugin-tech-insights-common": "workspace:^" + "@backstage/types": "workspace:^" "@types/luxon": ^3.0.0 luxon: ^3.0.0 winston: ^3.2.1 languageName: unknown linkType: soft -"@backstage/plugin-tech-insights@^0.3.0, @backstage/plugin-tech-insights@workspace:plugins/tech-insights": +"@backstage/plugin-tech-insights@workspace:^, @backstage/plugin-tech-insights@workspace:plugins/tech-insights": version: 0.0.0-use.local resolution: "@backstage/plugin-tech-insights@workspace:plugins/tech-insights" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/errors": ^1.1.1 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/plugin-tech-insights-common": ^0.2.6 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 - "@backstage/types": ^1.0.0 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/plugin-tech-insights-common": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" + "@backstage/types": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -6945,17 +6945,17 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-tech-radar@^0.5.16, @backstage/plugin-tech-radar@workspace:plugins/tech-radar": +"@backstage/plugin-tech-radar@workspace:^, @backstage/plugin-tech-radar@workspace:plugins/tech-radar": version: 0.0.0-use.local resolution: "@backstage/plugin-tech-radar@workspace:plugins/tech-radar" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -6977,22 +6977,22 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-techdocs-addons-test-utils@^1.0.4, @backstage/plugin-techdocs-addons-test-utils@workspace:plugins/techdocs-addons-test-utils": +"@backstage/plugin-techdocs-addons-test-utils@workspace:^, @backstage/plugin-techdocs-addons-test-utils@workspace:plugins/techdocs-addons-test-utils": version: 0.0.0-use.local resolution: "@backstage/plugin-techdocs-addons-test-utils@workspace:plugins/techdocs-addons-test-utils" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/integration-react": ^1.1.4 - "@backstage/plugin-catalog": ^1.5.1 - "@backstage/plugin-search-react": ^1.1.0 - "@backstage/plugin-techdocs": ^1.3.2 - "@backstage/plugin-techdocs-react": ^1.0.4 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/integration-react": "workspace:^" + "@backstage/plugin-catalog": "workspace:^" + "@backstage/plugin-search-react": "workspace:^" + "@backstage/plugin-techdocs": "workspace:^" + "@backstage/plugin-techdocs-react": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.9.13 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -7012,23 +7012,23 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-techdocs-backend@^1.3.0, @backstage/plugin-techdocs-backend@workspace:plugins/techdocs-backend": +"@backstage/plugin-techdocs-backend@workspace:^, @backstage/plugin-techdocs-backend@workspace:plugins/techdocs-backend": version: 0.0.0-use.local resolution: "@backstage/plugin-techdocs-backend@workspace:plugins/techdocs-backend" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/backend-test-utils": ^0.1.28 - "@backstage/catalog-client": ^1.1.0 - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/errors": ^1.1.1 - "@backstage/integration": ^1.3.1 - "@backstage/plugin-catalog-common": ^1.0.6 - "@backstage/plugin-permission-common": ^0.6.4 - "@backstage/plugin-search-backend-node": 1.0.2 - "@backstage/plugin-search-common": ^1.0.1 - "@backstage/plugin-techdocs-node": ^1.4.0 + "@backstage/backend-common": "workspace:^" + "@backstage/backend-test-utils": "workspace:^" + "@backstage/catalog-client": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/integration": "workspace:^" + "@backstage/plugin-catalog-common": "workspace:^" + "@backstage/plugin-permission-common": "workspace:^" + "@backstage/plugin-search-backend-node": "workspace:^" + "@backstage/plugin-search-common": "workspace:^" + "@backstage/plugin-techdocs-node": "workspace:^" "@types/dockerode": ^3.3.0 "@types/express": ^4.17.6 dockerode: ^3.3.1 @@ -7045,21 +7045,21 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-techdocs-module-addons-contrib@^1.0.4, @backstage/plugin-techdocs-module-addons-contrib@workspace:plugins/techdocs-module-addons-contrib": +"@backstage/plugin-techdocs-module-addons-contrib@workspace:^, @backstage/plugin-techdocs-module-addons-contrib@workspace:plugins/techdocs-module-addons-contrib": version: 0.0.0-use.local resolution: "@backstage/plugin-techdocs-module-addons-contrib@workspace:plugins/techdocs-module-addons-contrib" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/integration": ^1.3.1 - "@backstage/integration-react": ^1.1.4 - "@backstage/plugin-techdocs-addons-test-utils": ^1.0.4 - "@backstage/plugin-techdocs-react": ^1.0.4 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/integration": "workspace:^" + "@backstage/integration-react": "workspace:^" + "@backstage/plugin-techdocs-addons-test-utils": "workspace:^" + "@backstage/plugin-techdocs-react": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.9.13 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -7078,19 +7078,19 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-techdocs-node@^1.4.0, @backstage/plugin-techdocs-node@workspace:plugins/techdocs-node": +"@backstage/plugin-techdocs-node@workspace:^, @backstage/plugin-techdocs-node@workspace:plugins/techdocs-node": version: 0.0.0-use.local resolution: "@backstage/plugin-techdocs-node@workspace:plugins/techdocs-node" dependencies: "@azure/identity": ^2.0.1 "@azure/storage-blob": ^12.5.0 - "@backstage/backend-common": ^0.15.1 - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/errors": ^1.1.1 - "@backstage/integration": ^1.3.1 - "@backstage/plugin-search-common": ^1.0.1 + "@backstage/backend-common": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/integration": "workspace:^" + "@backstage/plugin-search-common": "workspace:^" "@google-cloud/storage": ^6.0.0 "@trendyol-js/openstack-swift-sdk": ^0.0.5 "@types/express": ^4.17.6 @@ -7115,18 +7115,18 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-techdocs-react@^1.0.4, @backstage/plugin-techdocs-react@workspace:plugins/techdocs-react": +"@backstage/plugin-techdocs-react@workspace:^, @backstage/plugin-techdocs-react@workspace:plugins/techdocs-react": version: 0.0.0-use.local resolution: "@backstage/plugin-techdocs-react@workspace:plugins/techdocs-react" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 - "@backstage/version-bridge": ^1.0.1 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" + "@backstage/version-bridge": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/lab": 4.0.0-alpha.57 "@material-ui/styles": ^4.11.0 @@ -7144,26 +7144,26 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-techdocs@^1.3.2, @backstage/plugin-techdocs@workspace:plugins/techdocs": +"@backstage/plugin-techdocs@workspace:^, @backstage/plugin-techdocs@workspace:plugins/techdocs": version: 0.0.0-use.local resolution: "@backstage/plugin-techdocs@workspace:plugins/techdocs" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/errors": ^1.1.1 - "@backstage/integration": ^1.3.1 - "@backstage/integration-react": ^1.1.4 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/plugin-search-common": ^1.0.1 - "@backstage/plugin-search-react": ^1.1.0 - "@backstage/plugin-techdocs-react": ^1.0.4 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/integration": "workspace:^" + "@backstage/integration-react": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/plugin-search-common": "workspace:^" + "@backstage/plugin-search-react": "workspace:^" + "@backstage/plugin-techdocs-react": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -7194,17 +7194,17 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-todo-backend@^0.1.33, @backstage/plugin-todo-backend@workspace:plugins/todo-backend": +"@backstage/plugin-todo-backend@workspace:^, @backstage/plugin-todo-backend@workspace:plugins/todo-backend": version: 0.0.0-use.local resolution: "@backstage/plugin-todo-backend@workspace:plugins/todo-backend" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/catalog-client": ^1.1.0 - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/errors": ^1.1.1 - "@backstage/integration": ^1.3.1 + "@backstage/backend-common": "workspace:^" + "@backstage/catalog-client": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/integration": "workspace:^" "@types/express": ^4.17.6 "@types/supertest": ^2.0.8 express: ^4.17.1 @@ -7217,20 +7217,20 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-todo@^0.2.11, @backstage/plugin-todo@workspace:plugins/todo": +"@backstage/plugin-todo@workspace:^, @backstage/plugin-todo@workspace:plugins/todo": version: 0.0.0-use.local resolution: "@backstage/plugin-todo@workspace:plugins/todo" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/errors": ^1.1.1 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -7251,13 +7251,13 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-user-settings-backend@workspace:plugins/user-settings-backend" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/backend-test-utils": ^0.1.28 - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/errors": ^1.1.1 - "@backstage/plugin-auth-node": ^0.2.5 - "@backstage/types": ^1.0.0 + "@backstage/backend-common": "workspace:^" + "@backstage/backend-test-utils": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/plugin-auth-node": "workspace:^" + "@backstage/types": "workspace:^" "@types/express": ^4.17.6 "@types/supertest": ^2.0.8 express: ^4.17.1 @@ -7269,19 +7269,19 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-user-settings@^0.4.8, @backstage/plugin-user-settings@workspace:plugins/user-settings": +"@backstage/plugin-user-settings@workspace:^, @backstage/plugin-user-settings@workspace:plugins/user-settings": version: 0.0.0-use.local resolution: "@backstage/plugin-user-settings@workspace:plugins/user-settings" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/errors": ^1.1.1 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 - "@backstage/types": ^1.0.0 + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" + "@backstage/types": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -7304,12 +7304,12 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-vault-backend@workspace:plugins/vault-backend" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/backend-tasks": ^0.3.5 - "@backstage/backend-test-utils": ^0.1.28 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/errors": ^1.1.1 + "@backstage/backend-common": "workspace:^" + "@backstage/backend-tasks": "workspace:^" + "@backstage/backend-test-utils": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" "@types/compression": ^1.7.2 "@types/express": "*" "@types/supertest": ^2.0.8 @@ -7331,16 +7331,16 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-vault@workspace:plugins/vault" dependencies: - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/errors": ^1.1.1 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": ^4.0.0-alpha.57 @@ -7360,14 +7360,14 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-xcmetrics@workspace:plugins/xcmetrics" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/errors": ^1.1.1 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -7387,30 +7387,30 @@ __metadata: languageName: unknown linkType: soft -"@backstage/release-manifests@^0.0.6, @backstage/release-manifests@workspace:packages/release-manifests": +"@backstage/release-manifests@workspace:^, @backstage/release-manifests@workspace:packages/release-manifests": version: 0.0.0-use.local resolution: "@backstage/release-manifests@workspace:packages/release-manifests" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/test-utils": ^1.2.0 + "@backstage/cli": "workspace:^" + "@backstage/test-utils": "workspace:^" "@types/node": ^16.0.0 cross-fetch: ^3.1.5 msw: ^0.47.0 languageName: unknown linkType: soft -"@backstage/test-utils@^1.2.0, @backstage/test-utils@workspace:packages/test-utils": +"@backstage/test-utils@workspace:^, @backstage/test-utils@workspace:packages/test-utils": version: 0.0.0-use.local resolution: "@backstage/test-utils@workspace:packages/test-utils" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/plugin-permission-common": ^0.6.4 - "@backstage/plugin-permission-react": ^0.4.5 - "@backstage/theme": ^0.2.16 - "@backstage/types": ^1.0.0 + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/plugin-permission-common": "workspace:^" + "@backstage/plugin-permission-react": "workspace:^" + "@backstage/theme": "workspace:^" + "@backstage/types": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.11.2 "@testing-library/jest-dom": ^5.10.1 @@ -7429,30 +7429,30 @@ __metadata: languageName: unknown linkType: soft -"@backstage/theme@^0.2.15, @backstage/theme@^0.2.16, @backstage/theme@^0.2.6, @backstage/theme@^0.2.7, @backstage/theme@^0.2.9, @backstage/theme@workspace:packages/theme": +"@backstage/theme@^0.2.6, @backstage/theme@^0.2.7, @backstage/theme@^0.2.9, @backstage/theme@workspace:^, @backstage/theme@workspace:packages/theme": version: 0.0.0-use.local resolution: "@backstage/theme@workspace:packages/theme" dependencies: - "@backstage/cli": ^0.19.0-next.1 + "@backstage/cli": "workspace:^" "@material-ui/core": ^4.12.2 languageName: unknown linkType: soft -"@backstage/types@^1.0.0, @backstage/types@workspace:packages/types": +"@backstage/types@workspace:^, @backstage/types@workspace:packages/types": version: 0.0.0-use.local resolution: "@backstage/types@workspace:packages/types" dependencies: - "@backstage/cli": ^0.19.0-next.1 + "@backstage/cli": "workspace:^" "@types/zen-observable": ^0.8.0 zen-observable: ^0.8.15 languageName: unknown linkType: soft -"@backstage/version-bridge@^1.0.1, @backstage/version-bridge@workspace:packages/version-bridge": +"@backstage/version-bridge@workspace:^, @backstage/version-bridge@workspace:packages/version-bridge": version: 0.0.0-use.local resolution: "@backstage/version-bridge@workspace:packages/version-bridge" dependencies: - "@backstage/cli": ^0.19.0-next.1 + "@backstage/cli": "workspace:^" "@testing-library/jest-dom": ^5.10.1 "@testing-library/react": ^12.1.3 "@testing-library/react-hooks": ^8.0.0 @@ -9091,12 +9091,12 @@ __metadata: languageName: node linkType: hard -"@internal/plugin-catalog-customized@0.0.2, @internal/plugin-catalog-customized@workspace:plugins/catalog-customized": +"@internal/plugin-catalog-customized@workspace:^, @internal/plugin-catalog-customized@workspace:plugins/catalog-customized": version: 0.0.0-use.local resolution: "@internal/plugin-catalog-customized@workspace:plugins/catalog-customized" dependencies: - "@backstage/plugin-catalog": ^1.5.1 - "@backstage/plugin-catalog-react": ^1.1.4 + "@backstage/plugin-catalog": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" "@types/react": ^16.13.1 || ^17.0.0 peerDependencies: react: ^16.13.1 || ^17.0.0 @@ -9107,11 +9107,11 @@ __metadata: version: 0.0.0-use.local resolution: "@internal/plugin-todo-list-backend@workspace:plugins/example-todo-list-backend" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/errors": ^1.1.1 - "@backstage/plugin-auth-node": ^0.2.5 + "@backstage/backend-common": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/plugin-auth-node": "workspace:^" "@types/express": ^4.17.6 "@types/supertest": ^2.0.8 "@types/uuid": ^8.0.0 @@ -9129,11 +9129,11 @@ __metadata: version: 0.0.0-use.local resolution: "@internal/plugin-todo-list-common@workspace:plugins/example-todo-list-common" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/dev-utils": ^1.0.6 - "@backstage/plugin-permission-common": ^0.6.4 - "@backstage/test-utils": ^1.2.0 + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/plugin-permission-common": "workspace:^" + "@backstage/test-utils": "workspace:^" "@types/node": ^16.11.26 cross-fetch: ^3.1.5 msw: ^0.47.0 @@ -9144,13 +9144,13 @@ __metadata: version: 0.0.0-use.local resolution: "@internal/plugin-todo-list@workspace:plugins/example-todo-list" dependencies: - "@backstage/cli": ^0.19.0 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/dev-utils": ^1.0.6 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/cli": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/dev-utils": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -12387,12 +12387,12 @@ __metadata: version: 0.0.0-use.local resolution: "@techdocs/cli@workspace:packages/techdocs-cli" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/cli-common": ^0.1.10 - "@backstage/config": ^1.0.2 - "@backstage/plugin-techdocs-node": ^1.4.0 + "@backstage/backend-common": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/cli-common": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/plugin-techdocs-node": "workspace:^" "@types/commander": ^2.12.2 "@types/dockerode": ^3.3.0 "@types/fs-extra": ^9.0.6 @@ -20171,9 +20171,9 @@ __metadata: version: 0.0.0-use.local resolution: "e2e-test@workspace:packages/e2e-test" dependencies: - "@backstage/cli": ^0.19.0-next.3 - "@backstage/cli-common": ^0.1.10-next.0 - "@backstage/errors": ^1.1.1-next.0 + "@backstage/cli": "workspace:^" + "@backstage/cli-common": "workspace:^" + "@backstage/errors": "workspace:^" "@types/fs-extra": ^9.0.1 "@types/node": ^16.11.26 "@types/puppeteer": ^5.4.4 @@ -21401,63 +21401,63 @@ __metadata: version: 0.0.0-use.local resolution: "example-app@workspace:packages/app" dependencies: - "@backstage/app-defaults": ^1.0.6 - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/integration-react": ^1.1.4 - "@backstage/plugin-airbrake": ^0.3.9 - "@backstage/plugin-apache-airflow": ^0.2.2 - "@backstage/plugin-api-docs": ^0.8.9 - "@backstage/plugin-azure-devops": ^0.2.0 - "@backstage/plugin-badges": ^0.2.33 - "@backstage/plugin-catalog-common": ^1.0.6 - "@backstage/plugin-catalog-graph": ^0.2.21 - "@backstage/plugin-catalog-import": ^0.8.12 - "@backstage/plugin-catalog-react": ^1.1.4 - "@backstage/plugin-circleci": ^0.3.9 - "@backstage/plugin-cloudbuild": ^0.3.9 - "@backstage/plugin-code-coverage": ^0.2.2 - "@backstage/plugin-cost-insights": ^0.11.31 - "@backstage/plugin-dynatrace": ^0.2.0 - "@backstage/plugin-explore": ^0.3.40 - "@backstage/plugin-gcalendar": ^0.3.5 - "@backstage/plugin-gcp-projects": ^0.3.28 - "@backstage/plugin-github-actions": ^0.5.9 - "@backstage/plugin-gocd": ^0.1.15 - "@backstage/plugin-graphiql": ^0.2.41 - "@backstage/plugin-home": ^0.4.25 - "@backstage/plugin-jenkins": ^0.7.8 - "@backstage/plugin-kafka": ^0.3.9 - "@backstage/plugin-kubernetes": ^0.7.2 - "@backstage/plugin-lighthouse": ^0.3.9 - "@backstage/plugin-newrelic": ^0.3.27 - "@backstage/plugin-newrelic-dashboard": ^0.2.2 - "@backstage/plugin-org": ^0.5.9 - "@backstage/plugin-pagerduty": 0.5.2 - "@backstage/plugin-permission-react": ^0.4.5 - "@backstage/plugin-playlist": ^0.1.0 - "@backstage/plugin-rollbar": ^0.4.9 - "@backstage/plugin-scaffolder": ^1.6.0 - "@backstage/plugin-search": ^1.0.2 - "@backstage/plugin-search-common": ^1.0.1 - "@backstage/plugin-search-react": ^1.1.0 - "@backstage/plugin-sentry": ^0.4.2 - "@backstage/plugin-shortcuts": ^0.3.1 - "@backstage/plugin-stack-overflow": ^0.1.5 - "@backstage/plugin-tech-insights": ^0.3.0 - "@backstage/plugin-tech-radar": ^0.5.16 - "@backstage/plugin-techdocs": ^1.3.2 - "@backstage/plugin-techdocs-module-addons-contrib": ^1.0.4 - "@backstage/plugin-techdocs-react": ^1.0.4 - "@backstage/plugin-todo": ^0.2.11 - "@backstage/plugin-user-settings": ^0.4.8 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 - "@internal/plugin-catalog-customized": 0.0.2 + "@backstage/app-defaults": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/integration-react": "workspace:^" + "@backstage/plugin-airbrake": "workspace:^" + "@backstage/plugin-apache-airflow": "workspace:^" + "@backstage/plugin-api-docs": "workspace:^" + "@backstage/plugin-azure-devops": "workspace:^" + "@backstage/plugin-badges": "workspace:^" + "@backstage/plugin-catalog-common": "workspace:^" + "@backstage/plugin-catalog-graph": "workspace:^" + "@backstage/plugin-catalog-import": "workspace:^" + "@backstage/plugin-catalog-react": "workspace:^" + "@backstage/plugin-circleci": "workspace:^" + "@backstage/plugin-cloudbuild": "workspace:^" + "@backstage/plugin-code-coverage": "workspace:^" + "@backstage/plugin-cost-insights": "workspace:^" + "@backstage/plugin-dynatrace": "workspace:^" + "@backstage/plugin-explore": "workspace:^" + "@backstage/plugin-gcalendar": "workspace:^" + "@backstage/plugin-gcp-projects": "workspace:^" + "@backstage/plugin-github-actions": "workspace:^" + "@backstage/plugin-gocd": "workspace:^" + "@backstage/plugin-graphiql": "workspace:^" + "@backstage/plugin-home": "workspace:^" + "@backstage/plugin-jenkins": "workspace:^" + "@backstage/plugin-kafka": "workspace:^" + "@backstage/plugin-kubernetes": "workspace:^" + "@backstage/plugin-lighthouse": "workspace:^" + "@backstage/plugin-newrelic": "workspace:^" + "@backstage/plugin-newrelic-dashboard": "workspace:^" + "@backstage/plugin-org": "workspace:^" + "@backstage/plugin-pagerduty": "workspace:^" + "@backstage/plugin-permission-react": "workspace:^" + "@backstage/plugin-playlist": "workspace:^" + "@backstage/plugin-rollbar": "workspace:^" + "@backstage/plugin-scaffolder": "workspace:^" + "@backstage/plugin-search": "workspace:^" + "@backstage/plugin-search-common": "workspace:^" + "@backstage/plugin-search-react": "workspace:^" + "@backstage/plugin-sentry": "workspace:^" + "@backstage/plugin-shortcuts": "workspace:^" + "@backstage/plugin-stack-overflow": "workspace:^" + "@backstage/plugin-tech-insights": "workspace:^" + "@backstage/plugin-tech-radar": "workspace:^" + "@backstage/plugin-techdocs": "workspace:^" + "@backstage/plugin-techdocs-module-addons-contrib": "workspace:^" + "@backstage/plugin-techdocs-react": "workspace:^" + "@backstage/plugin-todo": "workspace:^" + "@backstage/plugin-user-settings": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" + "@internal/plugin-catalog-customized": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 @@ -21495,10 +21495,10 @@ __metadata: version: 0.0.0-use.local resolution: "example-backend-next@workspace:packages/backend-next" dependencies: - "@backstage/backend-defaults": ^0.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/plugin-catalog-backend": ^1.4.0 - "@backstage/plugin-scaffolder-backend": ^1.6.0 + "@backstage/backend-defaults": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/plugin-catalog-backend": "workspace:^" + "@backstage/plugin-scaffolder-backend": "workspace:^" languageName: unknown linkType: soft @@ -21506,42 +21506,42 @@ __metadata: version: 0.0.0-use.local resolution: "example-backend@workspace:packages/backend" dependencies: - "@backstage/backend-common": ^0.15.1 - "@backstage/backend-tasks": ^0.3.5 - "@backstage/catalog-client": ^1.1.0 - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/integration": ^1.3.1 - "@backstage/plugin-app-backend": ^0.3.36 - "@backstage/plugin-auth-backend": ^0.16.0 - "@backstage/plugin-auth-node": ^0.2.5 - "@backstage/plugin-azure-devops-backend": ^0.3.15 - "@backstage/plugin-badges-backend": ^0.1.30 - "@backstage/plugin-catalog-backend": ^1.4.0 - "@backstage/plugin-code-coverage-backend": ^0.2.2 - "@backstage/plugin-graphql-backend": ^0.1.26 - "@backstage/plugin-jenkins-backend": ^0.1.26 - "@backstage/plugin-kafka-backend": ^0.2.29 - "@backstage/plugin-kubernetes-backend": ^0.7.2 - "@backstage/plugin-permission-backend": ^0.5.11 - "@backstage/plugin-permission-common": ^0.6.4 - "@backstage/plugin-permission-node": ^0.6.5 - "@backstage/plugin-playlist-backend": ^0.1.0 - "@backstage/plugin-proxy-backend": ^0.2.30 - "@backstage/plugin-rollbar-backend": ^0.1.33 - "@backstage/plugin-scaffolder-backend": ^1.6.0 - "@backstage/plugin-scaffolder-backend-module-rails": ^0.4.4 - "@backstage/plugin-search-backend": ^1.0.2 - "@backstage/plugin-search-backend-module-elasticsearch": ^1.0.2 - "@backstage/plugin-search-backend-module-pg": ^0.4.0 - "@backstage/plugin-search-backend-node": ^1.0.2 - "@backstage/plugin-search-common": ^1.0.1 - "@backstage/plugin-tech-insights-backend": ^0.5.2 - "@backstage/plugin-tech-insights-backend-module-jsonfc": ^0.1.20 - "@backstage/plugin-tech-insights-node": ^0.3.4 - "@backstage/plugin-techdocs-backend": ^1.3.0 - "@backstage/plugin-todo-backend": ^0.1.33 + "@backstage/backend-common": "workspace:^" + "@backstage/backend-tasks": "workspace:^" + "@backstage/catalog-client": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/integration": "workspace:^" + "@backstage/plugin-app-backend": "workspace:^" + "@backstage/plugin-auth-backend": "workspace:^" + "@backstage/plugin-auth-node": "workspace:^" + "@backstage/plugin-azure-devops-backend": "workspace:^" + "@backstage/plugin-badges-backend": "workspace:^" + "@backstage/plugin-catalog-backend": "workspace:^" + "@backstage/plugin-code-coverage-backend": "workspace:^" + "@backstage/plugin-graphql-backend": "workspace:^" + "@backstage/plugin-jenkins-backend": "workspace:^" + "@backstage/plugin-kafka-backend": "workspace:^" + "@backstage/plugin-kubernetes-backend": "workspace:^" + "@backstage/plugin-permission-backend": "workspace:^" + "@backstage/plugin-permission-common": "workspace:^" + "@backstage/plugin-permission-node": "workspace:^" + "@backstage/plugin-playlist-backend": "workspace:^" + "@backstage/plugin-proxy-backend": "workspace:^" + "@backstage/plugin-rollbar-backend": "workspace:^" + "@backstage/plugin-scaffolder-backend": "workspace:^" + "@backstage/plugin-scaffolder-backend-module-rails": "workspace:^" + "@backstage/plugin-search-backend": "workspace:^" + "@backstage/plugin-search-backend-module-elasticsearch": "workspace:^" + "@backstage/plugin-search-backend-module-pg": "workspace:^" + "@backstage/plugin-search-backend-node": "workspace:^" + "@backstage/plugin-search-common": "workspace:^" + "@backstage/plugin-tech-insights-backend": "workspace:^" + "@backstage/plugin-tech-insights-backend-module-jsonfc": "workspace:^" + "@backstage/plugin-tech-insights-node": "workspace:^" + "@backstage/plugin-techdocs-backend": "workspace:^" + "@backstage/plugin-todo-backend": "workspace:^" "@gitbeaker/node": ^35.1.0 "@octokit/rest": ^19.0.3 "@types/dockerode": ^3.3.0 @@ -36585,19 +36585,19 @@ __metadata: version: 0.0.0-use.local resolution: "techdocs-cli-embedded-app@workspace:packages/techdocs-cli-embedded-app" dependencies: - "@backstage/app-defaults": ^1.0.6 - "@backstage/catalog-model": ^1.1.1 - "@backstage/cli": ^0.19.0 - "@backstage/config": ^1.0.2 - "@backstage/core-app-api": ^1.1.0 - "@backstage/core-components": ^0.11.1 - "@backstage/core-plugin-api": ^1.0.6 - "@backstage/integration-react": ^1.1.4 - "@backstage/plugin-catalog": ^1.5.1 - "@backstage/plugin-techdocs": ^1.3.2 - "@backstage/plugin-techdocs-react": ^1.0.4 - "@backstage/test-utils": ^1.2.0 - "@backstage/theme": ^0.2.16 + "@backstage/app-defaults": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/core-app-api": "workspace:^" + "@backstage/core-components": "workspace:^" + "@backstage/core-plugin-api": "workspace:^" + "@backstage/integration-react": "workspace:^" + "@backstage/plugin-catalog": "workspace:^" + "@backstage/plugin-techdocs": "workspace:^" + "@backstage/plugin-techdocs-react": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@backstage/theme": "workspace:^" "@material-ui/core": ^4.11.0 "@material-ui/icons": ^4.9.1 "@testing-library/jest-dom": ^5.10.1 From 2ee25a47c53a5a64e29057cbec0513b719488416 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 4 Sep 2022 21:25:21 +0200 Subject: [PATCH 070/117] scripts: remove workspace range migration script Signed-off-by: Patrik Oldsberg --- scripts/switch-to-workspace-ranges.js | 78 --------------------------- 1 file changed, 78 deletions(-) delete mode 100755 scripts/switch-to-workspace-ranges.js diff --git a/scripts/switch-to-workspace-ranges.js b/scripts/switch-to-workspace-ranges.js deleted file mode 100755 index 67d3602887..0000000000 --- a/scripts/switch-to-workspace-ranges.js +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/env node -/* - * Copyright 2021 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -const fs = require('fs-extra'); -const { resolve: resolvePath } = require('path'); -const { getPackages } = require('@manypkg/get-packages'); - -/** @typedef {import("@manypkg/get-packages").Package["packageJson"]} Pkg */ - -function transformDepField(deps) { - const newPkg = JSON.parse(JSON.stringify(deps)); - - for (const [name, version] of Object.entries(newPkg)) { - if (name.startsWith('@backstage/') || name.startsWith('@internal/')) { - const match = version.match(/^(\^|~)?[0-9]+\.[0-9]+\.[0-9]+/); - if (match) { - const specifier = match[1] || '*'; - newPkg[name] = `workspace:${specifier}`; - } - } - } - return newPkg; -} - -/** - * - * @param {Pkg} pkg - */ -function transformDeps(pkg) { - /** @type {Pkg} */ - const newPkg = JSON.parse(JSON.stringify(pkg)); - - if (newPkg.dependencies) { - newPkg.dependencies = transformDepField(newPkg.dependencies); - } - if (newPkg.devDependencies) { - newPkg.devDependencies = transformDepField(newPkg.devDependencies); - } - if (newPkg.peerDependencies) { - newPkg.peerDependencies = transformDepField(newPkg.peerDependencies); - } - if (newPkg.optionalDependencies) { - newPkg.optionalDependencies = transformDepField( - newPkg.optionalDependencies, - ); - } - - return newPkg; -} - -async function main() { - const { root, packages } = await getPackages(); - for (const { dir, packageJson } of [root, ...packages]) { - const pkgPath = resolvePath(dir, 'package.json'); - - const newPackageJson = transformDeps(packageJson); - await fs.writeJson(pkgPath, newPackageJson, { spaces: 2 }); - } -} - -main().catch(e => { - console.error(e); - process.exit(1); -}); From d66b398840f6f53b7d57f2c6e5d17e7172dd6859 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 4 Sep 2022 23:17:24 +0200 Subject: [PATCH 071/117] cli: improve v2 lockfile parsing to split out ranges Signed-off-by: Patrik Oldsberg --- packages/cli/src/lib/versioning/Lockfile.test.ts | 5 +++-- packages/cli/src/lib/versioning/Lockfile.ts | 12 ++++++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/packages/cli/src/lib/versioning/Lockfile.test.ts b/packages/cli/src/lib/versioning/Lockfile.test.ts index bad7ab6719..4621b43372 100644 --- a/packages/cli/src/lib/versioning/Lockfile.test.ts +++ b/packages/cli/src/lib/versioning/Lockfile.test.ts @@ -170,7 +170,7 @@ a@^1: integrity: sha512-xyz resolved: "https://my-registry/a-1.0.01.tgz#abc123" -b@2.0.x: +"b@2.0.x, b@^2.0.1": version: 2.0.1 b@^2: @@ -185,7 +185,7 @@ a@^1: integrity: sha512-xyz resolved: "https://my-registry/a-1.0.01.tgz#abc123" -b@2.0.x: +"b@2.0.x, b@^2.0.1": version: 2.0.1 b@^2: @@ -206,6 +206,7 @@ describe('New Lockfile', () => { expect(lockfile.get('a')).toEqual([{ range: '^1', version: '1.0.1' }]); expect(lockfile.get('b')).toEqual([ { range: '2.0.x', version: '2.0.1' }, + { range: '^2.0.1', version: '2.0.1' }, { range: '^2', version: '2.0.0' }, ]); expect(lockfile.toString()).toBe(mockANew); diff --git a/packages/cli/src/lib/versioning/Lockfile.ts b/packages/cli/src/lib/versioning/Lockfile.ts index 278778b6a6..016593ea8d 100644 --- a/packages/cli/src/lib/versioning/Lockfile.ts +++ b/packages/cli/src/lib/versioning/Lockfile.ts @@ -122,7 +122,7 @@ export class Lockfile { for (const [key, value] of Object.entries(data)) { if (SPECIAL_OBJECT_KEYS.includes(key)) continue; - const [, name, range] = ENTRY_PATTERN.exec(key) ?? []; + const [, name, ranges] = ENTRY_PATTERN.exec(key) ?? []; if (!name) { throw new Error(`Failed to parse yarn.lock entry '${key}'`); } @@ -132,7 +132,15 @@ export class Lockfile { queries = []; packages.set(name, queries); } - queries.push({ range, version: value.version }); + for (let range of ranges.split(/\s*,\s*/)) { + if (range.startsWith(`${name}@`)) { + range = range.slice(`${name}@`.length); + } + if (range.startsWith('npm:')) { + range = range.slice('npm:'.length); + } + queries.push({ range, version: value.version }); + } } return new Lockfile(path, packages, data, legacy); From 4f5fb2d4f4152abc07931466e0a1cfefdc9507eb Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 4 Sep 2022 23:19:19 +0200 Subject: [PATCH 072/117] cli: add support for workspace: query for local version matching Signed-off-by: Patrik Oldsberg --- packages/cli/src/lib/version.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/cli/src/lib/version.ts b/packages/cli/src/lib/version.ts index 1cddf773f4..5a199236f5 100644 --- a/packages/cli/src/lib/version.ts +++ b/packages/cli/src/lib/version.ts @@ -81,6 +81,14 @@ export function createPackageVersionProvider(lockfile?: Lockfile) { ) { return '*'; } + + for (const specifier of ['^', '~', '*']) { + const range = `workspace:${specifier}`; + if (lockfileEntries?.some(entry => entry.range === range)) { + return range; + } + } + const validRanges = lockfileEntries?.filter(entry => semver.satisfies(targetVersion, entry.range), ); From ba63cae41c99f80f3a73d607c76d47fae82a7baf Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 20 Sep 2022 22:45:00 +0200 Subject: [PATCH 073/117] changesets: added changeset for improved lockfile parsing Signed-off-by: Patrik Oldsberg --- .changeset/perfect-moose-drum.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/perfect-moose-drum.md diff --git a/.changeset/perfect-moose-drum.md b/.changeset/perfect-moose-drum.md new file mode 100644 index 0000000000..833e5eeb35 --- /dev/null +++ b/.changeset/perfect-moose-drum.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Updated lockfile parsing to have better support for Yarn 3. From 49c688c5c2da193f71fd3c04d2f5b2dba565d7ed Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 20 Sep 2022 22:45:21 +0200 Subject: [PATCH 074/117] scripts/verify-local-dependencies: update to require workspace ranges for local deps Signed-off-by: Patrik Oldsberg --- scripts/verify-local-dependencies.js | 28 ++++++++-------------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/scripts/verify-local-dependencies.js b/scripts/verify-local-dependencies.js index e11ae2e55d..b44e0836f4 100755 --- a/scripts/verify-local-dependencies.js +++ b/scripts/verify-local-dependencies.js @@ -16,13 +16,8 @@ */ const fs = require('fs-extra'); -const semver = require('semver'); const { getPackages } = require('@manypkg/get-packages'); -const { - resolve: resolvePath, - relative: relativePath, - join: joinPath, -} = require('path'); +const { resolve: resolvePath, join: joinPath } = require('path'); /** * This script checks that all local package dependencies within the repo @@ -58,21 +53,14 @@ async function main(args) { continue; } const localPackage = pkgMap.get(dep); - if (localPackage) { - const localVersion = localPackage.packageJson.version; - if (!semver.satisfies(localVersion, range)) { - const path = joinPath( - relativePath(rootPath, pkg.dir), - 'package.json', - ); - console.log( - `${path} depends on the wrong version of ${dep}: ${range} does not satisfy ${localVersion}`, - ); - hadErrors = true; + if (localPackage && range !== 'workspace:^') { + hadErrors = true; + console.log( + `Local dependency from ${pkg.packageJson.name} to ${dep} should have a workspace range`, + ); - fixed = true; - pkg.packageJson[depType][dep] = `^${localVersion}`; - } + fixed = true; + pkg.packageJson[depType][dep] = 'workspace:^'; } } } From 685c4cc76fbe6b922aea49cd5d94e263d62179c4 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 20 Sep 2022 22:26:38 +0200 Subject: [PATCH 075/117] changeset: enter prerelease Signed-off-by: Patrik Oldsberg --- .changeset/pre.json | 179 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 179 insertions(+) create mode 100644 .changeset/pre.json diff --git a/.changeset/pre.json b/.changeset/pre.json new file mode 100644 index 0000000000..46123733ca --- /dev/null +++ b/.changeset/pre.json @@ -0,0 +1,179 @@ +{ + "mode": "pre", + "tag": "next", + "initialVersions": { + "example-app": "0.2.75", + "@backstage/app-defaults": "1.0.6", + "example-backend": "0.2.75", + "@backstage/backend-app-api": "0.2.1", + "@backstage/backend-common": "0.15.1", + "@backstage/backend-defaults": "0.1.1", + "example-backend-next": "0.0.3", + "@backstage/backend-plugin-api": "0.1.2", + "@backstage/backend-tasks": "0.3.5", + "@backstage/backend-test-utils": "0.1.28", + "@backstage/catalog-client": "1.1.0", + "@backstage/catalog-model": "1.1.1", + "@backstage/cli": "0.19.0", + "@backstage/cli-common": "0.1.10", + "@backstage/codemods": "0.1.39", + "@backstage/config": "1.0.2", + "@backstage/config-loader": "1.1.4", + "@backstage/core-app-api": "1.1.0", + "@backstage/core-components": "0.11.1", + "@backstage/core-plugin-api": "1.0.6", + "@backstage/create-app": "0.4.31", + "@backstage/dev-utils": "1.0.6", + "e2e-test": "0.2.0", + "@backstage/errors": "1.1.1", + "@backstage/integration": "1.3.1", + "@backstage/integration-react": "1.1.4", + "@backstage/release-manifests": "0.0.6", + "@techdocs/cli": "1.2.1", + "techdocs-cli-embedded-app": "0.2.74", + "@backstage/test-utils": "1.2.0", + "@backstage/theme": "0.2.16", + "@backstage/types": "1.0.0", + "@backstage/version-bridge": "1.0.1", + "@backstage/plugin-adr": "0.2.1", + "@backstage/plugin-adr-backend": "0.2.1", + "@backstage/plugin-adr-common": "0.2.1", + "@backstage/plugin-airbrake": "0.3.9", + "@backstage/plugin-airbrake-backend": "0.2.9", + "@backstage/plugin-allure": "0.1.25", + "@backstage/plugin-analytics-module-ga": "0.1.20", + "@backstage/plugin-apache-airflow": "0.2.2", + "@backstage/plugin-api-docs": "0.8.9", + "@backstage/plugin-api-docs-module-protoc-gen-doc": "0.1.0", + "@backstage/plugin-apollo-explorer": "0.1.2", + "@backstage/plugin-app-backend": "0.3.36", + "@backstage/plugin-auth-backend": "0.16.0", + "@backstage/plugin-auth-node": "0.2.5", + "@backstage/plugin-azure-devops": "0.2.0", + "@backstage/plugin-azure-devops-backend": "0.3.15", + "@backstage/plugin-azure-devops-common": "0.3.0", + "@backstage/plugin-badges": "0.2.33", + "@backstage/plugin-badges-backend": "0.1.30", + "@backstage/plugin-bazaar": "0.1.24", + "@backstage/plugin-bazaar-backend": "0.1.20", + "@backstage/plugin-bitbucket-cloud-common": "0.1.3", + "@backstage/plugin-bitrise": "0.1.36", + "@backstage/plugin-catalog": "1.5.1", + "@backstage/plugin-catalog-backend": "1.4.0", + "@backstage/plugin-catalog-backend-module-aws": "0.1.9", + "@backstage/plugin-catalog-backend-module-azure": "0.1.7", + "@backstage/plugin-catalog-backend-module-bitbucket": "0.2.3", + "@backstage/plugin-catalog-backend-module-bitbucket-cloud": "0.1.3", + "@backstage/plugin-catalog-backend-module-bitbucket-server": "0.1.1", + "@backstage/plugin-catalog-backend-module-gerrit": "0.1.4", + "@backstage/plugin-catalog-backend-module-github": "0.1.7", + "@backstage/plugin-catalog-backend-module-gitlab": "0.1.7", + "@backstage/plugin-catalog-backend-module-ldap": "0.5.3", + "@backstage/plugin-catalog-backend-module-msgraph": "0.4.2", + "@backstage/plugin-catalog-backend-module-openapi": "0.1.2", + "@backstage/plugin-catalog-common": "1.0.6", + "@internal/plugin-catalog-customized": "0.0.2", + "@backstage/plugin-catalog-graph": "0.2.21", + "@backstage/plugin-catalog-graphql": "0.3.13", + "@backstage/plugin-catalog-import": "0.8.12", + "@backstage/plugin-catalog-node": "1.1.0", + "@backstage/plugin-catalog-react": "1.1.4", + "@backstage/plugin-cicd-statistics": "0.1.11", + "@backstage/plugin-cicd-statistics-module-gitlab": "0.1.5", + "@backstage/plugin-circleci": "0.3.9", + "@backstage/plugin-cloudbuild": "0.3.9", + "@backstage/plugin-code-climate": "0.1.9", + "@backstage/plugin-code-coverage": "0.2.2", + "@backstage/plugin-code-coverage-backend": "0.2.2", + "@backstage/plugin-codescene": "0.1.4", + "@backstage/plugin-config-schema": "0.1.32", + "@backstage/plugin-cost-insights": "0.11.31", + "@backstage/plugin-cost-insights-common": "0.1.1", + "@backstage/plugin-dynatrace": "0.2.0", + "@internal/plugin-todo-list": "1.0.5", + "@internal/plugin-todo-list-backend": "1.0.5", + "@internal/plugin-todo-list-common": "1.0.4", + "@backstage/plugin-explore": "0.3.40", + "@backstage/plugin-explore-react": "0.0.21", + "@backstage/plugin-firehydrant": "0.1.26", + "@backstage/plugin-fossa": "0.2.41", + "@backstage/plugin-gcalendar": "0.3.5", + "@backstage/plugin-gcp-projects": "0.3.28", + "@backstage/plugin-git-release-manager": "0.3.22", + "@backstage/plugin-github-actions": "0.5.9", + "@backstage/plugin-github-deployments": "0.1.40", + "@backstage/plugin-github-issues": "0.1.1", + "@backstage/plugin-github-pull-requests-board": "0.1.3", + "@backstage/plugin-gitops-profiles": "0.3.27", + "@backstage/plugin-gocd": "0.1.15", + "@backstage/plugin-graphiql": "0.2.41", + "@backstage/plugin-graphql-backend": "0.1.26", + "@backstage/plugin-home": "0.4.25", + "@backstage/plugin-ilert": "0.1.35", + "@backstage/plugin-jenkins": "0.7.8", + "@backstage/plugin-jenkins-backend": "0.1.26", + "@backstage/plugin-jenkins-common": "0.1.8", + "@backstage/plugin-kafka": "0.3.9", + "@backstage/plugin-kafka-backend": "0.2.29", + "@backstage/plugin-kubernetes": "0.7.2", + "@backstage/plugin-kubernetes-backend": "0.7.2", + "@backstage/plugin-kubernetes-common": "0.4.2", + "@backstage/plugin-lighthouse": "0.3.9", + "@backstage/plugin-newrelic": "0.3.27", + "@backstage/plugin-newrelic-dashboard": "0.2.2", + "@backstage/plugin-org": "0.5.9", + "@backstage/plugin-pagerduty": "0.5.2", + "@backstage/plugin-periskop": "0.1.7", + "@backstage/plugin-periskop-backend": "0.1.7", + "@backstage/plugin-permission-backend": "0.5.11", + "@backstage/plugin-permission-common": "0.6.4", + "@backstage/plugin-permission-node": "0.6.5", + "@backstage/plugin-permission-react": "0.4.5", + "@backstage/plugin-playlist": "0.1.0", + "@backstage/plugin-playlist-backend": "0.1.0", + "@backstage/plugin-playlist-common": "0.1.0", + "@backstage/plugin-proxy-backend": "0.2.30", + "@backstage/plugin-rollbar": "0.4.9", + "@backstage/plugin-rollbar-backend": "0.1.33", + "@backstage/plugin-scaffolder": "1.6.0", + "@backstage/plugin-scaffolder-backend": "1.6.0", + "@backstage/plugin-scaffolder-backend-module-cookiecutter": "0.2.11", + "@backstage/plugin-scaffolder-backend-module-rails": "0.4.4", + "@backstage/plugin-scaffolder-backend-module-yeoman": "0.2.9", + "@backstage/plugin-scaffolder-common": "1.2.0", + "@backstage/plugin-search": "1.0.2", + "@backstage/plugin-search-backend": "1.0.2", + "@backstage/plugin-search-backend-module-elasticsearch": "1.0.2", + "@backstage/plugin-search-backend-module-pg": "0.4.0", + "@backstage/plugin-search-backend-node": "1.0.2", + "@backstage/plugin-search-common": "1.0.1", + "@backstage/plugin-search-react": "1.1.0", + "@backstage/plugin-sentry": "0.4.2", + "@backstage/plugin-shortcuts": "0.3.1", + "@backstage/plugin-sonarqube": "0.4.1", + "@backstage/plugin-sonarqube-backend": "0.1.1", + "@backstage/plugin-splunk-on-call": "0.3.33", + "@backstage/plugin-stack-overflow": "0.1.5", + "@backstage/plugin-stack-overflow-backend": "0.1.5", + "@backstage/plugin-tech-insights": "0.3.0", + "@backstage/plugin-tech-insights-backend": "0.5.2", + "@backstage/plugin-tech-insights-backend-module-jsonfc": "0.1.20", + "@backstage/plugin-tech-insights-common": "0.2.6", + "@backstage/plugin-tech-insights-node": "0.3.4", + "@backstage/plugin-tech-radar": "0.5.16", + "@backstage/plugin-techdocs": "1.3.2", + "@backstage/plugin-techdocs-addons-test-utils": "1.0.4", + "@backstage/plugin-techdocs-backend": "1.3.0", + "@backstage/plugin-techdocs-module-addons-contrib": "1.0.4", + "@backstage/plugin-techdocs-node": "1.4.0", + "@backstage/plugin-techdocs-react": "1.0.4", + "@backstage/plugin-todo": "0.2.11", + "@backstage/plugin-todo-backend": "0.1.33", + "@backstage/plugin-user-settings": "0.4.8", + "@backstage/plugin-user-settings-backend": "0.1.0", + "@backstage/plugin-vault": "0.1.3", + "@backstage/plugin-vault-backend": "0.2.2", + "@backstage/plugin-xcmetrics": "0.2.29" + }, + "changesets": [] +} From 2dc2cb00470fe37bf00b18d47d5129b95c095b7a Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 21 Sep 2022 10:42:36 +0200 Subject: [PATCH 076/117] chore: added release notes Signed-off-by: blam --- docs/releases/v1.6.0.md | 60 +++++++++++++++++++++++++++++++++++++++++ microsite/sidebars.json | 1 + 2 files changed, 61 insertions(+) create mode 100644 docs/releases/v1.6.0.md diff --git a/docs/releases/v1.6.0.md b/docs/releases/v1.6.0.md new file mode 100644 index 0000000000..a1ece6bf94 --- /dev/null +++ b/docs/releases/v1.6.0.md @@ -0,0 +1,60 @@ +--- +id: v1.6.0 +title: v1.6.0 +description: Backstage Release v1.6.0 +--- + +These are the release notes for the v1.6.0 release of [Backstage](https://backstage.io/). + +A huge thanks to the whole team of maintainers and contributors as well as the amazing Backstage Community for the hard work in getting this release developed and done. + +## Highlights + +### Moved to `swc` for transpilation + +We’ve replaced `sucrase` with [`swc`](https://swc.rs/) for transpilation in the Backstage CLI. While `swc` has slightly slower transpilation times, it’s a library backed by a larger community, and allows us to take advantage of [React Refresh](https://www.npmjs.com/package/react-refresh) out of the box. There’s a few things that could possibly break installations of Backstage and compilation, you can read more about it in the [changelog](https://github.com/backstage/backstage/blob/515aadf8840591860e4bbdcc7d99cef8f9d7ac3c/docs/releases/v1.6.0-changelog.md#patch-changes-1) + +### React Router Stable Compatibility + +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! + +The migration is controlled by each app, meaning this release will not force you to migrate straight away, you can do so at your own pace. Check out the [migration guide](https://backstage.io/docs/tutorials/react-router-stable-migration) for all you need to know! + +### Yarn 3 Support + +It is now possible to migrate Backstage projects to use Yarn 3. See the [migration guide](https://backstage.io/docs/tutorials/yarn-migration) for more information. Migrating to Yarn 3 is optional, and Backstage projects created with `@backstage/create-app` will still use classic Yarn by default. + +### New plugin: `@backstage/plugin-user-settings-backend` + +The `user-settings` plugin now has an associated backend. This allows for the persistence of settings in your database, essentially in the form of a basic per-user key-value JSON store. + +As this backend was added, `user-settings` also gained a `UserSettingsStore` class that implements the `storageApiRef` Utility API. If you install the backend as well as this frontend API, your starred entities and other storage-API-based features will no longer just be persisted in your browser’s local storage, but centrally so that all your devices can leverage them. + +Contributed by [@dschwank](https://github.com/dschwank) in [#13570](https://github.com/backstage/backstage/pull/13570) + +### New plugin: `@backstage/plugin-playlist` + +This plugin can be used to create custom collections of Entities that can be shared throughout Backstage or for private usage. + +Contributed by [@kuangp](https://github.com/kuangp) in [#12870](https://github.com/backstage/backstage/pull/12870) + +## Security Fixes + +Be sure to upgrade to the latest version of `@backstage/plugin-scaffolder-backend`, as it contains an explicit bump of a transitive dependency where a vulnerability was discovered. If you subscribe to CVE notifications you will already have received this update. + +## Upgrade path + +We recommend that you keep your Backstage project up to date with this latest release. For more guidance on how to upgrade, check out the documentation for [keeping Backstage updated](https://backstage.io/docs/getting-started/keeping-backstage-updated). + +## Links and References + +Below you can find a list of links and references to help you learn about and start using this new release. + +- [Backstage official website](https://backstage.io/), [documentation](https://backstage.io/docs/), and [getting started guide](https://backstage.io/docs/getting-started/) +- [GitHub repository](https://github.com/backstage/backstage) +- Backstage's [versioning and support policy](https://backstage.io/docs/overview/versioning-policy) +- [Community Discord](https://discord.gg/bFESRKVt) for discussions and support +- [Changelog](https://github.com/backstage/backstage/tree/master/docs/releases/v1.6.0-changelog.md) +- Backstage [Demos](https://backstage.io/demos), [Blog](https://backstage.io/blog), [Roadmap](https://backstage.io/docs/overview/roadmap) and [Plugins](https://backstage.io/plugins) + +Sign up for our [newsletter](https://mailchi.mp/spotify/backstage-community) if you want to be informed about what is happening in the world of Backstage. diff --git a/microsite/sidebars.json b/microsite/sidebars.json index ba35f8b76b..867f171ca2 100644 --- a/microsite/sidebars.json +++ b/microsite/sidebars.json @@ -1,6 +1,7 @@ { "releases": { "Release Notes": [ + "releases/v1.6.0", "releases/v1.5.0", "releases/v1.4.0", "releases/v1.3.0", From a94c2ed1b7eb771d1ca1b13befb3bed311e28902 Mon Sep 17 00:00:00 2001 From: Gabriel Testault Date: Wed, 21 Sep 2022 11:00:49 +0200 Subject: [PATCH 077/117] fix(cost-insights): tearing in cost overview breakdown chart Signed-off-by: Gabriel Testault --- .changeset/wise-ligers-scream.md | 5 +++++ .../CostOverviewCard/CostOverviewBreakdownChart.tsx | 8 ++++---- 2 files changed, 9 insertions(+), 4 deletions(-) create mode 100644 .changeset/wise-ligers-scream.md diff --git a/.changeset/wise-ligers-scream.md b/.changeset/wise-ligers-scream.md new file mode 100644 index 0000000000..d71c69fd42 --- /dev/null +++ b/.changeset/wise-ligers-scream.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-cost-insights': patch +--- + +Fixed bug in `CostOverviewBreakdownChart` component where some datasets caused the cost overview breakdown chart to tear. diff --git a/plugins/cost-insights/src/components/CostOverviewCard/CostOverviewBreakdownChart.tsx b/plugins/cost-insights/src/components/CostOverviewCard/CostOverviewBreakdownChart.tsx index d0731326f2..5b912c09a6 100644 --- a/plugins/cost-insights/src/components/CostOverviewCard/CostOverviewBreakdownChart.tsx +++ b/plugins/cost-insights/src/components/CostOverviewCard/CostOverviewBreakdownChart.tsx @@ -113,8 +113,8 @@ export const CostOverviewBreakdownChart = ({ {} as Record>, ); - const chartData: Record[] = Object.keys(breakdownsByDate).map( - date => { + const chartData: Record[] = Object.keys(breakdownsByDate) + .map(date => { const costsForDate = Object.keys(breakdownsByDate[date]).reduce( (dateCosts, breakdown) => { // Group costs for items that belong to 'Other' in the chart. @@ -131,8 +131,8 @@ export const CostOverviewBreakdownChart = ({ ...costsForDate, date: Date.parse(date), }; - }, - ); + }) + .sort((a, b) => a.date - b.date); const sortedBreakdowns = costBreakdown.sort( (a, b) => aggregationSum(a.aggregation) - aggregationSum(b.aggregation), From b6d01e9a785cc357d73bc28ee0c3b33f9659155b Mon Sep 17 00:00:00 2001 From: ivgo Date: Wed, 21 Sep 2022 11:45:30 +0200 Subject: [PATCH 078/117] Added missing daemonsets to RBAC permissions Signed-off-by: ivgo --- docs/features/kubernetes/configuration.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/features/kubernetes/configuration.md b/docs/features/kubernetes/configuration.md index 0adbec6a82..ec505672b5 100644 --- a/docs/features/kubernetes/configuration.md +++ b/docs/features/kubernetes/configuration.md @@ -413,6 +413,7 @@ rules: - ingresses - statefulsets - limitranges + - daemonsets verbs: - get - list From 11b27571f0cbb9b365ea1bbbdfc811640c7d40c7 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 21 Sep 2022 12:10:17 +0200 Subject: [PATCH 079/117] docs: remove empty auth backend docs Signed-off-by: Patrik Oldsberg --- docs/auth/auth-backend.md | 7 ------- microsite/sidebars.json | 1 - mkdocs.yml | 1 - 3 files changed, 9 deletions(-) delete mode 100644 docs/auth/auth-backend.md diff --git a/docs/auth/auth-backend.md b/docs/auth/auth-backend.md deleted file mode 100644 index 6d8b95ac9f..0000000000 --- a/docs/auth/auth-backend.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -id: auth-backend -title: Auth backend -description: Documentation on Auth backend ---- - -## TODO diff --git a/microsite/sidebars.json b/microsite/sidebars.json index ba35f8b76b..20771f9ee6 100644 --- a/microsite/sidebars.json +++ b/microsite/sidebars.json @@ -275,7 +275,6 @@ ] }, "auth/identity-resolver", - "auth/auth-backend", "auth/oauth", "auth/add-auth-provider", "auth/troubleshooting", diff --git a/mkdocs.yml b/mkdocs.yml index 0d386e63fa..c0a8e3a182 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -161,7 +161,6 @@ nav: - OAuth2Proxy: 'auth/oauth2-proxy/provider.md' - Bitbucket: 'auth/bitbucket/provider.md' - Sign in resolvers: 'auth/identity-resolver.md' - - Auth backend: 'auth/auth-backend.md' - OAuth and OpenID Connect: 'auth/oauth.md' - Contributing New Providers: 'auth/add-auth-provider.md' - Troubleshooting Auth: 'auth/troubleshooting.md' From 7bb5c5a7563bd29c2191864890349d281eb46799 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 21 Sep 2022 11:17:52 +0000 Subject: [PATCH 080/117] fix(deps): update dependency esbuild-loader to v2.20.0 Signed-off-by: Renovate Bot --- yarn.lock | 254 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 249 insertions(+), 5 deletions(-) diff --git a/yarn.lock b/yarn.lock index 25af70cb76..0d3c3c5b4b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7995,6 +7995,15 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-arm@npm:0.15.8": + version: 0.15.8 + resolution: "@esbuild/android-arm@npm:0.15.8" + dependencies: + esbuild-wasm: 0.15.8 + conditions: os=android & cpu=arm + languageName: node + linkType: hard + "@esbuild/linux-loong64@npm:0.14.54": version: 0.14.54 resolution: "@esbuild/linux-loong64@npm:0.14.54" @@ -8002,6 +8011,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-loong64@npm:0.15.8": + version: 0.15.8 + resolution: "@esbuild/linux-loong64@npm:0.15.8" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + "@eslint/eslintrc@npm:^1.3.2": version: 1.3.2 resolution: "@eslint/eslintrc@npm:1.3.2" @@ -20609,6 +20625,15 @@ __metadata: languageName: node linkType: hard +"esbuild-android-64@npm:0.15.8": + version: 0.15.8 + resolution: "esbuild-android-64@npm:0.15.8" + dependencies: + esbuild-wasm: 0.15.8 + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + "esbuild-android-arm64@npm:0.14.54": version: 0.14.54 resolution: "esbuild-android-arm64@npm:0.14.54" @@ -20616,6 +20641,13 @@ __metadata: languageName: node linkType: hard +"esbuild-android-arm64@npm:0.15.8": + version: 0.15.8 + resolution: "esbuild-android-arm64@npm:0.15.8" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + "esbuild-darwin-64@npm:0.14.54": version: 0.14.54 resolution: "esbuild-darwin-64@npm:0.14.54" @@ -20623,6 +20655,13 @@ __metadata: languageName: node linkType: hard +"esbuild-darwin-64@npm:0.15.8": + version: 0.15.8 + resolution: "esbuild-darwin-64@npm:0.15.8" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "esbuild-darwin-arm64@npm:0.14.54": version: 0.14.54 resolution: "esbuild-darwin-arm64@npm:0.14.54" @@ -20630,6 +20669,13 @@ __metadata: languageName: node linkType: hard +"esbuild-darwin-arm64@npm:0.15.8": + version: 0.15.8 + resolution: "esbuild-darwin-arm64@npm:0.15.8" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "esbuild-freebsd-64@npm:0.14.54": version: 0.14.54 resolution: "esbuild-freebsd-64@npm:0.14.54" @@ -20637,6 +20683,13 @@ __metadata: languageName: node linkType: hard +"esbuild-freebsd-64@npm:0.15.8": + version: 0.15.8 + resolution: "esbuild-freebsd-64@npm:0.15.8" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + "esbuild-freebsd-arm64@npm:0.14.54": version: 0.14.54 resolution: "esbuild-freebsd-arm64@npm:0.14.54" @@ -20644,6 +20697,13 @@ __metadata: languageName: node linkType: hard +"esbuild-freebsd-arm64@npm:0.15.8": + version: 0.15.8 + resolution: "esbuild-freebsd-arm64@npm:0.15.8" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + "esbuild-linux-32@npm:0.14.54": version: 0.14.54 resolution: "esbuild-linux-32@npm:0.14.54" @@ -20651,6 +20711,13 @@ __metadata: languageName: node linkType: hard +"esbuild-linux-32@npm:0.15.8": + version: 0.15.8 + resolution: "esbuild-linux-32@npm:0.15.8" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + "esbuild-linux-64@npm:0.14.54": version: 0.14.54 resolution: "esbuild-linux-64@npm:0.14.54" @@ -20658,6 +20725,13 @@ __metadata: languageName: node linkType: hard +"esbuild-linux-64@npm:0.15.8": + version: 0.15.8 + resolution: "esbuild-linux-64@npm:0.15.8" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + "esbuild-linux-arm64@npm:0.14.54": version: 0.14.54 resolution: "esbuild-linux-arm64@npm:0.14.54" @@ -20665,6 +20739,13 @@ __metadata: languageName: node linkType: hard +"esbuild-linux-arm64@npm:0.15.8": + version: 0.15.8 + resolution: "esbuild-linux-arm64@npm:0.15.8" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + "esbuild-linux-arm@npm:0.14.54": version: 0.14.54 resolution: "esbuild-linux-arm@npm:0.14.54" @@ -20672,6 +20753,13 @@ __metadata: languageName: node linkType: hard +"esbuild-linux-arm@npm:0.15.8": + version: 0.15.8 + resolution: "esbuild-linux-arm@npm:0.15.8" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + "esbuild-linux-mips64le@npm:0.14.54": version: 0.14.54 resolution: "esbuild-linux-mips64le@npm:0.14.54" @@ -20679,6 +20767,13 @@ __metadata: languageName: node linkType: hard +"esbuild-linux-mips64le@npm:0.15.8": + version: 0.15.8 + resolution: "esbuild-linux-mips64le@npm:0.15.8" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + "esbuild-linux-ppc64le@npm:0.14.54": version: 0.14.54 resolution: "esbuild-linux-ppc64le@npm:0.14.54" @@ -20686,6 +20781,13 @@ __metadata: languageName: node linkType: hard +"esbuild-linux-ppc64le@npm:0.15.8": + version: 0.15.8 + resolution: "esbuild-linux-ppc64le@npm:0.15.8" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + "esbuild-linux-riscv64@npm:0.14.54": version: 0.14.54 resolution: "esbuild-linux-riscv64@npm:0.14.54" @@ -20693,6 +20795,13 @@ __metadata: languageName: node linkType: hard +"esbuild-linux-riscv64@npm:0.15.8": + version: 0.15.8 + resolution: "esbuild-linux-riscv64@npm:0.15.8" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + "esbuild-linux-s390x@npm:0.14.54": version: 0.14.54 resolution: "esbuild-linux-s390x@npm:0.14.54" @@ -20700,11 +20809,18 @@ __metadata: languageName: node linkType: hard +"esbuild-linux-s390x@npm:0.15.8": + version: 0.15.8 + resolution: "esbuild-linux-s390x@npm:0.15.8" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + "esbuild-loader@npm:^2.18.0": - version: 2.19.0 - resolution: "esbuild-loader@npm:2.19.0" + version: 2.20.0 + resolution: "esbuild-loader@npm:2.20.0" dependencies: - esbuild: ^0.14.39 + esbuild: ^0.15.6 joycon: ^3.0.1 json5: ^2.2.0 loader-utils: ^2.0.0 @@ -20712,7 +20828,7 @@ __metadata: webpack-sources: ^2.2.0 peerDependencies: webpack: ^4.40.0 || ^5.0.0 - checksum: 7dc8deca3ab6f8684437359ce6d407d18622ba7cb7f0a22f44861f72b34405431070a6137e366232bea2418e37a54fe04299951a588fec54058f047e65616adc + checksum: 81faee7155b35af1fdef3dffa273a14ec83e56b9efa1efb76cb1eb64964dd738809c147a87ab9d3507de11946eed51fd1ee42d476b2c9654cbda145da0d9479b languageName: node linkType: hard @@ -20723,6 +20839,13 @@ __metadata: languageName: node linkType: hard +"esbuild-netbsd-64@npm:0.15.8": + version: 0.15.8 + resolution: "esbuild-netbsd-64@npm:0.15.8" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + "esbuild-openbsd-64@npm:0.14.54": version: 0.14.54 resolution: "esbuild-openbsd-64@npm:0.14.54" @@ -20730,6 +20853,13 @@ __metadata: languageName: node linkType: hard +"esbuild-openbsd-64@npm:0.15.8": + version: 0.15.8 + resolution: "esbuild-openbsd-64@npm:0.15.8" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + "esbuild-sunos-64@npm:0.14.54": version: 0.14.54 resolution: "esbuild-sunos-64@npm:0.14.54" @@ -20737,6 +20867,22 @@ __metadata: languageName: node linkType: hard +"esbuild-sunos-64@npm:0.15.8": + version: 0.15.8 + resolution: "esbuild-sunos-64@npm:0.15.8" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + +"esbuild-wasm@npm:0.15.8": + version: 0.15.8 + resolution: "esbuild-wasm@npm:0.15.8" + bin: + esbuild: bin/esbuild + checksum: 54797a22f42b572ca7f314cb95a8d130f85948a9557bb03775ebdd2f76d60f164ac2a80bb1ee8339f8a7445a1bc5ab28e1b48584c0573aeca9366119dbad7448 + languageName: node + linkType: hard + "esbuild-windows-32@npm:0.14.54": version: 0.14.54 resolution: "esbuild-windows-32@npm:0.14.54" @@ -20744,6 +20890,13 @@ __metadata: languageName: node linkType: hard +"esbuild-windows-32@npm:0.15.8": + version: 0.15.8 + resolution: "esbuild-windows-32@npm:0.15.8" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + "esbuild-windows-64@npm:0.14.54": version: 0.14.54 resolution: "esbuild-windows-64@npm:0.14.54" @@ -20751,6 +20904,13 @@ __metadata: languageName: node linkType: hard +"esbuild-windows-64@npm:0.15.8": + version: 0.15.8 + resolution: "esbuild-windows-64@npm:0.15.8" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "esbuild-windows-arm64@npm:0.14.54": version: 0.14.54 resolution: "esbuild-windows-arm64@npm:0.14.54" @@ -20758,7 +20918,14 @@ __metadata: languageName: node linkType: hard -"esbuild@npm:^0.14.1, esbuild@npm:^0.14.10, esbuild@npm:^0.14.39": +"esbuild-windows-arm64@npm:0.15.8": + version: 0.15.8 + resolution: "esbuild-windows-arm64@npm:0.15.8" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"esbuild@npm:^0.14.1, esbuild@npm:^0.14.10": version: 0.14.54 resolution: "esbuild@npm:0.14.54" dependencies: @@ -20832,6 +20999,83 @@ __metadata: languageName: node linkType: hard +"esbuild@npm:^0.15.6": + version: 0.15.8 + resolution: "esbuild@npm:0.15.8" + dependencies: + "@esbuild/android-arm": 0.15.8 + "@esbuild/linux-loong64": 0.15.8 + esbuild-android-64: 0.15.8 + esbuild-android-arm64: 0.15.8 + esbuild-darwin-64: 0.15.8 + esbuild-darwin-arm64: 0.15.8 + esbuild-freebsd-64: 0.15.8 + esbuild-freebsd-arm64: 0.15.8 + esbuild-linux-32: 0.15.8 + esbuild-linux-64: 0.15.8 + esbuild-linux-arm: 0.15.8 + esbuild-linux-arm64: 0.15.8 + esbuild-linux-mips64le: 0.15.8 + esbuild-linux-ppc64le: 0.15.8 + esbuild-linux-riscv64: 0.15.8 + esbuild-linux-s390x: 0.15.8 + esbuild-netbsd-64: 0.15.8 + esbuild-openbsd-64: 0.15.8 + esbuild-sunos-64: 0.15.8 + esbuild-windows-32: 0.15.8 + esbuild-windows-64: 0.15.8 + esbuild-windows-arm64: 0.15.8 + dependenciesMeta: + "@esbuild/android-arm": + optional: true + "@esbuild/linux-loong64": + optional: true + esbuild-android-64: + optional: true + esbuild-android-arm64: + optional: true + esbuild-darwin-64: + optional: true + esbuild-darwin-arm64: + optional: true + esbuild-freebsd-64: + optional: true + esbuild-freebsd-arm64: + optional: true + esbuild-linux-32: + optional: true + esbuild-linux-64: + optional: true + esbuild-linux-arm: + optional: true + esbuild-linux-arm64: + optional: true + esbuild-linux-mips64le: + optional: true + esbuild-linux-ppc64le: + optional: true + esbuild-linux-riscv64: + optional: true + esbuild-linux-s390x: + optional: true + esbuild-netbsd-64: + optional: true + esbuild-openbsd-64: + optional: true + esbuild-sunos-64: + optional: true + esbuild-windows-32: + optional: true + esbuild-windows-64: + optional: true + esbuild-windows-arm64: + optional: true + bin: + esbuild: bin/esbuild + checksum: 96991dd4bdd628a62d8b962b1e8f1cf6f71ffb06f2c8c8615cba326a2f1800a0029b602c9c5ced0db43d78026ee2cce8bd4c3990411cb0081ede297627735d9d + languageName: node + linkType: hard + "escalade@npm:^3.1.1": version: 3.1.1 resolution: "escalade@npm:3.1.1" From 1efd3157e4b11a7cd919e53ce4454c45647897e6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 21 Sep 2022 11:18:47 +0000 Subject: [PATCH 081/117] fix(deps): update dependency git-url-parse to v13.1.0 Signed-off-by: Renovate Bot --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 25af70cb76..158bfb6ec9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -22961,11 +22961,11 @@ __metadata: linkType: hard "git-url-parse@npm:^13.0.0": - version: 13.0.0 - resolution: "git-url-parse@npm:13.0.0" + version: 13.1.0 + resolution: "git-url-parse@npm:13.1.0" dependencies: git-up: ^7.0.0 - checksum: 05a3bf51fc5863d26461a815347929a7432e1ebc6763e6a7ee31f510936266f9a82e0f090d09c2c48cd6dba2f17163fa1d860ba4a3ff157083cca5a5d1961c57 + checksum: 212a9b0343e9199998b6a532efe2014476a7a1283af393663ca49ac28d4768929aad16d3322e2685236065ee394dbc93e7aa63a48956531e984c56d8b5edb54d languageName: node linkType: hard From bf79a1cb77929fe650b09c2286ab1ec61de3fb22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Wed, 21 Sep 2022 13:49:34 +0200 Subject: [PATCH 082/117] changeset tweak MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/soft-falcons-love.md | 8 +++++++- .../AuthProviders/ProviderSettingsItem.tsx | 12 +++++++----- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/.changeset/soft-falcons-love.md b/.changeset/soft-falcons-love.md index 9fbc8f1419..56ed193501 100644 --- a/.changeset/soft-falcons-love.md +++ b/.changeset/soft-falcons-love.md @@ -2,4 +2,10 @@ '@backstage/plugin-user-settings': minor --- -**BREAKING** Fixed settings page showing providers as logged out when the user is using more than one provider, and displayed some additional login information. +**BREAKING**: The `apiRef` passed to `ProviderSettingsItem` now needs to +implement `ProfileInfoApi & SessionApi`, rather than just the latter. This is +unlikely to have an effect on most users though, since the builtin auth +providers generally implement both. + +Fixed settings page showing providers as logged out when the user is using more +than one provider, and displayed some additional login information. diff --git a/plugins/user-settings/src/components/AuthProviders/ProviderSettingsItem.tsx b/plugins/user-settings/src/components/AuthProviders/ProviderSettingsItem.tsx index b5d056eed2..ab6ad8dff9 100644 --- a/plugins/user-settings/src/components/AuthProviders/ProviderSettingsItem.tsx +++ b/plugins/user-settings/src/components/AuthProviders/ProviderSettingsItem.tsx @@ -60,11 +60,13 @@ export const ProviderSettingsItem = (props: { api .getProfile({ optional: true }) .then((profileResponse: ProfileInfo | undefined) => { - if (sessionState === SessionState.SignedIn) { - setSignedIn(true); - } - if (profileResponse) { - setProfile(profileResponse); + if (!didCancel) { + if (sessionState === SessionState.SignedIn) { + setSignedIn(true); + } + if (profileResponse) { + setProfile(profileResponse); + } } }); } From 9ade2e7a768fe25eb520616812d67092187f1312 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 21 Sep 2022 12:06:59 +0000 Subject: [PATCH 083/117] fix(deps): update dependency isomorphic-git to v1.21.0 Signed-off-by: Renovate Bot --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 0d3c3c5b4b..9bbf1197d4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -25708,8 +25708,8 @@ __metadata: linkType: hard "isomorphic-git@npm:^1.8.0": - version: 1.20.0 - resolution: "isomorphic-git@npm:1.20.0" + version: 1.21.0 + resolution: "isomorphic-git@npm:1.21.0" dependencies: async-lock: ^1.1.0 clean-git-ref: ^2.0.1 @@ -25724,7 +25724,7 @@ __metadata: simple-get: ^4.0.1 bin: isogit: cli.cjs - checksum: 4f5af69b02795d656c171c2347186ac0b04269db23ab4ec3fb0204cda5cb89cceaacae8eb44ee3e1870fcbc930518c63a6e82a9fc7428719e08be5c3d6d88396 + checksum: afbdf98000c586fdcb96f84c054d6ada392b0d2422a7b7baad89e5f5881a79426f8555bdadeebe25202be18bb8eaee3881f8c04b6a289d04b916790bdd5dd5df languageName: node linkType: hard From ff08f1d14ef74ab657161d5f933ab243cb375bd8 Mon Sep 17 00:00:00 2001 From: Joon Park Date: Wed, 21 Sep 2022 13:56:37 +0100 Subject: [PATCH 084/117] Frontend permission docs for integrators (#11039) * Frontend permission docs for integrators Signed-off-by: Joon Park * Update docs/permission/frontend-integration.md Co-authored-by: Joe Porpeglia Signed-off-by: Joon Park Signed-off-by: Joon Park Co-authored-by: Joe Porpeglia --- docs/permissions/frontend-integration.md | 38 ++++++++++++++++++++++++ microsite/sidebars.json | 1 + 2 files changed, 39 insertions(+) create mode 100644 docs/permissions/frontend-integration.md diff --git a/docs/permissions/frontend-integration.md b/docs/permissions/frontend-integration.md new file mode 100644 index 0000000000..2a429ea120 --- /dev/null +++ b/docs/permissions/frontend-integration.md @@ -0,0 +1,38 @@ +--- +id: frontend-integration +title: Frontend Integration +description: How to place your Backstage frontend components behind authorization +--- + +Now that we understand how to [author a permission policy](./writing-a-policy.md), let's consider cases where we'll need to supplement our policy with authorization checks on the frontend. + +In most cases, actual functionality that live within various plugins will already have been placed behind authorization by the plugin authors. The permission backend will use your permission policy to return an authorization result, and the plugin frontend will correspondingly show/hide/disable the relevant UI component. + +However, there are some cases where the integrator needs to supplement the policy on the frontend. One example is app level routing. + +If your Backstage permission policy may return a `DENY` for users requesting the `catalogEntityCreatePermission`, it may make sense, for example, to remove access to the `/catalog-import` page entirely: + +```diff +// packages/app/src/App.tsx + +... + ++ import { PermissionedRoute } from '@backstage/plugin-permission-react'; ++ import { catalogEntityCreatePermission } from '@backstage/plugin-catalog-common'; + +... + +- } /> ++ ++ ++ ++ } ++ /> +... + +``` + +With this change, users who are denied the `catalogEntityCreatePermission` should now be unable to access the `/catalog-import` page. diff --git a/microsite/sidebars.json b/microsite/sidebars.json index 44d8e12869..8e77594376 100644 --- a/microsite/sidebars.json +++ b/microsite/sidebars.json @@ -286,6 +286,7 @@ "permissions/concepts", "permissions/getting-started", "permissions/writing-a-policy", + "permissions/frontend-integration", "permissions/custom-rules", { "type": "subcategory", From 90f64ab797ea389dcfa83dc615c884751a5ebe8a Mon Sep 17 00:00:00 2001 From: Suzanne Daniels Date: Wed, 21 Sep 2022 15:12:18 +0200 Subject: [PATCH 085/117] Updating live stream in live page Signed-off-by: Suzanne Daniels --- microsite/pages/en/live.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/microsite/pages/en/live.js b/microsite/pages/en/live.js index 2483b2f8bf..43b5a0eb67 100644 --- a/microsite/pages/en/live.js +++ b/microsite/pages/en/live.js @@ -34,7 +34,7 @@ const Background = props => { From b19ea927afe58ae892e452ca71daa2f5a8791a02 Mon Sep 17 00:00:00 2001 From: "TANGUY Antoine (SIB)" Date: Wed, 21 Sep 2022 15:18:49 +0200 Subject: [PATCH 086/117] fix(jenkins-backend): use same config prop name Signed-off-by: TANGUY Antoine (SIB) --- .changeset/quiet-hats-kick.md | 5 +++++ .../jenkins-backend/src/service/jenkinsInfoProvider.test.ts | 4 ++-- plugins/jenkins-backend/src/service/jenkinsInfoProvider.ts | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 .changeset/quiet-hats-kick.md diff --git a/.changeset/quiet-hats-kick.md b/.changeset/quiet-hats-kick.md new file mode 100644 index 0000000000..155d8f232c --- /dev/null +++ b/.changeset/quiet-hats-kick.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-jenkins-backend': patch +--- + +fix incorrect jenkins backend config initialization. named config and non named config use extraRequestHeaders diff --git a/plugins/jenkins-backend/src/service/jenkinsInfoProvider.test.ts b/plugins/jenkins-backend/src/service/jenkinsInfoProvider.test.ts index 8e14997fd7..626e5b0a5a 100644 --- a/plugins/jenkins-backend/src/service/jenkinsInfoProvider.test.ts +++ b/plugins/jenkins-backend/src/service/jenkinsInfoProvider.test.ts @@ -55,7 +55,7 @@ describe('JenkinsConfig', () => { baseUrl: 'https://jenkins.example.com', username: 'backstage - bot', apiKey: '123456789abcdef0123456789abcedf012', - headers: { + extraRequestHeaders: { myHeader: 'my-value', }, }, @@ -70,7 +70,7 @@ describe('JenkinsConfig', () => { baseUrl: 'https://jenkins.example.com', username: 'backstage - bot', apiKey: '123456789abcdef0123456789abcedf012', - headers: { + extraRequestHeaders: { myHeader: 'my-value', }, }, diff --git a/plugins/jenkins-backend/src/service/jenkinsInfoProvider.ts b/plugins/jenkins-backend/src/service/jenkinsInfoProvider.ts index 2ad5b60f6d..c4b4ef58dd 100644 --- a/plugins/jenkins-backend/src/service/jenkinsInfoProvider.ts +++ b/plugins/jenkins-backend/src/service/jenkinsInfoProvider.ts @@ -84,7 +84,7 @@ export class JenkinsConfig { baseUrl: c.getString('baseUrl'), username: c.getString('username'), apiKey: c.getString('apiKey'), - headers: c.getOptional('headers'), + extraRequestHeaders: c.getOptional('extraRequestHeaders'), crumbIssuer: c.getOptionalBoolean('crumbIssuer'), })) || []; From a94c6fcf7893d4b7bb830e49f13573a900964537 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 21 Sep 2022 16:59:43 +0200 Subject: [PATCH 087/117] backend-tasks: fix for fake timers blocking db setup Signed-off-by: Patrik Oldsberg --- .../src/tasks/PluginTaskSchedulerImpl.test.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.test.ts b/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.test.ts index 16550b2d7d..f6177b57f7 100644 --- a/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.test.ts +++ b/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.test.ts @@ -25,8 +25,6 @@ import { PluginTaskSchedulerImpl, } from './PluginTaskSchedulerImpl'; -jest.useFakeTimers(); - function defer() { let resolve = () => {}; const promise = new Promise(_resolve => { @@ -40,6 +38,15 @@ describe('PluginTaskManagerImpl', () => { ids: ['POSTGRES_13', 'POSTGRES_9', 'SQLITE_3'], }); + beforeAll(async () => { + // Make sure all databases are running before mocking timers, in case of testcontainers + await Promise.all( + databases.eachSupportedId().map(([id]) => databases.init(id)), + ); + + jest.useFakeTimers(); + }, 30_000); + async function init(databaseId: TestDatabaseId) { const knex = await databases.init(databaseId); await migrateBackendTasks(knex); From 6f3b8d09629e45d780793755837776521baa6dd9 Mon Sep 17 00:00:00 2001 From: Mitchell Hentges Date: Wed, 21 Sep 2022 16:35:56 +0200 Subject: [PATCH 088/117] Defer schema validation to improve test performance Many modules export an `ajvCompiledJsonSchemaValidator(...)`, which incurs the `ajv` schema compilation at module-import-time. Many tests depend on these modules transitively, but don't exercise the compiled schema - so, this compilation time is wasted. On my machine, with an example test (airbrake/src/index.test.ts) I'm seeing the following numbers (n=10): Before: 6005.1ms After: 5807.8ms Benefit: 197.3ms (~3.3%) Weirdly, the NodeJS profiler was saying that schema compilation was taking ~2000ms, but that is likely due to the inaccuracy of the sampling. Signed-off-by: Mitchell Hentges --- .changeset/bright-rules-shout.md | 5 +++++ packages/catalog-model/src/kinds/util.ts | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 .changeset/bright-rules-shout.md diff --git a/.changeset/bright-rules-shout.md b/.changeset/bright-rules-shout.md new file mode 100644 index 0000000000..f7cdae3b4f --- /dev/null +++ b/.changeset/bright-rules-shout.md @@ -0,0 +1,5 @@ +--- +'@backstage/catalog-model': patch +--- + +Defer `ajv` compilation of schema validators to improve module-import performance diff --git a/packages/catalog-model/src/kinds/util.ts b/packages/catalog-model/src/kinds/util.ts index c77b77cb97..40c88b7066 100644 --- a/packages/catalog-model/src/kinds/util.ts +++ b/packages/catalog-model/src/kinds/util.ts @@ -22,9 +22,12 @@ import { KindValidator } from './types'; // exported kind validators have the `KindValidator` signature which is // different. So let's postpone that change until a later time. export function ajvCompiledJsonSchemaValidator(schema: unknown): KindValidator { - const validator = entityKindSchemaValidator(schema); + let validator: undefined | ((data: unknown) => any); return { async check(data) { + if (!validator) { + validator = entityKindSchemaValidator(schema); + } return validator(data) === data; }, }; From aa1f108fb309eb14e3410d655255b7f92df68705 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Tunkl?= Date: Wed, 21 Sep 2022 17:15:19 +0200 Subject: [PATCH 089/117] Update of OwnerPicker to pass correctly defaultNamespace value MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tomáš Tunkl --- .../src/components/fields/OwnerPicker/OwnerPicker.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/scaffolder/src/components/fields/OwnerPicker/OwnerPicker.tsx b/plugins/scaffolder/src/components/fields/OwnerPicker/OwnerPicker.tsx index 1cb95c4d3e..3de2b12bd0 100644 --- a/plugins/scaffolder/src/components/fields/OwnerPicker/OwnerPicker.tsx +++ b/plugins/scaffolder/src/components/fields/OwnerPicker/OwnerPicker.tsx @@ -44,6 +44,8 @@ export const OwnerPicker = ( ...restProps } = props; + const defaultNamespace = uiSchema['ui:options']?.defaultNamespace; + const ownerUiSchema = { ...uiSchema, 'ui:options': { @@ -54,7 +56,7 @@ export const OwnerPicker = ( defaultKind: 'Group', allowArbitraryValues: uiSchema['ui:options']?.allowArbitraryValues ?? true, - defaultNamespace: uiSchema['ui:options']?.defaultNamespace ?? '', + ...(defaultNamespace !== undefined ? { defaultNamespace } : {}), }, }; From 694bfe2d61ae39279d036ccf67166fdbf1ad27f1 Mon Sep 17 00:00:00 2001 From: OscarDHdz Date: Tue, 30 Aug 2022 16:44:12 -0500 Subject: [PATCH 090/117] Close scaffolder stale task executions Signed-off-by: OscarDHdz --- .changeset/tender-drinks-drive.md | 5 ++ app-config.yaml | 4 ++ plugins/scaffolder-backend/api-report.md | 16 +++++ plugins/scaffolder-backend/config.d.ts | 7 +++ .../src/scaffolder/tasks/DatabaseTaskStore.ts | 43 +++++++++++++ .../tasks/StorageTaskBroker.test.ts | 62 +++++++++++++++---- .../src/scaffolder/tasks/StorageTaskBroker.ts | 26 +++++++- .../src/scaffolder/tasks/TaskWorker.test.ts | 6 +- .../src/scaffolder/tasks/index.ts | 1 + .../src/scaffolder/tasks/types.ts | 14 +++++ .../src/service/router.test.ts | 17 ++--- .../scaffolder-backend/src/service/router.ts | 2 +- 12 files changed, 179 insertions(+), 24 deletions(-) create mode 100644 .changeset/tender-drinks-drive.md diff --git a/.changeset/tender-drinks-drive.md b/.changeset/tender-drinks-drive.md new file mode 100644 index 0000000000..0ea69832af --- /dev/null +++ b/.changeset/tender-drinks-drive.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend': minor +--- + +Add functionality to shutdown scaffolder tasks if they are stale diff --git a/app-config.yaml b/app-config.yaml index 22ca1fcaff..81b2a2ed56 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -276,6 +276,10 @@ scaffolder: # email: scaffolder@backstage.io # Use to customize the default commit message when new components are created # defaultCommitMessage: 'Initial commit' + # Use to customize when will stale tasks be marked as closed + # taskTimeout: + # ms: 3600000 # 1hr + # taskTimeoutMessage: 'This task was canceled as it timed out' auth: ### Add auth.keyStore.provider to more granularly control how to store JWK data when running diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md index 0d5fbcb31f..5b2474190a 100644 --- a/plugins/scaffolder-backend/api-report.md +++ b/plugins/scaffolder-backend/api-report.md @@ -499,6 +499,11 @@ export class DatabaseTaskStore implements TaskStore { taskId: string; }[]; }>; + // (undocumented) + shutdownTask({ + taskId, + message, + }: TaskStoreShutDownTaskOptions): Promise; } // @public @@ -741,6 +746,11 @@ export interface TaskStore { taskId: string; }[]; }>; + // (undocumented) + shutdownTask({ + taskId, + message, + }: TaskStoreShutDownTaskOptions): Promise; } // @public @@ -767,6 +777,12 @@ export type TaskStoreListEventsOptions = { after?: number | undefined; }; +// @public +export type TaskStoreShutDownTaskOptions = { + taskId: string; + message?: string | undefined; +}; + // @public export class TaskWorker { // (undocumented) diff --git a/plugins/scaffolder-backend/config.d.ts b/plugins/scaffolder-backend/config.d.ts index 7883284165..14b2a7e9f0 100644 --- a/plugins/scaffolder-backend/config.d.ts +++ b/plugins/scaffolder-backend/config.d.ts @@ -28,5 +28,12 @@ export interface Config { * The commit message used when new components are created. */ defaultCommitMessage?: string; + /** + * To mark stale tasks has closed + */ + taskTimeout?: { + ms?: number; + message?: string; + }; }; } diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts index 206dc2ac1d..b7cc4e03ef 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts @@ -32,6 +32,7 @@ import { TaskStoreListEventsOptions, TaskStoreCreateTaskOptions, TaskStoreCreateTaskResult, + TaskStoreShutDownTaskOptions, } from './types'; import { DateTime } from 'luxon'; @@ -380,4 +381,46 @@ export class DatabaseTaskStore implements TaskStore { }); return { events }; } + + async shutdownTask({ + taskId, + message, + }: TaskStoreShutDownTaskOptions): Promise { + const errorMessage = + message || `This task was marked as stale as it exceeded its timeout`; + + const statusStepEvents = (await this.listEvents({ taskId })).events.filter( + ({ body }) => body?.stepId, + ); + + const completedSteps = statusStepEvents + .filter( + ({ body: { status } }) => status === 'failed' || status === 'completed', + ) + .map(step => step.body.stepId); + + const hungProcessingSteps = statusStepEvents + .filter(({ body: { status } }) => status === 'processing') + .map(event => event.body.stepId) + .filter(step => !completedSteps.includes(step)); + + for (const step of hungProcessingSteps) { + await this.emitLogEvent({ + taskId, + body: { + message: errorMessage, + stepId: step, + status: 'failed', + }, + }); + } + + await this.completeTask({ + taskId, + status: 'failed', + eventBody: { + message: errorMessage, + }, + }); + } } diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts index 4fc142a991..79d6641491 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts @@ -41,6 +41,7 @@ async function createStore(): Promise { describe('StorageTaskBroker', () => { let storage: DatabaseTaskStore; const fakeSecrets = { backstageToken: 'secret' } as TaskSecrets; + const config = new ConfigReader({ scaffolder: { title: 'Blah' } }); beforeAll(async () => { storage = await createStore(); @@ -48,13 +49,13 @@ describe('StorageTaskBroker', () => { const logger = getVoidLogger(); it('should claim a dispatched work item', async () => { - const broker = new StorageTaskBroker(storage, logger); + const broker = new StorageTaskBroker(storage, logger, config); await broker.dispatch({ spec: {} as TaskSpec }); await expect(broker.claim()).resolves.toEqual(expect.any(TaskManager)); }); it('should wait for a dispatched work item', async () => { - const broker = new StorageTaskBroker(storage, logger); + const broker = new StorageTaskBroker(storage, logger, config); const promise = broker.claim(); await expect(Promise.race([promise, 'waiting'])).resolves.toBe('waiting'); @@ -64,7 +65,7 @@ describe('StorageTaskBroker', () => { }); it('should dispatch multiple items and claim them in order', async () => { - const broker = new StorageTaskBroker(storage, logger); + const broker = new StorageTaskBroker(storage, logger, config); await broker.dispatch({ spec: { steps: [{ id: 'a' }] } as TaskSpec }); await broker.dispatch({ spec: { steps: [{ id: 'b' }] } as TaskSpec }); await broker.dispatch({ spec: { steps: [{ id: 'c' }] } as TaskSpec }); @@ -81,14 +82,14 @@ describe('StorageTaskBroker', () => { }); it('should store secrets', async () => { - const broker = new StorageTaskBroker(storage, logger); + const broker = new StorageTaskBroker(storage, logger, config); await broker.dispatch({ spec: {} as TaskSpec, secrets: fakeSecrets }); const task = await broker.claim(); expect(task.secrets).toEqual(fakeSecrets); }, 10000); it('should complete a task', async () => { - const broker = new StorageTaskBroker(storage, logger); + const broker = new StorageTaskBroker(storage, logger, config); const dispatchResult = await broker.dispatch({ spec: {} as TaskSpec }); const task = await broker.claim(); await task.complete('completed'); @@ -97,7 +98,7 @@ describe('StorageTaskBroker', () => { }, 10000); it('should remove secrets after picking up a task', async () => { - const broker = new StorageTaskBroker(storage, logger); + const broker = new StorageTaskBroker(storage, logger, config); const dispatchResult = await broker.dispatch({ spec: {} as TaskSpec, secrets: fakeSecrets, @@ -109,7 +110,7 @@ describe('StorageTaskBroker', () => { }, 10000); it('should fail a task', async () => { - const broker = new StorageTaskBroker(storage, logger); + const broker = new StorageTaskBroker(storage, logger, config); const dispatchResult = await broker.dispatch({ spec: {} as TaskSpec }); const task = await broker.claim(); await task.complete('failed'); @@ -118,8 +119,8 @@ describe('StorageTaskBroker', () => { }); it('multiple brokers should be able to observe a single task', async () => { - const broker1 = new StorageTaskBroker(storage, logger); - const broker2 = new StorageTaskBroker(storage, logger); + const broker1 = new StorageTaskBroker(storage, logger, config); + const broker2 = new StorageTaskBroker(storage, logger, config); const { taskId } = await broker1.dispatch({ spec: {} as TaskSpec }); @@ -161,7 +162,7 @@ describe('StorageTaskBroker', () => { }); it('should heartbeat', async () => { - const broker = new StorageTaskBroker(storage, logger); + const broker = new StorageTaskBroker(storage, logger, config); const { taskId } = await broker.dispatch({ spec: {} as TaskSpec }); const task = await broker.claim(); @@ -179,7 +180,7 @@ describe('StorageTaskBroker', () => { }); it('should be update the status to failed if heartbeat fails', async () => { - const broker = new StorageTaskBroker(storage, logger); + const broker = new StorageTaskBroker(storage, logger, config); const { taskId } = await broker.dispatch({ spec: {} as TaskSpec }); const task = await broker.claim(); @@ -205,7 +206,7 @@ describe('StorageTaskBroker', () => { }); it('should list all tasks', async () => { - const broker = new StorageTaskBroker(storage, logger); + const broker = new StorageTaskBroker(storage, logger, config); const { taskId } = await broker.dispatch({ spec: {} as TaskSpec }); const promise = broker.list(); @@ -219,7 +220,7 @@ describe('StorageTaskBroker', () => { }); it('should list only tasks createdBy a specific user', async () => { - const broker = new StorageTaskBroker(storage, logger); + const broker = new StorageTaskBroker(storage, logger, config); const { taskId } = await broker.dispatch({ spec: {} as TaskSpec, createdBy: 'user:default/foo', @@ -230,4 +231,39 @@ describe('StorageTaskBroker', () => { const promise = broker.list({ createdBy: 'user:default/foo' }); await expect(promise).resolves.toEqual({ tasks: [task] }); }); + + it('should shut down task if task is stale', async () => { + const broker = new StorageTaskBroker( + storage, + logger, + new ConfigReader({ + scaffolder: { + taskTimeout: { + ms: -1, + }, + }, + }), + ); + const { taskId } = await broker.dispatch({ + spec: {} as TaskSpec, + }); + + jest.spyOn(storage, 'getTask').mockResolvedValueOnce({ + status: 'processing', + lastHeartbeatAt: new Date().toISOString(), + } as any); + + jest.spyOn(storage, 'getTask').mockResolvedValueOnce({ + status: 'completed', + } as any); + + jest + .spyOn(storage, 'shutdownTask') + .mockImplementationOnce(() => Promise.resolve()); + + const task = await broker.get(taskId); + + expect(storage.shutdownTask).toHaveBeenCalled(); + expect(task.status).toEqual('completed'); + }); }); diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts index 9e60bc7727..e7bdcfe2eb 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts @@ -27,6 +27,7 @@ import { SerializedTask, } from './types'; import { TaskBrokerDispatchOptions } from '.'; +import { Config } from '@backstage/config'; /** * TaskManager @@ -149,6 +150,7 @@ export class StorageTaskBroker implements TaskBroker { constructor( private readonly storage: TaskStore, private readonly logger: Logger, + private readonly config: Config, ) {} async list(options?: { @@ -200,11 +202,33 @@ export class StorageTaskBroker implements TaskBroker { }; } + private isStaleTask(task: SerializedTask) { + const { status, lastHeartbeatAt } = task; + if (status === 'processing' && lastHeartbeatAt) { + const timeDiff = + new Date().getTime() - new Date(lastHeartbeatAt).getTime(); + const timeoutLimit = + this.config.getOptionalNumber('scaffolder.taskTimeout.ms') || 3600000; + return timeDiff >= timeoutLimit; + } + return false; + } + /** * {@inheritdoc TaskBroker.get} */ async get(taskId: string): Promise { - return this.storage.getTask(taskId); + let task = await this.storage.getTask(taskId); + if (this.isStaleTask(task)) { + await this.storage.shutdownTask({ + taskId, + message: this.config.getOptionalString( + 'scaffolder.taskTimeout.message', + ), + }); + task = await this.storage.getTask(taskId); + } + return task; } /** diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.test.ts index ee8ae400c4..d856052b59 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.test.ts @@ -52,6 +52,8 @@ describe('TaskWorker', () => { const actionRegistry: TemplateActionRegistry = {} as TemplateActionRegistry; const workingDirectory = '/tmp/scaffolder'; + const config = new ConfigReader({ scaffolder: {} }); + const workflowRunner: NunjucksWorkflowRunner = { execute: jest.fn(), } as unknown as NunjucksWorkflowRunner; @@ -68,7 +70,7 @@ describe('TaskWorker', () => { const logger = getVoidLogger(); it('should call the default workflow runner when the apiVersion is beta3', async () => { - const broker = new StorageTaskBroker(storage, logger); + const broker = new StorageTaskBroker(storage, logger, config); const taskWorker = await TaskWorker.create({ logger, workingDirectory, @@ -99,7 +101,7 @@ describe('TaskWorker', () => { output: { testOutput: 'testmockoutput' }, }); - const broker = new StorageTaskBroker(storage, logger); + const broker = new StorageTaskBroker(storage, logger, config); const taskWorker = await TaskWorker.create({ logger, workingDirectory, diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/index.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/index.ts index 457c32d9b5..2af7d6a340 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/index.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/index.ts @@ -24,6 +24,7 @@ export type { TaskCompletionState, TaskStoreEmitOptions, TaskStoreListEventsOptions, + TaskStoreShutDownTaskOptions, SerializedTask, SerializedTaskEvent, TaskStatus, diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts index 4b63a0cdd3..d8f95c8423 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts @@ -156,6 +156,16 @@ export type TaskStoreListEventsOptions = { after?: number | undefined; }; +/** + * TaskStoreShutDownTaskOptions + * + * @public + */ +export type TaskStoreShutDownTaskOptions = { + taskId: string; + message?: string | undefined; +}; + /** * The options passed to {@link TaskStore.createTask} * @public @@ -201,6 +211,10 @@ export interface TaskStore { taskId, after, }: TaskStoreListEventsOptions): Promise<{ events: SerializedTaskEvent[] }>; + shutdownTask({ + taskId, + message, + }: TaskStoreShutDownTaskOptions): Promise; } export type WorkflowResponse = { output: { [key: string]: JsonValue } }; diff --git a/plugins/scaffolder-backend/src/service/router.test.ts b/plugins/scaffolder-backend/src/service/router.test.ts index 5e3c1c7278..a616892d50 100644 --- a/plugins/scaffolder-backend/src/service/router.test.ts +++ b/plugins/scaffolder-backend/src/service/router.test.ts @@ -131,13 +131,16 @@ describe('createRouter', () => { }, }; - describe('not providing an identity api', () => { - beforeEach(async () => { - const logger = getVoidLogger(); - const databaseTaskStore = await DatabaseTaskStore.create({ - database: createDatabase(), - }); - taskBroker = new StorageTaskBroker(databaseTaskStore, logger); + beforeEach(async () => { + const logger = getVoidLogger(); + const databaseTaskStore = await DatabaseTaskStore.create({ + database: createDatabase(), + }); + taskBroker = new StorageTaskBroker( + databaseTaskStore, + logger, + new ConfigReader({ scaffolder: {} }), + ); jest.spyOn(taskBroker, 'dispatch'); jest.spyOn(taskBroker, 'get'); diff --git a/plugins/scaffolder-backend/src/service/router.ts b/plugins/scaffolder-backend/src/service/router.ts index f8e24d1acf..cdd900d3e7 100644 --- a/plugins/scaffolder-backend/src/service/router.ts +++ b/plugins/scaffolder-backend/src/service/router.ts @@ -170,7 +170,7 @@ export async function createRouter( if (!options.taskBroker) { const databaseTaskStore = await DatabaseTaskStore.create({ database }); - taskBroker = new StorageTaskBroker(databaseTaskStore, logger); + taskBroker = new StorageTaskBroker(databaseTaskStore, logger, config); } else { taskBroker = options.taskBroker; } From 5ba17223eb6061e68d7d93073adc85bafd8df6f2 Mon Sep 17 00:00:00 2001 From: OscarDHdz Date: Fri, 2 Sep 2022 10:22:11 -0500 Subject: [PATCH 091/117] Fix DatabaseTaskStore.listStaleTask PG query Signed-off-by: OscarDHdz --- .../src/scaffolder/tasks/DatabaseTaskStore.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts index b7cc4e03ef..27e399b762 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts @@ -269,8 +269,7 @@ export class DatabaseTaskStore implements TaskStore { '<=', this.db.client.config.client.includes('sqlite3') ? this.db.raw(`datetime('now', ?)`, [`-${timeoutS} seconds`]) - : this.db.raw(`dateadd('second', ?, ?)`, [ - `-${timeoutS}`, + : this.db.raw(`? - interval '${timeoutS} seconds'`, [ this.db.fn.now(), ]), ); From 580dc724b4294ba16e1fea84647646575cf51fbe Mon Sep 17 00:00:00 2001 From: OscarDHdz Date: Fri, 2 Sep 2022 11:59:38 -0500 Subject: [PATCH 092/117] Close stale scaffolder tasks on schedule basis Signed-off-by: OscarDHdz --- app-config.yaml | 2 +- plugins/scaffolder-backend/api-report.md | 2 + plugins/scaffolder-backend/config.d.ts | 4 +- plugins/scaffolder-backend/package.json | 1 + .../tasks/StorageTaskBroker.test.ts | 35 ----------------- .../src/scaffolder/tasks/StorageTaskBroker.ts | 38 ++++++++----------- .../src/scaffolder/tasks/types.ts | 1 + .../src/service/router.test.ts | 31 +++++++-------- .../scaffolder-backend/src/service/router.ts | 11 ++++++ yarn.lock | 1 + 10 files changed, 50 insertions(+), 76 deletions(-) diff --git a/app-config.yaml b/app-config.yaml index 81b2a2ed56..de920ee1df 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -278,7 +278,7 @@ scaffolder: # defaultCommitMessage: 'Initial commit' # Use to customize when will stale tasks be marked as closed # taskTimeout: - # ms: 3600000 # 1hr + # seconds: 120 # taskTimeoutMessage: 'This task was canceled as it timed out' auth: diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md index 5b2474190a..7793b131b9 100644 --- a/plugins/scaffolder-backend/api-report.md +++ b/plugins/scaffolder-backend/api-report.md @@ -620,6 +620,8 @@ export interface TaskBroker { // (undocumented) claim(): Promise; // (undocumented) + closeStaleTasks(): Promise; + // (undocumented) dispatch( options: TaskBrokerDispatchOptions, ): Promise; diff --git a/plugins/scaffolder-backend/config.d.ts b/plugins/scaffolder-backend/config.d.ts index 14b2a7e9f0..51add2288d 100644 --- a/plugins/scaffolder-backend/config.d.ts +++ b/plugins/scaffolder-backend/config.d.ts @@ -29,10 +29,10 @@ export interface Config { */ defaultCommitMessage?: string; /** - * To mark stale tasks has closed + * To mark stale tasks as closed */ taskTimeout?: { - ms?: number; + seconds?: number; message?: string; }; }; diff --git a/plugins/scaffolder-backend/package.json b/plugins/scaffolder-backend/package.json index 2812150b39..35f7fe01e2 100644 --- a/plugins/scaffolder-backend/package.json +++ b/plugins/scaffolder-backend/package.json @@ -36,6 +36,7 @@ "dependencies": { "@backstage/backend-common": "workspace:^", "@backstage/backend-plugin-api": "workspace:^", + "@backstage/backend-tasks": "workspace:^", "@backstage/catalog-client": "workspace:^", "@backstage/catalog-model": "workspace:^", "@backstage/config": "workspace:^", diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts index 79d6641491..8275f77a17 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts @@ -231,39 +231,4 @@ describe('StorageTaskBroker', () => { const promise = broker.list({ createdBy: 'user:default/foo' }); await expect(promise).resolves.toEqual({ tasks: [task] }); }); - - it('should shut down task if task is stale', async () => { - const broker = new StorageTaskBroker( - storage, - logger, - new ConfigReader({ - scaffolder: { - taskTimeout: { - ms: -1, - }, - }, - }), - ); - const { taskId } = await broker.dispatch({ - spec: {} as TaskSpec, - }); - - jest.spyOn(storage, 'getTask').mockResolvedValueOnce({ - status: 'processing', - lastHeartbeatAt: new Date().toISOString(), - } as any); - - jest.spyOn(storage, 'getTask').mockResolvedValueOnce({ - status: 'completed', - } as any); - - jest - .spyOn(storage, 'shutdownTask') - .mockImplementationOnce(() => Promise.resolve()); - - const task = await broker.get(taskId); - - expect(storage.shutdownTask).toHaveBeenCalled(); - expect(task.status).toEqual('completed'); - }); }); diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts index e7bdcfe2eb..2c0a77173f 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts @@ -202,33 +202,11 @@ export class StorageTaskBroker implements TaskBroker { }; } - private isStaleTask(task: SerializedTask) { - const { status, lastHeartbeatAt } = task; - if (status === 'processing' && lastHeartbeatAt) { - const timeDiff = - new Date().getTime() - new Date(lastHeartbeatAt).getTime(); - const timeoutLimit = - this.config.getOptionalNumber('scaffolder.taskTimeout.ms') || 3600000; - return timeDiff >= timeoutLimit; - } - return false; - } - /** * {@inheritdoc TaskBroker.get} */ async get(taskId: string): Promise { - let task = await this.storage.getTask(taskId); - if (this.isStaleTask(task)) { - await this.storage.shutdownTask({ - taskId, - message: this.config.getOptionalString( - 'scaffolder.taskTimeout.message', - ), - }); - task = await this.storage.getTask(taskId); - } - return task; + return this.storage.getTask(taskId); } /** @@ -286,6 +264,20 @@ export class StorageTaskBroker implements TaskBroker { ); } + /** + * {@inheritdoc TaskBroker.closeStaleTasks} + */ + async closeStaleTasks(): Promise { + const timeoutS = + this.config.getOptionalNumber('scaffolder.taskTimeout.seconds') || 300; + const { tasks } = await this.storage.listStaleTasks({ timeoutS }); + + for (const task of tasks) { + this.logger.info(`Successfully closed stale task ${task.taskId}`); + await this.storage.shutdownTask(task); + } + } + private waitForDispatch() { return this.deferredDispatch.promise; } diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts index d8f95c8423..4ac515055e 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts @@ -128,6 +128,7 @@ export interface TaskBroker { options: TaskBrokerDispatchOptions, ): Promise; vacuumTasks(options: { timeoutS: number }): Promise; + closeStaleTasks(): Promise; event$(options: { taskId: string; after: number | undefined; diff --git a/plugins/scaffolder-backend/src/service/router.test.ts b/plugins/scaffolder-backend/src/service/router.test.ts index a616892d50..3848e8801d 100644 --- a/plugins/scaffolder-backend/src/service/router.test.ts +++ b/plugins/scaffolder-backend/src/service/router.test.ts @@ -131,16 +131,17 @@ describe('createRouter', () => { }, }; - beforeEach(async () => { - const logger = getVoidLogger(); - const databaseTaskStore = await DatabaseTaskStore.create({ - database: createDatabase(), - }); - taskBroker = new StorageTaskBroker( - databaseTaskStore, - logger, - new ConfigReader({ scaffolder: {} }), - ); + describe('not providing an identity api', () => { + beforeEach(async () => { + const logger = getVoidLogger(); + const databaseTaskStore = await DatabaseTaskStore.create({ + database: createDatabase(), + }); + taskBroker = new StorageTaskBroker( + databaseTaskStore, + logger, + new ConfigReader({ scaffolder: {} }), + ); jest.spyOn(taskBroker, 'dispatch'); jest.spyOn(taskBroker, 'get'); @@ -562,11 +563,9 @@ describe('createRouter', () => { 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).toHaveBeenCalledWith(`event: completion data: {"id":1,"taskId":"a-random-id","type":"completion","createdAt":"","body":{"message":"Finished!"}} - `); expect(taskBroker.event$).toHaveBeenCalledTimes(1); @@ -722,7 +721,11 @@ data: {"id":1,"taskId":"a-random-id","type":"completion","createdAt":"","body":{ const databaseTaskStore = await DatabaseTaskStore.create({ database: createDatabase(), }); - taskBroker = new StorageTaskBroker(databaseTaskStore, logger); + taskBroker = new StorageTaskBroker( + databaseTaskStore, + logger, + new ConfigReader({}), + ); jest.spyOn(taskBroker, 'dispatch'); jest.spyOn(taskBroker, 'get'); @@ -1142,11 +1145,9 @@ data: {"id":1,"taskId":"a-random-id","type":"completion","createdAt":"","body":{ 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).toHaveBeenCalledWith(`event: completion data: {"id":1,"taskId":"a-random-id","type":"completion","createdAt":"","body":{"message":"Finished!"}} - `); expect(taskBroker.event$).toHaveBeenCalledTimes(1); diff --git a/plugins/scaffolder-backend/src/service/router.ts b/plugins/scaffolder-backend/src/service/router.ts index cdd900d3e7..a1e938a8dd 100644 --- a/plugins/scaffolder-backend/src/service/router.ts +++ b/plugins/scaffolder-backend/src/service/router.ts @@ -15,6 +15,7 @@ */ import { PluginDatabaseManager, UrlReader } from '@backstage/backend-common'; +import { TaskScheduler } from '@backstage/backend-tasks'; import { CatalogApi } from '@backstage/catalog-client'; import { Entity, @@ -203,6 +204,16 @@ export async function createRouter( actionsToRegister.forEach(action => actionRegistry.register(action)); workers.forEach(worker => worker.start()); + const scheduler = TaskScheduler.fromConfig(config).forPlugin('scaffolder'); + await scheduler.scheduleTask({ + id: 'close_stale_tasks', + frequency: { cron: '*/5 * * * *' }, // every 5 minutes, also supports Duration + timeout: { minutes: 15 }, + fn: async () => { + await taskBroker.closeStaleTasks(); + }, + }); + const dryRunner = createDryRunner({ actionRegistry, integrations, diff --git a/yarn.lock b/yarn.lock index 7e6f645f58..bc0ca4bb6f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6345,6 +6345,7 @@ __metadata: dependencies: "@backstage/backend-common": "workspace:^" "@backstage/backend-plugin-api": "workspace:^" + "@backstage/backend-tasks": "workspace:^" "@backstage/backend-test-utils": "workspace:^" "@backstage/catalog-client": "workspace:^" "@backstage/catalog-model": "workspace:^" From 038ff2714a7f966c34b838535118b213da17a49b Mon Sep 17 00:00:00 2001 From: OscarDHdz Date: Wed, 7 Sep 2022 15:54:05 -0500 Subject: [PATCH 093/117] Cleanup Scaffolder: Close Stale Tasks Signed-off-by: OscarDHdz --- app-config.yaml | 4 -- plugins/scaffolder-backend/api-report.md | 15 ++----- plugins/scaffolder-backend/config.d.ts | 7 ---- .../src/scaffolder/tasks/DatabaseTaskStore.ts | 12 ++---- .../tasks/StorageTaskBroker.test.ts | 27 ++++++------- .../src/scaffolder/tasks/StorageTaskBroker.ts | 16 -------- .../src/scaffolder/tasks/TaskWorker.test.ts | 6 +-- .../src/scaffolder/tasks/types.ts | 7 +--- .../src/service/router.test.ts | 24 ++++++----- .../scaffolder-backend/src/service/router.ts | 40 +++++++++++++------ 10 files changed, 66 insertions(+), 92 deletions(-) diff --git a/app-config.yaml b/app-config.yaml index de920ee1df..22ca1fcaff 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -276,10 +276,6 @@ scaffolder: # email: scaffolder@backstage.io # Use to customize the default commit message when new components are created # defaultCommitMessage: 'Initial commit' - # Use to customize when will stale tasks be marked as closed - # taskTimeout: - # seconds: 120 - # taskTimeoutMessage: 'This task was canceled as it timed out' auth: ### Add auth.keyStore.provider to more granularly control how to store JWK data when running diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md index 7793b131b9..02a6f0d664 100644 --- a/plugins/scaffolder-backend/api-report.md +++ b/plugins/scaffolder-backend/api-report.md @@ -500,10 +500,7 @@ export class DatabaseTaskStore implements TaskStore { }[]; }>; // (undocumented) - shutdownTask({ - taskId, - message, - }: TaskStoreShutDownTaskOptions): Promise; + shutdownTask({ taskId }: TaskStoreShutDownTaskOptions): Promise; } // @public @@ -546,6 +543,8 @@ export interface RouterOptions { // (undocumented) database: PluginDatabaseManager; // (undocumented) + databaseTaskStore?: DatabaseTaskStore; + // (undocumented) identity?: IdentityApi; // (undocumented) logger: Logger; @@ -620,8 +619,6 @@ export interface TaskBroker { // (undocumented) claim(): Promise; // (undocumented) - closeStaleTasks(): Promise; - // (undocumented) dispatch( options: TaskBrokerDispatchOptions, ): Promise; @@ -749,10 +746,7 @@ export interface TaskStore { }[]; }>; // (undocumented) - shutdownTask({ - taskId, - message, - }: TaskStoreShutDownTaskOptions): Promise; + shutdownTask?({ taskId }: TaskStoreShutDownTaskOptions): Promise; } // @public @@ -782,7 +776,6 @@ export type TaskStoreListEventsOptions = { // @public export type TaskStoreShutDownTaskOptions = { taskId: string; - message?: string | undefined; }; // @public diff --git a/plugins/scaffolder-backend/config.d.ts b/plugins/scaffolder-backend/config.d.ts index 51add2288d..7883284165 100644 --- a/plugins/scaffolder-backend/config.d.ts +++ b/plugins/scaffolder-backend/config.d.ts @@ -28,12 +28,5 @@ export interface Config { * The commit message used when new components are created. */ defaultCommitMessage?: string; - /** - * To mark stale tasks as closed - */ - taskTimeout?: { - seconds?: number; - message?: string; - }; }; } diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts index 27e399b762..b61c3d2676 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts @@ -381,12 +381,8 @@ export class DatabaseTaskStore implements TaskStore { return { events }; } - async shutdownTask({ - taskId, - message, - }: TaskStoreShutDownTaskOptions): Promise { - const errorMessage = - message || `This task was marked as stale as it exceeded its timeout`; + async shutdownTask({ taskId }: TaskStoreShutDownTaskOptions): Promise { + const message = `This task was marked as stale as it exceeded its timeout`; const statusStepEvents = (await this.listEvents({ taskId })).events.filter( ({ body }) => body?.stepId, @@ -407,7 +403,7 @@ export class DatabaseTaskStore implements TaskStore { await this.emitLogEvent({ taskId, body: { - message: errorMessage, + message, stepId: step, status: 'failed', }, @@ -418,7 +414,7 @@ export class DatabaseTaskStore implements TaskStore { taskId, status: 'failed', eventBody: { - message: errorMessage, + message, }, }); } diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts index 8275f77a17..4fc142a991 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts @@ -41,7 +41,6 @@ async function createStore(): Promise { describe('StorageTaskBroker', () => { let storage: DatabaseTaskStore; const fakeSecrets = { backstageToken: 'secret' } as TaskSecrets; - const config = new ConfigReader({ scaffolder: { title: 'Blah' } }); beforeAll(async () => { storage = await createStore(); @@ -49,13 +48,13 @@ describe('StorageTaskBroker', () => { const logger = getVoidLogger(); it('should claim a dispatched work item', async () => { - const broker = new StorageTaskBroker(storage, logger, config); + const broker = new StorageTaskBroker(storage, logger); await broker.dispatch({ spec: {} as TaskSpec }); await expect(broker.claim()).resolves.toEqual(expect.any(TaskManager)); }); it('should wait for a dispatched work item', async () => { - const broker = new StorageTaskBroker(storage, logger, config); + const broker = new StorageTaskBroker(storage, logger); const promise = broker.claim(); await expect(Promise.race([promise, 'waiting'])).resolves.toBe('waiting'); @@ -65,7 +64,7 @@ describe('StorageTaskBroker', () => { }); it('should dispatch multiple items and claim them in order', async () => { - const broker = new StorageTaskBroker(storage, logger, config); + const broker = new StorageTaskBroker(storage, logger); await broker.dispatch({ spec: { steps: [{ id: 'a' }] } as TaskSpec }); await broker.dispatch({ spec: { steps: [{ id: 'b' }] } as TaskSpec }); await broker.dispatch({ spec: { steps: [{ id: 'c' }] } as TaskSpec }); @@ -82,14 +81,14 @@ describe('StorageTaskBroker', () => { }); it('should store secrets', async () => { - const broker = new StorageTaskBroker(storage, logger, config); + const broker = new StorageTaskBroker(storage, logger); await broker.dispatch({ spec: {} as TaskSpec, secrets: fakeSecrets }); const task = await broker.claim(); expect(task.secrets).toEqual(fakeSecrets); }, 10000); it('should complete a task', async () => { - const broker = new StorageTaskBroker(storage, logger, config); + const broker = new StorageTaskBroker(storage, logger); const dispatchResult = await broker.dispatch({ spec: {} as TaskSpec }); const task = await broker.claim(); await task.complete('completed'); @@ -98,7 +97,7 @@ describe('StorageTaskBroker', () => { }, 10000); it('should remove secrets after picking up a task', async () => { - const broker = new StorageTaskBroker(storage, logger, config); + const broker = new StorageTaskBroker(storage, logger); const dispatchResult = await broker.dispatch({ spec: {} as TaskSpec, secrets: fakeSecrets, @@ -110,7 +109,7 @@ describe('StorageTaskBroker', () => { }, 10000); it('should fail a task', async () => { - const broker = new StorageTaskBroker(storage, logger, config); + const broker = new StorageTaskBroker(storage, logger); const dispatchResult = await broker.dispatch({ spec: {} as TaskSpec }); const task = await broker.claim(); await task.complete('failed'); @@ -119,8 +118,8 @@ describe('StorageTaskBroker', () => { }); it('multiple brokers should be able to observe a single task', async () => { - const broker1 = new StorageTaskBroker(storage, logger, config); - const broker2 = new StorageTaskBroker(storage, logger, config); + const broker1 = new StorageTaskBroker(storage, logger); + const broker2 = new StorageTaskBroker(storage, logger); const { taskId } = await broker1.dispatch({ spec: {} as TaskSpec }); @@ -162,7 +161,7 @@ describe('StorageTaskBroker', () => { }); it('should heartbeat', async () => { - const broker = new StorageTaskBroker(storage, logger, config); + const broker = new StorageTaskBroker(storage, logger); const { taskId } = await broker.dispatch({ spec: {} as TaskSpec }); const task = await broker.claim(); @@ -180,7 +179,7 @@ describe('StorageTaskBroker', () => { }); it('should be update the status to failed if heartbeat fails', async () => { - const broker = new StorageTaskBroker(storage, logger, config); + const broker = new StorageTaskBroker(storage, logger); const { taskId } = await broker.dispatch({ spec: {} as TaskSpec }); const task = await broker.claim(); @@ -206,7 +205,7 @@ describe('StorageTaskBroker', () => { }); it('should list all tasks', async () => { - const broker = new StorageTaskBroker(storage, logger, config); + const broker = new StorageTaskBroker(storage, logger); const { taskId } = await broker.dispatch({ spec: {} as TaskSpec }); const promise = broker.list(); @@ -220,7 +219,7 @@ describe('StorageTaskBroker', () => { }); it('should list only tasks createdBy a specific user', async () => { - const broker = new StorageTaskBroker(storage, logger, config); + const broker = new StorageTaskBroker(storage, logger); const { taskId } = await broker.dispatch({ spec: {} as TaskSpec, createdBy: 'user:default/foo', diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts index 2c0a77173f..9e60bc7727 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts @@ -27,7 +27,6 @@ import { SerializedTask, } from './types'; import { TaskBrokerDispatchOptions } from '.'; -import { Config } from '@backstage/config'; /** * TaskManager @@ -150,7 +149,6 @@ export class StorageTaskBroker implements TaskBroker { constructor( private readonly storage: TaskStore, private readonly logger: Logger, - private readonly config: Config, ) {} async list(options?: { @@ -264,20 +262,6 @@ export class StorageTaskBroker implements TaskBroker { ); } - /** - * {@inheritdoc TaskBroker.closeStaleTasks} - */ - async closeStaleTasks(): Promise { - const timeoutS = - this.config.getOptionalNumber('scaffolder.taskTimeout.seconds') || 300; - const { tasks } = await this.storage.listStaleTasks({ timeoutS }); - - for (const task of tasks) { - this.logger.info(`Successfully closed stale task ${task.taskId}`); - await this.storage.shutdownTask(task); - } - } - private waitForDispatch() { return this.deferredDispatch.promise; } diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.test.ts index d856052b59..ee8ae400c4 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.test.ts @@ -52,8 +52,6 @@ describe('TaskWorker', () => { const actionRegistry: TemplateActionRegistry = {} as TemplateActionRegistry; const workingDirectory = '/tmp/scaffolder'; - const config = new ConfigReader({ scaffolder: {} }); - const workflowRunner: NunjucksWorkflowRunner = { execute: jest.fn(), } as unknown as NunjucksWorkflowRunner; @@ -70,7 +68,7 @@ describe('TaskWorker', () => { const logger = getVoidLogger(); it('should call the default workflow runner when the apiVersion is beta3', async () => { - const broker = new StorageTaskBroker(storage, logger, config); + const broker = new StorageTaskBroker(storage, logger); const taskWorker = await TaskWorker.create({ logger, workingDirectory, @@ -101,7 +99,7 @@ describe('TaskWorker', () => { output: { testOutput: 'testmockoutput' }, }); - const broker = new StorageTaskBroker(storage, logger, config); + const broker = new StorageTaskBroker(storage, logger); const taskWorker = await TaskWorker.create({ logger, workingDirectory, diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts index 4ac515055e..5d3f8113ee 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts @@ -128,7 +128,6 @@ export interface TaskBroker { options: TaskBrokerDispatchOptions, ): Promise; vacuumTasks(options: { timeoutS: number }): Promise; - closeStaleTasks(): Promise; event$(options: { taskId: string; after: number | undefined; @@ -164,7 +163,6 @@ export type TaskStoreListEventsOptions = { */ export type TaskStoreShutDownTaskOptions = { taskId: string; - message?: string | undefined; }; /** @@ -212,10 +210,7 @@ export interface TaskStore { taskId, after, }: TaskStoreListEventsOptions): Promise<{ events: SerializedTaskEvent[] }>; - shutdownTask({ - taskId, - message, - }: TaskStoreShutDownTaskOptions): Promise; + shutdownTask?({ taskId }: TaskStoreShutDownTaskOptions): Promise; } export type WorkflowResponse = { output: { [key: string]: JsonValue } }; diff --git a/plugins/scaffolder-backend/src/service/router.test.ts b/plugins/scaffolder-backend/src/service/router.test.ts index 3848e8801d..b13e955c15 100644 --- a/plugins/scaffolder-backend/src/service/router.test.ts +++ b/plugins/scaffolder-backend/src/service/router.test.ts @@ -27,6 +27,16 @@ import express from 'express'; import request from 'supertest'; import ObservableImpl from 'zen-observable'; +jest.mock('@backstage/backend-tasks', () => ({ + TaskScheduler: { + fromConfig: () => ({ + forPlugin: () => ({ + scheduleTask: jest.fn(), + }), + }), + }, +})); + /** * TODO: The following should import directly from the router file. * Due to a circular dependency between this plugin and the @@ -137,11 +147,7 @@ describe('createRouter', () => { const databaseTaskStore = await DatabaseTaskStore.create({ database: createDatabase(), }); - taskBroker = new StorageTaskBroker( - databaseTaskStore, - logger, - new ConfigReader({ scaffolder: {} }), - ); + taskBroker = new StorageTaskBroker(databaseTaskStore, logger); jest.spyOn(taskBroker, 'dispatch'); jest.spyOn(taskBroker, 'get'); @@ -155,6 +161,7 @@ describe('createRouter', () => { database: createDatabase(), catalogClient, reader: mockUrlReader, + databaseTaskStore, taskBroker, }); app = express().use(router); @@ -721,11 +728,7 @@ data: {"id":1,"taskId":"a-random-id","type":"completion","createdAt":"","body":{ const databaseTaskStore = await DatabaseTaskStore.create({ database: createDatabase(), }); - taskBroker = new StorageTaskBroker( - databaseTaskStore, - logger, - new ConfigReader({}), - ); + taskBroker = new StorageTaskBroker(databaseTaskStore, logger); jest.spyOn(taskBroker, 'dispatch'); jest.spyOn(taskBroker, 'get'); @@ -756,6 +759,7 @@ data: {"id":1,"taskId":"a-random-id","type":"completion","createdAt":"","body":{ database: createDatabase(), catalogClient, reader: mockUrlReader, + databaseTaskStore, taskBroker, identity: { getIdentity }, }); diff --git a/plugins/scaffolder-backend/src/service/router.ts b/plugins/scaffolder-backend/src/service/router.ts index a1e938a8dd..4abea52027 100644 --- a/plugins/scaffolder-backend/src/service/router.ts +++ b/plugins/scaffolder-backend/src/service/router.ts @@ -68,6 +68,7 @@ export interface RouterOptions { actions?: TemplateAction[]; taskWorkers?: number; taskBroker?: TaskBroker; + databaseTaskStore?: DatabaseTaskStore; additionalTemplateFilters?: Record; identity?: IdentityApi; } @@ -167,11 +168,17 @@ export async function createRouter( const workingDirectory = await getWorkingDirectory(config, logger); const integrations = ScmIntegrations.fromConfig(config); - let taskBroker: TaskBroker; + let databaseTaskStore: DatabaseTaskStore; + if (!options.databaseTaskStore) { + databaseTaskStore = await DatabaseTaskStore.create({ database }); + } else { + databaseTaskStore = options.databaseTaskStore; + } + + let taskBroker: TaskBroker; if (!options.taskBroker) { - const databaseTaskStore = await DatabaseTaskStore.create({ database }); - taskBroker = new StorageTaskBroker(databaseTaskStore, logger, config); + taskBroker = new StorageTaskBroker(databaseTaskStore, logger); } else { taskBroker = options.taskBroker; } @@ -204,15 +211,24 @@ export async function createRouter( actionsToRegister.forEach(action => actionRegistry.register(action)); workers.forEach(worker => worker.start()); - const scheduler = TaskScheduler.fromConfig(config).forPlugin('scaffolder'); - await scheduler.scheduleTask({ - id: 'close_stale_tasks', - frequency: { cron: '*/5 * * * *' }, // every 5 minutes, also supports Duration - timeout: { minutes: 15 }, - fn: async () => { - await taskBroker.closeStaleTasks(); - }, - }); + if (databaseTaskStore.shutdownTask) { + const scheduler = TaskScheduler.fromConfig(config).forPlugin('scaffolder'); + await scheduler.scheduleTask({ + id: 'close_stale_tasks', + frequency: { cron: '*/5 * * * *' }, // every 5 minutes, also supports Duration + timeout: { minutes: 15 }, + fn: async () => { + const { tasks } = await databaseTaskStore.listStaleTasks({ + timeoutS: 3600, + }); + + for (const task of tasks) { + logger.info(`Successfully closed stale task ${task.taskId}`); + await databaseTaskStore.shutdownTask(task); + } + }, + }); + } const dryRunner = createDryRunner({ actionRegistry, From cb69395b43aeaae8a854ef656c4aed254bcad6ce Mon Sep 17 00:00:00 2001 From: OscarDHdz Date: Thu, 8 Sep 2022 16:33:24 -0500 Subject: [PATCH 094/117] Scaffolder: Set router scheduler param Signed-off-by: OscarDHdz --- packages/backend/src/plugins/scaffolder.ts | 1 + plugins/scaffolder-backend/api-report.md | 7 +++++-- .../src/service/router.test.ts | 18 ++++++------------ .../scaffolder-backend/src/service/router.ts | 15 ++++++++------- 4 files changed, 20 insertions(+), 21 deletions(-) diff --git a/packages/backend/src/plugins/scaffolder.ts b/packages/backend/src/plugins/scaffolder.ts index 19da3b3ae0..d079b64c28 100644 --- a/packages/backend/src/plugins/scaffolder.ts +++ b/packages/backend/src/plugins/scaffolder.ts @@ -33,5 +33,6 @@ export default async function createPlugin( catalogClient: catalogClient, reader: env.reader, identity: env.identity, + scheduler: env.scheduler, }); } diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md index 02a6f0d664..3fb0b2631f 100644 --- a/plugins/scaffolder-backend/api-report.md +++ b/plugins/scaffolder-backend/api-report.md @@ -23,6 +23,7 @@ import { Logger } from 'winston'; import { Observable } from '@backstage/types'; import { Octokit } from 'octokit'; import { PluginDatabaseManager } from '@backstage/backend-common'; +import { PluginTaskScheduler } from '@backstage/backend-tasks'; import { Schema } from 'jsonschema'; import { ScmIntegrationRegistry } from '@backstage/integration'; import { ScmIntegrations } from '@backstage/integration'; @@ -543,16 +544,18 @@ export interface RouterOptions { // (undocumented) database: PluginDatabaseManager; // (undocumented) - databaseTaskStore?: DatabaseTaskStore; - // (undocumented) identity?: IdentityApi; // (undocumented) logger: Logger; // (undocumented) reader: UrlReader; // (undocumented) + scheduler?: PluginTaskScheduler; + // (undocumented) taskBroker?: TaskBroker; // (undocumented) + taskStore?: DatabaseTaskStore; + // (undocumented) taskWorkers?: number; } diff --git a/plugins/scaffolder-backend/src/service/router.test.ts b/plugins/scaffolder-backend/src/service/router.test.ts index b13e955c15..1df419fbb3 100644 --- a/plugins/scaffolder-backend/src/service/router.test.ts +++ b/plugins/scaffolder-backend/src/service/router.test.ts @@ -27,16 +27,6 @@ import express from 'express'; import request from 'supertest'; import ObservableImpl from 'zen-observable'; -jest.mock('@backstage/backend-tasks', () => ({ - TaskScheduler: { - fromConfig: () => ({ - forPlugin: () => ({ - scheduleTask: jest.fn(), - }), - }), - }, -})); - /** * TODO: The following should import directly from the router file. * Due to a circular dependency between this plugin and the @@ -161,7 +151,7 @@ describe('createRouter', () => { database: createDatabase(), catalogClient, reader: mockUrlReader, - databaseTaskStore, + taskStore: databaseTaskStore, taskBroker, }); app = express().use(router); @@ -570,9 +560,11 @@ describe('createRouter', () => { 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).toHaveBeenCalledWith(`event: completion data: {"id":1,"taskId":"a-random-id","type":"completion","createdAt":"","body":{"message":"Finished!"}} + `); expect(taskBroker.event$).toHaveBeenCalledTimes(1); @@ -759,7 +751,7 @@ data: {"id":1,"taskId":"a-random-id","type":"completion","createdAt":"","body":{ database: createDatabase(), catalogClient, reader: mockUrlReader, - databaseTaskStore, + taskStore: databaseTaskStore, taskBroker, identity: { getIdentity }, }); @@ -1149,9 +1141,11 @@ data: {"id":1,"taskId":"a-random-id","type":"completion","createdAt":"","body":{ 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).toHaveBeenCalledWith(`event: completion data: {"id":1,"taskId":"a-random-id","type":"completion","createdAt":"","body":{"message":"Finished!"}} + `); expect(taskBroker.event$).toHaveBeenCalledTimes(1); diff --git a/plugins/scaffolder-backend/src/service/router.ts b/plugins/scaffolder-backend/src/service/router.ts index 4abea52027..2a48b0f5d1 100644 --- a/plugins/scaffolder-backend/src/service/router.ts +++ b/plugins/scaffolder-backend/src/service/router.ts @@ -15,7 +15,7 @@ */ import { PluginDatabaseManager, UrlReader } from '@backstage/backend-common'; -import { TaskScheduler } from '@backstage/backend-tasks'; +import { PluginTaskScheduler } from '@backstage/backend-tasks'; import { CatalogApi } from '@backstage/catalog-client'; import { Entity, @@ -64,11 +64,12 @@ export interface RouterOptions { reader: UrlReader; database: PluginDatabaseManager; catalogClient: CatalogApi; + scheduler?: PluginTaskScheduler; actions?: TemplateAction[]; taskWorkers?: number; taskBroker?: TaskBroker; - databaseTaskStore?: DatabaseTaskStore; + taskStore?: DatabaseTaskStore; additionalTemplateFilters?: Record; identity?: IdentityApi; } @@ -158,6 +159,7 @@ export async function createRouter( catalogClient, actions, taskWorkers, + scheduler, additionalTemplateFilters, } = options; @@ -170,10 +172,10 @@ export async function createRouter( const integrations = ScmIntegrations.fromConfig(config); let databaseTaskStore: DatabaseTaskStore; - if (!options.databaseTaskStore) { + if (!options.taskStore) { databaseTaskStore = await DatabaseTaskStore.create({ database }); } else { - databaseTaskStore = options.databaseTaskStore; + databaseTaskStore = options.taskStore; } let taskBroker: TaskBroker; @@ -211,8 +213,7 @@ export async function createRouter( actionsToRegister.forEach(action => actionRegistry.register(action)); workers.forEach(worker => worker.start()); - if (databaseTaskStore.shutdownTask) { - const scheduler = TaskScheduler.fromConfig(config).forPlugin('scaffolder'); + if (scheduler && databaseTaskStore.listStaleTasks) { await scheduler.scheduleTask({ id: 'close_stale_tasks', frequency: { cron: '*/5 * * * *' }, // every 5 minutes, also supports Duration @@ -223,8 +224,8 @@ export async function createRouter( }); for (const task of tasks) { - logger.info(`Successfully closed stale task ${task.taskId}`); await databaseTaskStore.shutdownTask(task); + logger.info(`Successfully closed stale task ${task.taskId}`); } }, }); From ae60130b78f43a03be39c0f4b8c918ff066c388f Mon Sep 17 00:00:00 2001 From: OscarDHdz Date: Mon, 12 Sep 2022 10:03:18 -0500 Subject: [PATCH 095/117] Scaffolder: Make Close stale tasks default Signed-off-by: OscarDHdz --- plugins/scaffolder-backend/api-report.md | 2 - .../src/service/router.test.ts | 2 - .../scaffolder-backend/src/service/router.ts | 45 ++++++++----------- 3 files changed, 19 insertions(+), 30 deletions(-) diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md index 3fb0b2631f..35e3dab0b5 100644 --- a/plugins/scaffolder-backend/api-report.md +++ b/plugins/scaffolder-backend/api-report.md @@ -554,8 +554,6 @@ export interface RouterOptions { // (undocumented) taskBroker?: TaskBroker; // (undocumented) - taskStore?: DatabaseTaskStore; - // (undocumented) taskWorkers?: number; } diff --git a/plugins/scaffolder-backend/src/service/router.test.ts b/plugins/scaffolder-backend/src/service/router.test.ts index 1df419fbb3..5e3c1c7278 100644 --- a/plugins/scaffolder-backend/src/service/router.test.ts +++ b/plugins/scaffolder-backend/src/service/router.test.ts @@ -151,7 +151,6 @@ describe('createRouter', () => { database: createDatabase(), catalogClient, reader: mockUrlReader, - taskStore: databaseTaskStore, taskBroker, }); app = express().use(router); @@ -751,7 +750,6 @@ data: {"id":1,"taskId":"a-random-id","type":"completion","createdAt":"","body":{ database: createDatabase(), catalogClient, reader: mockUrlReader, - taskStore: databaseTaskStore, taskBroker, identity: { getIdentity }, }); diff --git a/plugins/scaffolder-backend/src/service/router.ts b/plugins/scaffolder-backend/src/service/router.ts index 2a48b0f5d1..a423e8afb6 100644 --- a/plugins/scaffolder-backend/src/service/router.ts +++ b/plugins/scaffolder-backend/src/service/router.ts @@ -69,7 +69,6 @@ export interface RouterOptions { actions?: TemplateAction[]; taskWorkers?: number; taskBroker?: TaskBroker; - taskStore?: DatabaseTaskStore; additionalTemplateFilters?: Record; identity?: IdentityApi; } @@ -171,16 +170,28 @@ export async function createRouter( const workingDirectory = await getWorkingDirectory(config, logger); const integrations = ScmIntegrations.fromConfig(config); - let databaseTaskStore: DatabaseTaskStore; - if (!options.taskStore) { - databaseTaskStore = await DatabaseTaskStore.create({ database }); - } else { - databaseTaskStore = options.taskStore; - } - let taskBroker: TaskBroker; if (!options.taskBroker) { + const databaseTaskStore = await DatabaseTaskStore.create({ database }); taskBroker = new StorageTaskBroker(databaseTaskStore, logger); + + if (scheduler && databaseTaskStore.listStaleTasks) { + await scheduler.scheduleTask({ + id: 'close_stale_tasks', + frequency: { cron: '*/5 * * * *' }, // every 5 minutes, also supports Duration + timeout: { minutes: 15 }, + fn: async () => { + const { tasks } = await databaseTaskStore.listStaleTasks({ + timeoutS: 3600, + }); + + for (const task of tasks) { + await databaseTaskStore.shutdownTask(task); + logger.info(`Successfully closed stale task ${task.taskId}`); + } + }, + }); + } } else { taskBroker = options.taskBroker; } @@ -213,24 +224,6 @@ export async function createRouter( actionsToRegister.forEach(action => actionRegistry.register(action)); workers.forEach(worker => worker.start()); - if (scheduler && databaseTaskStore.listStaleTasks) { - await scheduler.scheduleTask({ - id: 'close_stale_tasks', - frequency: { cron: '*/5 * * * *' }, // every 5 minutes, also supports Duration - timeout: { minutes: 15 }, - fn: async () => { - const { tasks } = await databaseTaskStore.listStaleTasks({ - timeoutS: 3600, - }); - - for (const task of tasks) { - await databaseTaskStore.shutdownTask(task); - logger.info(`Successfully closed stale task ${task.taskId}`); - } - }, - }); - } - const dryRunner = createDryRunner({ actionRegistry, integrations, From b3c9b051891ded01edc8e17e260dcdd3af5797bb Mon Sep 17 00:00:00 2001 From: OscarDHdz Date: Mon, 19 Sep 2022 13:12:32 -0500 Subject: [PATCH 096/117] Scaffolder: Bump stale task timeout from 1hr to 24hrs Signed-off-by: OscarDHdz --- plugins/scaffolder-backend/src/service/router.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/scaffolder-backend/src/service/router.ts b/plugins/scaffolder-backend/src/service/router.ts index a423e8afb6..28dd1ca413 100644 --- a/plugins/scaffolder-backend/src/service/router.ts +++ b/plugins/scaffolder-backend/src/service/router.ts @@ -182,7 +182,7 @@ export async function createRouter( timeout: { minutes: 15 }, fn: async () => { const { tasks } = await databaseTaskStore.listStaleTasks({ - timeoutS: 3600, + timeoutS: 86400, }); for (const task of tasks) { From 0c8d3347b4477cd117b85d6f711cdc693362b2b1 Mon Sep 17 00:00:00 2001 From: Paul Cowan Date: Wed, 21 Sep 2022 13:21:48 +0100 Subject: [PATCH 097/117] add docs entry for custom step layout Signed-off-by: Paul Cowan --- .../writing-custom-step-layouts.md | 84 +++++++++++++++++++ .../software-templates/writing-templates.md | 4 + 2 files changed, 88 insertions(+) create mode 100644 docs/features/software-templates/writing-custom-step-layouts.md diff --git a/docs/features/software-templates/writing-custom-step-layouts.md b/docs/features/software-templates/writing-custom-step-layouts.md new file mode 100644 index 0000000000..53b1ca342d --- /dev/null +++ b/docs/features/software-templates/writing-custom-step-layouts.md @@ -0,0 +1,84 @@ +--- +id: writing-custom-step-layouts +title: Writing custom step layouts +description: How to override the default step form layout +--- + +Every form in each step rendered in the frontend uses the default form layout from [react-json-schema-form](https://react-jsonschema-form.readthedocs.io/). It is possible to override this behaviour by supplying a `ui:ObjectFieldTemplate` property for a particular step: + +```yaml +parameters: + - title: Fill in some steps + ui:ObjectFieldTemplate: TwoColumn +``` + +This is the same [field](https://react-jsonschema-form.readthedocs.io/en/latest/advanced-customization/custom-templates/#objectfieldtemplate) used by [react-json-schema-form](https://react-jsonschema-form.readthedocs.io/) but we need to add a couple of steps to ensure that the string value of `TwoColumn` above is resolved to a react component. + +## Registering a React component as a custom step layout + +The [createScaffolderLayout](https://backstage.io/docs/reference/plugin-scaffolder.createscaffolderlayout) function is used to mark a component as a custom step layout: + +```ts +import React from 'react'; +import { + createScaffolderLayout, + LayoutTemplate, + scaffolderPlugin, +} from '@backstage/plugin-scaffolder'; +import { Grid } from '@material-ui/core'; + +const TwoColumn: LayoutTemplate = ({ properties, description, title }) => ( + <> +

{title}

+ + {properties.slice(0, mid).map(prop => ( + + {prop.content} + + ))} + {properties.slice(mid).map(prop => ( + + {prop.content} + + ))} + + {description} + +); + +export const TwoColumnLayout = scaffolderPlugin.provide( + createScaffolderLayout({ + name: 'TwoColumn', + component: TwoColumn, + }), +); +``` + +After you have registered your component as a custom layout then you need to provide the `layouts` to the `ScaffolderPage`: + +```tsx +import { MyCustomFieldExtension } from './scaffolder/MyCustomExtension'; +import { TwoColumnLayout } from './components/scaffolder/customScaffolderLayouts'; + +const routes = ( + + ... + }> + + + + + ... + +); +``` + +## Using the custom step layout + +Any component that has been passed to the `ScaffolderPage` as children of the `ScaffolderLayouts` component can be used as a `ui:ObjectFieldTemplate` in your template file: + +```yaml +parameters: + - title: Fill in some steps + ui:ObjectFieldTemplate: TwoColumn +``` diff --git a/docs/features/software-templates/writing-templates.md b/docs/features/software-templates/writing-templates.md index a1cd50f271..3baf642f24 100644 --- a/docs/features/software-templates/writing-templates.md +++ b/docs/features/software-templates/writing-templates.md @@ -258,6 +258,10 @@ use `ui:widget: password` or set some properties of `ui:backstage`: show: false # won't print any info about 'hidden' property on Review Step ``` +### Custom step layouts + +If you find the default layout of the form in used in a particular step does not meet your needs then you can supply your own [custom step layout](./writing-custom-step-layouts.md). + ### Remove sections or fields based on feature flags Based on feature flags you can hide sections or even only fields of your From 2b908d00b797835ee1f536b1f5a09bd2a433b9c9 Mon Sep 17 00:00:00 2001 From: Paul Date: Wed, 21 Sep 2022 16:32:07 +0100 Subject: [PATCH 098/117] Update docs/features/software-templates/writing-templates.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Fredrik Adelöw Signed-off-by: Paul Signed-off-by: Paul Cowan --- docs/features/software-templates/writing-templates.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/features/software-templates/writing-templates.md b/docs/features/software-templates/writing-templates.md index 3baf642f24..826121bd02 100644 --- a/docs/features/software-templates/writing-templates.md +++ b/docs/features/software-templates/writing-templates.md @@ -260,7 +260,7 @@ use `ui:widget: password` or set some properties of `ui:backstage`: ### Custom step layouts -If you find the default layout of the form in used in a particular step does not meet your needs then you can supply your own [custom step layout](./writing-custom-step-layouts.md). +If you find that the default layout of the form used in a particular step does not meet your needs then you can supply your own [custom step layout](./writing-custom-step-layouts.md). ### Remove sections or fields based on feature flags From ff4f8bb9e58b2e8e83087066a9dcfc7f4366792b Mon Sep 17 00:00:00 2001 From: Paul Cowan Date: Wed, 21 Sep 2022 18:03:09 +0100 Subject: [PATCH 099/117] add writing-custom-step-layouts to sidebars.json Signed-off-by: Paul Cowan --- .../writing-custom-step-layouts.md | 41 +++++++++++-------- microsite/sidebars.json | 1 + .../scaffolder/customScaffolderLayouts.tsx | 1 - 3 files changed, 24 insertions(+), 19 deletions(-) diff --git a/docs/features/software-templates/writing-custom-step-layouts.md b/docs/features/software-templates/writing-custom-step-layouts.md index 53b1ca342d..69d61b93dc 100644 --- a/docs/features/software-templates/writing-custom-step-layouts.md +++ b/docs/features/software-templates/writing-custom-step-layouts.md @@ -27,24 +27,29 @@ import { } from '@backstage/plugin-scaffolder'; import { Grid } from '@material-ui/core'; -const TwoColumn: LayoutTemplate = ({ properties, description, title }) => ( - <> -

{title}

- - {properties.slice(0, mid).map(prop => ( - - {prop.content} - - ))} - {properties.slice(mid).map(prop => ( - - {prop.content} - - ))} - - {description} - -); +const TwoColumn: LayoutTemplate = ({ properties, description, title }) => { + const mid = Math.ceil(properties.length / 2); + + return ( + <> +

{title}

+

In two column layout!!

+ + {properties.slice(0, mid).map(prop => ( + + {prop.content} + + ))} + {properties.slice(mid).map(prop => ( + + {prop.content} + + ))} + + {description} + + ); +}; export const TwoColumnLayout = scaffolderPlugin.provide( createScaffolderLayout({ diff --git a/microsite/sidebars.json b/microsite/sidebars.json index 44d8e12869..dd1ea30e2e 100644 --- a/microsite/sidebars.json +++ b/microsite/sidebars.json @@ -97,6 +97,7 @@ "features/software-templates/builtin-actions", "features/software-templates/writing-custom-actions", "features/software-templates/writing-custom-field-extensions", + "features/software-templates/writing-custom-step-layouts", "features/software-templates/migrating-from-v1beta2-to-v1beta3" ] }, diff --git a/packages/app/src/components/scaffolder/customScaffolderLayouts.tsx b/packages/app/src/components/scaffolder/customScaffolderLayouts.tsx index 8dc6e5340a..b23d6e4073 100644 --- a/packages/app/src/components/scaffolder/customScaffolderLayouts.tsx +++ b/packages/app/src/components/scaffolder/customScaffolderLayouts.tsx @@ -28,7 +28,6 @@ const TwoColumn: LayoutTemplate = ({ properties, description, title }) => { return ( <>

{title}

-

In two column layout!!

{left.map(prop => ( From 54ad27833fd0c67107f055d009bb7bcc61f647d7 Mon Sep 17 00:00:00 2001 From: Paul Cowan Date: Wed, 21 Sep 2022 18:11:04 +0100 Subject: [PATCH 100/117] add writing-custom-step-layouts to mkdocs.yml Signed-off-by: Paul Cowan --- mkdocs.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/mkdocs.yml b/mkdocs.yml index c0a8e3a182..8c86ae095d 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -64,6 +64,7 @@ nav: - Writing Templates: 'features/software-templates/writing-templates.md' - Builtin Actions: 'features/software-templates/builtin-actions.md' - Writing Custom Actions: 'features/software-templates/writing-custom-actions.md' + - Writing Custom Step Layouts: 'features/software-templates/writing-custom-step-layouts.md' - Writing Templates (Legacy): 'features/software-templates/legacy.md' - Migrating from v1alpha1 to v1beta2 templates: 'features/software-templates/migrating-from-v1alpha1-to-v1beta2.md' - Backstage Search: From 51af8361dea2b8a08170ccafa51b7c7396ce9fdf Mon Sep 17 00:00:00 2001 From: Matthew Clarke Date: Wed, 21 Sep 2022 14:05:05 -0400 Subject: [PATCH 101/117] feat(kubernetes): Add custom resource fetch hook (#13736) * feat(kubernetes): wip crd hook Signed-off-by: Matthew Clarke * refactor hooks Signed-off-by: Matthew Clarke * fix tests Signed-off-by: Matthew Clarke * changeset Signed-off-by: Matthew Clarke * api reports Signed-off-by: Matthew Clarke * typo Signed-off-by: Matthew Clarke Signed-off-by: Matthew Clarke --- .changeset/lazy-fireants-check.md | 5 + plugins/kubernetes/api-report.md | 10 + plugins/kubernetes/dev/index.tsx | 22 +- plugins/kubernetes/src/hooks/auth.test.ts | 126 +++++++++ plugins/kubernetes/src/hooks/auth.ts | 50 ++++ plugins/kubernetes/src/hooks/index.ts | 1 + plugins/kubernetes/src/hooks/types.ts | 23 ++ .../src/hooks/useCustomResources.test.ts | 256 ++++++++++++++++++ .../src/hooks/useCustomResources.ts | 75 +++++ .../src/hooks/useKubernetesObjects.test.ts | 185 +++---------- .../src/hooks/useKubernetesObjects.ts | 91 ++----- 11 files changed, 628 insertions(+), 216 deletions(-) create mode 100644 .changeset/lazy-fireants-check.md create mode 100644 plugins/kubernetes/src/hooks/auth.test.ts create mode 100644 plugins/kubernetes/src/hooks/auth.ts create mode 100644 plugins/kubernetes/src/hooks/types.ts create mode 100644 plugins/kubernetes/src/hooks/useCustomResources.test.ts create mode 100644 plugins/kubernetes/src/hooks/useCustomResources.ts diff --git a/.changeset/lazy-fireants-check.md b/.changeset/lazy-fireants-check.md new file mode 100644 index 0000000000..234501b07a --- /dev/null +++ b/.changeset/lazy-fireants-check.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes': patch +--- + +Add useCustomResources react hook for fetching Kubernetes Custom Resources diff --git a/plugins/kubernetes/api-report.md b/plugins/kubernetes/api-report.md index b7ec80aee3..3e1b2f0198 100644 --- a/plugins/kubernetes/api-report.md +++ b/plugins/kubernetes/api-report.md @@ -11,6 +11,7 @@ import { ClientPodStatus } from '@backstage/plugin-kubernetes-common'; import { ClusterAttributes } from '@backstage/plugin-kubernetes-common'; import { ClusterObjects } from '@backstage/plugin-kubernetes-common'; import { CustomObjectsByEntityRequest } from '@backstage/plugin-kubernetes-common'; +import { CustomResourceMatcher } from '@backstage/plugin-kubernetes-common'; import { DiscoveryApi } from '@backstage/core-plugin-api'; import { Entity } from '@backstage/catalog-model'; import { IdentityApi } from '@backstage/core-plugin-api'; @@ -358,6 +359,8 @@ export interface KubernetesObjects { error?: string; // (undocumented) kubernetesObjects?: ObjectsByEntityResponse; + // (undocumented) + loading: boolean; } // Warning: (ae-missing-release-tag) "kubernetesPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) @@ -421,6 +424,13 @@ export class ServerSideKubernetesAuthProvider // @public (undocumented) export const ServicesAccordions: ({}: ServicesAccordionsProps) => JSX.Element; +// @public +export const useCustomResources: ( + entity: Entity, + customResourceMatchers: CustomResourceMatcher[], + intervalMs?: number, +) => KubernetesObjects; + // Warning: (ae-missing-release-tag) "useKubernetesObjects" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) diff --git a/plugins/kubernetes/dev/index.tsx b/plugins/kubernetes/dev/index.tsx index 05fcdefc8a..77708f1287 100644 --- a/plugins/kubernetes/dev/index.tsx +++ b/plugins/kubernetes/dev/index.tsx @@ -64,12 +64,30 @@ class MockKubernetesClient implements KubernetesApi { async getWorkloadsByEntity( _request: WorkloadsByEntityRequest, ): Promise { - throw new Error('Method not implemented.'); + return { + items: [ + { + cluster: { name: 'mock-cluster' }, + resources: this.resources, + podMetrics: [], + errors: [], + }, + ], + }; } async getCustomObjectsByEntity( _request: CustomObjectsByEntityRequest, ): Promise { - throw new Error('Method not implemented.'); + return { + items: [ + { + cluster: { name: 'mock-cluster' }, + resources: this.resources, + podMetrics: [], + errors: [], + }, + ], + }; } async getObjectsByEntity(): Promise { diff --git a/plugins/kubernetes/src/hooks/auth.test.ts b/plugins/kubernetes/src/hooks/auth.test.ts new file mode 100644 index 0000000000..aa2b9afb0d --- /dev/null +++ b/plugins/kubernetes/src/hooks/auth.test.ts @@ -0,0 +1,126 @@ +/* + * 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 { Entity } from '@backstage/catalog-model'; +import { generateAuth } from './auth'; + +jest.mock('@backstage/core-plugin-api'); + +const entity = { + metadata: { + name: 'some-entity', + }, +} as Entity; + +const entityWithAuthToken = { + auth: { + google: 'some-token', + }, + entity, +}; + +const getClustersResponse = [ + { + name: 'cluster-a', + authProvider: 'google', + }, + { + name: 'cluster-b', + authProvider: 'authprovider2', + }, +]; + +describe('generateAuth', () => { + const mockGetClusters = jest.fn(); + const mockDecorateRequestBodyForAuth = jest.fn(); + + const expectMocksCalledCorrectly = (numOfCalls: number = 1) => { + expect(mockGetClusters).toHaveBeenCalledTimes(numOfCalls); + expect(mockGetClusters).toHaveBeenLastCalledWith(); + expect(mockDecorateRequestBodyForAuth).toHaveBeenCalledTimes( + numOfCalls * 2, + ); + expect(mockDecorateRequestBodyForAuth).toHaveBeenCalledWith('google', { + entity, + }); + expect(mockDecorateRequestBodyForAuth).toHaveBeenCalledWith( + 'authprovider2', + entityWithAuthToken, + ); + }; + + afterEach(() => { + jest.resetAllMocks(); + }); + it('should return auth', async () => { + const result = await generateAuth( + entity, + { + getClusters: mockGetClusters.mockResolvedValue(getClustersResponse), + } as any, + { + decorateRequestBodyForAuth: + mockDecorateRequestBodyForAuth.mockResolvedValue(entityWithAuthToken), + } as any, + ); + + expect(result).toStrictEqual({ + google: 'some-token', + }); + expectMocksCalledCorrectly(); + }); + + it('should return error when getClusters throws', async () => { + await expect( + generateAuth( + entity, + { + getClusters: mockGetClusters.mockRejectedValue('some-cluster-error'), + } as any, + { + decorateRequestBodyForAuth: mockDecorateRequestBodyForAuth, + } as any, + ), + ).rejects.toBe('some-cluster-error'); + + expect(mockGetClusters).toHaveBeenCalledTimes(1); + expect(mockGetClusters).toHaveBeenLastCalledWith(); + expect(mockDecorateRequestBodyForAuth).toHaveBeenCalledTimes(0); + }); + it('should return error when decorateRequestBodyForAuth throws', async () => { + await expect( + generateAuth( + entity, + { + getClusters: mockGetClusters.mockResolvedValue(getClustersResponse), + } as any, + { + decorateRequestBodyForAuth: + mockDecorateRequestBodyForAuth.mockRejectedValue( + 'some-decorate-error', + ), + } as any, + ), + ).rejects.toBe('some-decorate-error'); + + expect(mockGetClusters).toHaveBeenCalledTimes(1); + expect(mockGetClusters).toHaveBeenLastCalledWith(); + expect(mockDecorateRequestBodyForAuth).toHaveBeenCalledTimes(1); + expect(mockDecorateRequestBodyForAuth).toHaveBeenCalledWith('google', { + entity, + }); + }); +}); diff --git a/plugins/kubernetes/src/hooks/auth.ts b/plugins/kubernetes/src/hooks/auth.ts new file mode 100644 index 0000000000..cce0bc27d6 --- /dev/null +++ b/plugins/kubernetes/src/hooks/auth.ts @@ -0,0 +1,50 @@ +/* + * 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 { Entity } from '@backstage/catalog-model'; +import { KubernetesApi } from '../api/types'; +import { KubernetesAuthProvidersApi } from '../kubernetes-auth-provider/types'; +import { KubernetesRequestBody } from '@backstage/plugin-kubernetes-common'; + +export const generateAuth = async ( + entity: Entity, + kubernetesApi: KubernetesApi, + kubernetesAuthProvidersApi: KubernetesAuthProvidersApi, +) => { + const clusters = await kubernetesApi.getClusters(); + + const authProviders: string[] = [ + ...new Set( + clusters.map( + c => + `${c.authProvider}${ + c.oidcTokenProvider ? `.${c.oidcTokenProvider}` : '' + }`, + ), + ), + ]; + + let requestBody: KubernetesRequestBody = { + entity, + }; + for (const authProviderStr of authProviders) { + requestBody = await kubernetesAuthProvidersApi.decorateRequestBodyForAuth( + authProviderStr, + requestBody, + ); + } + return requestBody.auth ?? {}; +}; diff --git a/plugins/kubernetes/src/hooks/index.ts b/plugins/kubernetes/src/hooks/index.ts index 0a5835eee4..c3968a19b2 100644 --- a/plugins/kubernetes/src/hooks/index.ts +++ b/plugins/kubernetes/src/hooks/index.ts @@ -15,6 +15,7 @@ */ export * from './useKubernetesObjects'; +export * from './useCustomResources'; export * from './PodNamesWithErrors'; export * from './PodNamesWithMetrics'; export * from './GroupedResponses'; diff --git a/plugins/kubernetes/src/hooks/types.ts b/plugins/kubernetes/src/hooks/types.ts new file mode 100644 index 0000000000..0796089baf --- /dev/null +++ b/plugins/kubernetes/src/hooks/types.ts @@ -0,0 +1,23 @@ +/* + * 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 { ObjectsByEntityResponse } from '@backstage/plugin-kubernetes-common'; + +export interface KubernetesObjects { + kubernetesObjects: ObjectsByEntityResponse; + loading: boolean; + error: string; +} diff --git a/plugins/kubernetes/src/hooks/useCustomResources.test.ts b/plugins/kubernetes/src/hooks/useCustomResources.test.ts new file mode 100644 index 0000000000..abd8fc392c --- /dev/null +++ b/plugins/kubernetes/src/hooks/useCustomResources.test.ts @@ -0,0 +1,256 @@ +/* + * Copyright 2021 The 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 { useCustomResources } from './useCustomResources'; +import { Entity } from '@backstage/catalog-model'; +import { renderHook } from '@testing-library/react-hooks'; +import { useApi } from '@backstage/core-plugin-api'; +import { CustomResourceMatcher } from '@backstage/plugin-kubernetes-common'; +import { generateAuth } from './auth'; + +jest.mock('@backstage/core-plugin-api'); + +const entity = { + metadata: { + name: 'some-entity', + }, +} as Entity; + +const customResourceMatchers: CustomResourceMatcher[] = [ + { + group: 'myGroup', + apiVersion: 'v1', + plural: 'thing', + }, +]; + +const entityWithAuthToken = { + auth: { + google: 'some-token', + }, + customResources: customResourceMatchers, + entity, +}; + +const mockResponse = { + items: [ + { + cluster: { name: 'some-cluster' }, + resources: [ + { + type: 'pods', + resources: [ + { + metadata: { + name: 'some-pod', + }, + }, + ], + }, + ], + errors: [], + }, + ], +}; + +jest.mock('./auth', () => { + return { + ...jest.requireActual('./auth'), + generateAuth: jest.fn(), + }; +}); + +describe('useCustomResources', () => { + const mockGetCustomObjectsByEntity = jest.fn(); + const mockGenerateAuth = generateAuth as jest.Mock; + + const expectMocksCalledCorrectly = (numOfCalls: number = 1) => { + expect(mockGenerateAuth).toHaveBeenCalledTimes(numOfCalls); + expect(mockGenerateAuth.mock.calls[numOfCalls - 1][0]).toStrictEqual( + entity, + ); + expect(mockGetCustomObjectsByEntity).toHaveBeenCalledTimes(numOfCalls); + expect(mockGetCustomObjectsByEntity).toHaveBeenLastCalledWith( + entityWithAuthToken, + ); + }; + + afterEach(() => { + jest.resetAllMocks(); + }); + it('should return objects', async () => { + mockGenerateAuth.mockResolvedValue(entityWithAuthToken.auth); + (useApi as any).mockReturnValue({ + getCustomObjectsByEntity: + mockGetCustomObjectsByEntity.mockResolvedValue(mockResponse), + }); + const { result, waitForNextUpdate } = renderHook(() => + useCustomResources(entity, customResourceMatchers), + ); + + expect(result.current.loading).toEqual(true); + + await waitForNextUpdate(); + + expect(result.current.error).toBeUndefined(); + expect(result.current.loading).toEqual(false); + expect(result.current.kubernetesObjects).toStrictEqual(mockResponse); + + expectMocksCalledCorrectly(); + }); + it('should update on an interval', async () => { + mockGenerateAuth.mockResolvedValue(entityWithAuthToken.auth); + (useApi as any).mockReturnValue({ + getCustomObjectsByEntity: + mockGetCustomObjectsByEntity.mockResolvedValue(mockResponse), + }); + const { result, waitForNextUpdate } = renderHook(() => + useCustomResources(entity, customResourceMatchers, 100), + ); + + await waitForNextUpdate(); + expect(result.current.error).toBeUndefined(); + + await waitForNextUpdate(); + + expect(result.current.error).toBeUndefined(); + expect(result.current.loading).toEqual(false); + expect(result.current.kubernetesObjects).toStrictEqual(mockResponse); + + expectMocksCalledCorrectly(2); + }); + it('should return error when getObjectsByEntity throws', async () => { + mockGenerateAuth.mockResolvedValue(entityWithAuthToken.auth); + (useApi as any).mockReturnValue({ + getCustomObjectsByEntity: mockGetCustomObjectsByEntity.mockRejectedValue({ + message: 'some error', + }), + }); + const { result, waitForNextUpdate } = renderHook(() => + useCustomResources(entity, customResourceMatchers), + ); + + await waitForNextUpdate(); + + expect(result.current.error).toBe('some error'); + expect(result.current.loading).toEqual(false); + expect(result.current.kubernetesObjects).toBeUndefined(); + + expectMocksCalledCorrectly(); + }); + + describe('when retrying', () => { + it('should reset error after generateAuth has failed and then succeeded', async () => { + (useApi as any).mockReturnValue({ + generateAuth: mockGenerateAuth + .mockRejectedValueOnce({ message: 'generateAuth failed' }) + .mockResolvedValue(entityWithAuthToken.auth), + getCustomObjectsByEntity: + mockGetCustomObjectsByEntity.mockResolvedValue(mockResponse), + }); + + const { result, waitForNextUpdate } = renderHook(() => + useCustomResources(entity, customResourceMatchers, 100), + ); + + await waitForNextUpdate(); + + expect(result.current.error).toBe('generateAuth failed'); + expect(result.current.loading).toEqual(false); + expect(result.current.kubernetesObjects).toBeUndefined(); + + await waitForNextUpdate(); + + expect(result.current.error).toBeUndefined(); + expect(result.current.loading).toEqual(false); + expect(result.current.kubernetesObjects).not.toBeUndefined(); + }); + + it('should reset error after getCustomObjectsByEntity has failed and then succeeded', async () => { + (useApi as any).mockReturnValue({ + getCustomObjectsByEntity: mockGetCustomObjectsByEntity + .mockRejectedValueOnce({ message: 'failed to fetch' }) + .mockResolvedValue(mockResponse), + }); + + const { result, waitForNextUpdate } = renderHook(() => + useCustomResources(entity, customResourceMatchers, 100), + ); + + await waitForNextUpdate(); + + expect(result.current.error).toBe('failed to fetch'); + expect(result.current.loading).toEqual(false); + expect(result.current.kubernetesObjects).toBeUndefined(); + + await waitForNextUpdate(); + + expect(result.current.error).toBeUndefined(); + expect(result.current.loading).toEqual(false); + expect(result.current.kubernetesObjects).not.toBeUndefined(); + }); + + it('should reset data after generateAuth succeeded then failed', async () => { + (useApi as any).mockReturnValue({ + generateAuth: mockGenerateAuth + .mockResolvedValueOnce(entityWithAuthToken.auth) + .mockRejectedValue({ message: 'generateAuth failed' }), + getCustomObjectsByEntity: + mockGetCustomObjectsByEntity.mockResolvedValue(mockResponse), + }); + + const { result, waitForNextUpdate } = renderHook(() => + useCustomResources(entity, customResourceMatchers, 100), + ); + + await waitForNextUpdate(); + + expect(result.current.error).toBeUndefined(); + expect(result.current.loading).toEqual(false); + expect(result.current.kubernetesObjects).not.toBeUndefined(); + + await waitForNextUpdate(); + + expect(result.current.error).toBe('generateAuth failed'); + expect(result.current.loading).toEqual(false); + expect(result.current.kubernetesObjects).toBeUndefined(); + }); + + it('should reset data after getCustomObjectsByEntity succeeded then failed', async () => { + (useApi as any).mockReturnValue({ + getCustomObjectsByEntity: mockGetCustomObjectsByEntity + .mockResolvedValueOnce(mockResponse) + .mockRejectedValue({ message: 'failed to fetch' }), + }); + + const { result, waitForNextUpdate } = renderHook(() => + useCustomResources(entity, customResourceMatchers, 100), + ); + + await waitForNextUpdate(); + + expect(result.current.error).toBeUndefined(); + expect(result.current.loading).toEqual(false); + expect(result.current.kubernetesObjects).not.toBeUndefined(); + + await waitForNextUpdate(); + + expect(result.current.error).toBe('failed to fetch'); + expect(result.current.loading).toEqual(false); + expect(result.current.kubernetesObjects).toBeUndefined(); + }); + }); +}); diff --git a/plugins/kubernetes/src/hooks/useCustomResources.ts b/plugins/kubernetes/src/hooks/useCustomResources.ts new file mode 100644 index 0000000000..c0ec7d91ea --- /dev/null +++ b/plugins/kubernetes/src/hooks/useCustomResources.ts @@ -0,0 +1,75 @@ +/* + * 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 { Entity } from '@backstage/catalog-model'; +import { kubernetesApiRef } from '../api/types'; +import { kubernetesAuthProvidersApiRef } from '../kubernetes-auth-provider/types'; +import { useCallback } from 'react'; +import useInterval from 'react-use/lib/useInterval'; +import { + CustomResourceMatcher, + ObjectsByEntityResponse, +} from '@backstage/plugin-kubernetes-common'; +import { useApi } from '@backstage/core-plugin-api'; +import { KubernetesObjects } from './useKubernetesObjects'; +import { generateAuth } from './auth'; +import useAsyncRetry from 'react-use/lib/useAsyncRetry'; + +/** + * Retrieves the provided custom resources related to the provided entity, refreshes at an interval. + * + * @public + */ +export const useCustomResources = ( + entity: Entity, + customResourceMatchers: CustomResourceMatcher[], + intervalMs: number = 10000, +): KubernetesObjects => { + const kubernetesApi = useApi(kubernetesApiRef); + const kubernetesAuthProvidersApi = useApi(kubernetesAuthProvidersApiRef); + + const getCustomObjects = + useCallback(async (): Promise => { + const auth = await generateAuth( + entity, + kubernetesApi, + kubernetesAuthProvidersApi, + ); + return await kubernetesApi.getCustomObjectsByEntity({ + auth, + customResources: customResourceMatchers, + entity, + }); + }, [ + kubernetesApi, + entity, + kubernetesAuthProvidersApi, + customResourceMatchers, + ]); + + const { value, loading, error, retry } = useAsyncRetry( + () => getCustomObjects(), + [getCustomObjects], + ); + + useInterval(() => retry(), intervalMs); + + return { + kubernetesObjects: value, + loading, + error: error?.message, + }; +}; diff --git a/plugins/kubernetes/src/hooks/useKubernetesObjects.test.ts b/plugins/kubernetes/src/hooks/useKubernetesObjects.test.ts index 4b66467403..5c4db4db14 100644 --- a/plugins/kubernetes/src/hooks/useKubernetesObjects.test.ts +++ b/plugins/kubernetes/src/hooks/useKubernetesObjects.test.ts @@ -18,6 +18,7 @@ import { useKubernetesObjects } from './useKubernetesObjects'; import { Entity } from '@backstage/catalog-model'; import { renderHook } from '@testing-library/react-hooks'; import { useApi } from '@backstage/core-plugin-api'; +import { generateAuth } from './auth'; jest.mock('@backstage/core-plugin-api'); @@ -55,34 +56,21 @@ const mockResponse = { ], }; -const getClustersResponse = [ - { - name: 'cluster-a', - authProvider: 'google', - }, - { - name: 'cluster-b', - authProvider: 'authprovider2', - }, -]; +jest.mock('./auth', () => { + return { + ...jest.requireActual('./auth'), + generateAuth: jest.fn(), + }; +}); describe('useKubernetesObjects', () => { - const mockGetClusters = jest.fn(); const mockGetObjectsByEntity = jest.fn(); - const mockDecorateRequestBodyForAuth = jest.fn(); + const mockGenerateAuth = generateAuth as jest.Mock; const expectMocksCalledCorrectly = (numOfCalls: number = 1) => { - expect(mockGetClusters).toHaveBeenCalledTimes(numOfCalls); - expect(mockGetClusters).toHaveBeenLastCalledWith(); - expect(mockDecorateRequestBodyForAuth).toHaveBeenCalledTimes( - numOfCalls * 2, - ); - expect(mockDecorateRequestBodyForAuth).toHaveBeenCalledWith('google', { + expect(mockGenerateAuth).toHaveBeenCalledTimes(numOfCalls); + expect(mockGenerateAuth.mock.calls[numOfCalls - 1][0]).toStrictEqual( entity, - }); - expect(mockDecorateRequestBodyForAuth).toHaveBeenCalledWith( - 'authprovider2', - entityWithAuthToken, ); expect(mockGetObjectsByEntity).toHaveBeenCalledTimes(numOfCalls); expect(mockGetObjectsByEntity).toHaveBeenLastCalledWith( @@ -94,31 +82,30 @@ describe('useKubernetesObjects', () => { jest.resetAllMocks(); }); it('should return objects', async () => { + mockGenerateAuth.mockResolvedValue(entityWithAuthToken.auth); (useApi as any).mockReturnValue({ - getClusters: mockGetClusters.mockResolvedValue(getClustersResponse), getObjectsByEntity: mockGetObjectsByEntity.mockResolvedValue(mockResponse), - decorateRequestBodyForAuth: - mockDecorateRequestBodyForAuth.mockResolvedValue(entityWithAuthToken), }); const { result, waitForNextUpdate } = renderHook(() => useKubernetesObjects(entity), ); + expect(result.current.loading).toEqual(true); + await waitForNextUpdate(); expect(result.current.error).toBeUndefined(); + expect(result.current.loading).toEqual(false); expect(result.current.kubernetesObjects).toStrictEqual(mockResponse); expectMocksCalledCorrectly(); }); it('should update on an interval', async () => { + mockGenerateAuth.mockResolvedValue(entityWithAuthToken.auth); (useApi as any).mockReturnValue({ - getClusters: mockGetClusters.mockResolvedValue(getClustersResponse), getObjectsByEntity: mockGetObjectsByEntity.mockResolvedValue(mockResponse), - decorateRequestBodyForAuth: - mockDecorateRequestBodyForAuth.mockResolvedValue(entityWithAuthToken), }); const { result, waitForNextUpdate } = renderHook(() => useKubernetesObjects(entity, 100), @@ -130,18 +117,17 @@ describe('useKubernetesObjects', () => { await waitForNextUpdate(); expect(result.current.error).toBeUndefined(); + expect(result.current.loading).toEqual(false); expect(result.current.kubernetesObjects).toStrictEqual(mockResponse); expectMocksCalledCorrectly(2); }); it('should return error when getObjectsByEntity throws', async () => { + mockGenerateAuth.mockResolvedValue(entityWithAuthToken.auth); (useApi as any).mockReturnValue({ - getClusters: mockGetClusters.mockResolvedValue(getClustersResponse), getObjectsByEntity: mockGetObjectsByEntity.mockRejectedValue({ message: 'some error', }), - decorateRequestBodyForAuth: - mockDecorateRequestBodyForAuth.mockResolvedValue(entityWithAuthToken), }); const { result, waitForNextUpdate } = renderHook(() => useKubernetesObjects(entity), @@ -150,66 +136,18 @@ describe('useKubernetesObjects', () => { await waitForNextUpdate(); expect(result.current.error).toBe('some error'); + expect(result.current.loading).toEqual(false); expect(result.current.kubernetesObjects).toBeUndefined(); expectMocksCalledCorrectly(); }); - it('should return error when getClusters throws', async () => { - (useApi as any).mockReturnValue({ - getClusters: mockGetClusters.mockRejectedValue({ message: 'some-error' }), - getObjectsByEntity: mockGetObjectsByEntity, - decorateRequestBodyForAuth: mockDecorateRequestBodyForAuth, - }); - const { result, waitForNextUpdate } = renderHook(() => - useKubernetesObjects(entity), - ); - - await waitForNextUpdate(); - - expect(result.current.error).toBe('some-error'); - expect(result.current.kubernetesObjects).toBeUndefined(); - - expect(mockGetClusters).toHaveBeenCalledTimes(1); - expect(mockGetClusters).toHaveBeenLastCalledWith(); - expect(mockDecorateRequestBodyForAuth).toHaveBeenCalledTimes(0); - expect(mockGetObjectsByEntity).toHaveBeenCalledTimes(0); - }); - it('should return error when decorateRequestBodyForAuth throws', async () => { - (useApi as any).mockReturnValue({ - getClusters: mockGetClusters.mockResolvedValue(getClustersResponse), - decorateRequestBodyForAuth: - mockDecorateRequestBodyForAuth.mockRejectedValue({ - message: 'some-error', - }), - getObjectsByEntity: mockGetObjectsByEntity, - }); - const { result, waitForNextUpdate } = renderHook(() => - useKubernetesObjects(entity), - ); - - await waitForNextUpdate(); - - expect(result.current.error).toBe('some-error'); - expect(result.current.kubernetesObjects).toBeUndefined(); - - expect(mockGetClusters).toHaveBeenCalledTimes(1); - expect(mockGetClusters).toHaveBeenLastCalledWith(); - expect(mockDecorateRequestBodyForAuth).toHaveBeenCalledTimes(1); - expect(mockDecorateRequestBodyForAuth).toHaveBeenCalledWith('google', { - entity, - }); - expect(mockGetObjectsByEntity).toHaveBeenCalledTimes(0); - }); - describe('when retrying', () => { - it('should reset error after getClusters has failed and then succeeded', async () => { + it('should reset error after generateAuth has failed and then succeeded', async () => { (useApi as any).mockReturnValue({ - getClusters: mockGetClusters - .mockRejectedValueOnce({ message: 'some-error' }) - .mockResolvedValue(getClustersResponse), - decorateRequestBodyForAuth: - mockDecorateRequestBodyForAuth.mockResolvedValue(entityWithAuthToken), + generateAuth: mockGenerateAuth + .mockRejectedValueOnce({ message: 'generateAuth failed' }) + .mockResolvedValue(entityWithAuthToken.auth), getObjectsByEntity: mockGetObjectsByEntity.mockResolvedValue(mockResponse), }); @@ -220,45 +158,19 @@ describe('useKubernetesObjects', () => { await waitForNextUpdate(); - expect(result.current.error).toBe('some-error'); - expect(result.current.kubernetesObjects).toBeUndefined(); - - await waitForNextUpdate(); - - expect(result.current.error).toBeUndefined(); - expect(result.current.kubernetesObjects).not.toBeUndefined(); - }); - - it('should reset error after decorateRequestBodyForAuth has failed and then succeeded', async () => { - (useApi as any).mockReturnValue({ - getClusters: mockGetClusters.mockResolvedValue(getClustersResponse), - decorateRequestBodyForAuth: mockDecorateRequestBodyForAuth - .mockRejectedValueOnce({ message: 'decoration failed' }) - .mockResolvedValue(entityWithAuthToken), - getObjectsByEntity: - mockGetObjectsByEntity.mockResolvedValue(mockResponse), - }); - - const { result, waitForNextUpdate } = renderHook(() => - useKubernetesObjects(entity, 100), - ); - - await waitForNextUpdate(); - - expect(result.current.error).toBe('decoration failed'); + expect(result.current.error).toBe('generateAuth failed'); + expect(result.current.loading).toEqual(false); expect(result.current.kubernetesObjects).toBeUndefined(); await waitForNextUpdate(); expect(result.current.error).toBeUndefined(); + expect(result.current.loading).toEqual(false); expect(result.current.kubernetesObjects).not.toBeUndefined(); }); it('should reset error after getObjectsByEntity has failed and then succeeded', async () => { (useApi as any).mockReturnValue({ - getClusters: mockGetClusters.mockResolvedValue(getClustersResponse), - decorateRequestBodyForAuth: - mockDecorateRequestBodyForAuth.mockResolvedValue(entityWithAuthToken), getObjectsByEntity: mockGetObjectsByEntity .mockRejectedValueOnce({ message: 'failed to fetch' }) .mockResolvedValue(mockResponse), @@ -271,47 +183,21 @@ describe('useKubernetesObjects', () => { await waitForNextUpdate(); expect(result.current.error).toBe('failed to fetch'); + expect(result.current.loading).toEqual(false); expect(result.current.kubernetesObjects).toBeUndefined(); await waitForNextUpdate(); expect(result.current.error).toBeUndefined(); + expect(result.current.loading).toEqual(false); expect(result.current.kubernetesObjects).not.toBeUndefined(); }); - it('should reset data after getClusters succeeded then failed', async () => { + it('should reset data after generateAuth succeeded then failed', async () => { (useApi as any).mockReturnValue({ - getClusters: mockGetClusters - .mockResolvedValueOnce(getClustersResponse) - .mockRejectedValue({ message: 'fetch clusters failed' }), - decorateRequestBodyForAuth: - mockDecorateRequestBodyForAuth.mockResolvedValue(entityWithAuthToken), - getObjectsByEntity: - mockGetObjectsByEntity.mockResolvedValue(mockResponse), - }); - const { result, waitForNextUpdate } = renderHook(() => - useKubernetesObjects(entity, 100), - ); - - await waitForNextUpdate(); - - expect(result.current.error).toBeUndefined(); - expect(result.current.kubernetesObjects).not.toBeUndefined(); - - await waitForNextUpdate(); - - expect(result.current.error).toBe('fetch clusters failed'); - expect(result.current.kubernetesObjects).toBeUndefined(); - }); - - it('should reset data after decorateBodyForAuth succeeded then failed', async () => { - (useApi as any).mockReturnValue({ - getClusters: mockGetClusters.mockResolvedValue(getClustersResponse), - decorateRequestBodyForAuth: mockDecorateRequestBodyForAuth - // this call happens twice per successful hook render - .mockResolvedValueOnce(entityWithAuthToken) - .mockResolvedValueOnce(entityWithAuthToken) - .mockRejectedValue({ message: 'decorate failed' }), + generateAuth: mockGenerateAuth + .mockResolvedValueOnce(entityWithAuthToken.auth) + .mockRejectedValue({ message: 'generateAuth failed' }), getObjectsByEntity: mockGetObjectsByEntity.mockResolvedValue(mockResponse), }); @@ -323,19 +209,18 @@ describe('useKubernetesObjects', () => { await waitForNextUpdate(); expect(result.current.error).toBeUndefined(); + expect(result.current.loading).toEqual(false); expect(result.current.kubernetesObjects).not.toBeUndefined(); await waitForNextUpdate(); - expect(result.current.error).toBe('decorate failed'); + expect(result.current.error).toBe('generateAuth failed'); + expect(result.current.loading).toEqual(false); expect(result.current.kubernetesObjects).toBeUndefined(); }); it('should reset data after getObjectsByEntity succeeded then failed', async () => { (useApi as any).mockReturnValue({ - getClusters: mockGetClusters.mockResolvedValue(getClustersResponse), - decorateRequestBodyForAuth: - mockDecorateRequestBodyForAuth.mockResolvedValue(entityWithAuthToken), getObjectsByEntity: mockGetObjectsByEntity .mockResolvedValueOnce(mockResponse) .mockRejectedValue({ message: 'failed to fetch' }), @@ -348,11 +233,13 @@ describe('useKubernetesObjects', () => { await waitForNextUpdate(); expect(result.current.error).toBeUndefined(); + expect(result.current.loading).toEqual(false); expect(result.current.kubernetesObjects).not.toBeUndefined(); await waitForNextUpdate(); expect(result.current.error).toBe('failed to fetch'); + expect(result.current.loading).toEqual(false); expect(result.current.kubernetesObjects).toBeUndefined(); }); }); diff --git a/plugins/kubernetes/src/hooks/useKubernetesObjects.ts b/plugins/kubernetes/src/hooks/useKubernetesObjects.ts index 421ed787da..87d6a0fe8b 100644 --- a/plugins/kubernetes/src/hooks/useKubernetesObjects.ts +++ b/plugins/kubernetes/src/hooks/useKubernetesObjects.ts @@ -17,16 +17,16 @@ import { Entity } from '@backstage/catalog-model'; import { kubernetesApiRef } from '../api/types'; import { kubernetesAuthProvidersApiRef } from '../kubernetes-auth-provider/types'; -import { useEffect, useState } from 'react'; +import { useCallback } from 'react'; import useInterval from 'react-use/lib/useInterval'; -import { - KubernetesRequestBody, - ObjectsByEntityResponse, -} from '@backstage/plugin-kubernetes-common'; +import { ObjectsByEntityResponse } from '@backstage/plugin-kubernetes-common'; import { useApi } from '@backstage/core-plugin-api'; +import { generateAuth } from './auth'; +import useAsyncRetry from 'react-use/lib/useAsyncRetry'; export interface KubernetesObjects { kubernetesObjects?: ObjectsByEntityResponse; + loading: boolean; error?: string; } @@ -36,68 +36,29 @@ export const useKubernetesObjects = ( ): KubernetesObjects => { const kubernetesApi = useApi(kubernetesApiRef); const kubernetesAuthProvidersApi = useApi(kubernetesAuthProvidersApiRef); - const [result, setResult] = useState({ - kubernetesObjects: undefined, - error: undefined, - }); + const getCustomObjects = + useCallback(async (): Promise => { + const auth = await generateAuth( + entity, + kubernetesApi, + kubernetesAuthProvidersApi, + ); + return await kubernetesApi.getObjectsByEntity({ + auth, + entity, + }); + }, [kubernetesApi, entity, kubernetesAuthProvidersApi]); - const getObjects = async () => { - let clusters = []; + const { value, loading, error, retry } = useAsyncRetry( + () => getCustomObjects(), + [getCustomObjects], + ); - try { - clusters = await kubernetesApi.getClusters(); - } catch (e) { - setResult({ error: e.message }); - return; - } + useInterval(() => retry(), intervalMs); - const authProviders: string[] = [ - ...new Set( - clusters.map( - c => - `${c.authProvider}${ - c.oidcTokenProvider ? `.${c.oidcTokenProvider}` : '' - }`, - ), - ), - ]; - - // For each auth type, invoke decorateRequestBodyForAuth on corresponding KubernetesAuthProvider - let requestBody: KubernetesRequestBody = { - entity, - }; - for (const authProviderStr of authProviders) { - // Multiple asyncs done sequentially instead of all at once to prevent same requestBody from being modified simultaneously - try { - requestBody = - await kubernetesAuthProvidersApi.decorateRequestBodyForAuth( - authProviderStr, - requestBody, - ); - } catch (e) { - setResult({ error: e.message }); - return; - } - } - - try { - const objects = await kubernetesApi.getObjectsByEntity(requestBody); - setResult({ kubernetesObjects: objects }); - } catch (e) { - setResult({ error: e.message }); - return; - } + return { + kubernetesObjects: value, + loading, + error: error?.message, }; - - useEffect(() => { - getObjects(); - /* eslint-disable react-hooks/exhaustive-deps */ - }, [entity.metadata.name, kubernetesApi, kubernetesAuthProvidersApi]); - /* eslint-enable react-hooks/exhaustive-deps */ - - useInterval(() => { - getObjects(); - }, intervalMs); - - return result; }; From e91e8e9c55c0c1b2541b9109ee373f5537ff682c Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 21 Sep 2022 23:17:24 +0200 Subject: [PATCH 102/117] backend-test-utils: increase max connection pool size Signed-off-by: Patrik Oldsberg --- .changeset/stupid-dragons-complain.md | 5 +++++ .../backend-test-utils/src/database/TestDatabases.ts | 12 ++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 .changeset/stupid-dragons-complain.md diff --git a/.changeset/stupid-dragons-complain.md b/.changeset/stupid-dragons-complain.md new file mode 100644 index 0000000000..44be8342bf --- /dev/null +++ b/.changeset/stupid-dragons-complain.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-test-utils': patch +--- + +Increased test database max connection pool size to reduce the risk of resource exhaustion. diff --git a/packages/backend-test-utils/src/database/TestDatabases.ts b/packages/backend-test-utils/src/database/TestDatabases.ts index 76d12ce8f1..6ff1a2e6f7 100644 --- a/packages/backend-test-utils/src/database/TestDatabases.ts +++ b/packages/backend-test-utils/src/database/TestDatabases.ts @@ -28,6 +28,13 @@ import { TestDatabaseProperties, } from './types'; +const LARGER_POOL_CONFIG = { + pool: { + min: 0, + max: 50, + }, +}; + /** * Encapsulates the creation of ephemeral test database instances for use * inside unit or integration tests. @@ -164,6 +171,9 @@ export class TestDatabases { new ConfigReader({ backend: { database: { + knexConfig: properties.driver.includes('sqlite') + ? {} + : LARGER_POOL_CONFIG, client: properties.driver, connection: connectionString, }, @@ -203,6 +213,7 @@ export class TestDatabases { new ConfigReader({ backend: { database: { + knexConfig: LARGER_POOL_CONFIG, client: 'pg', connection: { host, port, user, password }, }, @@ -228,6 +239,7 @@ export class TestDatabases { new ConfigReader({ backend: { database: { + knexConfig: LARGER_POOL_CONFIG, client: 'mysql2', connection: { host, port, user, password }, }, From 0f1078415500a926aecacb644f76face10b1e76e Mon Sep 17 00:00:00 2001 From: Prasetya Aria Wibawa Date: Thu, 22 Sep 2022 11:12:19 +0700 Subject: [PATCH 103/117] use primary and secondary for all ListItemText Signed-off-by: Prasetya Aria Wibawa --- .../Group/GroupProfile/GroupProfileCard.tsx | 53 +++++++++++-------- 1 file changed, 30 insertions(+), 23 deletions(-) diff --git a/plugins/org/src/components/Cards/Group/GroupProfile/GroupProfileCard.tsx b/plugins/org/src/components/Cards/Group/GroupProfile/GroupProfileCard.tsx index 1b18261328..dfdb566b20 100644 --- a/plugins/org/src/components/Cards/Group/GroupProfile/GroupProfileCard.tsx +++ b/plugins/org/src/components/Cards/Group/GroupProfile/GroupProfileCard.tsx @@ -144,9 +144,10 @@ export const GroupProfileCard = (props: { variant?: InfoCardVariants }) => { - - {profile.email} - + {profile.email}} + secondary="Email" + /> )} @@ -155,16 +156,19 @@ export const GroupProfileCard = (props: { variant?: InfoCardVariants }) => { - - {parentRelations.length ? ( - - ) : ( - '-' - )} - + + ) : ( + 'N/A' + ) + } + secondary="Parent Group" + /> @@ -172,16 +176,19 @@ export const GroupProfileCard = (props: { variant?: InfoCardVariants }) => { - - {childRelations.length ? ( - - ) : ( - '-' - )} - + + ) : ( + 'N/A' + ) + } + secondary="Child Groups" + /> From e05e0f021bc71b7a09ce67019331b0d3cf708146 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Thu, 22 Sep 2022 09:34:59 +0200 Subject: [PATCH 104/117] align some versions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/curvy-kiwis-fold.md | 5 +++ .changeset/old-cobras-suffer.md | 6 ++++ .../default-app/packages/app/package.json.hbs | 32 +++++++++---------- packages/e2e-test/package.json | 3 +- packages/test-utils/package.json | 2 +- plugins/cicd-statistics/package.json | 2 +- yarn.lock | 5 +-- 7 files changed, 34 insertions(+), 21 deletions(-) create mode 100644 .changeset/curvy-kiwis-fold.md create mode 100644 .changeset/old-cobras-suffer.md diff --git a/.changeset/curvy-kiwis-fold.md b/.changeset/curvy-kiwis-fold.md new file mode 100644 index 0000000000..8d94f38343 --- /dev/null +++ b/.changeset/curvy-kiwis-fold.md @@ -0,0 +1,5 @@ +--- +'@backstage/create-app': patch +--- + +Update versions of packages used in the create-app template, to match those in the main repo diff --git a/.changeset/old-cobras-suffer.md b/.changeset/old-cobras-suffer.md new file mode 100644 index 0000000000..2891c29133 --- /dev/null +++ b/.changeset/old-cobras-suffer.md @@ -0,0 +1,6 @@ +--- +'@backstage/test-utils': patch +'@backstage/plugin-cicd-statistics': patch +--- + +Align on the version of `@material-ui/icons` used, to `^4.9.1` like other packages in the main repo diff --git a/packages/create-app/templates/default-app/packages/app/package.json.hbs b/packages/create-app/templates/default-app/packages/app/package.json.hbs index d6a5086215..c060cb330c 100644 --- a/packages/create-app/templates/default-app/packages/app/package.json.hbs +++ b/packages/create-app/templates/default-app/packages/app/package.json.hbs @@ -6,6 +6,17 @@ "backstage": { "role": "frontend" }, + "scripts": { + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "clean": "backstage-cli package clean", + "test": "backstage-cli package test", + "lint": "backstage-cli package lint", + "test:e2e": "cross-env PORT=3001 start-server-and-test start http://localhost:3001 cy:dev", + "test:e2e:ci": "cross-env PORT=3001 start-server-and-test start http://localhost:3001 cy:run", + "cy:dev": "cypress open", + "cy:run": "cypress run --browser chrome" + }, "dependencies": { "@backstage/app-defaults": "^{{version '@backstage/app-defaults'}}", "@backstage/catalog-model": "^{{version '@backstage/catalog-model'}}", @@ -37,33 +48,22 @@ "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-use": "^15.3.3" + "react-router": "^6.3.0", + "react-router-dom": "^6.3.0", + "react-use": "^17.2.4" }, "devDependencies": { "@backstage/test-utils": "^{{version '@backstage/test-utils'}}", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^12.0.7", - "@types/node": "^14.14.32", + "@testing-library/user-event": "^14.0.0", + "@types/node": "^16.11.26", "@types/react-dom": "*", "cross-env": "^7.0.0", "cypress": "^9.7.0", "eslint-plugin-cypress": "^2.10.3", "start-server-and-test": "^1.10.11" }, - "scripts": { - "start": "backstage-cli package start", - "build": "backstage-cli package build", - "clean": "backstage-cli package clean", - "test": "backstage-cli package test", - "lint": "backstage-cli package lint", - "test:e2e": "cross-env PORT=3001 start-server-and-test start http://localhost:3001 cy:dev", - "test:e2e:ci": "cross-env PORT=3001 start-server-and-test start http://localhost:3001 cy:run", - "cy:dev": "cypress open", - "cy:run": "cypress run --browser chrome" - }, "browserslist": { "production": [ ">0.2%", diff --git a/packages/e2e-test/package.json b/packages/e2e-test/package.json index 372e2c0f05..374eaa6d18 100644 --- a/packages/e2e-test/package.json +++ b/packages/e2e-test/package.json @@ -18,7 +18,7 @@ "license": "Apache-2.0", "main": "src/index.ts", "scripts": { - "start": "nodemon --", + "start": "yarn nodemon --", "lint": "backstage-cli package lint", "test": "backstage-cli package test", "test:e2e": "yarn start", @@ -38,6 +38,7 @@ "cross-fetch": "^3.1.5", "fs-extra": "10.1.0", "handlebars": "^4.7.3", + "nodemon": "^2.0.2", "pgtools": "^0.3.0", "puppeteer": "^17.0.0", "tree-kill": "^1.2.2", diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json index 4eba4e93fd..90f966ad97 100644 --- a/packages/test-utils/package.json +++ b/packages/test-utils/package.json @@ -40,7 +40,7 @@ "@backstage/theme": "workspace:^", "@backstage/types": "workspace:^", "@material-ui/core": "^4.12.2", - "@material-ui/icons": "^4.11.2", + "@material-ui/icons": "^4.9.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/cicd-statistics/package.json b/plugins/cicd-statistics/package.json index b4c1e7bb15..1e1a7f95ad 100644 --- a/plugins/cicd-statistics/package.json +++ b/plugins/cicd-statistics/package.json @@ -42,7 +42,7 @@ "@backstage/plugin-catalog-react": "workspace:^", "@date-io/luxon": "^1.3.13", "@material-ui/core": "^4.9.13", - "@material-ui/icons": "^4.11.2", + "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", "@material-ui/pickers": "^3.3.10", "already": "^3.2.0", diff --git a/yarn.lock b/yarn.lock index bc0ca4bb6f..84738367eb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4778,7 +4778,7 @@ __metadata: "@backstage/plugin-catalog-react": "workspace:^" "@date-io/luxon": ^1.3.13 "@material-ui/core": ^4.9.13 - "@material-ui/icons": ^4.11.2 + "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 "@material-ui/pickers": ^3.3.10 "@types/luxon": ^3.0.0 @@ -7415,7 +7415,7 @@ __metadata: "@backstage/theme": "workspace:^" "@backstage/types": "workspace:^" "@material-ui/core": ^4.12.2 - "@material-ui/icons": ^4.11.2 + "@material-ui/icons": ^4.9.1 "@testing-library/jest-dom": ^5.10.1 "@testing-library/react": ^12.1.3 "@testing-library/user-event": ^14.0.0 @@ -20200,6 +20200,7 @@ __metadata: cross-fetch: ^3.1.5 fs-extra: 10.1.0 handlebars: ^4.7.3 + nodemon: ^2.0.2 pgtools: ^0.3.0 puppeteer: ^17.0.0 tree-kill: ^1.2.2 From 86d0de11d9016614468cb52fc7a12cb034e35bf9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Thu, 22 Sep 2022 09:46:24 +0200 Subject: [PATCH 105/117] remove PermissionedRoute and unnecessary copyright notices MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .../default-app/packages/app/src/App.tsx | 11 +++++++---- .../app/src/components/Root/LogoFull.tsx | 16 ---------------- .../app/src/components/Root/LogoIcon.tsx | 16 ---------------- .../packages/app/src/components/Root/Root.tsx | 16 ---------------- .../packages/app/src/components/Root/index.ts | 16 ---------------- .../app/src/components/catalog/EntityPage.tsx | 15 --------------- 6 files changed, 7 insertions(+), 83 deletions(-) diff --git a/packages/create-app/templates/default-app/packages/app/src/App.tsx b/packages/create-app/templates/default-app/packages/app/src/App.tsx index c4877263f0..c5b8d39fde 100644 --- a/packages/create-app/templates/default-app/packages/app/src/App.tsx +++ b/packages/create-app/templates/default-app/packages/app/src/App.tsx @@ -31,7 +31,7 @@ import { AlertDisplay, OAuthRequestDialog } from '@backstage/core-components'; import { createApp } from '@backstage/app-defaults'; import { FlatRoutes } from '@backstage/core-app-api'; import { CatalogGraphPage } from '@backstage/plugin-catalog-graph'; -import { PermissionedRoute } from '@backstage/plugin-permission-react'; +import { RequirePermission } from '@backstage/plugin-permission-react'; import { catalogEntityCreatePermission } from '@backstage/plugin-catalog-common/alpha'; const app = createApp({ @@ -81,10 +81,13 @@ const routes = ( path="/tech-radar" element={} /> - } + element={ + + + + } /> }> {searchPage} diff --git a/packages/create-app/templates/default-app/packages/app/src/components/Root/LogoFull.tsx b/packages/create-app/templates/default-app/packages/app/src/components/Root/LogoFull.tsx index c7b1c846c4..47e3b73155 100644 --- a/packages/create-app/templates/default-app/packages/app/src/components/Root/LogoFull.tsx +++ b/packages/create-app/templates/default-app/packages/app/src/components/Root/LogoFull.tsx @@ -1,19 +1,3 @@ -/* - * Copyright 2020 The 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 { makeStyles } from '@material-ui/core'; diff --git a/packages/create-app/templates/default-app/packages/app/src/components/Root/LogoIcon.tsx b/packages/create-app/templates/default-app/packages/app/src/components/Root/LogoIcon.tsx index 073cf6edad..7eae8c7a0b 100644 --- a/packages/create-app/templates/default-app/packages/app/src/components/Root/LogoIcon.tsx +++ b/packages/create-app/templates/default-app/packages/app/src/components/Root/LogoIcon.tsx @@ -1,19 +1,3 @@ -/* - * Copyright 2020 The 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 { makeStyles } from '@material-ui/core'; diff --git a/packages/create-app/templates/default-app/packages/app/src/components/Root/Root.tsx b/packages/create-app/templates/default-app/packages/app/src/components/Root/Root.tsx index b1164a32f0..5400421e25 100644 --- a/packages/create-app/templates/default-app/packages/app/src/components/Root/Root.tsx +++ b/packages/create-app/templates/default-app/packages/app/src/components/Root/Root.tsx @@ -1,19 +1,3 @@ -/* - * Copyright 2020 The 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, { PropsWithChildren } from 'react'; import { Link, makeStyles } from '@material-ui/core'; import HomeIcon from '@material-ui/icons/Home'; diff --git a/packages/create-app/templates/default-app/packages/app/src/components/Root/index.ts b/packages/create-app/templates/default-app/packages/app/src/components/Root/index.ts index dff706f08f..35288815f2 100644 --- a/packages/create-app/templates/default-app/packages/app/src/components/Root/index.ts +++ b/packages/create-app/templates/default-app/packages/app/src/components/Root/index.ts @@ -1,17 +1 @@ -/* - * Copyright 2020 The 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 { Root } from './Root'; diff --git a/packages/create-app/templates/default-app/packages/app/src/components/catalog/EntityPage.tsx b/packages/create-app/templates/default-app/packages/app/src/components/catalog/EntityPage.tsx index d98153f660..54a05eea03 100644 --- a/packages/create-app/templates/default-app/packages/app/src/components/catalog/EntityPage.tsx +++ b/packages/create-app/templates/default-app/packages/app/src/components/catalog/EntityPage.tsx @@ -1,18 +1,3 @@ -/* - * Copyright 2020 The 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 { Button, Grid } from '@material-ui/core'; import { From 62872bf0272cd580b17ef2ed312c4ccf26b87fdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Thu, 22 Sep 2022 09:56:02 +0200 Subject: [PATCH 106/117] fix starting create-app locally with local nodemon MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- packages/create-app/package.json | 3 ++- packages/create-app/templates/default-app/yarn.lock | 1 + yarn.lock | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 packages/create-app/templates/default-app/yarn.lock diff --git a/packages/create-app/package.json b/packages/create-app/package.json index de1f495abe..bb65d3b4ca 100644 --- a/packages/create-app/package.json +++ b/packages/create-app/package.json @@ -29,7 +29,7 @@ "clean": "backstage-cli package clean", "prepack": "node scripts/prepack.js", "postpack": "node scripts/postpack.js", - "start": "nodemon --" + "start": "yarn nodemon --" }, "dependencies": { "@backstage/cli-common": "workspace:^", @@ -48,6 +48,7 @@ "@types/node": "^16.11.26", "@types/recursive-readdir": "^2.2.0", "mock-fs": "^5.1.1", + "nodemon": "^2.0.2", "ts-node": "^10.0.0" }, "nodemonConfig": { diff --git a/packages/create-app/templates/default-app/yarn.lock b/packages/create-app/templates/default-app/yarn.lock new file mode 100644 index 0000000000..5ad7fe233d --- /dev/null +++ b/packages/create-app/templates/default-app/yarn.lock @@ -0,0 +1 @@ +# intentionally left empty diff --git a/yarn.lock b/yarn.lock index 84738367eb..1632a3a59e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3542,6 +3542,7 @@ __metadata: handlebars: ^4.7.3 inquirer: ^8.2.0 mock-fs: ^5.1.1 + nodemon: ^2.0.2 ora: ^5.3.0 recursive-readdir: ^2.2.2 ts-node: ^10.0.0 From e02fae847b81b19e4266cd0dac70c122bf4343f9 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 22 Sep 2022 10:57:35 +0200 Subject: [PATCH 107/117] workflows: add auth and access config to publishing Signed-off-by: Patrik Oldsberg --- .github/workflows/deploy_nightly.yml | 4 +++- .github/workflows/deploy_packages.yml | 5 +++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/deploy_nightly.yml b/.github/workflows/deploy_nightly.yml index 0432876aca..b82e1a30d4 100644 --- a/.github/workflows/deploy_nightly.yml +++ b/.github/workflows/deploy_nightly.yml @@ -55,7 +55,9 @@ jobs: # not flagged as the latest release, which means that people will not get this # version of the package unless requested explicitly - name: publish nightly release - run: yarn workspaces foreach -v --no-private npm publish --tag nightly + run: | + yarn config set -H 'npmAuthToken' "${{secrets.NPM_TOKEN}}" + yarn workspaces foreach -v --no-private npm publish --access public --tag nightly env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.github/workflows/deploy_packages.yml b/.github/workflows/deploy_packages.yml index 063a6107b6..06ed3bc45e 100644 --- a/.github/workflows/deploy_packages.yml +++ b/.github/workflows/deploy_packages.yml @@ -162,10 +162,11 @@ jobs: # Publishes current version of packages that are not already present in the registry - name: publish run: | + yarn config set -H 'npmAuthToken' "${{secrets.NPM_TOKEN}}" if [ -f ".changeset/pre.json" ]; then - yarn workspaces foreach -v --exclude=root --no-private npm publish --tag next + yarn workspaces foreach -v --no-private npm publish --access public --tag next else - yarn workspaces foreach -v --exclude=root --no-private npm publish + yarn workspaces foreach -v --no-private npm publish --access public fi env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} From 58c2264325243c4a1b3a3ba769713df0491c11cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Thu, 22 Sep 2022 11:32:56 +0200 Subject: [PATCH 108/117] update Navigate properly, and add a changeset noting the router stable update in create-app MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/clean-camels-sneeze.md | 12 ++++++++++++ packages/app/src/App.tsx | 2 +- .../templates/default-app/packages/app/src/App.tsx | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 .changeset/clean-camels-sneeze.md diff --git a/.changeset/clean-camels-sneeze.md b/.changeset/clean-camels-sneeze.md new file mode 100644 index 0000000000..0fccb52e0b --- /dev/null +++ b/.changeset/clean-camels-sneeze.md @@ -0,0 +1,12 @@ +--- +'@backstage/create-app': patch +--- + +Newly created Backstage repositories now use the stable version 6 of +`react-router`, just like the main repo does. Please let us know if you find any +issues with this. + +Migrating to the stable version of `react-router` is optional for the time +being. But if you want to do the same for your existing repository, please +follow [this +guide](https://backstage.io/docs/tutorials/react-router-stable-migration). diff --git a/packages/app/src/App.tsx b/packages/app/src/App.tsx index 65a43b715b..a6c613ded7 100644 --- a/packages/app/src/App.tsx +++ b/packages/app/src/App.tsx @@ -148,7 +148,7 @@ const AppRouter = app.getRouter(); const routes = ( - + } /> {/* TODO(rubenl): Move this to / once its more mature and components exist */} }> {homePage} diff --git a/packages/create-app/templates/default-app/packages/app/src/App.tsx b/packages/create-app/templates/default-app/packages/app/src/App.tsx index c5b8d39fde..4d5ace5aa4 100644 --- a/packages/create-app/templates/default-app/packages/app/src/App.tsx +++ b/packages/create-app/templates/default-app/packages/app/src/App.tsx @@ -58,7 +58,7 @@ const AppRouter = app.getRouter(); const routes = ( - + } /> } /> Date: Thu, 22 Sep 2022 14:09:19 +0200 Subject: [PATCH 109/117] no longer transpile tsx files in backend packages MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/swift-phones-cheat.md | 12 ++++++++++++ packages/cli/src/lib/bundler/config.ts | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 .changeset/swift-phones-cheat.md diff --git a/.changeset/swift-phones-cheat.md b/.changeset/swift-phones-cheat.md new file mode 100644 index 0000000000..97697ad916 --- /dev/null +++ b/.changeset/swift-phones-cheat.md @@ -0,0 +1,12 @@ +--- +'@backstage/cli': minor +--- + +Removed `tsx` and `jsx` as supported extensions in backend packages. For most +repos, this will not have any effect. But if you inadvertently had added some +`tsx`/`jsx` files to your backend package, you may now start to see `code: 'MODULE_NOT_FOUND'` errors when launching the backend locally. The reason for +this is that the offending files get ignored during transpilation. Hence, the +importing file can no longer find anything to import. + +The fix is to rename any `.tsx` files in your backend packages to `.ts` instead, +or `.jsx` to `.js`. diff --git a/packages/cli/src/lib/bundler/config.ts b/packages/cli/src/lib/bundler/config.ts index 0d4649fa3f..1974153f02 100644 --- a/packages/cli/src/lib/bundler/config.ts +++ b/packages/cli/src/lib/bundler/config.ts @@ -267,7 +267,7 @@ export async function createBackendConfig( paths.targetRunFile ? paths.targetRunFile : paths.targetEntry, ], resolve: { - extensions: ['.ts', '.tsx', '.mjs', '.js', '.jsx', '.json'], + extensions: ['.ts', '.mjs', '.js', '.json'], mainFields: ['main'], modules: [paths.rootNodeModules, ...moduleDirs], plugins: [ From 6c027cdab269b80227effbcbb3d2305f602490a3 Mon Sep 17 00:00:00 2001 From: Joon Park Date: Thu, 22 Sep 2022 14:06:23 +0100 Subject: [PATCH 110/117] Frontend authorization docs for plugin authors (#11034) * Frontend authorization docs for plugin authors Signed-off-by: Joon Park * Wording changes Signed-off-by: Joon Park * Clarify name of example create permission variable Signed-off-by: Joon Park * Refactor todo list frontend code to reduce diff Signed-off-by: Joon Park * API reports Signed-off-by: Joon Park Signed-off-by: Joon Park --- .../02-adding-a-basic-permission-check.md | 17 +- .../03-adding-a-resource-permission-check.md | 29 +-- ...04-authorizing-access-to-paginated-data.md | 19 +- .../05-frontend-authorization.md | 167 ++++++++++++++++++ microsite/sidebars.json | 3 +- .../example-todo-list-common/api-report.md | 3 + .../src/permissions.ts | 7 + .../components/TodoListPage/TodoListPage.tsx | 45 +++-- 8 files changed, 244 insertions(+), 46 deletions(-) create mode 100644 docs/permissions/plugin-authors/05-frontend-authorization.md diff --git a/docs/permissions/plugin-authors/02-adding-a-basic-permission-check.md b/docs/permissions/plugin-authors/02-adding-a-basic-permission-check.md index c73fe800b4..124605cb66 100644 --- a/docs/permissions/plugin-authors/02-adding-a-basic-permission-check.md +++ b/docs/permissions/plugin-authors/02-adding-a-basic-permission-check.md @@ -20,15 +20,18 @@ Let's navigate to the file `plugins/todo-list-common/src/permissions.ts` and add - export const tempExamplePermission = createPermission({ - name: 'temp.example.noop', - attributes: {}, -+ export const todoListCreate = createPermission({ ++ export const todoListCreatePermission = createPermission({ + name: 'todo.list.create', + attributes: { action: 'create' }, }); + +- export const todoListPermissions = [tempExamplePermission]; ++ export const todoListPermissions = [todoListCreatePermission]; ``` For this tutorial, we've automatically exported all permissions from this file (see `plugins/todo-list-common/src/index.ts`). -> Note: All permissions authorized by your plugin should be exported from a ["common-library" package](https://backstage.io/docs/local-dev/cli-build-system#package-roles). This allows Backstage integrators to reference them in frontend components and permission policies. +> Note: We use a separate `todo-list-common` package since all permissions authorized by your plugin should be exported from a ["common-library" package](https://backstage.io/docs/local-dev/cli-build-system#package-roles). This allows Backstage integrators to reference them in frontend components and permission policies. ## Authorizing using the new permission @@ -47,7 +50,7 @@ Edit `plugins/todo-list-backend/src/service/router.ts`: - import { InputError } from '@backstage/errors'; + import { InputError, NotAllowedError } from '@backstage/errors'; + import { PermissionEvaluator, AuthorizeResult } from '@backstage/plugin-permission-common'; -+ import { todoListCreate } from '@internal/plugin-todo-list-common'; ++ import { todoListCreatePermission } from '@internal/plugin-todo-list-common'; ... @@ -72,7 +75,7 @@ Edit `plugins/todo-list-backend/src/service/router.ts`: const user = token ? await identity.authenticate(token) : undefined; author = user?.identity.userEntityRef; + const decision = ( -+ await permissions.authorize([{ permission: todoListCreate }], { ++ await permissions.authorize([{ permission: todoListCreatePermission }], { + token, + }) + )[0]; @@ -135,7 +138,7 @@ In order to test the logic above, the integrators of your backstage instance nee + PolicyQuery, } from '@backstage/plugin-permission-node'; + import { isPermission } from '@backstage/plugin-permission-common'; -+ import { todoListCreate } from '@internal/plugin-todo-list-common'; ++ import { todoListCreatePermission } from '@internal/plugin-todo-list-common'; class TestPermissionPolicy implements PermissionPolicy { - async handle(): Promise { @@ -143,7 +146,7 @@ In order to test the logic above, the integrators of your backstage instance nee + request: PolicyQuery, + user?: BackstageIdentityResponse, + ): Promise { -+ if (isPermission(request.permission, todoListCreate)) { ++ if (isPermission(request.permission, todoListCreatePermission)) { + return { + result: AuthorizeResult.DENY, + }; @@ -160,7 +163,7 @@ Now the frontend should show an error whenever you try to create a new Todo item Let's flip the result back to `ALLOW` before moving on. ```diff - if (isPermission(request.permission, todoListCreate)) { + if (isPermission(request.permission, todoListCreatePermission)) { return { - result: AuthorizeResult.DENY, + result: AuthorizeResult.ALLOW, diff --git a/docs/permissions/plugin-authors/03-adding-a-resource-permission-check.md b/docs/permissions/plugin-authors/03-adding-a-resource-permission-check.md index a76518b202..5bace9ad7b 100644 --- a/docs/permissions/plugin-authors/03-adding-a-resource-permission-check.md +++ b/docs/permissions/plugin-authors/03-adding-a-resource-permission-check.md @@ -15,27 +15,30 @@ Let's add a new permission to the file `plugins/todo-list-common/src/permissions + export const TODO_LIST_RESOURCE_TYPE = 'todo-item'; + - export const todoListCreate = createPermission({ + export const todoListCreatePermission = createPermission({ name: 'todo.list.create', attributes: { action: 'create' }, }); + -+ export const todoListUpdate = createPermission({ ++ export const todoListUpdatePermission = createPermission({ + name: 'todo.list.update', + attributes: { action: 'update' }, + resourceType: TODO_LIST_RESOURCE_TYPE, + }); + +- export const todoListPermissions = [todoListCreatePermission]; ++ export const todoListPermissions = [todoListCreatePermission, todoListUpdatePermission]; ``` -Notice that unlike `todoListCreate`, the `todoListUpdate` permission contains a `resourceType` field. This field indicates to the permission framework that this permission is intended to be authorized in the context of a resource with type `'todo-item'`. You can use whatever string you like as the resource type, as long as you use the same value consistently for each type of resource. +Notice that unlike `todoListCreatePermission`, the `todoListUpdatePermission` permission contains a `resourceType` field. This field indicates to the permission framework that this permission is intended to be authorized in the context of a resource with type `'todo-item'`. You can use whatever string you like as the resource type, as long as you use the same value consistently for each type of resource. ## Setting up authorization for the update permission To start, let's edit `plugins/todo-list-backend/src/service/router.ts` in the same manner as we did in the previous section: ```diff -- import { todoListCreate } from '@internal/plugin-todo-list-common'; -+ import { todoListCreate, todoListUpdate } from '@internal/plugin-todo-list-common'; +- import { todoListCreatePermission } from '@internal/plugin-todo-list-common'; ++ import { todoListCreatePermission, todoListUpdatePermission } from '@internal/plugin-todo-list-common'; ... @@ -49,7 +52,7 @@ To start, let's edit `plugins/todo-list-backend/src/service/router.ts` in the sa } + const decision = ( + await permissions.authorize( -+ [{ permission: todoListUpdate, resourceRef: req.body.id }], ++ [{ permission: todoListUpdatePermission, resourceRef: req.body.id }], + { + token, + }, @@ -119,6 +122,7 @@ Now, let's create the new endpoint by editing `plugins/todo-list-backend/src/ser - `getResources`: a function that accepts an array of `resourceRefs` in the same format you expect to be passed to `authorize`, and returns an array of the corresponding resources. - `resourceType`: the same value used in the permission rule above. +- `permissions`: the list of permissions that your plugin accepts. - `rules`: an array of all the permission rules you want to support in conditional decisions. ```diff @@ -127,7 +131,7 @@ Now, let's create the new endpoint by editing `plugins/todo-list-backend/src/ser - import { add, getAll, update } from './todos'; + import { add, getAll, getTodo, update } from './todos'; + import { createPermissionIntegrationRouter } from '@backstage/plugin-permission-node'; -+ import { TODO_LIST_RESOURCE_TYPE } from '@internal/plugin-todo-list-common'; ++ import { TODO_LIST_RESOURCE_TYPE, todoListPermissions } from '@internal/plugin-todo-list-common'; + import { rules } from './rules'; export async function createRouter( @@ -140,6 +144,7 @@ Now, let's create the new endpoint by editing `plugins/todo-list-backend/src/ser + return resourceRefs.map(getTodo); + }, + resourceType: TODO_LIST_RESOURCE_TYPE, ++ permissions: todoListPermissions, + rules: Object.values(rules), + }); @@ -196,10 +201,10 @@ Let's go back to the permission policy's handle function and try to authorize ou PolicyQuery, } from '@backstage/plugin-permission-node'; import { isPermission } from '@backstage/plugin-permission-common'; -- import { todoListCreate } from '@internal/plugin-todo-list-common'; +- import { todoListCreatePermission } from '@internal/plugin-todo-list-common'; + import { -+ todoListCreate, -+ todoListUpdate, ++ todoListCreatePermission, ++ todoListUpdatePermission, + TODO_LIST_RESOURCE_TYPE, + } from '@internal/plugin-todo-list-common'; + import { @@ -209,13 +214,13 @@ Let's go back to the permission policy's handle function and try to authorize ou ... - if (isPermission(request.permission, todoListCreate)) { + if (isPermission(request.permission, todoListCreatePermission)) { return { result: AuthorizeResult.ALLOW, }; } -+ if (isPermission(request.permission, todoListUpdate)) { ++ if (isPermission(request.permission, todoListUpdatePermission)) { + return createTodoListConditionalDecision( + request.permission, + todoListConditions.isOwner(user?.identity.userEntityRef), diff --git a/docs/permissions/plugin-authors/04-authorizing-access-to-paginated-data.md b/docs/permissions/plugin-authors/04-authorizing-access-to-paginated-data.md index 582553832b..c813ba594c 100644 --- a/docs/permissions/plugin-authors/04-authorizing-access-to-paginated-data.md +++ b/docs/permissions/plugin-authors/04-authorizing-access-to-paginated-data.md @@ -42,12 +42,12 @@ Let's add another permission to the plugin. export const TODO_LIST_RESOURCE_TYPE = 'todo-item'; - export const todoListCreate = createPermission({ + export const todoListCreatePermission = createPermission({ name: 'todo.list.create', attributes: { action: 'create' }, }); - export const todoListUpdate = createPermission({ + export const todoListUpdatePermission = createPermission({ name: 'todo.list.update', attributes: { action: 'update' }, resourceType: TODO_LIST_RESOURCE_TYPE, @@ -58,6 +58,9 @@ Let's add another permission to the plugin. + attributes: { action: 'read' }, + resourceType: TODO_LIST_RESOURCE_TYPE, + }); + +- export const todoListPermissions = [todoListCreatePermission, todoListUpdatePermission]; ++ export const todoListPermissions = [todoListCreatePermission, todoListUpdatePermission, todoListReadPermission]; ``` ## Using conditional policy decisions @@ -126,18 +129,18 @@ Let's update our permission policy to return a conditional result whenever a `to ... import { - todoListCreate, - todoListUpdate, -+ todoListRead, + todoListCreatePermission, + todoListUpdatePermission, ++ todoListReadPermission, TODO_LIST_RESOURCE_TYPE, } from '@internal/plugin-todo-list-common'; ... -- if (isPermission(request.permission, todoListUpdate)) { +- if (isPermission(request.permission, todoListUpdatePermission)) { + if ( -+ isPermission(request.permission, todoListUpdate) || -+ isPermission(request.permission, todoListRead) ++ isPermission(request.permission, todoListUpdatePermission) || ++ isPermission(request.permission, todoListReadPermission) + ) { return createTodoListConditionalDecision( request.permission, diff --git a/docs/permissions/plugin-authors/05-frontend-authorization.md b/docs/permissions/plugin-authors/05-frontend-authorization.md new file mode 100644 index 0000000000..dc4df7839c --- /dev/null +++ b/docs/permissions/plugin-authors/05-frontend-authorization.md @@ -0,0 +1,167 @@ +--- +id: 05-frontend-authorization +title: 5. Frontend Components with Authorization +description: Placing frontend components behind authorization +--- + +In the previous sections, we learned how to protect our plugin's backend API routes with the permission framework. Most routes that return some data to be displayed (such as our `GET /todos` route) need no additional changes on the frontend, as the backend will simply return an empty list or a `404`. However, for UI elements that trigger a mutative action, it's common practice to hide or disable them when a user doesn't have permission. + +Take, for example, the "Add" button in our todo list application. When a user clicks this button, the frontend makes a `POST` request to the `/todos` route of our backend. If a user tries to add a todo but is not authorized, they will have no way of knowing this until they perform the action and are faced with an error. This is a poor user experience. We can do better by disabling the add button. + +> Note: Placing frontend components behind authorization cannot take the place of placing your backend routes behind authorization. Authorization checks on the frontend should be used in _addition_ to the corresponding backend authorization, as an improvement to the user experience. If you do not place your backend route behind authorization, a malicious actor can still send a request to the route even if you disabled the corresponding frontend component. + +## Using `usePermission` + +Let's start by adding the packages we will need: + +``` +$ yarn workspace @internal/plugin-todo-list \ + add @backstage/plugin-permission-react @internal/plugin-todo-list-common +``` + +Let's make the following changes in `plugins/todo-list/src/components/TodoListPage/TodoListPage.tsx`: + +```diff +... + + import { + alertApiRef, + discoveryApiRef, + fetchApiRef, + useApi, + } from '@backstage/core-plugin-api'; ++ import { usePermission } from '@backstage/plugin-permission-react'; ++ import { todoListCreatePermission } from '@internal/plugin-todo-list-common'; + +... + + function AddTodo({ onAdd }: { onAdd: (title: string) => any }) { + const title = useRef(''); ++ const { loading: loadingPermission, allowed: canAddTodo } = usePermission({ permission: todoListCreatePermission }); + + return ( + <> + Add todo + + (title.current = e.target.value)} + /> +- ++ {!loadingPermission && ( ++ ++ )} + + + ); + } + +... +``` + +Here we are using the [`usePermission` hook](https://backstage.io/docs/reference/plugin-permission-react.usepermission) to communicate with the permission policy and receive a decision on whether this user is authorized to create a todo list item. + +It's really that simple! Let's change our policy to test the disabled button: + +```diff +// packages/backend/src/plugins/permission.ts + +... + + if (isPermission(request.permission, todoListCreatePermission)) { + return { +- result: AuthorizeResult.ALLOW, ++ result: AuthorizeResult.DENY, + }; + } + +... +``` + +And now you should see that you are not able to create a todo item from the frontend! + +## Using `RequirePermission` + +Providing a disabled state can be a helpful signal to users, but there may be cases where hiding the element is preferred. For such cases, you can use the provided [`RequirePermission` component](https://backstage.io/docs/reference/plugin-permission-react.requirepermission): + +```diff +// plugins/todo-list/src/components/TodoListPage/TodoListPage.tsx + +... + + import { + alertApiRef, + discoveryApiRef, + fetchApiRef, + useApi, + } from '@backstage/core-plugin-api'; +- import { usePermission } from '@backstage/plugin-permission-react'; ++ import { RequirePermission } from '@backstage/plugin-permission-react'; + import { todoListCreatePermission } from '@internal/plugin-todo-list-common'; + +... + + export const TodoListPage = () => { + +... + + +- +- +- ++ ++ ++ ++ ++ + + + + + +... + + + function AddTodo({ onAdd }: { onAdd: (title: string) => any }) { + const title = useRef(''); +- const { loading: loadingPermission, allowed: canAddTodo } = usePermission({ permission: todoListCreatePermission }); + + return ( + <> + Add todo + + (title.current = e.target.value)} + /> +- {!loadingPermission && ( +- +- )} ++ + + + ); + } + +... +``` + +Now you should find that the component for adding a todo list item does not render at all. Success! diff --git a/microsite/sidebars.json b/microsite/sidebars.json index 8e77594376..41e54ccb29 100644 --- a/microsite/sidebars.json +++ b/microsite/sidebars.json @@ -295,7 +295,8 @@ "permissions/plugin-authors/01-setup", "permissions/plugin-authors/02-adding-a-basic-permission-check", "permissions/plugin-authors/03-adding-a-resource-permission-check", - "permissions/plugin-authors/04-authorizing-access-to-paginated-data" + "permissions/plugin-authors/04-authorizing-access-to-paginated-data", + "permissions/plugin-authors/05-frontend-authorization" ] } ], diff --git a/plugins/example-todo-list-common/api-report.md b/plugins/example-todo-list-common/api-report.md index 15ffb7b139..1e51e560c8 100644 --- a/plugins/example-todo-list-common/api-report.md +++ b/plugins/example-todo-list-common/api-report.md @@ -8,5 +8,8 @@ import { BasicPermission } from '@backstage/plugin-permission-common'; // @public export const tempExamplePermission: BasicPermission; +// @public +export const todoListPermissions: BasicPermission[]; + // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/example-todo-list-common/src/permissions.ts b/plugins/example-todo-list-common/src/permissions.ts index 439bf5e8b9..ea0b097376 100644 --- a/plugins/example-todo-list-common/src/permissions.ts +++ b/plugins/example-todo-list-common/src/permissions.ts @@ -25,3 +25,10 @@ export const tempExamplePermission = createPermission({ name: 'temp.example.noop', attributes: {}, }); + +/** + * List of all todo list permissions. + * + * @public + */ +export const todoListPermissions = [tempExamplePermission]; diff --git a/plugins/example-todo-list/src/components/TodoListPage/TodoListPage.tsx b/plugins/example-todo-list/src/components/TodoListPage/TodoListPage.tsx index 7ebb517532..6071502fdb 100644 --- a/plugins/example-todo-list/src/components/TodoListPage/TodoListPage.tsx +++ b/plugins/example-todo-list/src/components/TodoListPage/TodoListPage.tsx @@ -45,17 +45,16 @@ export const TodoListPage = () => { const discoveryApi = useApi(discoveryApiRef); const { fetch } = useApi(fetchApiRef); const alertApi = useApi(alertApiRef); - const title = useRef(''); const [key, refetchTodos] = useReducer(i => i + 1, 0); const [editElement, setEdit] = useState(); - const handleAdd = async () => { + const handleAdd = async (title: string) => { try { const response = await fetch( `${await discoveryApi.getBaseUrl('todolist')}/todos`, { method: 'POST', - body: JSON.stringify({ title: title.current }), + body: JSON.stringify({ title }), headers: { 'Content-Type': 'application/json', }, @@ -117,21 +116,7 @@ export const TodoListPage = () => { - Add todo - - (title.current = e.target.value)} - /> - - + @@ -149,6 +134,30 @@ export const TodoListPage = () => { ); }; +function AddTodo({ onAdd }: { onAdd: (title: string) => any }) { + const title = useRef(''); + + return ( + <> + Add todo + + (title.current = e.target.value)} + /> + + + + ); +} + function EditModal({ todo, onCancel, From ed0ef64fd36385e2111940b71548b2dbdd7afef5 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 22 Sep 2022 15:18:59 +0200 Subject: [PATCH 111/117] backend-tests: increase timeout for setting up test databases Signed-off-by: Patrik Oldsberg --- .../backend-tasks/src/tasks/PluginTaskSchedulerImpl.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.test.ts b/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.test.ts index f6177b57f7..d61948a929 100644 --- a/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.test.ts +++ b/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.test.ts @@ -45,7 +45,7 @@ describe('PluginTaskManagerImpl', () => { ); jest.useFakeTimers(); - }, 30_000); + }, 60_000); async function init(databaseId: TestDatabaseId) { const knex = await databases.init(databaseId); From a91bd8e268c40ae94d5b1fd37165ecb51d74f988 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Thu, 22 Sep 2022 17:03:20 +0200 Subject: [PATCH 112/117] nerf MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/swift-phones-cheat.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/swift-phones-cheat.md b/.changeset/swift-phones-cheat.md index 97697ad916..6d1653caa3 100644 --- a/.changeset/swift-phones-cheat.md +++ b/.changeset/swift-phones-cheat.md @@ -1,5 +1,5 @@ --- -'@backstage/cli': minor +'@backstage/cli': patch --- Removed `tsx` and `jsx` as supported extensions in backend packages. For most From 7506c95e94e94ba8b34e6ef4144cafc59fc15258 Mon Sep 17 00:00:00 2001 From: MT Lewis Date: Fri, 23 Sep 2022 13:05:55 +0100 Subject: [PATCH 113/117] docs: fix incorrect import in frontend permission integration docs (#13816) Signed-off-by: MT Lewis Signed-off-by: MT Lewis --- docs/permissions/frontend-integration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/permissions/frontend-integration.md b/docs/permissions/frontend-integration.md index 2a429ea120..d7302f9083 100644 --- a/docs/permissions/frontend-integration.md +++ b/docs/permissions/frontend-integration.md @@ -17,7 +17,7 @@ If your Backstage permission policy may return a `DENY` for users requesting the ... -+ import { PermissionedRoute } from '@backstage/plugin-permission-react'; ++ import { RequirePermission } from '@backstage/plugin-permission-react'; + import { catalogEntityCreatePermission } from '@backstage/plugin-catalog-common'; ... From 74022e01639e58e9612ff3abf3cb8b5e2d610195 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 23 Sep 2022 14:00:00 +0200 Subject: [PATCH 114/117] stitch relations after deleting MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/thick-kings-destroy.md | 5 ++ .../src/service/CatalogBuilder.ts | 7 +- .../service/DefaultEntitiesCatalog.test.ts | 64 ++++++++++++++----- .../src/service/DefaultEntitiesCatalog.ts | 34 +++++++++- 4 files changed, 90 insertions(+), 20 deletions(-) create mode 100644 .changeset/thick-kings-destroy.md diff --git a/.changeset/thick-kings-destroy.md b/.changeset/thick-kings-destroy.md new file mode 100644 index 0000000000..77c6be0d3c --- /dev/null +++ b/.changeset/thick-kings-destroy.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend': patch +--- + +Make sure to stitch entities correctly after deletion, to ensure that their relations are updated. diff --git a/plugins/catalog-backend/src/service/CatalogBuilder.ts b/plugins/catalog-backend/src/service/CatalogBuilder.ts index 25f9fde313..d47ace1454 100644 --- a/plugins/catalog-backend/src/service/CatalogBuilder.ts +++ b/plugins/catalog-backend/src/service/CatalogBuilder.ts @@ -409,7 +409,11 @@ export class CatalogBuilder { parser, policy, }); - const unauthorizedEntitiesCatalog = new DefaultEntitiesCatalog(dbClient); + const stitcher = new Stitcher(dbClient, logger); + const unauthorizedEntitiesCatalog = new DefaultEntitiesCatalog( + dbClient, + stitcher, + ); let permissionEvaluator: PermissionEvaluator; if ('authorizeConditional' in permissions) { @@ -453,7 +457,6 @@ export class CatalogBuilder { permissions: catalogPermissions, rules: this.permissionRules, }); - const stitcher = new Stitcher(dbClient, logger); const locationStore = new DefaultLocationStore(dbClient); const configLocationProvider = new ConfigLocationEntityProvider(config); diff --git a/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.test.ts b/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.test.ts index 43e208197f..49d4fe9e19 100644 --- a/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.test.ts +++ b/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.test.ts @@ -25,12 +25,15 @@ import { DbRefreshStateRow, DbSearchRow, } from '../database/tables'; +import { Stitcher } from '../stitching/Stitcher'; import { DefaultEntitiesCatalog } from './DefaultEntitiesCatalog'; describe('DefaultEntitiesCatalog', () => { const databases = TestDatabases.create({ ids: ['POSTGRES_13', 'POSTGRES_9', 'SQLITE_3'], }); + const stitch = jest.fn(); + const stitcher: Stitcher = { stitch } as any; async function createDatabase(databaseId: TestDatabaseId) { const knex = await databases.init(databaseId); @@ -122,6 +125,10 @@ describe('DefaultEntitiesCatalog', () => { ); } + afterEach(() => { + jest.resetAllMocks(); + }); + describe('entityAncestry', () => { it.each(databases.eachSupportedId())( 'should return the ancestry with one parent, %p', @@ -151,7 +158,7 @@ describe('DefaultEntitiesCatalog', () => { await addEntity(knex, parent, [{ entity: grandparent }]); await addEntity(knex, root, [{ entity: parent }]); - const catalog = new DefaultEntitiesCatalog(knex); + const catalog = new DefaultEntitiesCatalog(knex, stitcher); const result = await catalog.entityAncestry('k:default/root'); expect(result.rootEntityRef).toEqual('k:default/root'); @@ -181,7 +188,7 @@ describe('DefaultEntitiesCatalog', () => { 'should throw error if the entity does not exist, %p', async databaseId => { const { knex } = await createDatabase(databaseId); - const catalog = new DefaultEntitiesCatalog(knex); + const catalog = new DefaultEntitiesCatalog(knex, stitcher); await expect(() => catalog.entityAncestry('k:default/root'), ).rejects.toThrow('No such entity k:default/root'); @@ -224,7 +231,7 @@ describe('DefaultEntitiesCatalog', () => { await addEntity(knex, parent2, [{ entity: grandparent }]); await addEntity(knex, root, [{ entity: parent1 }, { entity: parent2 }]); - const catalog = new DefaultEntitiesCatalog(knex); + const catalog = new DefaultEntitiesCatalog(knex, stitcher); const result = await catalog.entityAncestry('k:default/root'); expect(result.rootEntityRef).toEqual('k:default/root'); @@ -280,7 +287,7 @@ describe('DefaultEntitiesCatalog', () => { }; await addEntityToSearch(knex, entity1); await addEntityToSearch(knex, entity2); - const catalog = new DefaultEntitiesCatalog(knex); + const catalog = new DefaultEntitiesCatalog(knex, stitcher); const testFilter = { key: 'spec.test', @@ -313,7 +320,7 @@ describe('DefaultEntitiesCatalog', () => { }; await addEntityToSearch(knex, entity1); await addEntityToSearch(knex, entity2); - const catalog = new DefaultEntitiesCatalog(knex); + const catalog = new DefaultEntitiesCatalog(knex, stitcher); const testFilter = { not: { @@ -360,7 +367,7 @@ describe('DefaultEntitiesCatalog', () => { await addEntityToSearch(knex, entity2); await addEntityToSearch(knex, entity3); await addEntityToSearch(knex, entity4); - const catalog = new DefaultEntitiesCatalog(knex); + const catalog = new DefaultEntitiesCatalog(knex, stitcher); const testFilter1 = { key: 'metadata.org', @@ -415,7 +422,7 @@ describe('DefaultEntitiesCatalog', () => { }; await addEntityToSearch(knex, entity1); await addEntityToSearch(knex, entity2); - const catalog = new DefaultEntitiesCatalog(knex); + const catalog = new DefaultEntitiesCatalog(knex, stitcher); const testFilter1 = { key: 'metadata.org', @@ -457,7 +464,7 @@ describe('DefaultEntitiesCatalog', () => { }; await addEntityToSearch(knex, entity1); await addEntityToSearch(knex, entity2); - const catalog = new DefaultEntitiesCatalog(knex); + const catalog = new DefaultEntitiesCatalog(knex, stitcher); const testFilter = { key: 'kind', @@ -501,7 +508,7 @@ describe('DefaultEntitiesCatalog', () => { }, [], ); - const catalog = new DefaultEntitiesCatalog(knex); + const catalog = new DefaultEntitiesCatalog(knex, stitcher); const { entities } = await catalog.entities(); @@ -557,10 +564,16 @@ describe('DefaultEntitiesCatalog', () => { metadata: { name: 'root' }, spec: {}, }; - const unrelated: Entity = { + const unrelated1: Entity = { apiVersion: 'a', kind: 'k', - metadata: { name: 'unrelated' }, + metadata: { name: 'unrelated1' }, + spec: {}, + }; + const unrelated2: Entity = { + apiVersion: 'a', + kind: 'k', + metadata: { name: 'unrelated2' }, spec: {}, }; @@ -571,10 +584,23 @@ describe('DefaultEntitiesCatalog', () => { { entity: parent1 }, { entity: parent2 }, ]); - await addEntity(knex, unrelated, []); + await addEntity(knex, unrelated1, []); + await addEntity(knex, unrelated2, []); await knex('refresh_state').update({ result_hash: 'not-changed' }); + await knex('relations').insert({ + originating_entity_id: uid, + type: 't', + source_entity_ref: 'k:default/root', + target_entity_ref: 'k:default/unrelated1', + }); + await knex('relations').insert({ + originating_entity_id: uid, + type: 't', + source_entity_ref: 'k:default/unrelated2', + target_entity_ref: 'k:default/root', + }); - const catalog = new DefaultEntitiesCatalog(knex); + const catalog = new DefaultEntitiesCatalog(knex, stitcher); await catalog.removeEntityByUid(uid); await expect( @@ -586,8 +612,12 @@ describe('DefaultEntitiesCatalog', () => { { entity_ref: 'k:default/grandparent', result_hash: 'not-changed' }, { entity_ref: 'k:default/parent1', result_hash: 'child-was-deleted' }, { entity_ref: 'k:default/parent2', result_hash: 'child-was-deleted' }, - { entity_ref: 'k:default/unrelated', result_hash: 'not-changed' }, + { entity_ref: 'k:default/unrelated1', result_hash: 'not-changed' }, + { entity_ref: 'k:default/unrelated2', result_hash: 'not-changed' }, ]); + expect(stitch).toHaveBeenCalledWith( + new Set(['k:default/unrelated1', 'k:default/unrelated2']), + ); }, ); }); @@ -616,7 +646,7 @@ describe('DefaultEntitiesCatalog', () => { metadata: { name: 'two' }, spec: {}, }); - const catalog = new DefaultEntitiesCatalog(knex); + const catalog = new DefaultEntitiesCatalog(knex, stitcher); await expect(catalog.facets({ facets: ['kind'] })).resolves.toEqual({ facets: { @@ -654,7 +684,7 @@ describe('DefaultEntitiesCatalog', () => { }, spec: {}, }); - const catalog = new DefaultEntitiesCatalog(knex); + const catalog = new DefaultEntitiesCatalog(knex, stitcher); await expect( catalog.facets({ @@ -698,7 +728,7 @@ describe('DefaultEntitiesCatalog', () => { }, spec: {}, }); - const catalog = new DefaultEntitiesCatalog(knex); + const catalog = new DefaultEntitiesCatalog(knex, stitcher); await expect( catalog.facets({ diff --git a/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.ts b/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.ts index fa11903447..dc84b12484 100644 --- a/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.ts +++ b/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.ts @@ -38,8 +38,10 @@ import { DbPageInfo, DbRefreshStateReferencesRow, DbRefreshStateRow, + DbRelationsRow, DbSearchRow, } from '../database/tables'; +import { Stitcher } from '../stitching/Stitcher'; function parsePagination(input?: EntityPagination): { limit?: number; @@ -158,7 +160,10 @@ function parseFilter( } export class DefaultEntitiesCatalog implements EntitiesCatalog { - constructor(private readonly database: Knex) {} + constructor( + private readonly database: Knex, + private readonly stitcher: Stitcher, + ) {} async entities(request?: EntitiesRequest): Promise { const db = this.database; @@ -244,6 +249,7 @@ export class DefaultEntitiesCatalog implements EntitiesCatalog { await this.database('refresh_state') .update({ result_hash: 'child-was-deleted', + next_update_at: this.database.fn.now(), }) .whereIn('entity_ref', function parents(builder) { return builder @@ -256,9 +262,35 @@ export class DefaultEntitiesCatalog implements EntitiesCatalog { .select('refresh_state_references.source_entity_ref'); }); + // Stitch the entities that the deleted one had relations to. If we do not + // do this, the entities in the other end of the relations will still look + // like they have a relation to the entity that was deleted, despite not + // having any corresponding rows in the relations table. + const relationPeers = await this.database + .from('relations') + .innerJoin('refresh_state', { + 'refresh_state.entity_ref': 'relations.target_entity_ref', + }) + .where('relations.originating_entity_id', '=', uid) + .andWhere('refresh_state.entity_id', '!=', uid) + .select({ ref: 'relations.target_entity_ref' }) + .union(other => + other + .from('relations') + .innerJoin('refresh_state', { + 'refresh_state.entity_ref': 'relations.source_entity_ref', + }) + .where('relations.originating_entity_id', '=', uid) + .andWhere('refresh_state.entity_id', '!=', uid) + .select({ ref: 'relations.source_entity_ref' }), + ); + + // Perform the actual deletion await this.database('refresh_state') .where('entity_id', uid) .delete(); + + await this.stitcher.stitch(new Set(relationPeers.map(p => p.ref))); } async entityAncestry(rootRef: string): Promise { From 6103298d0589893700cb3a9e4c94ae94432358c3 Mon Sep 17 00:00:00 2001 From: Brian Fletcher Date: Fri, 23 Sep 2022 15:22:19 +0100 Subject: [PATCH 115/117] Fix command to create a backend plugin Signed-off-by: Brian Fletcher --- docs/plugins/backend-plugin.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/plugins/backend-plugin.md b/docs/plugins/backend-plugin.md index c6f4a50e60..24213c57a9 100644 --- a/docs/plugins/backend-plugin.md +++ b/docs/plugins/backend-plugin.md @@ -13,7 +13,7 @@ A new, bare-bones backend plugin package can be created by issuing the following command in your Backstage repository root: ```sh -yarn create-plugin --backend +yarn new --select backend-plugin ``` Please also see the `--help` flag for the `create-plugin` command for some From 81b063782404917be2df7113ea6b9add10d092c8 Mon Sep 17 00:00:00 2001 From: Brian Fletcher Date: Fri, 23 Sep 2022 15:24:39 +0100 Subject: [PATCH 116/117] Update backend-plugin.md Signed-off-by: Brian Fletcher --- docs/plugins/backend-plugin.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/plugins/backend-plugin.md b/docs/plugins/backend-plugin.md index 24213c57a9..3eddb9e1c2 100644 --- a/docs/plugins/backend-plugin.md +++ b/docs/plugins/backend-plugin.md @@ -16,7 +16,7 @@ command in your Backstage repository root: yarn new --select backend-plugin ``` -Please also see the `--help` flag for the `create-plugin` command for some +Please also see the `--help` flag for the `new` command for some further options that are available, notably the `--scope` and `--no-private` flags that control naming and publishing of the newly created package. Your repo root `package.json` will probably also have some default values already set up From c73e2780429991ba316a13bf18f839463db9e41d Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sat, 24 Sep 2022 11:19:12 +0200 Subject: [PATCH 117/117] Update .changeset/quiet-hats-kick.md Signed-off-by: Patrik Oldsberg --- .changeset/quiet-hats-kick.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/quiet-hats-kick.md b/.changeset/quiet-hats-kick.md index 155d8f232c..a0bbab4cb1 100644 --- a/.changeset/quiet-hats-kick.md +++ b/.changeset/quiet-hats-kick.md @@ -2,4 +2,4 @@ '@backstage/plugin-jenkins-backend': patch --- -fix incorrect jenkins backend config initialization. named config and non named config use extraRequestHeaders +Fixed a bug where `extraRequestHeaders` configuration was ignored.