From 42b2f6542199be17ce410003ac2d0255c47bca1b Mon Sep 17 00:00:00 2001 From: Aramis Sennyey Date: Thu, 9 Feb 2023 20:37:29 -0500 Subject: [PATCH 001/147] First try, need to figure out how to pass entity ref as form data. Signed-off-by: Aramis Sennyey --- .../src/components/EntityRefLink/humanize.ts | 9 ++++ .../fields/EntityPicker/EntityPicker.tsx | 45 +++++++++++-------- .../OwnedEntityPicker/OwnedEntityPicker.tsx | 15 +++---- 3 files changed, 42 insertions(+), 27 deletions(-) diff --git a/plugins/catalog-react/src/components/EntityRefLink/humanize.ts b/plugins/catalog-react/src/components/EntityRefLink/humanize.ts index bfc8e2af84..9abf0d7978 100644 --- a/plugins/catalog-react/src/components/EntityRefLink/humanize.ts +++ b/plugins/catalog-react/src/components/EntityRefLink/humanize.ts @@ -18,6 +18,7 @@ import { Entity, CompoundEntityRef, DEFAULT_NAMESPACE, + UserEntity, } from '@backstage/catalog-model'; /** @@ -36,11 +37,19 @@ export function humanizeEntityRef( let kind; let namespace; let name; + console.log(entityRef); if ('metadata' in entityRef) { kind = entityRef.kind; namespace = entityRef.metadata.namespace; name = entityRef.metadata.name; + + // Escapes when we know more about an entity. + if (entityRef.metadata.title) { + return entityRef.metadata.title; + } else if ((entityRef as UserEntity).spec?.profile?.displayName) { + return (entityRef as UserEntity).spec?.profile?.displayName; + } } else { kind = entityRef.kind; namespace = entityRef.namespace; diff --git a/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx b/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx index 48e60b60ad..0dc3e39fc4 100644 --- a/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx +++ b/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx @@ -14,6 +14,7 @@ * limitations under the License. */ import { type EntityFilterQuery } from '@backstage/catalog-client'; +import { Entity, stringifyEntityRef } from '@backstage/catalog-model'; import { useApi } from '@backstage/core-plugin-api'; import { catalogApiRef, @@ -22,7 +23,7 @@ import { import { TextField } from '@material-ui/core'; import FormControl from '@material-ui/core/FormControl'; import Autocomplete from '@material-ui/lab/Autocomplete'; -import React, { useCallback, useEffect } from 'react'; +import React, { useCallback, useEffect, useState } from 'react'; import useAsync from 'react-use/lib/useAsync'; import { EntityPickerProps } from './schema'; @@ -45,6 +46,7 @@ export const EntityPicker = (props: EntityPickerProps) => { idSchema, } = props; const allowedKinds = uiSchema['ui:options']?.allowedKinds; + console.log(formData); const catalogFilter: EntityFilterQuery | undefined = uiSchema['ui:options']?.catalogFilter || @@ -54,29 +56,31 @@ export const EntityPicker = (props: EntityPickerProps) => { const defaultNamespace = uiSchema['ui:options']?.defaultNamespace; const catalogApi = useApi(catalogApiRef); + const [value, setValue] = useState(formData); - const { value: entities, loading } = useAsync(() => - catalogApi.getEntities( + const { value: entities, loading } = useAsync(async () => { + const { items } = await catalogApi.getEntities( catalogFilter ? { filter: catalogFilter } : undefined, - ), - ); - - const entityRefs = entities?.items.map(e => - humanizeEntityRef(e, { defaultKind, defaultNamespace }), - ); + ); + return items; + }); const onSelect = useCallback( - (_: any, value: string | null) => { - onChange(value ?? undefined); + (_: any, ref: string | Entity | null) => { + let entityRef: string = typeof ref === 'string' ? ref : ''; + if (typeof ref !== 'string') + entityRef = ref ? stringifyEntityRef(ref as Entity) : ''; + setValue(entityRef); + onChange(entityRef); }, - [onChange], + [onChange, setValue], ); useEffect(() => { - if (entityRefs?.length === 1) { - onChange(entityRefs[0]); + if (entities?.length === 1) { + onChange(stringifyEntityRef(entities[0])); } - }, [entityRefs, onChange]); + }, [entities, onChange]); return ( { error={rawErrors?.length > 0 && !formData} > e.metadata.name === formData)} loading={loading} onChange={onSelect} - options={entityRefs || []} + options={entities || []} + getOptionLabel={option => + typeof option === 'string' + ? option + : humanizeEntityRef(option, { defaultKind, defaultNamespace })! + } autoSelect freeSolo={uiSchema['ui:options']?.allowArbitraryValues ?? true} renderInput={params => ( diff --git a/plugins/scaffolder/src/components/fields/OwnedEntityPicker/OwnedEntityPicker.tsx b/plugins/scaffolder/src/components/fields/OwnedEntityPicker/OwnedEntityPicker.tsx index 01a174a6a3..6d80972f1b 100644 --- a/plugins/scaffolder/src/components/fields/OwnedEntityPicker/OwnedEntityPicker.tsx +++ b/plugins/scaffolder/src/components/fields/OwnedEntityPicker/OwnedEntityPicker.tsx @@ -14,7 +14,7 @@ * limitations under the License. */ import { GetEntitiesResponse } from '@backstage/catalog-client'; -import { RELATION_OWNED_BY } from '@backstage/catalog-model'; +import { Entity, RELATION_OWNED_BY } from '@backstage/catalog-model'; import { identityApiRef, useApi } from '@backstage/core-plugin-api'; import { catalogApiRef, @@ -54,12 +54,9 @@ export const OwnedEntityPicker = (props: OwnedEntityPickerProps) => { uiSchema['ui:options']?.allowArbitraryValues ?? true; const { ownedEntities, loading } = useOwnedEntities(allowedKinds); - const entityRefs = ownedEntities?.items - .map(e => humanizeEntityRef(e, { defaultKind, defaultNamespace })) - .filter(n => n); - - const onSelect = (_: any, value: string | null) => { - onChange(value || ''); + const entities = ownedEntities?.items.filter(n => n); + const onSelect = (_: any, value: Entity | null) => { + onChange(value?.metadata.name || ''); }; return ( @@ -70,10 +67,10 @@ export const OwnedEntityPicker = (props: OwnedEntityPickerProps) => { > ( From f36840b4664ee1b061ad81479afcf5d4d2ffd6ba Mon Sep 17 00:00:00 2001 From: Aramis Sennyey Date: Fri, 10 Feb 2023 12:42:04 -0500 Subject: [PATCH 002/147] Update scaffolder filters to use humanizeEntityRef but stringifyEntityRef in the backend. Signed-off-by: Aramis Sennyey --- .../fields/EntityPicker/EntityPicker.tsx | 57 ++++++--- .../OwnedEntityPicker/OwnedEntityPicker.tsx | 117 ++++++------------ 2 files changed, 80 insertions(+), 94 deletions(-) diff --git a/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx b/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx index 0dc3e39fc4..2a36b9f8ef 100644 --- a/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx +++ b/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx @@ -14,7 +14,11 @@ * limitations under the License. */ import { type EntityFilterQuery } from '@backstage/catalog-client'; -import { Entity, stringifyEntityRef } from '@backstage/catalog-model'; +import { + Entity, + parseEntityRef, + stringifyEntityRef, +} from '@backstage/catalog-model'; import { useApi } from '@backstage/core-plugin-api'; import { catalogApiRef, @@ -22,8 +26,10 @@ import { } from '@backstage/plugin-catalog-react'; import { TextField } from '@material-ui/core'; import FormControl from '@material-ui/core/FormControl'; -import Autocomplete from '@material-ui/lab/Autocomplete'; -import React, { useCallback, useEffect, useState } from 'react'; +import Autocomplete, { + AutocompleteChangeReason, +} from '@material-ui/lab/Autocomplete'; +import React, { useCallback, useEffect } from 'react'; import useAsync from 'react-use/lib/useAsync'; import { EntityPickerProps } from './schema'; @@ -46,7 +52,6 @@ export const EntityPicker = (props: EntityPickerProps) => { idSchema, } = props; const allowedKinds = uiSchema['ui:options']?.allowedKinds; - console.log(formData); const catalogFilter: EntityFilterQuery | undefined = uiSchema['ui:options']?.catalogFilter || @@ -56,7 +61,6 @@ export const EntityPicker = (props: EntityPickerProps) => { const defaultNamespace = uiSchema['ui:options']?.defaultNamespace; const catalogApi = useApi(catalogApiRef); - const [value, setValue] = useState(formData); const { value: entities, loading } = useAsync(async () => { const { items } = await catalogApi.getEntities( @@ -64,16 +68,36 @@ export const EntityPicker = (props: EntityPickerProps) => { ); return items; }); + const allowArbitraryValues = + uiSchema['ui:options']?.allowArbitraryValues ?? true; const onSelect = useCallback( - (_: any, ref: string | Entity | null) => { - let entityRef: string = typeof ref === 'string' ? ref : ''; - if (typeof ref !== 'string') - entityRef = ref ? stringifyEntityRef(ref as Entity) : ''; - setValue(entityRef); - onChange(entityRef); + (_: any, ref: string | Entity | null, reason: AutocompleteChangeReason) => { + // if ref == string + if (typeof ref !== 'string') { + onChange(ref ? stringifyEntityRef(ref as Entity) : ''); + } else { + if (reason === 'blur') { + // Add in default namespace, etc. + let entityRef = ref; + try { + // Attempt to parse the entity ref into it's full form. + entityRef = stringifyEntityRef( + parseEntityRef(ref as string, { + defaultKind, + defaultNamespace: defaultNamespace || undefined, + }), + ); + } catch (err) { + // If the passed in value isn't an entity ref, do nothing. + } + if (formData !== entityRef) { + onChange(ref); + } + } + } }, - [onChange, setValue], + [onChange, formData, defaultKind, defaultNamespace], ); useEffect(() => { @@ -91,17 +115,22 @@ export const EntityPicker = (props: EntityPickerProps) => { e.metadata.name === formData)} + value={ + // Since free solo is usually enabled, attempt to + entities?.find(e => stringifyEntityRef(e) === formData) ?? + (allowArbitraryValues ? formData : '') + } loading={loading} onChange={onSelect} options={entities || []} getOptionLabel={option => + // option can be a string due to freeSolo. typeof option === 'string' ? option : humanizeEntityRef(option, { defaultKind, defaultNamespace })! } autoSelect - freeSolo={uiSchema['ui:options']?.allowArbitraryValues ?? true} + freeSolo={allowArbitraryValues} renderInput={params => ( { const { - onChange, schema: { title = 'Entity', description = 'An entity from the catalog' }, - required, uiSchema, - rawErrors, - formData, - idSchema, + required, } = props; + const identityApi = useApi(identityApiRef); + const { loading, value: identityRefs } = useAsync(async () => { + const identity = await identityApi.getBackstageIdentity(); + return identity.ownershipEntityRefs; + }); + 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 entities = ownedEntities?.items.filter(n => n); - const onSelect = (_: any, value: Entity | null) => { - onChange(value?.metadata.name || ''); - }; - - return ( - 0 && !formData} - > + if (loading) + return ( ( )} + options={[]} /> - + ); + + return ( + ); }; - -/** - * Takes the relevant parts of the Backstage identity, and translates them into - * a list of entities which are owned by the user. Takes an optional parameter - * to filter the entities based on allowedKinds - * - * - * @param allowedKinds - Array of allowed kinds to filter the entities - */ -function useOwnedEntities(allowedKinds?: string[]): { - loading: boolean; - ownedEntities: GetEntitiesResponse | undefined; -} { - const identityApi = useApi(identityApiRef); - const catalogApi = useApi(catalogApiRef); - - const { loading, value: refs } = useAsync(async () => { - const identity = await identityApi.getBackstageIdentity(); - const identityRefs = identity.ownershipEntityRefs; - const catalogs = await catalogApi.getEntities( - allowedKinds - ? { - filter: { - kind: allowedKinds, - [`relations.${RELATION_OWNED_BY}`]: identityRefs || [], - }, - } - : { - filter: { - [`relations.${RELATION_OWNED_BY}`]: identityRefs || [], - }, - }, - ); - return catalogs; - }, []); - - const ownedEntities = useMemo(() => { - return refs; - }, [refs]); - - return useMemo(() => ({ loading, ownedEntities }), [loading, ownedEntities]); -} From 5cee4f71caba40e2758f1f9a458178d5ec274ebb Mon Sep 17 00:00:00 2001 From: Claire Casey Date: Tue, 14 Feb 2023 14:45:56 -0500 Subject: [PATCH 003/147] add styling to handle overflow text on ownership and members card Signed-off-by: Claire Casey --- .../Cards/Group/MembersList/MembersListCard.tsx | 11 +++++++---- .../Cards/OwnershipCard/ComponentsGrid.tsx | 14 +++++++++++--- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.tsx b/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.tsx index 7e5b683bf1..65c3144d30 100644 --- a/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.tsx +++ b/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.tsx @@ -59,15 +59,14 @@ const useStyles = makeStyles((theme: Theme) => flex: '1', minWidth: '0px', }, - email: { + overflowingText: { overflow: 'hidden', - whiteSpace: 'nowrap', textOverflow: 'ellipsis', display: 'inline-block', maxWidth: '100%', '&:hover': { overflow: 'visible', - whiteSpace: 'normal', + wordBreak: 'break-word', }, }, }), @@ -108,6 +107,7 @@ const MemberComponent = (props: { member: UserEntity }) => { > { {profile?.email && ( - + {profile.email} )} diff --git a/plugins/org/src/components/Cards/OwnershipCard/ComponentsGrid.tsx b/plugins/org/src/components/Cards/OwnershipCard/ComponentsGrid.tsx index 567c7ad3bc..edd8cc126f 100644 --- a/plugins/org/src/components/Cards/OwnershipCard/ComponentsGrid.tsx +++ b/plugins/org/src/components/Cards/OwnershipCard/ComponentsGrid.tsx @@ -44,8 +44,16 @@ const useStyles = makeStyles((theme: BackstageTheme) => }, height: '100%', }, - bold: { + title: { fontWeight: theme.typography.fontWeightBold, + textAlign: 'center', + overflow: 'hidden', + textOverflow: 'ellipsis', + maxWidth: '100%', + '&:hover': { + overflow: 'visible', + wordBreak: 'break-word', + }, }, entityTypeBox: { background: (props: { type: string }) => @@ -77,10 +85,10 @@ const EntityCountTile = ({ flexDirection="column" alignItems="center" > - + {counter} - + {pluralize(rawTitle.toLocaleUpperCase('en-US'), counter)} {type && {kind}} From a06fcac40405d66acdbd4d8e3c029f15e3864b21 Mon Sep 17 00:00:00 2001 From: Claire Casey Date: Tue, 14 Feb 2023 15:43:28 -0500 Subject: [PATCH 004/147] add changeset Signed-off-by: Claire Casey --- .changeset/selfish-hats-wait.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/selfish-hats-wait.md diff --git a/.changeset/selfish-hats-wait.md b/.changeset/selfish-hats-wait.md new file mode 100644 index 0000000000..40d0d194e7 --- /dev/null +++ b/.changeset/selfish-hats-wait.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-org': patch +--- + +Add styling to the MembersListCard and ComponentsGrid to handle overflow text. From 860de10fa67c2efa6ea3cf725e06792f68d7d381 Mon Sep 17 00:00:00 2001 From: Lucas Pires Date: Fri, 27 Jan 2023 17:58:28 -0300 Subject: [PATCH 005/147] feat: including authentication to server applications in scaffolder plugin Signed-off-by: Lucas Pires --- .changeset/backend-token-authentication.md | 5 ++++ packages/backend/src/plugins/scaffolder.ts | 1 + .../src/ScaffolderPlugin.ts | 3 +++ .../scaffolder-backend/src/service/router.ts | 26 ++++++++++++++----- 4 files changed, 28 insertions(+), 7 deletions(-) create mode 100644 .changeset/backend-token-authentication.md diff --git a/.changeset/backend-token-authentication.md b/.changeset/backend-token-authentication.md new file mode 100644 index 0000000000..597921822f --- /dev/null +++ b/.changeset/backend-token-authentication.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend': patch +--- + +Make identity valid if subject of token is a github-server token diff --git a/packages/backend/src/plugins/scaffolder.ts b/packages/backend/src/plugins/scaffolder.ts index d079b64c28..e734408d42 100644 --- a/packages/backend/src/plugins/scaffolder.ts +++ b/packages/backend/src/plugins/scaffolder.ts @@ -34,5 +34,6 @@ export default async function createPlugin( reader: env.reader, identity: env.identity, scheduler: env.scheduler, + tokenManager: env.tokenManager, }); } diff --git a/plugins/scaffolder-backend/src/ScaffolderPlugin.ts b/plugins/scaffolder-backend/src/ScaffolderPlugin.ts index 43b8d30f99..639f9b0806 100644 --- a/plugins/scaffolder-backend/src/ScaffolderPlugin.ts +++ b/plugins/scaffolder-backend/src/ScaffolderPlugin.ts @@ -82,6 +82,7 @@ export const scaffolderPlugin = createBackendPlugin( database: coreServices.database, httpRouter: coreServices.httpRouter, catalogClient: catalogServiceRef, + tokenManager: coreServices.tokenManager, }, async init({ logger, @@ -90,6 +91,7 @@ export const scaffolderPlugin = createBackendPlugin( database, httpRouter, catalogClient, + tokenManager, }) { const { additionalTemplateFilters, @@ -127,6 +129,7 @@ export const scaffolderPlugin = createBackendPlugin( taskWorkers, additionalTemplateFilters, additionalTemplateGlobals, + tokenManager, }); httpRouter.use(router); }, diff --git a/plugins/scaffolder-backend/src/service/router.ts b/plugins/scaffolder-backend/src/service/router.ts index c339de8d10..49cfa68306 100644 --- a/plugins/scaffolder-backend/src/service/router.ts +++ b/plugins/scaffolder-backend/src/service/router.ts @@ -14,7 +14,11 @@ * limitations under the License. */ -import { PluginDatabaseManager, UrlReader } from '@backstage/backend-common'; +import { + PluginDatabaseManager, + TokenManager, + UrlReader, +} from '@backstage/backend-common'; import { PluginTaskScheduler } from '@backstage/backend-tasks'; import { CatalogApi } from '@backstage/catalog-client'; import { @@ -82,6 +86,7 @@ export interface RouterOptions { additionalTemplateFilters?: Record; additionalTemplateGlobals?: Record; identity?: IdentityApi; + tokenManager?: TokenManager; } function isSupportedTemplate(entity: TemplateEntityV1beta3) { @@ -96,13 +101,14 @@ function isSupportedTemplate(entity: TemplateEntityV1beta3) { * are using the IdentityApi, we can remove this function. */ function buildDefaultIdentityClient({ - logger, + options, }: { - logger: Logger; + options: RouterOptions; }): IdentityApi { return { getIdentity: async ({ request }: IdentityApiGetIdentityRequest) => { const header = request.headers.authorization; + const { logger, tokenManager } = options; if (!header) { return undefined; @@ -132,8 +138,15 @@ function buildDefaultIdentityClient({ throw new TypeError('Expected string sub claim'); } - // Check that it's a valid ref, otherwise this will throw. - parseEntityRef(sub); + try { + // Check that it's a valid ref, otherwise this will throw. + parseEntityRef(sub); + } catch (e) { + if (sub !== 'backstage-server' || !options.tokenManager) { + throw e; + } + await tokenManager?.authenticate(token); + } return { identity: { @@ -179,8 +192,7 @@ export async function createRouter( const logger = parentLogger.child({ plugin: 'scaffolder' }); const identity: IdentityApi = - options.identity || buildDefaultIdentityClient({ logger }); - + options.identity || buildDefaultIdentityClient({ options }); const workingDirectory = await getWorkingDirectory(config, logger); const integrations = ScmIntegrations.fromConfig(config); From 9052ca8a2e37cf52268175b4d6096d460daa301d Mon Sep 17 00:00:00 2001 From: Lucas Pires Date: Fri, 27 Jan 2023 18:31:40 -0300 Subject: [PATCH 006/147] chore: including api changeset file Signed-off-by: Lucas Pires --- plugins/scaffolder-backend/api-report.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md index 0d745862a1..81546dd00a 100644 --- a/plugins/scaffolder-backend/api-report.md +++ b/plugins/scaffolder-backend/api-report.md @@ -32,6 +32,7 @@ import { TaskSecrets as TaskSecrets_2 } from '@backstage/plugin-scaffolder-node' import { TaskSpec } from '@backstage/plugin-scaffolder-common'; import { TaskSpecV1beta3 } from '@backstage/plugin-scaffolder-common'; import { TemplateAction as TemplateAction_2 } from '@backstage/plugin-scaffolder-node'; +import { TokenManager } from '@backstage/backend-common'; import { UrlReader } from '@backstage/backend-common'; import { Writable } from 'stream'; @@ -642,6 +643,8 @@ export interface RouterOptions { taskBroker?: TaskBroker; // @deprecated (undocumented) taskWorkers?: number; + // (undocumented) + tokenManager?: TokenManager; } // @public (undocumented) From 770ecf61312cd89a042a10a3b83289cfe772c0db Mon Sep 17 00:00:00 2001 From: Lucas Pires Date: Wed, 15 Feb 2023 12:39:20 -0300 Subject: [PATCH 007/147] chore: removing token manager and adding backstage-server condition Signed-off-by: Lucas Pires --- .changeset/backend-token-authentication.md | 2 +- packages/backend/src/plugins/scaffolder.ts | 1 - plugins/scaffolder-backend/api-report.md | 3 --- .../src/ScaffolderPlugin.ts | 3 --- .../scaffolder-backend/src/service/router.ts | 24 +++++++------------ 5 files changed, 9 insertions(+), 24 deletions(-) diff --git a/.changeset/backend-token-authentication.md b/.changeset/backend-token-authentication.md index 597921822f..3b0f016800 100644 --- a/.changeset/backend-token-authentication.md +++ b/.changeset/backend-token-authentication.md @@ -2,4 +2,4 @@ '@backstage/plugin-scaffolder-backend': patch --- -Make identity valid if subject of token is a github-server token +Make identity valid if subject of token is a backstage server-2-server auth token diff --git a/packages/backend/src/plugins/scaffolder.ts b/packages/backend/src/plugins/scaffolder.ts index e734408d42..d079b64c28 100644 --- a/packages/backend/src/plugins/scaffolder.ts +++ b/packages/backend/src/plugins/scaffolder.ts @@ -34,6 +34,5 @@ export default async function createPlugin( reader: env.reader, identity: env.identity, scheduler: env.scheduler, - tokenManager: env.tokenManager, }); } diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md index 81546dd00a..0d745862a1 100644 --- a/plugins/scaffolder-backend/api-report.md +++ b/plugins/scaffolder-backend/api-report.md @@ -32,7 +32,6 @@ import { TaskSecrets as TaskSecrets_2 } from '@backstage/plugin-scaffolder-node' import { TaskSpec } from '@backstage/plugin-scaffolder-common'; import { TaskSpecV1beta3 } from '@backstage/plugin-scaffolder-common'; import { TemplateAction as TemplateAction_2 } from '@backstage/plugin-scaffolder-node'; -import { TokenManager } from '@backstage/backend-common'; import { UrlReader } from '@backstage/backend-common'; import { Writable } from 'stream'; @@ -643,8 +642,6 @@ export interface RouterOptions { taskBroker?: TaskBroker; // @deprecated (undocumented) taskWorkers?: number; - // (undocumented) - tokenManager?: TokenManager; } // @public (undocumented) diff --git a/plugins/scaffolder-backend/src/ScaffolderPlugin.ts b/plugins/scaffolder-backend/src/ScaffolderPlugin.ts index 639f9b0806..43b8d30f99 100644 --- a/plugins/scaffolder-backend/src/ScaffolderPlugin.ts +++ b/plugins/scaffolder-backend/src/ScaffolderPlugin.ts @@ -82,7 +82,6 @@ export const scaffolderPlugin = createBackendPlugin( database: coreServices.database, httpRouter: coreServices.httpRouter, catalogClient: catalogServiceRef, - tokenManager: coreServices.tokenManager, }, async init({ logger, @@ -91,7 +90,6 @@ export const scaffolderPlugin = createBackendPlugin( database, httpRouter, catalogClient, - tokenManager, }) { const { additionalTemplateFilters, @@ -129,7 +127,6 @@ export const scaffolderPlugin = createBackendPlugin( taskWorkers, additionalTemplateFilters, additionalTemplateGlobals, - tokenManager, }); httpRouter.use(router); }, diff --git a/plugins/scaffolder-backend/src/service/router.ts b/plugins/scaffolder-backend/src/service/router.ts index 49cfa68306..d082e3c268 100644 --- a/plugins/scaffolder-backend/src/service/router.ts +++ b/plugins/scaffolder-backend/src/service/router.ts @@ -86,7 +86,6 @@ export interface RouterOptions { additionalTemplateFilters?: Record; additionalTemplateGlobals?: Record; identity?: IdentityApi; - tokenManager?: TokenManager; } function isSupportedTemplate(entity: TemplateEntityV1beta3) { @@ -100,15 +99,11 @@ function isSupportedTemplate(entity: TemplateEntityV1beta3) { * until someone explicitly passes an IdentityApi. When we have reasonable confidence that most backstage deployments * are using the IdentityApi, we can remove this function. */ -function buildDefaultIdentityClient({ - options, -}: { - options: RouterOptions; -}): IdentityApi { +function buildDefaultIdentityClient(options: RouterOptions): IdentityApi { return { getIdentity: async ({ request }: IdentityApiGetIdentityRequest) => { const header = request.headers.authorization; - const { logger, tokenManager } = options; + const { logger } = options; if (!header) { return undefined; @@ -138,16 +133,13 @@ function buildDefaultIdentityClient({ throw new TypeError('Expected string sub claim'); } - try { - // Check that it's a valid ref, otherwise this will throw. - parseEntityRef(sub); - } catch (e) { - if (sub !== 'backstage-server' || !options.tokenManager) { - throw e; - } - await tokenManager?.authenticate(token); + if (sub === 'backstage-server') { + return undefined; } + // Check that it's a valid ref, otherwise this will throw. + parseEntityRef(sub); + return { identity: { userEntityRef: sub, @@ -192,7 +184,7 @@ export async function createRouter( const logger = parentLogger.child({ plugin: 'scaffolder' }); const identity: IdentityApi = - options.identity || buildDefaultIdentityClient({ options }); + options.identity || buildDefaultIdentityClient(options); const workingDirectory = await getWorkingDirectory(config, logger); const integrations = ScmIntegrations.fromConfig(config); From 5e2a3987aaf426f27ee16189e22488aec54890e2 Mon Sep 17 00:00:00 2001 From: Lucas Pires Date: Wed, 15 Feb 2023 14:23:43 -0300 Subject: [PATCH 008/147] fix: removing unused var Signed-off-by: Lucas Pires --- plugins/scaffolder-backend/src/service/router.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/plugins/scaffolder-backend/src/service/router.ts b/plugins/scaffolder-backend/src/service/router.ts index d082e3c268..7e8ffc1109 100644 --- a/plugins/scaffolder-backend/src/service/router.ts +++ b/plugins/scaffolder-backend/src/service/router.ts @@ -14,11 +14,7 @@ * limitations under the License. */ -import { - PluginDatabaseManager, - TokenManager, - UrlReader, -} from '@backstage/backend-common'; +import { PluginDatabaseManager, UrlReader } from '@backstage/backend-common'; import { PluginTaskScheduler } from '@backstage/backend-tasks'; import { CatalogApi } from '@backstage/catalog-client'; import { From c915712447f4f356ce0905762fb78362bc3cc1ec Mon Sep 17 00:00:00 2001 From: Claire Casey Date: Thu, 16 Feb 2023 16:29:50 -0500 Subject: [PATCH 009/147] refactor to use OverflowTooltip component Signed-off-by: Claire Casey --- .changeset/selfish-hats-wait.md | 2 +- .../Group/MembersList/MembersListCard.tsx | 16 ++++----- .../Cards/OwnershipCard/ComponentsGrid.tsx | 36 +++++++++++-------- 3 files changed, 30 insertions(+), 24 deletions(-) diff --git a/.changeset/selfish-hats-wait.md b/.changeset/selfish-hats-wait.md index 40d0d194e7..d706d42e8e 100644 --- a/.changeset/selfish-hats-wait.md +++ b/.changeset/selfish-hats-wait.md @@ -2,4 +2,4 @@ '@backstage/plugin-org': patch --- -Add styling to the MembersListCard and ComponentsGrid to handle overflow text. +Add styling to the `MembersListCard` and `ComponentsGrid` to handle overflow text. diff --git a/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.tsx b/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.tsx index 65c3144d30..bf561a23a4 100644 --- a/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.tsx +++ b/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.tsx @@ -44,6 +44,7 @@ import { Progress, ResponseErrorPanel, Link, + OverflowTooltip, } from '@backstage/core-components'; import { useApi } from '@backstage/core-plugin-api'; @@ -59,14 +60,15 @@ const useStyles = makeStyles((theme: Theme) => flex: '1', minWidth: '0px', }, - overflowingText: { + email: { overflow: 'hidden', + whiteSpace: 'nowrap', textOverflow: 'ellipsis', display: 'inline-block', maxWidth: '100%', '&:hover': { overflow: 'visible', - wordBreak: 'break-word', + whiteSpace: 'normal', }, }, }), @@ -105,22 +107,18 @@ const MemberComponent = (props: { member: UserEntity }) => { }} textAlign="center" > - + - {displayName} + {profile?.email && ( - + {profile.email} )} diff --git a/plugins/org/src/components/Cards/OwnershipCard/ComponentsGrid.tsx b/plugins/org/src/components/Cards/OwnershipCard/ComponentsGrid.tsx index edd8cc126f..b2714b5dd5 100644 --- a/plugins/org/src/components/Cards/OwnershipCard/ComponentsGrid.tsx +++ b/plugins/org/src/components/Cards/OwnershipCard/ComponentsGrid.tsx @@ -15,7 +15,12 @@ */ import { Entity } from '@backstage/catalog-model'; -import { Link, Progress, ResponseErrorPanel } from '@backstage/core-components'; +import { + Link, + OverflowTooltip, + Progress, + ResponseErrorPanel, +} from '@backstage/core-components'; import { useRouteRef } from '@backstage/core-plugin-api'; import { BackstageTheme } from '@backstage/theme'; import { @@ -44,16 +49,11 @@ const useStyles = makeStyles((theme: BackstageTheme) => }, height: '100%', }, - title: { + bold: { fontWeight: theme.typography.fontWeightBold, - textAlign: 'center', - overflow: 'hidden', - textOverflow: 'ellipsis', - maxWidth: '100%', - '&:hover': { - overflow: 'visible', - wordBreak: 'break-word', - }, + }, + smallFont: { + fontSize: theme.typography.body2.fontSize, }, entityTypeBox: { background: (props: { type: string }) => @@ -76,6 +76,7 @@ const EntityCountTile = ({ const classes = useStyles({ type: type ?? kind }); const rawTitle = type ?? kind; + const isLongText = rawTitle.length > 10; return ( @@ -85,12 +86,19 @@ const EntityCountTile = ({ flexDirection="column" alignItems="center" > - + {counter} - - {pluralize(rawTitle.toLocaleUpperCase('en-US'), counter)} - + + + + + {type && {kind}} From ad0f2169d697d8dd5ff0fb3a80bf7b3151e1dd24 Mon Sep 17 00:00:00 2001 From: Joep Peeters Date: Fri, 17 Feb 2023 10:10:21 +0100 Subject: [PATCH 010/147] extend definition with `setOwner` Signed-off-by: Joep Peeters --- packages/backend-common/config.d.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/backend-common/config.d.ts b/packages/backend-common/config.d.ts index 6c473af3c0..ad83bde485 100644 --- a/packages/backend-common/config.d.ts +++ b/packages/backend-common/config.d.ts @@ -96,6 +96,8 @@ export interface Config { * @default database */ pluginDivisionMode?: 'database' | 'schema'; + /** Configures the ownership of newly created schemas in pg databases. */ + setOwner?: string; /** * Arbitrary config object to pass to knex when initializing * (https://knexjs.org/#Installation-client). Most notable is the debug @@ -125,6 +127,8 @@ export interface Config { * This is merged recursively into the base knexConfig */ knexConfig?: object; + /** Configures the ownership of newly created schemas in pg databases. */ + setOwner?: string; }; }; }; From 8f50a807328e05537d1482415b1286505a3eb855 Mon Sep 17 00:00:00 2001 From: Joep Peeters Date: Fri, 17 Feb 2023 10:11:18 +0100 Subject: [PATCH 011/147] add `setOwner` to pluginConfig Signed-off-by: Joep Peeters --- packages/backend-common/src/database/DatabaseManager.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/backend-common/src/database/DatabaseManager.ts b/packages/backend-common/src/database/DatabaseManager.ts index 08979a92f8..7e16dd3787 100644 --- a/packages/backend-common/src/database/DatabaseManager.ts +++ b/packages/backend-common/src/database/DatabaseManager.ts @@ -186,6 +186,13 @@ export class DatabaseManager { }; } + private getSetOwnerConfig(pluginId: string): string | undefined { + return ( + this.config.getOptionalString(`${pluginPath(pluginId)}.setOwner`) ?? + this.config.getOptionalString('setOwner') + ); + } + /** * Provides the knexConfig which should be used for a given plugin. * @@ -283,6 +290,7 @@ export class DatabaseManager { ...this.getAdditionalKnexConfig(pluginId), client, connection: this.getConnectionConfig(pluginId), + setOwner: this.getSetOwnerConfig(pluginId), }; } From a9f4698a29d172f13e9c4716393af464a6f9b644 Mon Sep 17 00:00:00 2001 From: Joep Peeters Date: Fri, 17 Feb 2023 10:15:19 +0100 Subject: [PATCH 012/147] set ownership if configured Signed-off-by: Joep Peeters --- .../src/database/connectors/postgres.ts | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/packages/backend-common/src/database/connectors/postgres.ts b/packages/backend-common/src/database/connectors/postgres.ts index c780fb829b..fccd8ac48e 100644 --- a/packages/backend-common/src/database/connectors/postgres.ts +++ b/packages/backend-common/src/database/connectors/postgres.ts @@ -35,6 +35,14 @@ export function createPgDatabaseClient( ) { const knexConfig = buildPgDatabaseConfig(dbConfig, overrides); const database = knexFactory(knexConfig); + + const owner = dbConfig.getOptionalString('setOwner') + + if (owner) { + database.client.pool.on('createSuccess', (_event: any, pgClient: any) => { + pgClient.query(`SET ROLE ${owner}`, () => { }); + }); + } return database; } @@ -147,10 +155,18 @@ export async function ensurePgSchemaExists( ...schemas: Array ): Promise { const admin = createPgDatabaseClient(dbConfig); + const setOwner = dbConfig.getOptionalString('setOwner'); try { const ensureSchema = async (database: string) => { - await admin.raw(`CREATE SCHEMA IF NOT EXISTS ??`, [database]); + if (setOwner) { + await admin.raw(`CREATE SCHEMA IF NOT EXISTS ?? AUTHORIZATION ??`, [ + database, + setOwner, + ]); + } else { + await admin.raw(`CREATE SCHEMA IF NOT EXISTS ??`, [database]); + } }; await Promise.all(schemas.map(ensureSchema)); From 64560a55c2a6e730f755f20b569d5ee75e2e3783 Mon Sep 17 00:00:00 2001 From: Joep Peeters Date: Fri, 17 Feb 2023 14:57:09 +0100 Subject: [PATCH 013/147] test config handling Signed-off-by: Joep Peeters --- .../src/database/DatabaseManager.test.ts | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/packages/backend-common/src/database/DatabaseManager.test.ts b/packages/backend-common/src/database/DatabaseManager.test.ts index 95511d5aba..878fe62e4f 100644 --- a/packages/backend-common/src/database/DatabaseManager.test.ts +++ b/packages/backend-common/src/database/DatabaseManager.test.ts @@ -687,5 +687,59 @@ describe('DatabaseManager', () => { }), ); }); + + it('sets the owner config for plugin using default config', async () => { + const testManager = DatabaseManager.fromConfig( + new ConfigReader({ + backend: { + database: { + client: 'pg', + connection: { + host: 'localhost', + database: 'foodb', + }, + setOwner: 'backstage', + plugin: { + testowner: {}, + }, + }, + }, + }), + ); + await testManager.forPlugin('testowner').getClient(); + + const mockCalls = mocked(createDatabaseClient).mock.calls.splice(-1); + const [baseConfig] = mockCalls[0]; + + expect(baseConfig.data.setOwner).toEqual('backstage'); + }); + + it('sets the owner config for plugin using plugin config', async () => { + const testManager = DatabaseManager.fromConfig( + new ConfigReader({ + backend: { + database: { + client: 'pg', + connection: { + host: 'localhost', + database: 'foodb', + }, + setOwner: 'backstage', + plugin: { + testowner: { + setOwner: 'backstage-plugin', + }, + }, + }, + }, + }), + ); + await testManager.forPlugin('testowner').getClient(); + + const mockCalls = mocked(createDatabaseClient).mock.calls.splice(-1); + const [baseConfig] = mockCalls[0]; + + expect(baseConfig.data.setOwner).toEqual('backstage-plugin'); + }); }); }); From f75097868a7fb252ccd142e629b8d4b814b5dfe6 Mon Sep 17 00:00:00 2001 From: Joep Peeters Date: Fri, 17 Feb 2023 14:57:36 +0100 Subject: [PATCH 014/147] add changeset Signed-off-by: Joep Peeters --- .changeset/mean-toys-itch.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/mean-toys-itch.md diff --git a/.changeset/mean-toys-itch.md b/.changeset/mean-toys-itch.md new file mode 100644 index 0000000000..dc0d7b1155 --- /dev/null +++ b/.changeset/mean-toys-itch.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-common': patch +--- + +Adds config option to set ownership for newly created schema's and tables in Postgres From 53cd08bca29136cc1b117517dc68d453a214085d Mon Sep 17 00:00:00 2001 From: Joep Peeters Date: Fri, 17 Feb 2023 15:01:47 +0100 Subject: [PATCH 015/147] fix: spelling Signed-off-by: Joep Peeters --- .changeset/mean-toys-itch.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/mean-toys-itch.md b/.changeset/mean-toys-itch.md index dc0d7b1155..19f8c861df 100644 --- a/.changeset/mean-toys-itch.md +++ b/.changeset/mean-toys-itch.md @@ -2,4 +2,4 @@ '@backstage/backend-common': patch --- -Adds config option to set ownership for newly created schema's and tables in Postgres +Adds config option to set ownership for newly created schemas and tables in Postgres From be129f8f3cd15b4e10950450bb8ca3ec8a74daf2 Mon Sep 17 00:00:00 2001 From: Matteo Silvestri Date: Mon, 20 Feb 2023 16:24:51 +0100 Subject: [PATCH 016/147] filter gitlab groups by prefix Signed-off-by: Matteo Silvestri --- .changeset/wild-bulldogs-suffer.md | 5 ++++ .../GitlabOrgDiscoveryEntityProvider.ts | 28 ++++++++++++++----- 2 files changed, 26 insertions(+), 7 deletions(-) create mode 100644 .changeset/wild-bulldogs-suffer.md diff --git a/.changeset/wild-bulldogs-suffer.md b/.changeset/wild-bulldogs-suffer.md new file mode 100644 index 0000000000..02f50927e9 --- /dev/null +++ b/.changeset/wild-bulldogs-suffer.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-gitlab': patch +--- + +filter gitlab groups by prefix diff --git a/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts b/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts index f90a61f9e9..c507b19549 100644 --- a/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts +++ b/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts @@ -199,6 +199,10 @@ export class GitlabOrgDiscoveryEntityProvider implements EntityProvider { continue; } + if (!group.full_path.startsWith(this.config.group)) { + continue; + } + groupRes.scanned++; groupRes.matches.push(group); @@ -253,7 +257,11 @@ export class GitlabOrgDiscoveryEntityProvider implements EntityProvider { type: 'full', entities: [...userEntities, ...groupEntities].map(entity => ({ locationKey: this.getProviderName(), - entity: this.withLocations(this.integration.config.host, entity), + entity: this.withLocations( + this.integration.config.host, + this.integration.config.baseUrl, + entity, + ), })), }); } @@ -273,7 +281,9 @@ export class GitlabOrgDiscoveryEntityProvider implements EntityProvider { const entity = this.createGroupEntity(group, host); if (group.parent_id && idMapped.hasOwnProperty(group.parent_id)) { - entity.spec.parent = idMapped[group.parent_id].full_path; + entity.spec.parent = this.groupName( + idMapped[group.parent_id].full_path, + ); } entities.push(entity); @@ -282,11 +292,11 @@ export class GitlabOrgDiscoveryEntityProvider implements EntityProvider { return entities; } - private withLocations(host: string, entity: Entity): Entity { + private withLocations(host: string, baseUrl: string, entity: Entity): Entity { const location = entity.kind === 'Group' - ? `url:${host}/teams/${entity.metadata.name}` - : `url:${host}/${entity.metadata.name}`; + ? `url:${baseUrl}/${entity.metadata.annotations[`${host}/team-path`]}` + : `url:${baseUrl}/${entity.metadata.name}`; return merge( { metadata: { @@ -338,13 +348,17 @@ export class GitlabOrgDiscoveryEntityProvider implements EntityProvider { if (!entity.spec.memberOf) { entity.spec.memberOf = []; } - entity.spec.memberOf.push(group.full_path.replace('/', '-')); + entity.spec.memberOf.push(this.groupName(group.full_path)); } } return entity; } + private groupName(full_path: string): string { + return full_path.replace(`${this.config.group}/`, '').replaceAll('/', '-'); + } + private createGroupEntity(group: GitLabGroup, host: string): GroupEntity { const annotations: { [annotationName: string]: string } = {}; @@ -354,7 +368,7 @@ export class GitlabOrgDiscoveryEntityProvider implements EntityProvider { apiVersion: 'backstage.io/v1alpha1', kind: 'Group', metadata: { - name: group.full_path.replace('/', '-'), + name: this.groupName(group.full_path), annotations: annotations, }, spec: { From 4a1a720cd380d017b4dce8326d029e7161b1ddc2 Mon Sep 17 00:00:00 2001 From: Matteo Silvestri Date: Mon, 20 Feb 2023 16:37:48 +0100 Subject: [PATCH 017/147] fix GitlabOrgDiscoveryEntityProvider.test.ts tests Signed-off-by: Matteo Silvestri --- .../providers/GitlabOrgDiscoveryEntityProvider.test.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.test.ts b/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.test.ts index 74649f41da..268b4c3ba4 100644 --- a/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.test.ts +++ b/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.test.ts @@ -350,9 +350,10 @@ describe('GitlabOrgDiscoveryEntityProvider', () => { kind: 'User', metadata: { annotations: { - 'backstage.io/managed-by-location': 'url:test-gitlab/test1', + 'backstage.io/managed-by-location': + 'url:https://test-gitlab/test1', 'backstage.io/managed-by-origin-location': - 'url:test-gitlab/test1', + 'url:https://test-gitlab/test1', 'test-gitlab/user-login': 'https://gitlab.example/test1', }, name: 'test1', @@ -375,9 +376,9 @@ describe('GitlabOrgDiscoveryEntityProvider', () => { metadata: { annotations: { 'backstage.io/managed-by-location': - 'url:test-gitlab/teams/group1-group2', + 'url:https://test-gitlab/teams/group1-group2', 'backstage.io/managed-by-origin-location': - 'url:test-gitlab/teams/group1-group2', + 'url:https://test-gitlab/teams/group1-group2', 'test-gitlab/team-path': 'group1/group2', }, description: 'Group2', From e1dafc78dfc236a0fbe602a05ce521608974c692 Mon Sep 17 00:00:00 2001 From: Joep Peeters Date: Tue, 21 Feb 2023 16:50:39 +0100 Subject: [PATCH 018/147] Adhere to typespec Signed-off-by: Joep Peeters --- packages/backend-common/src/database/DatabaseManager.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/backend-common/src/database/DatabaseManager.ts b/packages/backend-common/src/database/DatabaseManager.ts index 7e16dd3787..07a9bd2934 100644 --- a/packages/backend-common/src/database/DatabaseManager.ts +++ b/packages/backend-common/src/database/DatabaseManager.ts @@ -285,12 +285,13 @@ export class DatabaseManager { */ private getConfigForPlugin(pluginId: string): Knex.Config { const { client } = this.getClientType(pluginId); + const setOwner = this.getSetOwnerConfig(pluginId); return { ...this.getAdditionalKnexConfig(pluginId), client, connection: this.getConnectionConfig(pluginId), - setOwner: this.getSetOwnerConfig(pluginId), + ...(setOwner && { setOwner }), }; } From 27c145a7b66d6c38d0ba2fd69a167c5a2de96f8e Mon Sep 17 00:00:00 2001 From: Joep Peeters Date: Tue, 21 Feb 2023 17:25:21 +0100 Subject: [PATCH 019/147] apply formatter Signed-off-by: Joep Peeters --- packages/backend-common/src/database/connectors/postgres.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/backend-common/src/database/connectors/postgres.ts b/packages/backend-common/src/database/connectors/postgres.ts index fccd8ac48e..682b2e6ceb 100644 --- a/packages/backend-common/src/database/connectors/postgres.ts +++ b/packages/backend-common/src/database/connectors/postgres.ts @@ -36,11 +36,11 @@ export function createPgDatabaseClient( const knexConfig = buildPgDatabaseConfig(dbConfig, overrides); const database = knexFactory(knexConfig); - const owner = dbConfig.getOptionalString('setOwner') + const owner = dbConfig.getOptionalString('setOwner'); if (owner) { database.client.pool.on('createSuccess', (_event: any, pgClient: any) => { - pgClient.query(`SET ROLE ${owner}`, () => { }); + pgClient.query(`SET ROLE ${owner}`, () => {}); }); } return database; From c79857ae25c8dba188413b7aa922d7e17e0980e3 Mon Sep 17 00:00:00 2001 From: Claire Casey Date: Tue, 21 Feb 2023 13:03:25 -0500 Subject: [PATCH 020/147] fix tests broken by OverflowToolTip changes Signed-off-by: Claire Casey --- .../MembersList/MembersListCard.test.tsx | 15 +++++++++- .../OwnershipCard/OwnershipCard.test.tsx | 29 ++++++++++++++----- 2 files changed, 35 insertions(+), 9 deletions(-) diff --git a/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.test.tsx b/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.test.tsx index c98cc3eb32..cc524b60a2 100644 --- a/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.test.tsx +++ b/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.test.tsx @@ -28,6 +28,19 @@ import { import React from 'react'; import { MembersListCard } from './MembersListCard'; +// Mock needed because jsdom doesn't correctly implement box-sizing +// https://github.com/ShinyChang/React-Text-Truncate/issues/70 +// https://stackoverflow.com/questions/71916701/how-to-mock-a-react-function-component-that-takes-a-ref-prop +jest.mock('react-text-truncate', () => { + const { forwardRef } = jest.requireActual('react'); + return { + __esModule: true, + default: forwardRef((props: any, ref: any) => ( +
{props.text}
+ )), + }; +}); + describe('MemberTab Test', () => { const groupEntity: GroupEntity = { apiVersion: 'backstage.io/v1alpha1', @@ -95,7 +108,7 @@ describe('MemberTab Test', () => { expect( rendered.getByText('tara-macgovern@example.com'), ).toBeInTheDocument(); - expect(rendered.getByText('Tara MacGovern')).toHaveAttribute( + expect(rendered.getByText('Tara MacGovern').closest('a')).toHaveAttribute( 'href', '/catalog/foo-bar/user/tara.macgovern', ); diff --git a/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.test.tsx b/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.test.tsx index 84f27fa183..30b7dee2de 100644 --- a/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.test.tsx +++ b/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.test.tsx @@ -120,6 +120,19 @@ const getEntitiesMock = ( } as GetEntitiesResponse); }; +// Mock needed because jsdom doesn't correctly implement box-sizing +// https://github.com/ShinyChang/React-Text-Truncate/issues/70 +// https://stackoverflow.com/questions/71916701/how-to-mock-a-react-function-component-that-takes-a-ref-prop +jest.mock('react-text-truncate', () => { + const { forwardRef } = jest.requireActual('react'); + return { + __esModule: true, + default: forwardRef((props: any, ref: any) => ( +
{props.text}
+ )), + }; +}); + describe('OwnershipCard', () => { const groupEntity: GroupEntity = { apiVersion: 'backstage.io/v1alpha1', @@ -177,19 +190,19 @@ describe('OwnershipCard', () => { expect(getByText('OPENAPI')).toBeInTheDocument(); expect( - queryByText(getByText('OPENAPI').parentElement!, '1'), + queryByText(getByText('OPENAPI').closest('a')!, '1'), ).toBeInTheDocument(); expect(getByText('SERVICE')).toBeInTheDocument(); expect( - queryByText(getByText('SERVICE').parentElement!, '1'), + queryByText(getByText('SERVICE').closest('a')!, '1'), ).toBeInTheDocument(); expect(getByText('LIBRARY')).toBeInTheDocument(); expect( - queryByText(getByText('LIBRARY').parentElement!, '1'), + queryByText(getByText('LIBRARY').closest('a')!, '1'), ).toBeInTheDocument(); expect(getByText('SYSTEM')).toBeInTheDocument(); expect( - queryByText(getByText('SYSTEM').parentElement!, '1'), + queryByText(getByText('SYSTEM').closest('a')!, '1'), ).toBeInTheDocument(); }); @@ -215,17 +228,17 @@ describe('OwnershipCard', () => { expect(getByText('SYSTEM')).toBeInTheDocument(); expect( - queryByText(getByText('SYSTEM').parentElement!, '1'), + queryByText(getByText('SYSTEM').closest('a')!, '1'), ).toBeInTheDocument(); expect( - queryByText(getByText('SYSTEM').parentElement!, 'System'), + queryByText(getByText('SYSTEM').closest('a')!, 'System'), ).not.toBeInTheDocument(); expect(getByText('OPENAPI')).toBeInTheDocument(); expect( - queryByText(getByText('OPENAPI').parentElement!, '1'), + queryByText(getByText('OPENAPI').closest('a')!, '1'), ).toBeInTheDocument(); expect( - queryByText(getByText('OPENAPI').parentElement!, 'API'), + queryByText(getByText('OPENAPI').closest('a')!, 'API'), ).toBeInTheDocument(); expect(() => getByText('LIBRARY')).toThrow(); }); From fc2b7e885887e8497f57032eec2161b60cfe7bb8 Mon Sep 17 00:00:00 2001 From: Matteo Silvestri Date: Wed, 22 Feb 2023 10:35:37 +0100 Subject: [PATCH 021/147] fix GitlabOrgDiscoveryEntityProvider.test.ts Signed-off-by: Matteo Silvestri --- .../src/providers/GitlabOrgDiscoveryEntityProvider.test.ts | 5 ++--- .../src/providers/GitlabOrgDiscoveryEntityProvider.ts | 7 ++++++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.test.ts b/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.test.ts index 268b4c3ba4..cff215acd3 100644 --- a/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.test.ts +++ b/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.test.ts @@ -184,7 +184,6 @@ describe('GitlabOrgDiscoveryEntityProvider', () => { gitlab: { 'test-id': { host: 'test-gitlab', - group: 'test-group', orgEnabled: true, }, }, @@ -376,9 +375,9 @@ describe('GitlabOrgDiscoveryEntityProvider', () => { metadata: { annotations: { 'backstage.io/managed-by-location': - 'url:https://test-gitlab/teams/group1-group2', + 'url:https://test-gitlab/group1/group2', 'backstage.io/managed-by-origin-location': - 'url:https://test-gitlab/teams/group1-group2', + 'url:https://test-gitlab/group1/group2', 'test-gitlab/team-path': 'group1/group2', }, description: 'Group2', diff --git a/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts b/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts index c507b19549..77314ead17 100644 --- a/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts +++ b/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts @@ -356,7 +356,12 @@ export class GitlabOrgDiscoveryEntityProvider implements EntityProvider { } private groupName(full_path: string): string { - return full_path.replace(`${this.config.group}/`, '').replaceAll('/', '-'); + if (this.config.group && full_path.startsWith(`${this.config.group}/`)) { + return full_path + .replace(`${this.config.group}/`, '') + .replaceAll('/', '-'); + } + return full_path.replaceAll('/', '-'); } private createGroupEntity(group: GitLabGroup, host: string): GroupEntity { From 3d96343887195b3838508492a1e967a769e497f5 Mon Sep 17 00:00:00 2001 From: Matteo Silvestri Date: Wed, 22 Feb 2023 13:08:12 +0100 Subject: [PATCH 022/147] fix compilation issue GitlabOrgDiscoveryEntityProvider Signed-off-by: Matteo Silvestri --- .../src/providers/GitlabOrgDiscoveryEntityProvider.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts b/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts index 77314ead17..57a7210e24 100644 --- a/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts +++ b/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts @@ -295,7 +295,7 @@ export class GitlabOrgDiscoveryEntityProvider implements EntityProvider { private withLocations(host: string, baseUrl: string, entity: Entity): Entity { const location = entity.kind === 'Group' - ? `url:${baseUrl}/${entity.metadata.annotations[`${host}/team-path`]}` + ? `url:${baseUrl}/${entity.metadata.annotations?.[`${host}/team-path`]}` : `url:${baseUrl}/${entity.metadata.name}`; return merge( { From 2de756939b7f0c36734e9f90e98df52aff26a130 Mon Sep 17 00:00:00 2001 From: Matteo Silvestri Date: Wed, 22 Feb 2023 15:26:29 +0100 Subject: [PATCH 023/147] fix GitlabOrgDiscoveryEntityProvider and tests Signed-off-by: Matteo Silvestri --- .../src/providers/GitlabOrgDiscoveryEntityProvider.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts b/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts index 57a7210e24..43c070ecae 100644 --- a/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts +++ b/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts @@ -199,7 +199,10 @@ export class GitlabOrgDiscoveryEntityProvider implements EntityProvider { continue; } - if (!group.full_path.startsWith(this.config.group)) { + if ( + this.config.group && + !group.full_path.startsWith(`${this.config.group}/`) + ) { continue; } From de9d28fb88c7a22f55ac73fb8882eab9004cfe55 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 23 Feb 2023 14:38:03 +0000 Subject: [PATCH 024/147] fix(deps): update dependency @roadiehq/backstage-plugin-github-pull-requests to v2.5.2 Signed-off-by: Renovate Bot --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 02058a26f0..de185bd470 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13185,8 +13185,8 @@ __metadata: linkType: hard "@roadiehq/backstage-plugin-github-pull-requests@npm:^2.2.7": - version: 2.5.1 - resolution: "@roadiehq/backstage-plugin-github-pull-requests@npm:2.5.1" + version: 2.5.2 + resolution: "@roadiehq/backstage-plugin-github-pull-requests@npm:2.5.2" dependencies: "@backstage/catalog-model": ^1.1.5 "@backstage/core-components": ^0.12.3 @@ -13209,7 +13209,7 @@ __metadata: react: ^16.13.1 || ^17.0.0 react-dom: ^16.13.1 || ^17.0.0 react-router: 6.0.0-beta.0 || ^6.3.0 - checksum: 769991ac46d4466261f2765eaab6eca903e751dc003d94a21dfb0376fca69af8edb2a8b9b12b375e903694278d32a95f8745d1f724a19429df34adeb3fb3e58c + checksum: dd8c3301867cd8ccaf094eb62c64b2923c4614e9ba384249c5ddb80b6375bc7f5e8828a7fc12f9e7785ca230948895e03a9c1521be45f69797f663b28cecc3c7 languageName: node linkType: hard From 26c27f4f808eaeab6ed7d6249ef25205d023174b Mon Sep 17 00:00:00 2001 From: Aramis Sennyey Date: Thu, 23 Feb 2023 10:44:10 -0500 Subject: [PATCH 025/147] Update EntityPicker to use stringifyEntityRef. Signed-off-by: Aramis Sennyey --- .../src/components/EntityRefLink/humanize.ts | 8 --- .../fields/EntityPicker/EntityPicker.test.tsx | 50 +++++++++++++++++++ .../fields/EntityPicker/EntityPicker.tsx | 38 ++++++++++---- 3 files changed, 79 insertions(+), 17 deletions(-) diff --git a/plugins/catalog-react/src/components/EntityRefLink/humanize.ts b/plugins/catalog-react/src/components/EntityRefLink/humanize.ts index 9abf0d7978..9bbfcbc1ed 100644 --- a/plugins/catalog-react/src/components/EntityRefLink/humanize.ts +++ b/plugins/catalog-react/src/components/EntityRefLink/humanize.ts @@ -37,19 +37,11 @@ export function humanizeEntityRef( let kind; let namespace; let name; - console.log(entityRef); if ('metadata' in entityRef) { kind = entityRef.kind; namespace = entityRef.metadata.namespace; name = entityRef.metadata.name; - - // Escapes when we know more about an entity. - if (entityRef.metadata.title) { - return entityRef.metadata.title; - } else if ((entityRef as UserEntity).spec?.profile?.displayName) { - return (entityRef as UserEntity).spec?.profile?.displayName; - } } else { kind = entityRef.kind; namespace = entityRef.namespace; diff --git a/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.test.tsx b/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.test.tsx index b6d6688a09..3cc45e6412 100644 --- a/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.test.tsx +++ b/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.test.tsx @@ -236,4 +236,54 @@ describe('', () => { }); }); }); + + describe('uses full entity ref', () => { + beforeEach(() => { + uiSchema = { + 'ui:options': { + defaultKind: 'Group', + }, + }; + props = { + onChange, + schema, + required, + uiSchema, + rawErrors, + formData, + } as unknown as FieldProps; + + catalogApi.getEntities.mockResolvedValue({ items: entities }); + }); + + it('returns the full entityRef when entity exists in the list', async () => { + const { getByRole } = await renderInTestApp( + + + , + ); + + const input = getByRole('textbox'); + + fireEvent.change(input, { target: { value: 'team-a' } }); + fireEvent.blur(input); + + expect(onChange).toHaveBeenCalledWith('group:default/team-a'); + }); + + it('returns the full entityRef when entity does not exist in the list', async () => { + const { getByRole } = await renderInTestApp( + + + , + ); + + const input = getByRole('textbox'); + + fireEvent.change(input, { target: { value: 'team-b' } }); + fireEvent.blur(input); + + expect(onChange).toHaveBeenCalledWith('group:default/team-b'); + }); + }); }); diff --git a/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx b/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx index 2a36b9f8ef..48d6453ab9 100644 --- a/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx +++ b/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx @@ -58,7 +58,8 @@ export const EntityPicker = (props: EntityPickerProps) => { (allowedKinds && { kind: allowedKinds }); const defaultKind = uiSchema['ui:options']?.defaultKind; - const defaultNamespace = uiSchema['ui:options']?.defaultNamespace; + const defaultNamespace = + uiSchema['ui:options']?.defaultNamespace || undefined; const catalogApi = useApi(catalogApiRef); @@ -71,13 +72,30 @@ export const EntityPicker = (props: EntityPickerProps) => { const allowArbitraryValues = uiSchema['ui:options']?.allowArbitraryValues ?? true; + const getLabel = useCallback( + (ref: string) => { + try { + return humanizeEntityRef( + parseEntityRef(ref, { defaultKind, defaultNamespace }), + { + defaultKind, + defaultNamespace, + }, + ); + } catch (err) { + return ref; + } + }, + [defaultKind, defaultNamespace], + ); + const onSelect = useCallback( (_: any, ref: string | Entity | null, reason: AutocompleteChangeReason) => { - // if ref == string + // ref can either be a string from free solo entry or if (typeof ref !== 'string') { onChange(ref ? stringifyEntityRef(ref as Entity) : ''); } else { - if (reason === 'blur') { + if (reason === 'blur' || reason === 'create-option') { // Add in default namespace, etc. let entityRef = ref; try { @@ -85,19 +103,20 @@ export const EntityPicker = (props: EntityPickerProps) => { entityRef = stringifyEntityRef( parseEntityRef(ref as string, { defaultKind, - defaultNamespace: defaultNamespace || undefined, + defaultNamespace, }), ); } catch (err) { // If the passed in value isn't an entity ref, do nothing. } - if (formData !== entityRef) { - onChange(ref); + // We need to check against formData here as that's the previous value for this field. + if (formData !== ref || allowArbitraryValues) { + onChange(entityRef); } } } }, - [onChange, formData, defaultKind, defaultNamespace], + [onChange, formData, defaultKind, defaultNamespace, allowArbitraryValues], ); useEffect(() => { @@ -116,9 +135,10 @@ export const EntityPicker = (props: EntityPickerProps) => { disabled={entities?.length === 1} id={idSchema?.$id} value={ - // Since free solo is usually enabled, attempt to + // Since free solo can be enabled, attempt to parse as a full entity ref first, then fall + // back to the given value. entities?.find(e => stringifyEntityRef(e) === formData) ?? - (allowArbitraryValues ? formData : '') + (allowArbitraryValues && formData ? getLabel(formData) : '') } loading={loading} onChange={onSelect} From 67b30654f442f3b9f4f94bb46e4046a28a70f002 Mon Sep 17 00:00:00 2001 From: Claire Casey Date: Thu, 23 Feb 2023 13:51:26 -0500 Subject: [PATCH 026/147] use OverflowTooltip component on email in MembershipCard Signed-off-by: Claire Casey --- .../Cards/Group/MembersList/MembersListCard.tsx | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.tsx b/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.tsx index bf561a23a4..eb61989144 100644 --- a/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.tsx +++ b/plugins/org/src/components/Cards/Group/MembersList/MembersListCard.tsx @@ -60,17 +60,6 @@ const useStyles = makeStyles((theme: Theme) => flex: '1', minWidth: '0px', }, - email: { - overflow: 'hidden', - whiteSpace: 'nowrap', - textOverflow: 'ellipsis', - display: 'inline-block', - maxWidth: '100%', - '&:hover': { - overflow: 'visible', - whiteSpace: 'normal', - }, - }, }), ); @@ -103,7 +92,7 @@ const MemberComponent = (props: { member: UserEntity }) => { @@ -118,8 +107,8 @@ const MemberComponent = (props: { member: UserEntity }) => {
{profile?.email && ( - - {profile.email} + + )} {description && ( From 553f3c950113e1e975f2293e1e80d52a4633cec1 Mon Sep 17 00:00:00 2001 From: Phil Kuang Date: Thu, 23 Feb 2023 15:53:30 -0500 Subject: [PATCH 027/147] fix(SearchPagination): disable next button on last page Signed-off-by: Phil Kuang --- .changeset/empty-books-occur.md | 5 +++++ plugins/search-react/api-report.md | 7 ++++++- .../SearchPagination/SearchPagination.tsx | 18 ++++++++++++++++-- 3 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 .changeset/empty-books-occur.md diff --git a/.changeset/empty-books-occur.md b/.changeset/empty-books-occur.md new file mode 100644 index 0000000000..69218c5cfa --- /dev/null +++ b/.changeset/empty-books-occur.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-search-react': patch +--- + +Correctly disable next button in `SearchPagination` on last page diff --git a/plugins/search-react/api-report.md b/plugins/search-react/api-report.md index 375af20d5c..9be8d90395 100644 --- a/plugins/search-react/api-report.md +++ b/plugins/search-react/api-report.md @@ -234,6 +234,7 @@ export type SearchPaginationBaseProps = { className?: string; total?: number; cursor?: string; + hasNextPage?: boolean; onCursorChange?: (pageCursor: string) => void; limit?: number; limitLabel?: ReactNode; @@ -264,7 +265,11 @@ export type SearchPaginationLimitText = (params: { // @public export type SearchPaginationProps = Omit< SearchPaginationBaseProps, - 'pageLimit' | 'onPageLimitChange' | 'pageCursor' | 'onPageCursorChange' + | 'pageLimit' + | 'onPageLimitChange' + | 'pageCursor' + | 'onPageCursorChange' + | 'hasNextPage' >; // @public diff --git a/plugins/search-react/src/components/SearchPagination/SearchPagination.tsx b/plugins/search-react/src/components/SearchPagination/SearchPagination.tsx index 34b6deaff5..7ab9e8604c 100644 --- a/plugins/search-react/src/components/SearchPagination/SearchPagination.tsx +++ b/plugins/search-react/src/components/SearchPagination/SearchPagination.tsx @@ -77,6 +77,10 @@ export type SearchPaginationBaseProps = { * The cursor for the current page. */ cursor?: string; + /** + * Whether a next page exists + */ + hasNextPage?: boolean; /** * Callback fired when the current page cursor is changed. */ @@ -118,6 +122,7 @@ export const SearchPaginationBase = (props: SearchPaginationBaseProps) => { const { total: count = -1, cursor: pageCursor, + hasNextPage, onCursorChange: onPageCursorChange, limit: rowsPerPage = 25, limitLabel: labelRowsPerPage = 'Results per page:', @@ -151,6 +156,9 @@ export const SearchPaginationBase = (props: SearchPaginationBaseProps) => { component="div" count={count} page={page} + nextIconButtonProps={{ + ...(hasNextPage !== undefined && { disabled: !hasNextPage }), + }} onPageChange={handlePageChange} rowsPerPage={rowsPerPage} labelRowsPerPage={labelRowsPerPage} @@ -167,7 +175,11 @@ export const SearchPaginationBase = (props: SearchPaginationBaseProps) => { */ export type SearchPaginationProps = Omit< SearchPaginationBaseProps, - 'pageLimit' | 'onPageLimitChange' | 'pageCursor' | 'onPageCursorChange' + | 'pageLimit' + | 'onPageLimitChange' + | 'pageCursor' + | 'onPageCursorChange' + | 'hasNextPage' >; /** @@ -176,11 +188,13 @@ export type SearchPaginationProps = Omit< * @public */ export const SearchPagination = (props: SearchPaginationProps) => { - const { pageLimit, setPageLimit, pageCursor, setPageCursor } = useSearch(); + const { pageLimit, setPageLimit, pageCursor, setPageCursor, fetchNextPage } = + useSearch(); return ( Date: Thu, 23 Feb 2023 18:10:54 -0500 Subject: [PATCH 028/147] Add changeset. Signed-off-by: Aramis Sennyey --- .changeset/eighty-chairs-roll.md | 5 +++++ .../catalog-react/src/components/EntityRefLink/humanize.ts | 1 - 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 .changeset/eighty-chairs-roll.md diff --git a/.changeset/eighty-chairs-roll.md b/.changeset/eighty-chairs-roll.md new file mode 100644 index 0000000000..c981229378 --- /dev/null +++ b/.changeset/eighty-chairs-roll.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder': minor +--- + +Update `EntityPicker` to use the fully qualified entity ref instead of the humanized version. diff --git a/plugins/catalog-react/src/components/EntityRefLink/humanize.ts b/plugins/catalog-react/src/components/EntityRefLink/humanize.ts index 9bbfcbc1ed..bfc8e2af84 100644 --- a/plugins/catalog-react/src/components/EntityRefLink/humanize.ts +++ b/plugins/catalog-react/src/components/EntityRefLink/humanize.ts @@ -18,7 +18,6 @@ import { Entity, CompoundEntityRef, DEFAULT_NAMESPACE, - UserEntity, } from '@backstage/catalog-model'; /** From 1578276708a6a036e736ef7c42f273fe94220e1d Mon Sep 17 00:00:00 2001 From: Heikki Hellgren Date: Wed, 22 Feb 2023 12:46:22 +0200 Subject: [PATCH 029/147] feat: add functionality to get scheduled tasks add new functionality to PluginTaskScheduler to return local and global tasks. this is to be able to trigger those tasks manually using the triggerTask functionality when there's no clear way to figure out the correct id to use as they in many cases come from a plugin. this is also usable for the upcoming debug plugin, see #9737 Signed-off-by: Heikki Hellgren --- .changeset/fresh-hairs-switch.md | 5 +++ packages/backend-tasks/api-report.md | 5 +++ .../src/tasks/PluginTaskSchedulerImpl.test.ts | 41 +++++++++++++++++++ .../src/tasks/PluginTaskSchedulerImpl.ts | 8 ++++ packages/backend-tasks/src/tasks/index.ts | 1 + packages/backend-tasks/src/tasks/types.ts | 21 ++++++++++ 6 files changed, 81 insertions(+) create mode 100644 .changeset/fresh-hairs-switch.md diff --git a/.changeset/fresh-hairs-switch.md b/.changeset/fresh-hairs-switch.md new file mode 100644 index 0000000000..16d3b119e5 --- /dev/null +++ b/.changeset/fresh-hairs-switch.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-tasks': minor +--- + +add functionality to get descriptions from the scheduler for triggering diff --git a/packages/backend-tasks/api-report.md b/packages/backend-tasks/api-report.md index 44ec4addbe..66f901adad 100644 --- a/packages/backend-tasks/api-report.md +++ b/packages/backend-tasks/api-report.md @@ -16,6 +16,7 @@ export type HumanDuration = HumanDuration_2; // @public export interface PluginTaskScheduler { createScheduledTaskRunner(schedule: TaskScheduleDefinition): TaskRunner; + getScheduledTasks(): TaskDescriptor[]; scheduleTask( task: TaskScheduleDefinition & TaskInvocationDefinition, ): Promise; @@ -27,6 +28,10 @@ export function readTaskScheduleDefinitionFromConfig( config: Config, ): TaskScheduleDefinition; +// @public +export type TaskDescriptor = TaskScheduleDefinition & + Exclude; + // @public export type TaskFunction = | ((abortSignal: AbortSignal) => void | Promise) diff --git a/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.test.ts b/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.test.ts index 1847370d2b..d64f353c27 100644 --- a/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.test.ts +++ b/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.test.ts @@ -304,6 +304,47 @@ describe('PluginTaskManagerImpl', () => { ); }); + describe('can fetch task ids', () => { + it.each(databases.eachSupportedId())( + 'can fetch both global and local task ids, %p', + async databaseId => { + const { manager } = await init(databaseId); + + const fn = jest.fn(); + const promise = new Promise(resolve => fn.mockImplementation(resolve)); + await manager.scheduleTask({ + id: 'task1', + timeout: Duration.fromMillis(5000), + frequency: Duration.fromMillis(5000), + fn, + scope: 'global', + }); + + await manager.scheduleTask({ + id: 'task2', + timeout: Duration.fromMillis(5000), + frequency: Duration.fromMillis(5000), + fn, + scope: 'local', + }); + + await promise; + + const tasks = manager.getScheduledTasks(); + expect(tasks.length).toEqual(2); + expect(tasks[0].id).toEqual('task1'); + expect(tasks[1].id).toEqual('task2'); + expect(tasks[0].scope).toEqual('global'); + expect(tasks[1].scope).toEqual('local'); + expect(tasks[0].fn).toBeUndefined(); + expect(tasks[1].fn).toBeUndefined(); + expect(tasks[0].signal).toBeUndefined(); + expect(tasks[1].signal).toBeUndefined(); + }, + 60_000, + ); + }); + describe('parseDuration', () => { it('should parse durations', () => { expect(parseDuration({ milliseconds: 5000 })).toEqual('PT5S'); diff --git a/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.ts b/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.ts index e57ec93c1c..bbc2b45718 100644 --- a/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.ts +++ b/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.ts @@ -21,6 +21,7 @@ import { LocalTaskWorker } from './LocalTaskWorker'; import { TaskWorker } from './TaskWorker'; import { PluginTaskScheduler, + TaskDescriptor, TaskInvocationDefinition, TaskRunner, TaskScheduleDefinition, @@ -32,6 +33,7 @@ import { validateId } from './util'; */ export class PluginTaskSchedulerImpl implements PluginTaskScheduler { private readonly localTasksById = new Map(); + private readonly allScheduledTasks: TaskDescriptor[] = []; constructor( private readonly databaseFactory: () => Promise, @@ -94,6 +96,8 @@ export class PluginTaskSchedulerImpl implements PluginTaskScheduler { this.localTasksById.set(task.id, worker); } + const { fn: _, signal: __, ...descriptor } = task; + this.allScheduledTasks.push(descriptor as TaskDescriptor); } createScheduledTaskRunner(schedule: TaskScheduleDefinition): TaskRunner { @@ -103,6 +107,10 @@ export class PluginTaskSchedulerImpl implements PluginTaskScheduler { }, }; } + + getScheduledTasks(): TaskDescriptor[] { + return this.allScheduledTasks; + } } export function parseDuration( diff --git a/packages/backend-tasks/src/tasks/index.ts b/packages/backend-tasks/src/tasks/index.ts index f2037ac9dd..6f9ac6d859 100644 --- a/packages/backend-tasks/src/tasks/index.ts +++ b/packages/backend-tasks/src/tasks/index.ts @@ -19,6 +19,7 @@ export { TaskScheduler } from './TaskScheduler'; export type { PluginTaskScheduler, TaskFunction, + TaskDescriptor, TaskInvocationDefinition, TaskRunner, TaskScheduleDefinition, diff --git a/packages/backend-tasks/src/tasks/types.ts b/packages/backend-tasks/src/tasks/types.ts index 6ec5165aec..d8aa58bcb3 100644 --- a/packages/backend-tasks/src/tasks/types.ts +++ b/packages/backend-tasks/src/tasks/types.ts @@ -31,6 +31,14 @@ export type TaskFunction = | ((abortSignal: AbortSignal) => void | Promise) | (() => void | Promise); +/** + * A type to describe a scheduled task. + * + * @public + */ +export type TaskDescriptor = TaskScheduleDefinition & + Exclude; + /** * Options that control the scheduling of a task. * @@ -307,6 +315,19 @@ export interface PluginTaskScheduler { * @param schedule - The task schedule */ createScheduledTaskRunner(schedule: TaskScheduleDefinition): TaskRunner; + + /** + * Returns all scheduled tasks registered to this scheduler. + * + * @remarks + * + * This method is useful for triggering tasks manually using the triggerTask + * functionality. Note that the returned tasks contain only tasks that have + * been initialized in this instance of the scheduler. + * + * @returns Scheduled tasks + */ + getScheduledTasks(): TaskDescriptor[]; } function isValidOptionalDurationString(d: string | undefined): boolean { From 2a73ded3861feac95c4e7cd5928fccc82de5d6be Mon Sep 17 00:00:00 2001 From: Kumar Date: Sun, 19 Feb 2023 00:04:41 +1100 Subject: [PATCH 030/147] feat: add support for MADR v3 Signed-off-by: Kumar --- .changeset/lovely-tigers-look.md | 5 ++ ADOPTERS.md | 1 + plugins/adr-backend/README.md | 2 +- plugins/adr-backend/src/search/madrParser.ts | 92 ++++++++++++++++---- 4 files changed, 83 insertions(+), 17 deletions(-) create mode 100644 .changeset/lovely-tigers-look.md diff --git a/.changeset/lovely-tigers-look.md b/.changeset/lovely-tigers-look.md new file mode 100644 index 0000000000..5e7d230e6d --- /dev/null +++ b/.changeset/lovely-tigers-look.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-adr-backend': patch +--- + +Support MADR v3 format diff --git a/ADOPTERS.md b/ADOPTERS.md index 068928260d..8fa8d37c79 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -230,3 +230,4 @@ _You can do this by using the [Adopter form](https://info.backstage.spotify.com/ | [OVO Energy](https://www.ovoenergy.com/) | [Michael Wizner](https://github.com/mwz), [Dan Laird](https://github.com/dlaird-ovo), [Samantha Betts](https://github.com/sammbetts) | Developer Experience Tool with an aim to to improve processes, boost productivity, finding of information/docs and building tech engagement throughout the business. | [MusicTribe](https://careers.musictribe.com/) | [Alex Ford](mailto:alex.j.ford@gmail.com), [Tiago Barbosa](https://github.com/t1agob) | We are starting to use Backstage as a developer portal to share API specifications and documentation, to quickly onboard new projects with the software templates, and to help developers discover software through the catalog. | [Cazoo](https://www.cazoo.co.uk/) | [Abz Mungul](https://www.linkedin.com/in/abzmungul/), [Scott Edwards](https://www.linkedin.com/in/scott-edwards-tech/) | We're assessing Backstage as our developer platform at Cazoo with a focus on reducing cognitive load for our engineers. We're currently aiming for 3 outcomes: creating visibility into service ownership across teams, improving the discoverability of event schemas and relationships, and improving the discoverability of technical documentation and best practices. | +| [Gumtree](https://www.gumtree.com.au) | [Kumar Gaurav](https://www.linkedin.com/in/kumargaurav517) | We are starting to use it as a single place to find all component information in a distributed architecture. | diff --git a/plugins/adr-backend/README.md b/plugins/adr-backend/README.md index 29fead7c84..4ffa9c63eb 100644 --- a/plugins/adr-backend/README.md +++ b/plugins/adr-backend/README.md @@ -89,7 +89,7 @@ indexBuilder.addCollator({ ### Parsing custom ADR document formats -By default, the `DefaultAdrCollatorFactory` will parse and index documents that follow the [MADR v2.x standard file name and template format](https://github.com/adr/madr/tree/2.1.2). If you use a different ADR format and file name convention, you can configure `DefaultAdrCollatorFactory` with custom `adrFilePathFilterFn` and `parser` options (see type definitions for details): +By default, the `DefaultAdrCollatorFactory` will parse and index documents that follow [MADR v3.0.0](https://github.com/adr/madr/tree/3.0.0) and [MADR v2.x](https://github.com/adr/madr/tree/2.1.2) standard file name and template format. If you use a different ADR format and file name convention, you can configure `DefaultAdrCollatorFactory` with custom `adrFilePathFilterFn` and `parser` options (see type definitions for details): ```ts DefaultAdrCollatorFactory.fromConfig({ diff --git a/plugins/adr-backend/src/search/madrParser.ts b/plugins/adr-backend/src/search/madrParser.ts index 30672028fe..c992ef125e 100644 --- a/plugins/adr-backend/src/search/madrParser.ts +++ b/plugins/adr-backend/src/search/madrParser.ts @@ -18,28 +18,71 @@ import { DateTime } from 'luxon'; import { marked } from 'marked'; import { MADR_DATE_FORMAT } from '@backstage/plugin-adr-common'; -export const madrParser = (content: string, dateFormat = MADR_DATE_FORMAT) => { - const tokens = marked.lexer(content); - if (!tokens.length) { - throw new Error('ADR has no content'); - } - - // First h1 header should contain ADR title - const adrTitle = ( +const getTitle = (tokens: marked.TokensList): string | undefined => { + return ( tokens.find( t => t.type === 'heading' && t.depth === 1, ) as marked.Tokens.Heading )?.text; +}; - // First list should contain status & date metadata (if defined) - const listTokens = (tokens.find(t => t.type === 'list') as marked.Tokens.List) - ?.items; - const adrStatus = listTokens +const getStatusForV3Format = (tokens: marked.TokensList): string | undefined => + ( + tokens.find( + t => + t.type === 'heading' && + t.depth === 2 && + t.text.toLowerCase().includes('status:'), + ) as marked.Tokens.Text + )?.text + .toLowerCase() + .split('\n') + .find(l => /^status:/.test(l)) + ?.replace(/^status:/i, '') + .trim() + .toLocaleLowerCase('en-US'); + +const getStatusForV2Format = (tokens: marked.TokensList): string | undefined => + (tokens.find(t => t.type === 'list') as marked.Tokens.List)?.items ?.find(t => /^status:/i.test(t.text)) ?.text.replace(/^status:/i, '') .trim() .toLocaleLowerCase('en-US'); +const getDateForV3Format = ( + tokens: marked.TokensList, + dateFormat: string, +): string | undefined => { + let adrDateTime: DateTime | undefined; + const dateLine = ( + tokens.find( + t => + t.type === 'heading' && + t.depth === 2 && + t.text.toLowerCase().includes('date:'), + ) as marked.Tokens.Text + )?.text + .toLowerCase() + .split('\n') + .find(l => /^date:/.test(l)); + + if (dateLine) { + adrDateTime = DateTime.fromFormat( + dateLine.replace(/^date:/i, '').trim(), + dateFormat, + ); + } + return adrDateTime?.isValid + ? adrDateTime.toFormat(MADR_DATE_FORMAT) + : undefined; +}; + +const getDateForV2Format = ( + tokens: marked.TokensList, + dateFormat: string, +): string | undefined => { + const listTokens = (tokens.find(t => t.type === 'list') as marked.Tokens.List) + ?.items; const adrDateTime = DateTime.fromFormat( listTokens ?.find(t => /^date:/i.test(t.text)) @@ -47,13 +90,30 @@ export const madrParser = (content: string, dateFormat = MADR_DATE_FORMAT) => { .trim() ?? '', dateFormat, ); - const adrDate = adrDateTime?.isValid + return adrDateTime?.isValid ? adrDateTime.toFormat(MADR_DATE_FORMAT) : undefined; +}; + +const getStatus = (tokens: marked.TokensList): string | undefined => { + return getStatusForV3Format(tokens) ?? getStatusForV2Format(tokens); +}; +const getDate = ( + tokens: marked.TokensList, + dateFormat: string, +): string | undefined => + getDateForV3Format(tokens, dateFormat) ?? + getDateForV2Format(tokens, dateFormat); + +export const madrParser = (content: string, dateFormat = MADR_DATE_FORMAT) => { + const tokens = marked.lexer(content); + if (!tokens.length) { + throw new Error('ADR has no content'); + } return { - title: adrTitle, - status: adrStatus, - date: adrDate, + title: getTitle(tokens), + status: getStatus(tokens), + date: getDate(tokens, dateFormat), }; }; From e2e7cb207cfe07cd74642c4e4eed184a7f96d952 Mon Sep 17 00:00:00 2001 From: Tomas Dabasinskas Date: Sun, 5 Feb 2023 14:41:17 +0200 Subject: [PATCH 031/147] Update CODEOWNERS Signed-off-by: Tomas Dabasinskas --- .github/CODEOWNERS | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 10f1ac188c..010af451af 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -30,6 +30,7 @@ yarn.lock @backstage/maintainers @back /plugins/catalog-backend-module-aws @backstage/maintainers @backstage/catalog-core @pjungermann /plugins/catalog-backend-module-bitbucket-cloud @backstage/maintainers @backstage/catalog-core @pjungermann /plugins/catalog-backend-module-msgraph @backstage/maintainers @backstage/catalog-core @pjungermann +/plugins/catalog-backend-module-puppetdb @backstage/maintainers @backstage/catalog-core @tdabasinskas /plugins/catalog-graph @backstage/maintainers @backstage/catalog-core @backstage/sda-se-reviewers /plugins/circleci @backstage/maintainers @adamdmharvey /plugins/cloudbuild @backstage/maintainers @trivago/ebarrios From 0c48cb2137f4deb863677b2707df4427eca7888b Mon Sep 17 00:00:00 2001 From: Tomas Dabasinskas Date: Sun, 5 Feb 2023 14:58:42 +0200 Subject: [PATCH 032/147] Generate new plugin Signed-off-by: Tomas Dabasinskas --- .../.eslintrc.js | 1 + .../catalog-backend-module-puppetdb/README.md | 14 +++++ .../package.json | 54 +++++++++++++++++++ .../src/setupTests.ts | 16 ++++++ yarn.lock | 16 ++++++ 5 files changed, 101 insertions(+) create mode 100644 plugins/catalog-backend-module-puppetdb/.eslintrc.js create mode 100644 plugins/catalog-backend-module-puppetdb/README.md create mode 100644 plugins/catalog-backend-module-puppetdb/package.json create mode 100644 plugins/catalog-backend-module-puppetdb/src/setupTests.ts diff --git a/plugins/catalog-backend-module-puppetdb/.eslintrc.js b/plugins/catalog-backend-module-puppetdb/.eslintrc.js new file mode 100644 index 0000000000..e2a53a6ad2 --- /dev/null +++ b/plugins/catalog-backend-module-puppetdb/.eslintrc.js @@ -0,0 +1 @@ +module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/plugins/catalog-backend-module-puppetdb/README.md b/plugins/catalog-backend-module-puppetdb/README.md new file mode 100644 index 0000000000..c66627fa8b --- /dev/null +++ b/plugins/catalog-backend-module-puppetdb/README.md @@ -0,0 +1,14 @@ +# catalog-backend-module-puppetdb + +Welcome to the catalog-backend-module-puppetdb backend plugin! + +_This plugin was created through the Backstage CLI_ + +## Getting started + +Your plugin has been added to the example app in this repository, meaning you'll be able to access it by running `yarn +start` in the root directory, and then navigating to [/catalog-backend-module-puppetdb](http://localhost:3000/catalog-backend-module-puppetdb). + +You can also serve the plugin in isolation by running `yarn start` in the plugin directory. +This method of serving the plugin provides quicker iteration speed and a faster startup and hot reloads. +It is only meant for local development, and the setup for it can be found inside the [/dev](/dev) directory. diff --git a/plugins/catalog-backend-module-puppetdb/package.json b/plugins/catalog-backend-module-puppetdb/package.json new file mode 100644 index 0000000000..5f6a39f73d --- /dev/null +++ b/plugins/catalog-backend-module-puppetdb/package.json @@ -0,0 +1,54 @@ +{ + "name": "@backstage/plugin-catalog-backend-module-puppetdb-backend", + "description": "A Backstage catalog backend module that helps integrate towards PuppetDB", + "version": "0.0.1", + "main": "src/index.ts", + "types": "src/index.ts", + "license": "Apache-2.0", + "publishConfig": { + "access": "public", + "main": "dist/index.cjs.js", + "types": "dist/index.d.ts" + }, + "backstage": { + "role": "backend-plugin-module" + }, + "homepage": "https://backstage.io", + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "catalog-backend-module-puppetdb" + }, + "keywords": [ + "backstage", + "puppetdb", + "puppet" + ], + "scripts": { + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "clean": "backstage-cli package clean", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack" + }, + "dependencies": { + "@backstage/backend-common": "workspace:^", + "@backstage/config": "workspace:^", + "lodash": "^4.17.21", + "node-fetch": "^2.6.7", + "uuid": "^8.0.0", + "winston": "^3.2.1" + }, + "devDependencies": { + "@backstage/cli": "workspace:^", + "@types/lodash": "^4.14.151", + "msw": "^0.49.0" + }, + "files": [ + "dist", + "config.d.ts" + ], + "configSchema": "config.d.ts" +} diff --git a/plugins/catalog-backend-module-puppetdb/src/setupTests.ts b/plugins/catalog-backend-module-puppetdb/src/setupTests.ts new file mode 100644 index 0000000000..4b9026cde5 --- /dev/null +++ b/plugins/catalog-backend-module-puppetdb/src/setupTests.ts @@ -0,0 +1,16 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; diff --git a/yarn.lock b/yarn.lock index 6973779ac5..33261fc7da 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5206,6 +5206,22 @@ __metadata: languageName: unknown linkType: soft +"@backstage/plugin-catalog-backend-module-puppetdb-backend@workspace:plugins/catalog-backend-module-puppetdb": + version: 0.0.0-use.local + resolution: "@backstage/plugin-catalog-backend-module-puppetdb-backend@workspace:plugins/catalog-backend-module-puppetdb" + dependencies: + "@backstage/backend-common": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@types/lodash": ^4.14.151 + lodash: ^4.17.21 + msw: ^0.49.0 + node-fetch: ^2.6.7 + uuid: ^8.0.0 + winston: ^3.2.1 + languageName: unknown + linkType: soft + "@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" From 9bb20d2b0ddd0cd1a4c041634d86ef97c8d6c0d4 Mon Sep 17 00:00:00 2001 From: Tomas Dabasinskas Date: Sun, 5 Feb 2023 19:49:08 +0200 Subject: [PATCH 033/147] Add initial code Signed-off-by: Tomas Dabasinskas --- .../config.d.ts | 58 +++++ .../package.json | 6 + .../src/index.ts | 24 ++ .../src/providers/PuppetDBEntityProvider.ts | 236 ++++++++++++++++++ .../providers/PuppetDBEntityProviderConfig.ts | 99 ++++++++ .../src/providers/constants.ts | 29 +++ .../src/providers/index.ts | 19 ++ .../src/puppet/constants.ts | 32 +++ .../src/puppet/index.ts | 24 ++ .../src/puppet/read.ts | 75 ++++++ .../src/puppet/transformers.ts | 65 +++++ .../src/puppet/types.ts | 102 ++++++++ yarn.lock | 6 + 13 files changed, 775 insertions(+) create mode 100644 plugins/catalog-backend-module-puppetdb/config.d.ts create mode 100644 plugins/catalog-backend-module-puppetdb/src/index.ts create mode 100644 plugins/catalog-backend-module-puppetdb/src/providers/PuppetDBEntityProvider.ts create mode 100644 plugins/catalog-backend-module-puppetdb/src/providers/PuppetDBEntityProviderConfig.ts create mode 100644 plugins/catalog-backend-module-puppetdb/src/providers/constants.ts create mode 100644 plugins/catalog-backend-module-puppetdb/src/providers/index.ts create mode 100644 plugins/catalog-backend-module-puppetdb/src/puppet/constants.ts create mode 100644 plugins/catalog-backend-module-puppetdb/src/puppet/index.ts create mode 100644 plugins/catalog-backend-module-puppetdb/src/puppet/read.ts create mode 100644 plugins/catalog-backend-module-puppetdb/src/puppet/transformers.ts create mode 100644 plugins/catalog-backend-module-puppetdb/src/puppet/types.ts diff --git a/plugins/catalog-backend-module-puppetdb/config.d.ts b/plugins/catalog-backend-module-puppetdb/config.d.ts new file mode 100644 index 0000000000..6514629251 --- /dev/null +++ b/plugins/catalog-backend-module-puppetdb/config.d.ts @@ -0,0 +1,58 @@ +/* + * Copyright 2020 The 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 { + TaskScheduleDefinition, + TaskScheduleDefinitionConfig, +} from '@backstage/backend-tasks'; + +/** + * Represents the configuration for the Backstage. + */ +export interface Config { + /** + * Configuration for the catalog. + */ + catalog?: { + /** + * Configuration for the providers. + */ + providers?: { + /** + * Puppet entity provider configuration. Uses "default" as default ID for the single config variant. + */ + puppet?: ProviderConfig | Record; + }; + }; +} + +/** + * Configuration of {@link PuppetDBEntityProvider}. + */ +interface ProviderConfig { + /** + * (Required) The host of PuppetDB API instance. + */ + host: string; + /** + * (Optional) PQL query to filter PuppetDB nodes. + */ + query?: string; + /** + * (Optional) Task schedule definition for the refresh. + */ + schedule?: TaskScheduleDefinition; +} diff --git a/plugins/catalog-backend-module-puppetdb/package.json b/plugins/catalog-backend-module-puppetdb/package.json index 5f6a39f73d..fa7f08da1a 100644 --- a/plugins/catalog-backend-module-puppetdb/package.json +++ b/plugins/catalog-backend-module-puppetdb/package.json @@ -35,8 +35,14 @@ }, "dependencies": { "@backstage/backend-common": "workspace:^", + "@backstage/backend-tasks": "workspace:^", + "@backstage/catalog-model": "workspace:^", "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/plugin-catalog-backend": "workspace:^", + "@backstage/types": "workspace:^", "lodash": "^4.17.21", + "luxon": "^3.0.0", "node-fetch": "^2.6.7", "uuid": "^8.0.0", "winston": "^3.2.1" diff --git a/plugins/catalog-backend-module-puppetdb/src/index.ts b/plugins/catalog-backend-module-puppetdb/src/index.ts new file mode 100644 index 0000000000..b5c5f9d209 --- /dev/null +++ b/plugins/catalog-backend-module-puppetdb/src/index.ts @@ -0,0 +1,24 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * A Backstage catalog backend module that helps integrate towards PuppetDB + * + * @packageDocumentation + */ + +export * from './providers'; +export * from './puppet'; diff --git a/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDBEntityProvider.ts b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDBEntityProvider.ts new file mode 100644 index 0000000000..a887d4778c --- /dev/null +++ b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDBEntityProvider.ts @@ -0,0 +1,236 @@ +/* + * Copyright 2021 The 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 { + EntityProvider, + EntityProviderConnection, +} from '@backstage/plugin-catalog-backend'; +import { Logger } from 'winston'; +import { + PuppetDBEntityProviderConfig, + readProviderConfigs, +} from './PuppetDBEntityProviderConfig'; +import { Config } from '@backstage/config'; +import { PluginTaskScheduler, TaskRunner } from '@backstage/backend-tasks'; +import * as uuid from 'uuid'; +import { ResourceTransformer, defaultResourceTransformer } from '../puppet'; +import { + ANNOTATION_LOCATION, + ANNOTATION_ORIGIN_LOCATION, + Entity, +} from '@backstage/catalog-model/'; +import { merge } from 'lodash'; +import { readPuppetNodes } from '../puppet/read'; +import { ENDPOINT_NODES } from '../puppet/constants'; + +/** + * Reads nodes from [PuppetDB](https://www.puppet.com/docs/puppet/6/puppetdb_overview.html) + * based on the provided query and registers them as Resource entities in the catalog. + * + * @public + */ +export class PuppetDBEntityProvider implements EntityProvider { + private readonly config: PuppetDBEntityProviderConfig; + private readonly logger: Logger; + private readonly scheduleFn: () => Promise; + private readonly transformer: ResourceTransformer; + private connection?: EntityProviderConnection; + + /** + * Creates instances of {@link PuppetDBEntityProvider} from a configuration. + * + * @param config - The configuration to read provider information from. + * @param deps - The dependencies for {@link PuppetDBEntityProvider}. + * + * @returns A list of {@link PuppetDBEntityProvider} instances. + */ + static fromConfig( + config: Config, + deps: { + logger: Logger; + schedule?: TaskRunner; + scheduler?: PluginTaskScheduler; + transformer?: ResourceTransformer; + }, + ): PuppetDBEntityProvider[] { + if (!deps.schedule && !deps.scheduler) { + throw new Error('Either schedule or scheduler must be provided.'); + } + + return readProviderConfigs(config).map(providerConfig => { + if (!deps.schedule && !providerConfig.schedule) { + throw new Error( + `No schedule provided neither via code nor config for puppet-provider:${providerConfig.id}.`, + ); + } + + const taskRunner = + deps.schedule ?? + deps.scheduler!.createScheduledTaskRunner(providerConfig.schedule!); + + const transformer = deps.transformer ?? defaultResourceTransformer; + + return new PuppetDBEntityProvider( + providerConfig, + deps.logger, + taskRunner, + transformer, + ); + }); + } + + /** + * Creates an instance of {@link PuppetDBEntityProvider}. + * + * @param config - Configuration of the provider. + * @param logger - The instance of a {@link Logger}. + * @param taskRunner - The instance of {@link TaskRunner}. + * @param transformer - A {@link ResourceTransformer} function. + * + * @private + */ + private constructor( + config: PuppetDBEntityProviderConfig, + logger: Logger, + taskRunner: TaskRunner, + transformer: ResourceTransformer, + ) { + this.config = config; + this.logger = logger.child({ + target: this.getProviderName(), + }); + this.scheduleFn = this.createScheduleFn(taskRunner); + this.transformer = transformer; + } + + /** {@inheritdoc @backstage/plugin-catalog-backend#EntityProvider.connect} */ + async connect(connection: EntityProviderConnection): Promise { + this.connection = connection; + await this.scheduleFn(); + } + + /** {@inheritdoc @backstage/plugin-catalog-backend#EntityProvider.getProviderName} */ + getProviderName(): string { + return `puppetdb-provider:${this.config.id}`; + } + + /** + * Creates a function that can be used to schedule a refresh of the catalog. + * + * @param taskRunner - The instance of {@link TaskRunner}. + * + * @private + */ + private createScheduleFn(taskRunner: TaskRunner): () => Promise { + return async () => { + const taskId = `${this.getProviderName()}:refresh`; + return taskRunner.run({ + id: taskId, + fn: async () => { + const logger = this.logger.child({ + class: PuppetDBEntityProvider.prototype.constructor.name, + taskId, + taskInstanceId: uuid.v4(), + }); + try { + await this.refresh(logger); + } catch (error) { + logger.error(`${this.getProviderName()} refresh failed`, error); + } + }, + }); + }; + } + + /** + * Refreshes the catalog by reading nodes from PuppetDB and registering them as Resource Entities. + * + * @param logger - The instance of a {@link Logger}. + */ + async refresh(logger: Logger) { + if (!this.connection) { + throw new Error('Not initialized'); + } + + const { markReadComplete } = trackProgress(logger); + const entities = await readPuppetNodes(this.config, { + logger, + transformer: this.transformer, + }); + const { markCommitComplete } = markReadComplete(entities); + + await this.connection.applyMutation({ + type: 'full', + entities: [...entities].map(entity => ({ + locationKey: this.getProviderName(), + entity: withLocations(this.config.host, entity), + })), + }); + markCommitComplete(entities); + } +} + +/** + * Ensures the entities have required annotation data. + * + * @param host - The host of the PuppetDB instance. + * @param entity - The entity to add the annotations to. + * + * @returns Entity with @{@link ANNOTATION_LOCATION} and @{@link ANNOTATION_ORIGIN_LOCATION} annotations. + */ +function withLocations(host: string, entity: Entity): Entity { + const location = new URL(host); + location.pathname = `${ENDPOINT_NODES}/${entity.metadata?.name}`; + + return merge( + { + metadata: { + annotations: { + [ANNOTATION_LOCATION]: `url:${location.toString()}`, + [ANNOTATION_ORIGIN_LOCATION]: `url:${location.toString()}`, + }, + }, + }, + entity, + ) as Entity; +} + +/** + * Tracks the progress of the PuppetDB read and commit operations. + * + * @param logger - The instance of a {@link Logger}. + */ +function trackProgress(logger: Logger) { + let timestamp = Date.now(); + + function markReadComplete(entities: Entity[]) { + const readDuration = ((Date.now() - timestamp) / 1000).toFixed(1); + timestamp = Date.now(); + logger.info( + `Read ${entities?.length ?? 0} in ${readDuration} seconds. Committing...`, + ); + return { markCommitComplete }; + } + + function markCommitComplete(entities: Entity[]) { + const commitDuration = ((Date.now() - timestamp) / 1000).toFixed(1); + logger.info( + `Committed ${entities?.length ?? 0} in ${commitDuration} seconds.`, + ); + } + + return { markReadComplete }; +} diff --git a/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDBEntityProviderConfig.ts b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDBEntityProviderConfig.ts new file mode 100644 index 0000000000..e96a4a11e9 --- /dev/null +++ b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDBEntityProviderConfig.ts @@ -0,0 +1,99 @@ +/* + * Copyright 2021 The 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 { + readTaskScheduleDefinitionFromConfig, + TaskScheduleDefinition, +} from '@backstage/backend-tasks'; +import { Config } from '@backstage/config'; +import { DEFAULT_PROVIDER_ID } from './constants'; + +/** + * Configuration of {@link PuppetDBEntityProvider}. + * + * @public + */ +export type PuppetDBEntityProviderConfig = { + /** + * ID of the provider. + */ + id: string; + /** + * (Required) The host of PuppetDB API instance. + */ + host: string; + /** + * (Optional) PQL query to filter PuppetDB nodes. + */ + query?: string; + /** + * (Optional) Task schedule definition for the refresh. + */ + schedule?: TaskScheduleDefinition; +}; + +/** + * Reads the configuration of the PuppetDB Entity Providers. + * + * @param config - The application configuration. + * + * @returns PuppetDB Entity Provider configurations list. + */ +export function readProviderConfigs( + config: Config, +): PuppetDBEntityProviderConfig[] { + const providersConfig = config.getOptionalConfig( + 'catalog.providers.puppetdb', + ); + if (!providersConfig) { + return []; + } + + if (providersConfig.has('host')) { + return [readProviderConfig(DEFAULT_PROVIDER_ID, providersConfig)]; + } + + return providersConfig.keys().map(id => { + return readProviderConfig(id, providersConfig.getConfig(id)); + }); +} + +/** + * Reads the configuration for the PuppetDB Entity Provider. + * + * @param id - ID of the provider. + * @param config - The application configuration. + * + * @returns The PuppetDB Entity Provider configuration. + */ +function readProviderConfig( + id: string, + config: Config, +): PuppetDBEntityProviderConfig { + const host = config.getString('host').replace(/\/+$/, ''); + const query = config.getOptionalString('query'); + + const schedule = config.has('schedule') + ? readTaskScheduleDefinitionFromConfig(config.getConfig('schedule')) + : undefined; + + return { + id, + host, + query, + schedule, + }; +} diff --git a/plugins/catalog-backend-module-puppetdb/src/providers/constants.ts b/plugins/catalog-backend-module-puppetdb/src/providers/constants.ts new file mode 100644 index 0000000000..02b333c613 --- /dev/null +++ b/plugins/catalog-backend-module-puppetdb/src/providers/constants.ts @@ -0,0 +1,29 @@ +/* + * Copyright 2020 The 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. + */ + +/** + * Name of the default provider when a using a simple configuration. + * + * @public + */ +export const DEFAULT_PROVIDER_ID = 'default'; + +/** + * Default owner for entities created by the PuppetDB provider. + * + * @public + */ +export const DEFAULT_OWNER = 'unknown'; diff --git a/plugins/catalog-backend-module-puppetdb/src/providers/index.ts b/plugins/catalog-backend-module-puppetdb/src/providers/index.ts new file mode 100644 index 0000000000..4e220395ba --- /dev/null +++ b/plugins/catalog-backend-module-puppetdb/src/providers/index.ts @@ -0,0 +1,19 @@ +/* + * Copyright 2021 The 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 { PuppetDBEntityProvider } from './PuppetDBEntityProvider'; +export type { PuppetDBEntityProviderConfig } from './PuppetDBEntityProviderConfig'; +export { DEFAULT_PROVIDER_ID, DEFAULT_OWNER } from './constants'; diff --git a/plugins/catalog-backend-module-puppetdb/src/puppet/constants.ts b/plugins/catalog-backend-module-puppetdb/src/puppet/constants.ts new file mode 100644 index 0000000000..ef355f22d3 --- /dev/null +++ b/plugins/catalog-backend-module-puppetdb/src/puppet/constants.ts @@ -0,0 +1,32 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * Annotation for specifying the certificate name of a node in PuppetDB. + * + * @public + */ +export const ANNOTATION_PUPPET_CERTNAME = 'puppet.com/certname'; + +/** + * Path of PuppetDB FactSets endpoint. + */ +export const ENDPOINT_FACTSETS = '/pdb/query/v4/factsets'; + +/** + * Path of PuppetDB Nodes endpoint. + */ +export const ENDPOINT_NODES = '/pdb/query/v4/nodes'; diff --git a/plugins/catalog-backend-module-puppetdb/src/puppet/index.ts b/plugins/catalog-backend-module-puppetdb/src/puppet/index.ts new file mode 100644 index 0000000000..644d111ac1 --- /dev/null +++ b/plugins/catalog-backend-module-puppetdb/src/puppet/index.ts @@ -0,0 +1,24 @@ +/* + * Copyright 2020 The 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 { ANNOTATION_PUPPET_CERTNAME } from './constants'; +export { defaultResourceTransformer } from './transformers'; +export type { + PuppetNode, + PuppetFactSet, + PuppetFact, + ResourceTransformer, +} from './types'; diff --git a/plugins/catalog-backend-module-puppetdb/src/puppet/read.ts b/plugins/catalog-backend-module-puppetdb/src/puppet/read.ts new file mode 100644 index 0000000000..edd33bc76a --- /dev/null +++ b/plugins/catalog-backend-module-puppetdb/src/puppet/read.ts @@ -0,0 +1,75 @@ +/* + * Copyright 2020 The 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 { PuppetDBEntityProviderConfig } from '../providers'; +import { PuppetNode, ResourceTransformer } from './types'; +import { ResourceEntity } from '@backstage/catalog-model/'; +import { defaultResourceTransformer } from './transformers'; +import { ResponseError } from '@backstage/errors'; +import { ENDPOINT_FACTSETS } from './constants'; +import { Logger } from 'winston'; + +/** + * Reads nodes and their facts from PuppetDB. + * + * @param config - The provider configuration. + * @param opts - Additional options. + */ +export async function readPuppetNodes( + config: PuppetDBEntityProviderConfig, + opts?: { + transformer?: ResourceTransformer; + logger?: Logger; + }, +): Promise { + const transformFn = opts?.transformer ?? defaultResourceTransformer; + const url = new URL(config.host); + url.pathname = ENDPOINT_FACTSETS; + + if (config.query) { + url.searchParams.set('query', config.query); + } + + if (opts?.logger) { + opts.logger + .child({ url: url.toString() }) + .debug('Reading nodes from PuppetDB'); + } + + const response = await fetch(url.toString(), { + method: 'GET', + headers: { + 'Content-Type': 'application/json', + Accept: 'application/json', + }, + }); + + if (!response.ok) { + throw await ResponseError.fromResponse(response); + } + + const nodes = (await response.json()) as PuppetNode[]; + const entities: ResourceEntity[] = []; + + for (const node of nodes) { + const entity = await transformFn(node, config); + if (entity) { + entities.push(entity); + } + } + + return entities; +} diff --git a/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.ts b/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.ts new file mode 100644 index 0000000000..ca0d2a4ccc --- /dev/null +++ b/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.ts @@ -0,0 +1,65 @@ +/* + * Copyright 2020 The 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 { ResourceTransformer } from './types'; +import { DEFAULT_NAMESPACE, ResourceEntity } from '@backstage/catalog-model'; +import { DEFAULT_OWNER } from '../providers'; +import { ANNOTATION_PUPPET_CERTNAME } from './constants'; + +/** + * A default implementation of the {@link ResourceTransformer}. + * + * @param node - The found PuppetDB node entry in its source format. This is the entry that you want to transform. + * @param _config - The configuration for the entity provider. + * + * @returns A `ResourceEntity`. + * + * @public + */ +export const defaultResourceTransformer: ResourceTransformer = async ( + node, + _config, +) => { + const certName = node.certname.toLowerCase(); + const type = node.facts?.data?.find(e => e.name === 'is_virtual')?.value + ? 'virtual-machine' + : 'physical-server'; + const kernel = node.facts?.data?.find(e => e.name === 'kernel')?.value; + + const entity: ResourceEntity = { + apiVersion: 'backstage.io/v1beta1', + kind: 'Resource', + metadata: { + name: certName, + annotations: { + [ANNOTATION_PUPPET_CERTNAME]: certName, + }, + namespace: DEFAULT_NAMESPACE, + description: node.facts?.data + ?.find(e => e.name === 'ipaddress') + ?.value?.toString(), + tags: kernel ? [kernel.toString().toLowerCase()] : [], + }, + spec: { + type: type, + owner: DEFAULT_OWNER, + dependsOn: [], + dependencyOf: [], + }, + }; + + return entity; +}; diff --git a/plugins/catalog-backend-module-puppetdb/src/puppet/types.ts b/plugins/catalog-backend-module-puppetdb/src/puppet/types.ts new file mode 100644 index 0000000000..7dc951f49f --- /dev/null +++ b/plugins/catalog-backend-module-puppetdb/src/puppet/types.ts @@ -0,0 +1,102 @@ +/* + * Copyright 2021 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { ResourceEntity } from '@backstage/catalog-model'; +import { JsonValue } from '@backstage/types'; +import { PuppetDBEntityProviderConfig } from '../providers/PuppetDBEntityProviderConfig'; + +/** + * Customize the ingested Resource entity. + * + * @param node - The found PuppetDB node entry in its source format. This is the entry that you want to transform. + * @param config - The configuration for the entity provider. + * + * @returns A `ResourceEntity` or `undefined` if you want to ignore the found group for being ingested by the catalog. + * + * @public + */ +export type ResourceTransformer = ( + node: PuppetNode, + config: PuppetDBEntityProviderConfig, +) => Promise; + +/** + * A node in PuppetDB. + * + * @public + */ +export type PuppetNode = { + /** + * The most recent time of fact submission from the associated certname. + */ + timestamp: string; + /** + * The certname associated with the factset. + */ + certname: string; + /** + * A hash of the factset's certname, environment, timestamp, facts, and producer_timestamp. + */ + hash: string; + /** + * The most recent time of fact submission for the relevant certname from the Puppet Server. + */ + producer_timestamp: string; + /** + * The certname of the Puppet Server that sent the factset to PuppetDB. + */ + producer: string; + /** + * The environment associated with the fact. + */ + environment: string; + /** + * The facts associated with the factset. + */ + facts: PuppetFactSet; +}; + +/** + * The set of all facts for a single certname in PuppetDB. + * + * @public + */ +export type PuppetFactSet = { + /** + * The array of facts. + */ + data: PuppetFact[]; + /** + * The URL to retrieve more information about the facts. + */ + href: string; +}; + +/** + * A fact in PuppetDB. + * + * @public + */ +export type PuppetFact = { + /** + * The name of the fact. + */ + name: string; + /** + * The value of the fact, in JSON format. + */ + value: JsonValue; +}; diff --git a/yarn.lock b/yarn.lock index 33261fc7da..eb17085b2d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5211,10 +5211,16 @@ __metadata: resolution: "@backstage/plugin-catalog-backend-module-puppetdb-backend@workspace:plugins/catalog-backend-module-puppetdb" dependencies: "@backstage/backend-common": "workspace:^" + "@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/lodash": ^4.14.151 lodash: ^4.17.21 + luxon: ^3.0.0 msw: ^0.49.0 node-fetch: ^2.6.7 uuid: ^8.0.0 From 30483f692dab8dc0de33dd108b1b82643e5b9ef3 Mon Sep 17 00:00:00 2001 From: Tomas Dabasinskas Date: Sun, 5 Feb 2023 19:49:23 +0200 Subject: [PATCH 034/147] Add tests Signed-off-by: Tomas Dabasinskas --- .../providers/PuppetDBEntityProvider.test.ts | 218 ++++++++++++++++ .../PuppetDBEntityProviderConfig.test.ts | 129 +++++++++ .../src/puppet/read.test.ts | 244 ++++++++++++++++++ .../src/puppet/transformers.test.ts | 85 ++++++ 4 files changed, 676 insertions(+) create mode 100644 plugins/catalog-backend-module-puppetdb/src/providers/PuppetDBEntityProvider.test.ts create mode 100644 plugins/catalog-backend-module-puppetdb/src/providers/PuppetDBEntityProviderConfig.test.ts create mode 100644 plugins/catalog-backend-module-puppetdb/src/puppet/read.test.ts create mode 100644 plugins/catalog-backend-module-puppetdb/src/puppet/transformers.test.ts diff --git a/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDBEntityProvider.test.ts b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDBEntityProvider.test.ts new file mode 100644 index 0000000000..3b665b94b4 --- /dev/null +++ b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDBEntityProvider.test.ts @@ -0,0 +1,218 @@ +/* + * Copyright 2021 The 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 { TaskInvocationDefinition, TaskRunner } from '@backstage/backend-tasks'; +import { ConfigReader } from '@backstage/config'; +import { getVoidLogger } from '@backstage/backend-common'; +import { PuppetDBEntityProvider } from './PuppetDBEntityProvider'; +import { EntityProviderConnection } from '@backstage/plugin-catalog-backend'; +import * as p from '../puppet/read'; +import { DEFAULT_OWNER } from './constants'; +import { ANNOTATION_PUPPET_CERTNAME } from '../puppet'; +import { + ANNOTATION_LOCATION, + ANNOTATION_ORIGIN_LOCATION, +} from '@backstage/catalog-model/'; +import { ENDPOINT_NODES } from '../puppet/constants'; + +const logger = getVoidLogger(); + +jest.mock('../puppet/read', () => ({ + __esModule: true, + default: jest.fn(), + readPuppetNodes: null, +})); + +class PersistingTaskRunner implements TaskRunner { + private tasks: TaskInvocationDefinition[] = []; + + getTasks() { + return this.tasks; + } + + run(task: TaskInvocationDefinition): Promise { + this.tasks.push(task); + return Promise.resolve(undefined); + } +} + +describe('PuppetEntityProvider', () => { + const config = new ConfigReader({ + catalog: { + providers: { + puppetdb: { + host: 'http://puppetdb:8080', + schedule: { + frequency: { + minutes: 10, + }, + timeout: { + minutes: 10, + }, + }, + }, + }, + }, + }); + + describe('where there are no nodes', () => { + beforeEach(() => { + // @ts-ignore + p.readPuppetNodes = jest.fn().mockResolvedValue([]); + }); + + it('creates no entities', async () => { + const connection: EntityProviderConnection = { + applyMutation: jest.fn(), + refresh: jest.fn(), + }; + const providers = PuppetDBEntityProvider.fromConfig(config, { + logger, + schedule: new PersistingTaskRunner(), + }); + + await providers[0].connect(connection); + await providers[0].refresh(logger); + + expect(connection.applyMutation).toHaveBeenCalledWith({ + type: 'full', + entities: [], + }); + }); + }); + + describe('where there are nodes', () => { + beforeEach(() => { + // @ts-ignore + p.readPuppetNodes = jest.fn().mockResolvedValue([ + { + api_version: 'backstage.io/v1beta1', + kind: 'Resource', + metadata: { + name: 'node1', + namespace: 'default', + annotations: { + [ANNOTATION_PUPPET_CERTNAME]: 'node1', + }, + tags: ['windows'], + description: 'Description 1', + spec: { + type: 'virtual-machine', + owner: DEFAULT_OWNER, + dependsOn: [], + dependencyOf: [], + }, + }, + }, + { + api_version: 'backstage.io/v1beta1', + kind: 'Resource', + metadata: { + name: 'node2', + namespace: 'default', + annotations: { + [ANNOTATION_PUPPET_CERTNAME]: 'node2', + }, + tags: ['linux'], + description: 'Description 2', + spec: { + type: 'physical-server', + owner: DEFAULT_OWNER, + dependsOn: [], + dependencyOf: [], + }, + }, + }, + ]); + }); + + it('creates entities', async () => { + const connection: EntityProviderConnection = { + applyMutation: jest.fn(), + refresh: jest.fn(), + }; + const providers = PuppetDBEntityProvider.fromConfig(config, { + logger, + schedule: new PersistingTaskRunner(), + }); + + await providers[0].connect(connection); + await providers[0].refresh(logger); + + expect(connection.applyMutation).toHaveBeenCalledWith({ + type: 'full', + entities: [ + { + locationKey: providers[0].getProviderName(), + entity: { + api_version: 'backstage.io/v1beta1', + kind: 'Resource', + metadata: { + name: 'node1', + namespace: 'default', + annotations: { + [ANNOTATION_PUPPET_CERTNAME]: 'node1', + [ANNOTATION_LOCATION]: `url:${config.getString( + 'catalog.providers.puppetdb.host', + )}${ENDPOINT_NODES}/node1`, + [ANNOTATION_ORIGIN_LOCATION]: `url:${config.getString( + 'catalog.providers.puppetdb.host', + )}${ENDPOINT_NODES}/node1`, + }, + tags: ['windows'], + description: 'Description 1', + spec: { + type: 'virtual-machine', + owner: DEFAULT_OWNER, + dependsOn: [], + dependencyOf: [], + }, + }, + }, + }, + { + locationKey: providers[0].getProviderName(), + entity: { + api_version: 'backstage.io/v1beta1', + kind: 'Resource', + metadata: { + name: 'node2', + namespace: 'default', + annotations: { + [ANNOTATION_PUPPET_CERTNAME]: 'node2', + [ANNOTATION_LOCATION]: `url:${config.getString( + 'catalog.providers.puppetdb.host', + )}${ENDPOINT_NODES}/node2`, + [ANNOTATION_ORIGIN_LOCATION]: `url:${config.getString( + 'catalog.providers.puppetdb.host', + )}${ENDPOINT_NODES}/node2`, + }, + tags: ['linux'], + description: 'Description 2', + spec: { + type: 'physical-server', + owner: DEFAULT_OWNER, + dependsOn: [], + dependencyOf: [], + }, + }, + }, + }, + ], + }); + }); + }); +}); diff --git a/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDBEntityProviderConfig.test.ts b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDBEntityProviderConfig.test.ts new file mode 100644 index 0000000000..07fe54bbca --- /dev/null +++ b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDBEntityProviderConfig.test.ts @@ -0,0 +1,129 @@ +/* + * Copyright 2021 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { ConfigReader } from '@backstage/config'; +import { readProviderConfigs } from './PuppetDBEntityProviderConfig'; +import { Duration } from 'luxon'; + +describe('readProviderConfigs', () => { + afterEach(() => jest.resetAllMocks()); + + it('no provider config', () => { + const config = new ConfigReader({}); + const providerConfigs = readProviderConfigs(config); + + expect(providerConfigs).toHaveLength(0); + }); + + it('single simple provider config', () => { + const config = new ConfigReader({ + catalog: { + providers: { + puppetdb: { + host: 'https://puppetdb', + }, + }, + }, + }); + + const providerConfigs = readProviderConfigs(config); + + expect(providerConfigs).toHaveLength(1); + expect(providerConfigs[0].id).toEqual('default'); + expect(providerConfigs[0].host).toEqual('https://puppetdb'); + }); + + it('single specific provider config', () => { + const config = new ConfigReader({ + catalog: { + providers: { + puppetdb: { + 'my-provider': { + host: 'https://puppetdb', + }, + }, + }, + }, + }); + + const providerConfigs = readProviderConfigs(config); + + expect(providerConfigs).toHaveLength(1); + expect(providerConfigs[0].id).toEqual('my-provider'); + expect(providerConfigs[0].host).toEqual('https://puppetdb'); + }); + + it('multiple provider configs', () => { + const config = new ConfigReader({ + catalog: { + providers: { + puppetdb: { + 'my-provider': { + host: 'https://my-puppet/', + query: 'my-query', + }, + 'your-provider': { + host: 'https://your-puppet', + query: 'your-query', + }, + }, + }, + }, + }); + + const providerConfigs = readProviderConfigs(config); + + expect(providerConfigs).toHaveLength(2); + expect(providerConfigs[0]).toEqual({ + id: 'my-provider', + host: 'https://my-puppet', + query: 'my-query', + }); + expect(providerConfigs[1]).toEqual({ + id: 'your-provider', + host: 'https://your-puppet', + query: 'your-query', + }); + }); + + it('provider config with schedule', () => { + const config = new ConfigReader({ + catalog: { + providers: { + puppetdb: { + host: 'https://puppetdb', + schedule: { + frequency: 'PT30M', + timeout: { + minutes: 10, + }, + }, + }, + }, + }, + }); + + const providerConfigs = readProviderConfigs(config); + + expect(providerConfigs).toHaveLength(1); + expect(providerConfigs[0].schedule).toEqual({ + frequency: Duration.fromISO('PT30M'), + timeout: { + minutes: 10, + }, + }); + }); +}); diff --git a/plugins/catalog-backend-module-puppetdb/src/puppet/read.test.ts b/plugins/catalog-backend-module-puppetdb/src/puppet/read.test.ts new file mode 100644 index 0000000000..573be365dd --- /dev/null +++ b/plugins/catalog-backend-module-puppetdb/src/puppet/read.test.ts @@ -0,0 +1,244 @@ +/* + * Copyright 2020 The 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 { readPuppetNodes } from './read'; +import { + DEFAULT_PROVIDER_ID, + PuppetDBEntityProviderConfig, +} from '../providers'; +import { DEFAULT_NAMESPACE } from '@backstage/catalog-model'; +import fetch from 'node-fetch'; +import { ANNOTATION_PUPPET_CERTNAME, ENDPOINT_FACTSETS } from './constants'; + +jest.mock('node-fetch', () => { + const original = jest.requireActual('node-fetch'); + return { + __esModule: true, + default: jest.fn(), + Headers: original.Headers, + }; +}); +(global as any).fetch = fetch; + +describe('readPuppetNodes', () => { + const mockFetch = fetch as unknown as jest.Mocked; + + describe('where no query is specified', () => { + const config: PuppetDBEntityProviderConfig = { + host: 'https://puppetdb', + id: DEFAULT_PROVIDER_ID, + }; + + beforeEach(async () => { + mockFetch.mockReturnValueOnce( + Promise.resolve( + new Response( + JSON.stringify([ + { + certname: 'node1', + timestamp: 'time1', + hash: 'hash1', + producer_timestamp: 'producer_time1', + producer: 'producer1', + environment: 'environment1', + facts: { + data: [ + { + name: 'is_virtual', + value: true, + }, + { + name: 'kernel', + value: 'Linux', + }, + { + name: 'ipaddress', + value: 'ipaddress1', + }, + { + name: 'clientnoop', + value: true, + }, + { + name: 'clientversion', + value: 'clientversion1', + }, + ], + }, + }, + { + certname: 'node2', + timestamp: 'time2', + hash: 'hash2', + producer_timestamp: 'producer_time2', + producer: 'producer2', + environment: 'environment2', + facts: { + data: [ + { + name: 'is_virtual', + value: false, + }, + { + name: 'kernel', + value: 'Windows', + }, + { + name: 'ipaddress', + value: 'ipaddress2', + }, + { + name: 'clientnoop', + value: false, + }, + { + name: 'clientversion', + value: 'clientversion2', + }, + ], + }, + }, + ]), + ), + ), + ); + }); + + describe('where custom transformer is used', () => { + it('should use it for transforming puppet nodes', async () => { + const entities = await readPuppetNodes(config, { + transformer: async (node, _config) => { + return { + apiVersion: 'backstage.io/v1beta1', + kind: 'Resource', + metadata: { + name: `custom-${node.certname}`, + namespace: DEFAULT_NAMESPACE, + }, + spec: { + type: 'Custom', + owner: 'Custom', + dependsOn: [], + dependencyOf: [], + }, + }; + }, + }); + + expect(entities).toHaveLength(2); + expect(entities[0]).toEqual({ + apiVersion: 'backstage.io/v1beta1', + kind: 'Resource', + metadata: { + name: 'custom-node1', + namespace: DEFAULT_NAMESPACE, + }, + spec: { + type: 'Custom', + owner: 'Custom', + dependsOn: [], + dependencyOf: [], + }, + }); + expect(entities[1]).toEqual({ + apiVersion: 'backstage.io/v1beta1', + kind: 'Resource', + metadata: { + name: 'custom-node2', + namespace: DEFAULT_NAMESPACE, + }, + spec: { + type: 'Custom', + owner: 'Custom', + dependsOn: [], + dependencyOf: [], + }, + }); + }); + }); + + describe('where default transformer is used', () => { + it('should use it for transforming puppet nodes', async () => { + const entities = await readPuppetNodes(config); + + expect(entities).toHaveLength(2); + expect(entities[0].metadata.annotations).toEqual({ + [ANNOTATION_PUPPET_CERTNAME]: 'node1', + }); + expect(entities[1].metadata.annotations).toEqual({ + [ANNOTATION_PUPPET_CERTNAME]: 'node2', + }); + }); + }); + }); + + describe('where query is specified', () => { + const config: PuppetDBEntityProviderConfig = { + host: 'https://puppetdb', + id: DEFAULT_PROVIDER_ID, + query: '["=", "certname", "node1"]', + }; + + describe('where no results are matched', () => { + beforeEach(async () => { + mockFetch.mockReturnValueOnce( + Promise.resolve(new Response(JSON.stringify([]))), + ); + }); + + it('should return empty array', async () => { + const entities = await readPuppetNodes(config); + expect(entities).toHaveLength(0); + }); + }); + + describe('where results are matched', () => { + beforeEach(async () => { + mockFetch.mockReturnValueOnce( + Promise.resolve( + new Response( + JSON.stringify([ + { + certname: 'node1', + timestamp: 'time1', + hash: 'hash1', + producer_timestamp: 'producer_time1', + producer: 'producer1', + environment: 'environment1', + }, + ]), + ), + ), + ); + }); + + it('should return matched results', async () => { + const entities = await readPuppetNodes(config); + expect(mockFetch).toHaveBeenCalledWith( + `${config.host}${ENDPOINT_FACTSETS}?query=%5B%22%3D%22%2C+%22certname%22%2C+%22node1%22%5D`, + { + headers: { + Accept: 'application/json', + 'Content-Type': 'application/json', + }, + method: 'GET', + }, + ); + expect(entities).toHaveLength(1); + }); + }); + }); +}); diff --git a/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.test.ts b/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.test.ts new file mode 100644 index 0000000000..30ae79e87b --- /dev/null +++ b/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.test.ts @@ -0,0 +1,85 @@ +/* + * Copyright 2020 The 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 { PuppetDBEntityProviderConfig } from '../providers'; +import { PuppetNode } from './types'; +import { defaultResourceTransformer } from './transformers'; +import { DEFAULT_NAMESPACE } from '@backstage/catalog-model'; +import { DEFAULT_OWNER } from '../providers'; +import { ANNOTATION_PUPPET_CERTNAME } from './constants'; + +describe('defaultResourceTransformer', () => { + it('should transform a puppet node to a resource entity', async () => { + const config: PuppetDBEntityProviderConfig = { + host: '', + id: '', + }; + const node: PuppetNode = { + certname: 'node1', + timestamp: 'time1', + hash: 'hash1', + producer_timestamp: 'producer_time1', + producer: 'producer1', + environment: 'environment1', + facts: { + href: 'facts1', + data: [ + { + name: 'kernel', + value: 'Linux', + }, + { + name: 'ipaddress', + value: 'ipaddress1', + }, + { + name: 'is_virtual', + value: true, + }, + { + name: 'clientnoop', + value: true, + }, + { + name: 'clientversion', + value: 'clientversion1', + }, + ], + }, + }; + + const entity = await defaultResourceTransformer(node, config); + expect(entity).toEqual({ + apiVersion: 'backstage.io/v1beta1', + kind: 'Resource', + metadata: { + name: 'node1', + namespace: DEFAULT_NAMESPACE, + annotations: { + [ANNOTATION_PUPPET_CERTNAME]: 'node1', + }, + description: 'ipaddress1', + tags: ['linux'], + }, + spec: { + type: 'virtual-machine', + owner: DEFAULT_OWNER, + dependsOn: [], + dependencyOf: [], + }, + }); + }); +}); From 6746020caf741a540b55bcdf9d436d663d15582e Mon Sep 17 00:00:00 2001 From: Tomas Dabasinskas Date: Sun, 5 Feb 2023 19:59:30 +0200 Subject: [PATCH 035/147] Update naming Signed-off-by: Tomas Dabasinskas --- .../config.d.ts | 2 +- ...test.ts => PuppetDbEntityProvider.test.ts} | 6 ++--- ...yProvider.ts => PuppetDbEntityProvider.ts} | 24 +++++++++---------- ...s => PuppetDbEntityProviderConfig.test.ts} | 2 +- ...fig.ts => PuppetDbEntityProviderConfig.ts} | 8 +++---- .../src/providers/index.ts | 4 ++-- .../src/puppet/read.test.ts | 6 ++--- .../src/puppet/read.ts | 4 ++-- .../src/puppet/transformers.test.ts | 4 ++-- .../src/puppet/types.ts | 4 ++-- 10 files changed, 32 insertions(+), 32 deletions(-) rename plugins/catalog-backend-module-puppetdb/src/providers/{PuppetDBEntityProvider.test.ts => PuppetDbEntityProvider.test.ts} (97%) rename plugins/catalog-backend-module-puppetdb/src/providers/{PuppetDBEntityProvider.ts => PuppetDbEntityProvider.ts} (91%) rename plugins/catalog-backend-module-puppetdb/src/providers/{PuppetDBEntityProviderConfig.test.ts => PuppetDbEntityProviderConfig.test.ts} (98%) rename plugins/catalog-backend-module-puppetdb/src/providers/{PuppetDBEntityProviderConfig.ts => PuppetDbEntityProviderConfig.ts} (93%) diff --git a/plugins/catalog-backend-module-puppetdb/config.d.ts b/plugins/catalog-backend-module-puppetdb/config.d.ts index 6514629251..a79438944e 100644 --- a/plugins/catalog-backend-module-puppetdb/config.d.ts +++ b/plugins/catalog-backend-module-puppetdb/config.d.ts @@ -40,7 +40,7 @@ export interface Config { } /** - * Configuration of {@link PuppetDBEntityProvider}. + * Configuration of {@link PuppetDbEntityProvider}. */ interface ProviderConfig { /** diff --git a/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDBEntityProvider.test.ts b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.test.ts similarity index 97% rename from plugins/catalog-backend-module-puppetdb/src/providers/PuppetDBEntityProvider.test.ts rename to plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.test.ts index 3b665b94b4..7ea191190b 100644 --- a/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDBEntityProvider.test.ts +++ b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.test.ts @@ -17,7 +17,7 @@ import { TaskInvocationDefinition, TaskRunner } from '@backstage/backend-tasks'; import { ConfigReader } from '@backstage/config'; import { getVoidLogger } from '@backstage/backend-common'; -import { PuppetDBEntityProvider } from './PuppetDBEntityProvider'; +import { PuppetDbEntityProvider } from './PuppetDbEntityProvider'; import { EntityProviderConnection } from '@backstage/plugin-catalog-backend'; import * as p from '../puppet/read'; import { DEFAULT_OWNER } from './constants'; @@ -79,7 +79,7 @@ describe('PuppetEntityProvider', () => { applyMutation: jest.fn(), refresh: jest.fn(), }; - const providers = PuppetDBEntityProvider.fromConfig(config, { + const providers = PuppetDbEntityProvider.fromConfig(config, { logger, schedule: new PersistingTaskRunner(), }); @@ -144,7 +144,7 @@ describe('PuppetEntityProvider', () => { applyMutation: jest.fn(), refresh: jest.fn(), }; - const providers = PuppetDBEntityProvider.fromConfig(config, { + const providers = PuppetDbEntityProvider.fromConfig(config, { logger, schedule: new PersistingTaskRunner(), }); diff --git a/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDBEntityProvider.ts b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.ts similarity index 91% rename from plugins/catalog-backend-module-puppetdb/src/providers/PuppetDBEntityProvider.ts rename to plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.ts index a887d4778c..e6c19686a3 100644 --- a/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDBEntityProvider.ts +++ b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.ts @@ -20,9 +20,9 @@ import { } from '@backstage/plugin-catalog-backend'; import { Logger } from 'winston'; import { - PuppetDBEntityProviderConfig, + PuppetDbEntityProviderConfig, readProviderConfigs, -} from './PuppetDBEntityProviderConfig'; +} from './PuppetDbEntityProviderConfig'; import { Config } from '@backstage/config'; import { PluginTaskScheduler, TaskRunner } from '@backstage/backend-tasks'; import * as uuid from 'uuid'; @@ -42,20 +42,20 @@ import { ENDPOINT_NODES } from '../puppet/constants'; * * @public */ -export class PuppetDBEntityProvider implements EntityProvider { - private readonly config: PuppetDBEntityProviderConfig; +export class PuppetDbEntityProvider implements EntityProvider { + private readonly config: PuppetDbEntityProviderConfig; private readonly logger: Logger; private readonly scheduleFn: () => Promise; private readonly transformer: ResourceTransformer; private connection?: EntityProviderConnection; /** - * Creates instances of {@link PuppetDBEntityProvider} from a configuration. + * Creates instances of {@link PuppetDbEntityProvider} from a configuration. * * @param config - The configuration to read provider information from. - * @param deps - The dependencies for {@link PuppetDBEntityProvider}. + * @param deps - The dependencies for {@link PuppetDbEntityProvider}. * - * @returns A list of {@link PuppetDBEntityProvider} instances. + * @returns A list of {@link PuppetDbEntityProvider} instances. */ static fromConfig( config: Config, @@ -65,7 +65,7 @@ export class PuppetDBEntityProvider implements EntityProvider { scheduler?: PluginTaskScheduler; transformer?: ResourceTransformer; }, - ): PuppetDBEntityProvider[] { + ): PuppetDbEntityProvider[] { if (!deps.schedule && !deps.scheduler) { throw new Error('Either schedule or scheduler must be provided.'); } @@ -83,7 +83,7 @@ export class PuppetDBEntityProvider implements EntityProvider { const transformer = deps.transformer ?? defaultResourceTransformer; - return new PuppetDBEntityProvider( + return new PuppetDbEntityProvider( providerConfig, deps.logger, taskRunner, @@ -93,7 +93,7 @@ export class PuppetDBEntityProvider implements EntityProvider { } /** - * Creates an instance of {@link PuppetDBEntityProvider}. + * Creates an instance of {@link PuppetDbEntityProvider}. * * @param config - Configuration of the provider. * @param logger - The instance of a {@link Logger}. @@ -103,7 +103,7 @@ export class PuppetDBEntityProvider implements EntityProvider { * @private */ private constructor( - config: PuppetDBEntityProviderConfig, + config: PuppetDbEntityProviderConfig, logger: Logger, taskRunner: TaskRunner, transformer: ResourceTransformer, @@ -141,7 +141,7 @@ export class PuppetDBEntityProvider implements EntityProvider { id: taskId, fn: async () => { const logger = this.logger.child({ - class: PuppetDBEntityProvider.prototype.constructor.name, + class: PuppetDbEntityProvider.prototype.constructor.name, taskId, taskInstanceId: uuid.v4(), }); diff --git a/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDBEntityProviderConfig.test.ts b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProviderConfig.test.ts similarity index 98% rename from plugins/catalog-backend-module-puppetdb/src/providers/PuppetDBEntityProviderConfig.test.ts rename to plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProviderConfig.test.ts index 07fe54bbca..517247fd6d 100644 --- a/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDBEntityProviderConfig.test.ts +++ b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProviderConfig.test.ts @@ -15,7 +15,7 @@ */ import { ConfigReader } from '@backstage/config'; -import { readProviderConfigs } from './PuppetDBEntityProviderConfig'; +import { readProviderConfigs } from './PuppetDbEntityProviderConfig'; import { Duration } from 'luxon'; describe('readProviderConfigs', () => { diff --git a/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDBEntityProviderConfig.ts b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProviderConfig.ts similarity index 93% rename from plugins/catalog-backend-module-puppetdb/src/providers/PuppetDBEntityProviderConfig.ts rename to plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProviderConfig.ts index e96a4a11e9..159a1e5504 100644 --- a/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDBEntityProviderConfig.ts +++ b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProviderConfig.ts @@ -22,11 +22,11 @@ import { Config } from '@backstage/config'; import { DEFAULT_PROVIDER_ID } from './constants'; /** - * Configuration of {@link PuppetDBEntityProvider}. + * Configuration of {@link PuppetDbEntityProvider}. * * @public */ -export type PuppetDBEntityProviderConfig = { +export type PuppetDbEntityProviderConfig = { /** * ID of the provider. */ @@ -54,7 +54,7 @@ export type PuppetDBEntityProviderConfig = { */ export function readProviderConfigs( config: Config, -): PuppetDBEntityProviderConfig[] { +): PuppetDbEntityProviderConfig[] { const providersConfig = config.getOptionalConfig( 'catalog.providers.puppetdb', ); @@ -82,7 +82,7 @@ export function readProviderConfigs( function readProviderConfig( id: string, config: Config, -): PuppetDBEntityProviderConfig { +): PuppetDbEntityProviderConfig { const host = config.getString('host').replace(/\/+$/, ''); const query = config.getOptionalString('query'); diff --git a/plugins/catalog-backend-module-puppetdb/src/providers/index.ts b/plugins/catalog-backend-module-puppetdb/src/providers/index.ts index 4e220395ba..aae8f0cd44 100644 --- a/plugins/catalog-backend-module-puppetdb/src/providers/index.ts +++ b/plugins/catalog-backend-module-puppetdb/src/providers/index.ts @@ -14,6 +14,6 @@ * limitations under the License. */ -export { PuppetDBEntityProvider } from './PuppetDBEntityProvider'; -export type { PuppetDBEntityProviderConfig } from './PuppetDBEntityProviderConfig'; +export { PuppetDbEntityProvider } from './PuppetDbEntityProvider'; +export type { PuppetDbEntityProviderConfig } from './PuppetDbEntityProviderConfig'; export { DEFAULT_PROVIDER_ID, DEFAULT_OWNER } from './constants'; diff --git a/plugins/catalog-backend-module-puppetdb/src/puppet/read.test.ts b/plugins/catalog-backend-module-puppetdb/src/puppet/read.test.ts index 573be365dd..afa18c0ba5 100644 --- a/plugins/catalog-backend-module-puppetdb/src/puppet/read.test.ts +++ b/plugins/catalog-backend-module-puppetdb/src/puppet/read.test.ts @@ -17,7 +17,7 @@ import { readPuppetNodes } from './read'; import { DEFAULT_PROVIDER_ID, - PuppetDBEntityProviderConfig, + PuppetDbEntityProviderConfig, } from '../providers'; import { DEFAULT_NAMESPACE } from '@backstage/catalog-model'; import fetch from 'node-fetch'; @@ -37,7 +37,7 @@ describe('readPuppetNodes', () => { const mockFetch = fetch as unknown as jest.Mocked; describe('where no query is specified', () => { - const config: PuppetDBEntityProviderConfig = { + const config: PuppetDbEntityProviderConfig = { host: 'https://puppetdb', id: DEFAULT_PROVIDER_ID, }; @@ -186,7 +186,7 @@ describe('readPuppetNodes', () => { }); describe('where query is specified', () => { - const config: PuppetDBEntityProviderConfig = { + const config: PuppetDbEntityProviderConfig = { host: 'https://puppetdb', id: DEFAULT_PROVIDER_ID, query: '["=", "certname", "node1"]', diff --git a/plugins/catalog-backend-module-puppetdb/src/puppet/read.ts b/plugins/catalog-backend-module-puppetdb/src/puppet/read.ts index edd33bc76a..8ecbb63d91 100644 --- a/plugins/catalog-backend-module-puppetdb/src/puppet/read.ts +++ b/plugins/catalog-backend-module-puppetdb/src/puppet/read.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { PuppetDBEntityProviderConfig } from '../providers'; +import { PuppetDbEntityProviderConfig } from '../providers'; import { PuppetNode, ResourceTransformer } from './types'; import { ResourceEntity } from '@backstage/catalog-model/'; import { defaultResourceTransformer } from './transformers'; @@ -29,7 +29,7 @@ import { Logger } from 'winston'; * @param opts - Additional options. */ export async function readPuppetNodes( - config: PuppetDBEntityProviderConfig, + config: PuppetDbEntityProviderConfig, opts?: { transformer?: ResourceTransformer; logger?: Logger; diff --git a/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.test.ts b/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.test.ts index 30ae79e87b..e5c5698d99 100644 --- a/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.test.ts +++ b/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.test.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { PuppetDBEntityProviderConfig } from '../providers'; +import { PuppetDbEntityProviderConfig } from '../providers'; import { PuppetNode } from './types'; import { defaultResourceTransformer } from './transformers'; import { DEFAULT_NAMESPACE } from '@backstage/catalog-model'; @@ -23,7 +23,7 @@ import { ANNOTATION_PUPPET_CERTNAME } from './constants'; describe('defaultResourceTransformer', () => { it('should transform a puppet node to a resource entity', async () => { - const config: PuppetDBEntityProviderConfig = { + const config: PuppetDbEntityProviderConfig = { host: '', id: '', }; diff --git a/plugins/catalog-backend-module-puppetdb/src/puppet/types.ts b/plugins/catalog-backend-module-puppetdb/src/puppet/types.ts index 7dc951f49f..f71ba299bd 100644 --- a/plugins/catalog-backend-module-puppetdb/src/puppet/types.ts +++ b/plugins/catalog-backend-module-puppetdb/src/puppet/types.ts @@ -16,7 +16,7 @@ import { ResourceEntity } from '@backstage/catalog-model'; import { JsonValue } from '@backstage/types'; -import { PuppetDBEntityProviderConfig } from '../providers/PuppetDBEntityProviderConfig'; +import { PuppetDbEntityProviderConfig } from '../providers/PuppetDbEntityProviderConfig'; /** * Customize the ingested Resource entity. @@ -30,7 +30,7 @@ import { PuppetDBEntityProviderConfig } from '../providers/PuppetDBEntityProvide */ export type ResourceTransformer = ( node: PuppetNode, - config: PuppetDBEntityProviderConfig, + config: PuppetDbEntityProviderConfig, ) => Promise; /** From cb9341399a3ab7e61118cfa2b465977bff12392f Mon Sep 17 00:00:00 2001 From: Tomas Dabasinskas Date: Sun, 5 Feb 2023 20:19:56 +0200 Subject: [PATCH 036/147] Generate API Report Signed-off-by: Tomas Dabasinskas --- .../api-report.md | 79 +++++++++++++++++++ .../config.d.ts | 5 +- .../providers/PuppetDbEntityProvider.test.ts | 3 +- .../src/providers/PuppetDbEntityProvider.ts | 2 +- .../src/providers/constants.ts | 7 -- .../src/providers/index.ts | 2 +- .../src/puppet/constants.ts | 7 ++ .../src/puppet/transformers.test.ts | 3 +- .../src/puppet/transformers.ts | 3 +- 9 files changed, 92 insertions(+), 19 deletions(-) create mode 100644 plugins/catalog-backend-module-puppetdb/api-report.md diff --git a/plugins/catalog-backend-module-puppetdb/api-report.md b/plugins/catalog-backend-module-puppetdb/api-report.md new file mode 100644 index 0000000000..798e672f4c --- /dev/null +++ b/plugins/catalog-backend-module-puppetdb/api-report.md @@ -0,0 +1,79 @@ +## API Report File for "@backstage/plugin-catalog-backend-module-puppetdb-backend" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts +import { Config } from '@backstage/config'; +import { EntityProvider } from '@backstage/plugin-catalog-backend'; +import { EntityProviderConnection } from '@backstage/plugin-catalog-backend'; +import { JsonValue } from '@backstage/types'; +import { Logger } from 'winston'; +import { PluginTaskScheduler } from '@backstage/backend-tasks'; +import { ResourceEntity } from '@backstage/catalog-model'; +import { TaskRunner } from '@backstage/backend-tasks'; +import { TaskScheduleDefinition } from '@backstage/backend-tasks'; + +// @public +export const ANNOTATION_PUPPET_CERTNAME = 'puppet.com/certname'; + +// @public +export const DEFAULT_PROVIDER_ID = 'default'; + +// @public +export const defaultResourceTransformer: ResourceTransformer; + +// @public +export class PuppetDbEntityProvider implements EntityProvider { + // (undocumented) + connect(connection: EntityProviderConnection): Promise; + static fromConfig( + config: Config, + deps: { + logger: Logger; + schedule?: TaskRunner; + scheduler?: PluginTaskScheduler; + transformer?: ResourceTransformer; + }, + ): PuppetDbEntityProvider[]; + // (undocumented) + getProviderName(): string; + refresh(logger: Logger): Promise; +} + +// @public +export type PuppetDbEntityProviderConfig = { + id: string; + host: string; + query?: string; + schedule?: TaskScheduleDefinition; +}; + +// @public +export type PuppetFact = { + name: string; + value: JsonValue; +}; + +// @public +export type PuppetFactSet = { + data: PuppetFact[]; + href: string; +}; + +// @public +export type PuppetNode = { + timestamp: string; + certname: string; + hash: string; + producer_timestamp: string; + producer: string; + environment: string; + facts: PuppetFactSet; +}; + +// @public +export type ResourceTransformer = ( + node: PuppetNode, + config: PuppetDbEntityProviderConfig, +) => Promise; +``` diff --git a/plugins/catalog-backend-module-puppetdb/config.d.ts b/plugins/catalog-backend-module-puppetdb/config.d.ts index a79438944e..6b6c393d6b 100644 --- a/plugins/catalog-backend-module-puppetdb/config.d.ts +++ b/plugins/catalog-backend-module-puppetdb/config.d.ts @@ -14,10 +14,7 @@ * limitations under the License. */ -import { - TaskScheduleDefinition, - TaskScheduleDefinitionConfig, -} from '@backstage/backend-tasks'; +import { TaskScheduleDefinition } from '@backstage/backend-tasks'; /** * Represents the configuration for the Backstage. diff --git a/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.test.ts b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.test.ts index 7ea191190b..b049c16856 100644 --- a/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.test.ts +++ b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.test.ts @@ -20,13 +20,12 @@ import { getVoidLogger } from '@backstage/backend-common'; import { PuppetDbEntityProvider } from './PuppetDbEntityProvider'; import { EntityProviderConnection } from '@backstage/plugin-catalog-backend'; import * as p from '../puppet/read'; -import { DEFAULT_OWNER } from './constants'; import { ANNOTATION_PUPPET_CERTNAME } from '../puppet'; import { ANNOTATION_LOCATION, ANNOTATION_ORIGIN_LOCATION, } from '@backstage/catalog-model/'; -import { ENDPOINT_NODES } from '../puppet/constants'; +import { DEFAULT_OWNER, ENDPOINT_NODES } from '../puppet/constants'; const logger = getVoidLogger(); diff --git a/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.ts b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.ts index e6c19686a3..5246c3373d 100644 --- a/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.ts +++ b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.ts @@ -158,7 +158,7 @@ export class PuppetDbEntityProvider implements EntityProvider { /** * Refreshes the catalog by reading nodes from PuppetDB and registering them as Resource Entities. * - * @param logger - The instance of a {@link Logger}. + * @param logger - The instance of a Logger. */ async refresh(logger: Logger) { if (!this.connection) { diff --git a/plugins/catalog-backend-module-puppetdb/src/providers/constants.ts b/plugins/catalog-backend-module-puppetdb/src/providers/constants.ts index 02b333c613..ca8a48b374 100644 --- a/plugins/catalog-backend-module-puppetdb/src/providers/constants.ts +++ b/plugins/catalog-backend-module-puppetdb/src/providers/constants.ts @@ -20,10 +20,3 @@ * @public */ export const DEFAULT_PROVIDER_ID = 'default'; - -/** - * Default owner for entities created by the PuppetDB provider. - * - * @public - */ -export const DEFAULT_OWNER = 'unknown'; diff --git a/plugins/catalog-backend-module-puppetdb/src/providers/index.ts b/plugins/catalog-backend-module-puppetdb/src/providers/index.ts index aae8f0cd44..43d673c30c 100644 --- a/plugins/catalog-backend-module-puppetdb/src/providers/index.ts +++ b/plugins/catalog-backend-module-puppetdb/src/providers/index.ts @@ -16,4 +16,4 @@ export { PuppetDbEntityProvider } from './PuppetDbEntityProvider'; export type { PuppetDbEntityProviderConfig } from './PuppetDbEntityProviderConfig'; -export { DEFAULT_PROVIDER_ID, DEFAULT_OWNER } from './constants'; +export { DEFAULT_PROVIDER_ID } from './constants'; diff --git a/plugins/catalog-backend-module-puppetdb/src/puppet/constants.ts b/plugins/catalog-backend-module-puppetdb/src/puppet/constants.ts index ef355f22d3..672bc48932 100644 --- a/plugins/catalog-backend-module-puppetdb/src/puppet/constants.ts +++ b/plugins/catalog-backend-module-puppetdb/src/puppet/constants.ts @@ -30,3 +30,10 @@ export const ENDPOINT_FACTSETS = '/pdb/query/v4/factsets'; * Path of PuppetDB Nodes endpoint. */ export const ENDPOINT_NODES = '/pdb/query/v4/nodes'; + +/** + * Default owner for entities created by the PuppetDB provider. + * + * @public + */ +export const DEFAULT_OWNER = 'unknown'; diff --git a/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.test.ts b/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.test.ts index e5c5698d99..f7d3813bf6 100644 --- a/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.test.ts +++ b/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.test.ts @@ -18,8 +18,7 @@ import { PuppetDbEntityProviderConfig } from '../providers'; import { PuppetNode } from './types'; import { defaultResourceTransformer } from './transformers'; import { DEFAULT_NAMESPACE } from '@backstage/catalog-model'; -import { DEFAULT_OWNER } from '../providers'; -import { ANNOTATION_PUPPET_CERTNAME } from './constants'; +import { ANNOTATION_PUPPET_CERTNAME, DEFAULT_OWNER } from './constants'; describe('defaultResourceTransformer', () => { it('should transform a puppet node to a resource entity', async () => { diff --git a/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.ts b/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.ts index ca0d2a4ccc..ec4c4a2af3 100644 --- a/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.ts +++ b/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.ts @@ -16,8 +16,7 @@ import { ResourceTransformer } from './types'; import { DEFAULT_NAMESPACE, ResourceEntity } from '@backstage/catalog-model'; -import { DEFAULT_OWNER } from '../providers'; -import { ANNOTATION_PUPPET_CERTNAME } from './constants'; +import { ANNOTATION_PUPPET_CERTNAME, DEFAULT_OWNER } from './constants'; /** * A default implementation of the {@link ResourceTransformer}. From a866a0a6b63f4f85cd59c7b18a18dc49314cce32 Mon Sep 17 00:00:00 2001 From: Tomas Dabasinskas Date: Sun, 5 Feb 2023 20:32:28 +0200 Subject: [PATCH 037/147] Fix package name Signed-off-by: Tomas Dabasinskas --- plugins/catalog-backend-module-puppetdb/api-report.md | 2 +- plugins/catalog-backend-module-puppetdb/package.json | 2 +- yarn.lock | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/catalog-backend-module-puppetdb/api-report.md b/plugins/catalog-backend-module-puppetdb/api-report.md index 798e672f4c..84227af5d3 100644 --- a/plugins/catalog-backend-module-puppetdb/api-report.md +++ b/plugins/catalog-backend-module-puppetdb/api-report.md @@ -1,4 +1,4 @@ -## API Report File for "@backstage/plugin-catalog-backend-module-puppetdb-backend" +## API Report File for "@backstage/plugin-catalog-backend-module-puppetdb" > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). diff --git a/plugins/catalog-backend-module-puppetdb/package.json b/plugins/catalog-backend-module-puppetdb/package.json index fa7f08da1a..440c7e48af 100644 --- a/plugins/catalog-backend-module-puppetdb/package.json +++ b/plugins/catalog-backend-module-puppetdb/package.json @@ -1,5 +1,5 @@ { - "name": "@backstage/plugin-catalog-backend-module-puppetdb-backend", + "name": "@backstage/plugin-catalog-backend-module-puppetdb", "description": "A Backstage catalog backend module that helps integrate towards PuppetDB", "version": "0.0.1", "main": "src/index.ts", diff --git a/yarn.lock b/yarn.lock index eb17085b2d..7b71cdff35 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5206,9 +5206,9 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-catalog-backend-module-puppetdb-backend@workspace:plugins/catalog-backend-module-puppetdb": +"@backstage/plugin-catalog-backend-module-puppetdb@workspace:plugins/catalog-backend-module-puppetdb": version: 0.0.0-use.local - resolution: "@backstage/plugin-catalog-backend-module-puppetdb-backend@workspace:plugins/catalog-backend-module-puppetdb" + resolution: "@backstage/plugin-catalog-backend-module-puppetdb@workspace:plugins/catalog-backend-module-puppetdb" dependencies: "@backstage/backend-common": "workspace:^" "@backstage/backend-tasks": "workspace:^" From 3b8f0fbf01f7c52022ac0c41d02997538d38cd78 Mon Sep 17 00:00:00 2001 From: Tomas Dabasinskas Date: Sun, 5 Feb 2023 21:14:46 +0200 Subject: [PATCH 038/147] Rename default owner constant Signed-off-by: Tomas Dabasinskas --- plugins/catalog-backend-module-puppetdb/package.json | 2 +- .../src/providers/PuppetDbEntityProvider.test.ts | 10 +++++----- .../src/puppet/constants.ts | 2 +- .../src/puppet/transformers.test.ts | 4 ++-- .../src/puppet/transformers.ts | 4 ++-- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/plugins/catalog-backend-module-puppetdb/package.json b/plugins/catalog-backend-module-puppetdb/package.json index 440c7e48af..0ccb2fc24d 100644 --- a/plugins/catalog-backend-module-puppetdb/package.json +++ b/plugins/catalog-backend-module-puppetdb/package.json @@ -17,7 +17,7 @@ "repository": { "type": "git", "url": "https://github.com/backstage/backstage", - "directory": "catalog-backend-module-puppetdb" + "directory": "plugins/catalog-backend-module-puppetdb" }, "keywords": [ "backstage", diff --git a/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.test.ts b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.test.ts index b049c16856..b72e0b8401 100644 --- a/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.test.ts +++ b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.test.ts @@ -25,7 +25,7 @@ import { ANNOTATION_LOCATION, ANNOTATION_ORIGIN_LOCATION, } from '@backstage/catalog-model/'; -import { DEFAULT_OWNER, ENDPOINT_NODES } from '../puppet/constants'; +import { DEFAULT_ENTITY_OWNER, ENDPOINT_NODES } from '../puppet/constants'; const logger = getVoidLogger(); @@ -110,7 +110,7 @@ describe('PuppetEntityProvider', () => { description: 'Description 1', spec: { type: 'virtual-machine', - owner: DEFAULT_OWNER, + owner: DEFAULT_ENTITY_OWNER, dependsOn: [], dependencyOf: [], }, @@ -129,7 +129,7 @@ describe('PuppetEntityProvider', () => { description: 'Description 2', spec: { type: 'physical-server', - owner: DEFAULT_OWNER, + owner: DEFAULT_ENTITY_OWNER, dependsOn: [], dependencyOf: [], }, @@ -175,7 +175,7 @@ describe('PuppetEntityProvider', () => { description: 'Description 1', spec: { type: 'virtual-machine', - owner: DEFAULT_OWNER, + owner: DEFAULT_ENTITY_OWNER, dependsOn: [], dependencyOf: [], }, @@ -203,7 +203,7 @@ describe('PuppetEntityProvider', () => { description: 'Description 2', spec: { type: 'physical-server', - owner: DEFAULT_OWNER, + owner: DEFAULT_ENTITY_OWNER, dependsOn: [], dependencyOf: [], }, diff --git a/plugins/catalog-backend-module-puppetdb/src/puppet/constants.ts b/plugins/catalog-backend-module-puppetdb/src/puppet/constants.ts index 672bc48932..bf093182f2 100644 --- a/plugins/catalog-backend-module-puppetdb/src/puppet/constants.ts +++ b/plugins/catalog-backend-module-puppetdb/src/puppet/constants.ts @@ -36,4 +36,4 @@ export const ENDPOINT_NODES = '/pdb/query/v4/nodes'; * * @public */ -export const DEFAULT_OWNER = 'unknown'; +export const DEFAULT_ENTITY_OWNER = 'unknown'; diff --git a/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.test.ts b/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.test.ts index f7d3813bf6..15f3bc1419 100644 --- a/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.test.ts +++ b/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.test.ts @@ -18,7 +18,7 @@ import { PuppetDbEntityProviderConfig } from '../providers'; import { PuppetNode } from './types'; import { defaultResourceTransformer } from './transformers'; import { DEFAULT_NAMESPACE } from '@backstage/catalog-model'; -import { ANNOTATION_PUPPET_CERTNAME, DEFAULT_OWNER } from './constants'; +import { ANNOTATION_PUPPET_CERTNAME, DEFAULT_ENTITY_OWNER } from './constants'; describe('defaultResourceTransformer', () => { it('should transform a puppet node to a resource entity', async () => { @@ -75,7 +75,7 @@ describe('defaultResourceTransformer', () => { }, spec: { type: 'virtual-machine', - owner: DEFAULT_OWNER, + owner: DEFAULT_ENTITY_OWNER, dependsOn: [], dependencyOf: [], }, diff --git a/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.ts b/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.ts index ec4c4a2af3..d99d89b1cf 100644 --- a/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.ts +++ b/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.ts @@ -16,7 +16,7 @@ import { ResourceTransformer } from './types'; import { DEFAULT_NAMESPACE, ResourceEntity } from '@backstage/catalog-model'; -import { ANNOTATION_PUPPET_CERTNAME, DEFAULT_OWNER } from './constants'; +import { ANNOTATION_PUPPET_CERTNAME, DEFAULT_ENTITY_OWNER } from './constants'; /** * A default implementation of the {@link ResourceTransformer}. @@ -54,7 +54,7 @@ export const defaultResourceTransformer: ResourceTransformer = async ( }, spec: { type: type, - owner: DEFAULT_OWNER, + owner: DEFAULT_ENTITY_OWNER, dependsOn: [], dependencyOf: [], }, From d2882d147fc83933b88e2adbac121ea255fffb02 Mon Sep 17 00:00:00 2001 From: Tomas Dabasinskas Date: Sun, 5 Feb 2023 22:26:25 +0200 Subject: [PATCH 039/147] Add README Signed-off-by: Tomas Dabasinskas --- .../catalog-backend-module-puppetdb/README.md | 95 +++++++++++++++++-- .../src/puppet/transformers.ts | 2 +- 2 files changed, 87 insertions(+), 10 deletions(-) diff --git a/plugins/catalog-backend-module-puppetdb/README.md b/plugins/catalog-backend-module-puppetdb/README.md index c66627fa8b..9fea95d61e 100644 --- a/plugins/catalog-backend-module-puppetdb/README.md +++ b/plugins/catalog-backend-module-puppetdb/README.md @@ -1,14 +1,91 @@ -# catalog-backend-module-puppetdb +# Catalog Backend Module for Puppet -Welcome to the catalog-backend-module-puppetdb backend plugin! +This is an extension module to the `plugin-catalog-backend` plugin, providing an `PuppetDbEntityProvider` that can be used to ingest +[Resource entities](https://backstage.io/docs/features/software-catalog/descriptor-format#kind-resource) from a +[PuppetDB](https://www.puppet.com/docs/puppet/6/puppetdb_overview.html) instance(s). This provider is useful if you want to import nodes +from your PuppetDB into Backstage. -_This plugin was created through the Backstage CLI_ +## Installation -## Getting started +The provider is not installed by default, therefore you have to add a dependency to `@backstage/plugin-catalog-backend-module-puppetdb` +to your backend package: -Your plugin has been added to the example app in this repository, meaning you'll be able to access it by running `yarn -start` in the root directory, and then navigating to [/catalog-backend-module-puppetdb](http://localhost:3000/catalog-backend-module-puppetdb). +```bash +# From your Backstage root directory +yarn add --cwd packages/backend @backstage/plugin-catalog-backend-module-puppetdb +``` -You can also serve the plugin in isolation by running `yarn start` in the plugin directory. -This method of serving the plugin provides quicker iteration speed and a faster startup and hot reloads. -It is only meant for local development, and the setup for it can be found inside the [/dev](/dev) directory. +Update the catalog plugin initialization in your backend to add the provider and schedule it: + +```diff ++ import { PuppetDbEntityProvider } from '@backstage/plugin-catalog-backend-module-puppetdb'; + + export default async function createPlugin( + env: PluginEnvironment, + ): Promise { + const builder = await CatalogBuilder.create(env); + ++ builder.addEntityProvider( ++ PuppetDbEntityProvider.fromConfig(env.config, { ++ logger: env.logger, ++ schedule: env.scheduler.createScheduledTaskRunner({ ++ frequency: { minutes: 10 }, ++ timeout: { minutes: 50 }, ++ initialDelay: { seconds: 15} ++ }), ++ }); ++ ); +``` + +After this, you also have to add some configuration in your app-config that describes what you want to import for that target. + +## Configuration + +The following configuration is an example of how a setup could look for importing nodes from an internal PuppetDB instance: + +```yaml +catalog: + providers: + puppet: + default: + # (Required) The host of PuppetDB API instance: + host: https://puppetdb.example.com + + # (Optional) Query to filter PuppetDB nodes: + #query: '["=","certname","example.com"]' +``` + +## Customize the Provider + +The default ingestion behaviour will likely not work for all use cases - you will want to set proper `Owner`, `System` and other fields for the +ingested resources. In case you want to customize the ingested entities, the provider allows to pass a transformer for resources. Here we will show an example +of overriding the default transformer. + +1. Create a transformer: +2. + +```ts +export const customResourceTransformer: ResourceTransformer = async ( + node, + config, +): Promise => { + // Transofrmations may change namespace, owner, change entity naming pattern, add labels, annotations, etc. + + // Create the Resource Entity on your own, or wrap the default transformer + return await defaultResourceTransformer(node, config); +}; +``` + +2. Configure the provider with the transformer: + +```ts +const puppetDbEntityProvider = PuppetDbEntityProvider.fromConfig(env.config, { + logger: env.logger, + schedule: env.scheduler.createScheduledTaskRunner({ + frequency: { minutes: 10 }, + timeout: { minutes: 50 }, + initialDelay: { seconds: 15 }, + }), + transformer: customResourceTransformer, +}); +``` diff --git a/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.ts b/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.ts index d99d89b1cf..2062f8e828 100644 --- a/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.ts +++ b/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.ts @@ -31,7 +31,7 @@ import { ANNOTATION_PUPPET_CERTNAME, DEFAULT_ENTITY_OWNER } from './constants'; export const defaultResourceTransformer: ResourceTransformer = async ( node, _config, -) => { +): Promise => { const certName = node.certname.toLowerCase(); const type = node.facts?.data?.find(e => e.name === 'is_virtual')?.value ? 'virtual-machine' From 87263449c6a314c8478199c6da636d4ccbf2799d Mon Sep 17 00:00:00 2001 From: Tomas Dabasinskas Date: Sun, 5 Feb 2023 22:34:06 +0200 Subject: [PATCH 040/147] Update plugins list in MicroSite Signed-off-by: Tomas Dabasinskas --- .../plugins/catalog-backend-module-puppetdb.yaml | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 microsite/data/plugins/catalog-backend-module-puppetdb.yaml diff --git a/microsite/data/plugins/catalog-backend-module-puppetdb.yaml b/microsite/data/plugins/catalog-backend-module-puppetdb.yaml new file mode 100644 index 0000000000..3eac117e19 --- /dev/null +++ b/microsite/data/plugins/catalog-backend-module-puppetdb.yaml @@ -0,0 +1,13 @@ +--- +title: PuppetDB Entity Provider +author: TDabasinskas +authorUrl: https://github.com/tdabasinskas +category: Configuration Management +description: Import nodes from PuppetDB into Backstage as Resource Entities +documentation: https://github.com/backstage/backstage/blob/master/plugins/catalog-backend-module-puppetdb/README.md +iconUrl: https://avatars.githubusercontent.com/u/234268?s=200&v=4 +npmPackageName: '@backstage/plugin-catalog-backend-module-puppetdb' +tags: + - puppet + - puppetdb +addedDate: '2023-02-06' From a1efcf9a6581385f7dae344d06d0416991686551 Mon Sep 17 00:00:00 2001 From: Tomas Dabasinskas Date: Sun, 5 Feb 2023 22:41:03 +0200 Subject: [PATCH 041/147] Add changeset Signed-off-by: Tomas Dabasinskas --- .changeset/fifty-beds-dress.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/fifty-beds-dress.md diff --git a/.changeset/fifty-beds-dress.md b/.changeset/fifty-beds-dress.md new file mode 100644 index 0000000000..19049732cc --- /dev/null +++ b/.changeset/fifty-beds-dress.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-puppetdb': minor +--- + +Initial version of the plugin. From e3048fc810f0b96af93eb0317aa91c438b922572 Mon Sep 17 00:00:00 2001 From: Tomas Dabasinskas Date: Sun, 5 Feb 2023 23:02:05 +0200 Subject: [PATCH 042/147] Update configuration properties Signed-off-by: Tomas Dabasinskas --- plugins/catalog-backend-module-puppetdb/README.md | 2 +- plugins/catalog-backend-module-puppetdb/config.d.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/catalog-backend-module-puppetdb/README.md b/plugins/catalog-backend-module-puppetdb/README.md index 9fea95d61e..3610c3e0fd 100644 --- a/plugins/catalog-backend-module-puppetdb/README.md +++ b/plugins/catalog-backend-module-puppetdb/README.md @@ -46,7 +46,7 @@ The following configuration is an example of how a setup could look for importin ```yaml catalog: providers: - puppet: + puppetdb: default: # (Required) The host of PuppetDB API instance: host: https://puppetdb.example.com diff --git a/plugins/catalog-backend-module-puppetdb/config.d.ts b/plugins/catalog-backend-module-puppetdb/config.d.ts index 6b6c393d6b..dc48695f04 100644 --- a/plugins/catalog-backend-module-puppetdb/config.d.ts +++ b/plugins/catalog-backend-module-puppetdb/config.d.ts @@ -29,9 +29,9 @@ export interface Config { */ providers?: { /** - * Puppet entity provider configuration. Uses "default" as default ID for the single config variant. + * PuppetDB Entity Provider configuration. Uses "default" as default ID for the single config variant. */ - puppet?: ProviderConfig | Record; + puppetdb?: ProviderConfig | Record; }; }; } From 29f496d2d7d3c7e1a10a739c87a0e962ff689be7 Mon Sep 17 00:00:00 2001 From: Tomas Dabasinskas Date: Tue, 7 Feb 2023 07:58:41 +0200 Subject: [PATCH 043/147] Fix tests Signed-off-by: Tomas Dabasinskas --- .../src/puppet/read.test.ts | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/plugins/catalog-backend-module-puppetdb/src/puppet/read.test.ts b/plugins/catalog-backend-module-puppetdb/src/puppet/read.test.ts index afa18c0ba5..8dcbff1a4c 100644 --- a/plugins/catalog-backend-module-puppetdb/src/puppet/read.test.ts +++ b/plugins/catalog-backend-module-puppetdb/src/puppet/read.test.ts @@ -23,15 +23,9 @@ import { DEFAULT_NAMESPACE } from '@backstage/catalog-model'; import fetch from 'node-fetch'; import { ANNOTATION_PUPPET_CERTNAME, ENDPOINT_FACTSETS } from './constants'; -jest.mock('node-fetch', () => { - const original = jest.requireActual('node-fetch'); - return { - __esModule: true, - default: jest.fn(), - Headers: original.Headers, - }; -}); +jest.mock('node-fetch'); (global as any).fetch = fetch; +const { Response } = jest.requireActual('node-fetch'); describe('readPuppetNodes', () => { const mockFetch = fetch as unknown as jest.Mocked; From 968a62954f5ef3653a61bfeff268730b78497913 Mon Sep 17 00:00:00 2001 From: Tomas Dabasinskas Date: Mon, 27 Feb 2023 07:55:04 +0200 Subject: [PATCH 044/147] Update plugins/catalog-backend-module-puppetdb/README.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: Tomas Dabasinskas --- plugins/catalog-backend-module-puppetdb/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/catalog-backend-module-puppetdb/README.md b/plugins/catalog-backend-module-puppetdb/README.md index 3610c3e0fd..3cc2783561 100644 --- a/plugins/catalog-backend-module-puppetdb/README.md +++ b/plugins/catalog-backend-module-puppetdb/README.md @@ -69,7 +69,7 @@ export const customResourceTransformer: ResourceTransformer = async ( node, config, ): Promise => { - // Transofrmations may change namespace, owner, change entity naming pattern, add labels, annotations, etc. + // Transformations may change namespace, owner, change entity naming pattern, add labels, annotations, etc. // Create the Resource Entity on your own, or wrap the default transformer return await defaultResourceTransformer(node, config); From 0b05465b5e714d3ca88a66826bcfc579d3025610 Mon Sep 17 00:00:00 2001 From: Tomas Dabasinskas Date: Mon, 27 Feb 2023 07:57:44 +0200 Subject: [PATCH 045/147] Update README Signed-off-by: Tomas Dabasinskas --- plugins/catalog-backend-module-puppetdb/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/catalog-backend-module-puppetdb/README.md b/plugins/catalog-backend-module-puppetdb/README.md index 3cc2783561..eeb363bd32 100644 --- a/plugins/catalog-backend-module-puppetdb/README.md +++ b/plugins/catalog-backend-module-puppetdb/README.md @@ -62,7 +62,6 @@ ingested resources. In case you want to customize the ingested entities, the pro of overriding the default transformer. 1. Create a transformer: -2. ```ts export const customResourceTransformer: ResourceTransformer = async ( From c4bdec7d49277f15aa75f5362a51dc058fc8fc1f Mon Sep 17 00:00:00 2001 From: Tomas Dabasinskas Date: Mon, 27 Feb 2023 08:34:29 +0200 Subject: [PATCH 046/147] Address review Signed-off-by: Tomas Dabasinskas --- .../config.d.ts | 51 ++++++++++++------- .../src/providers/PuppetDbEntityProvider.ts | 7 ++- .../src/puppet/read.ts | 4 +- .../src/puppet/transformers.ts | 8 ++- .../src/puppet/types.ts | 2 +- yarn.lock | 34 +++++++++++++ 6 files changed, 74 insertions(+), 32 deletions(-) diff --git a/plugins/catalog-backend-module-puppetdb/config.d.ts b/plugins/catalog-backend-module-puppetdb/config.d.ts index dc48695f04..e890584f41 100644 --- a/plugins/catalog-backend-module-puppetdb/config.d.ts +++ b/plugins/catalog-backend-module-puppetdb/config.d.ts @@ -31,25 +31,38 @@ export interface Config { /** * PuppetDB Entity Provider configuration. Uses "default" as default ID for the single config variant. */ - puppetdb?: ProviderConfig | Record; + puppetdb?: + | { + /** + * (Required) The host of PuppetDB API instance. + */ + host: string; + /** + * (Optional) PQL query to filter PuppetDB nodes. + */ + query?: string; + /** + * (Optional) Task schedule definition for the refresh. + */ + schedule?: TaskScheduleDefinition; + } + | Record< + string, + { + /** + * (Required) The host of PuppetDB API instance. + */ + host: string; + /** + * (Optional) PQL query to filter PuppetDB nodes. + */ + query?: string; + /** + * (Optional) Task schedule definition for the refresh. + */ + schedule?: TaskScheduleDefinition; + } + >; }; }; } - -/** - * Configuration of {@link PuppetDbEntityProvider}. - */ -interface ProviderConfig { - /** - * (Required) The host of PuppetDB API instance. - */ - host: string; - /** - * (Optional) PQL query to filter PuppetDB nodes. - */ - query?: string; - /** - * (Optional) Task schedule definition for the refresh. - */ - schedule?: TaskScheduleDefinition; -} diff --git a/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.ts b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.ts index 5246c3373d..a3ac4b140e 100644 --- a/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.ts +++ b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.ts @@ -192,15 +192,14 @@ export class PuppetDbEntityProvider implements EntityProvider { * @returns Entity with @{@link ANNOTATION_LOCATION} and @{@link ANNOTATION_ORIGIN_LOCATION} annotations. */ function withLocations(host: string, entity: Entity): Entity { - const location = new URL(host); - location.pathname = `${ENDPOINT_NODES}/${entity.metadata?.name}`; + const location = `${host}/${ENDPOINT_NODES}/${entity.metadata?.name}`; return merge( { metadata: { annotations: { - [ANNOTATION_LOCATION]: `url:${location.toString()}`, - [ANNOTATION_ORIGIN_LOCATION]: `url:${location.toString()}`, + [ANNOTATION_LOCATION]: `url:${location}`, + [ANNOTATION_ORIGIN_LOCATION]: `url:${location}`, }, }, }, diff --git a/plugins/catalog-backend-module-puppetdb/src/puppet/read.ts b/plugins/catalog-backend-module-puppetdb/src/puppet/read.ts index 8ecbb63d91..bbd7843ecc 100644 --- a/plugins/catalog-backend-module-puppetdb/src/puppet/read.ts +++ b/plugins/catalog-backend-module-puppetdb/src/puppet/read.ts @@ -44,9 +44,7 @@ export async function readPuppetNodes( } if (opts?.logger) { - opts.logger - .child({ url: url.toString() }) - .debug('Reading nodes from PuppetDB'); + opts.logger.debug('Reading nodes from PuppetDB', { url: url.toString() }); } const response = await fetch(url.toString(), { diff --git a/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.ts b/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.ts index 2062f8e828..9ec607b83e 100644 --- a/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.ts +++ b/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.ts @@ -32,13 +32,13 @@ export const defaultResourceTransformer: ResourceTransformer = async ( node, _config, ): Promise => { - const certName = node.certname.toLowerCase(); + const certName = node.certname.toLocaleLowerCase('en-US'); const type = node.facts?.data?.find(e => e.name === 'is_virtual')?.value ? 'virtual-machine' : 'physical-server'; const kernel = node.facts?.data?.find(e => e.name === 'kernel')?.value; - const entity: ResourceEntity = { + return { apiVersion: 'backstage.io/v1beta1', kind: 'Resource', metadata: { @@ -50,7 +50,7 @@ export const defaultResourceTransformer: ResourceTransformer = async ( description: node.facts?.data ?.find(e => e.name === 'ipaddress') ?.value?.toString(), - tags: kernel ? [kernel.toString().toLowerCase()] : [], + tags: kernel ? [kernel.toString().toLocaleLowerCase('en-US')] : [], }, spec: { type: type, @@ -59,6 +59,4 @@ export const defaultResourceTransformer: ResourceTransformer = async ( dependencyOf: [], }, }; - - return entity; }; diff --git a/plugins/catalog-backend-module-puppetdb/src/puppet/types.ts b/plugins/catalog-backend-module-puppetdb/src/puppet/types.ts index f71ba299bd..5bfac5c998 100644 --- a/plugins/catalog-backend-module-puppetdb/src/puppet/types.ts +++ b/plugins/catalog-backend-module-puppetdb/src/puppet/types.ts @@ -96,7 +96,7 @@ export type PuppetFact = { */ name: string; /** - * The value of the fact, in JSON format. + * The value of the fact. */ value: JsonValue; }; diff --git a/yarn.lock b/yarn.lock index 7b71cdff35..2b88e6ce8c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -30043,6 +30043,40 @@ __metadata: languageName: node linkType: hard +"msw@npm:^0.49.0": + version: 0.49.3 + resolution: "msw@npm:0.49.3" + dependencies: + "@mswjs/cookies": ^0.2.2 + "@mswjs/interceptors": ^0.17.5 + "@open-draft/until": ^1.0.3 + "@types/cookie": ^0.4.1 + "@types/js-levenshtein": ^1.1.1 + chalk: 4.1.1 + chokidar: ^3.4.2 + cookie: ^0.4.2 + graphql: ^15.0.0 || ^16.0.0 + headers-polyfill: ^3.1.0 + inquirer: ^8.2.0 + is-node-process: ^1.0.1 + js-levenshtein: ^1.1.6 + node-fetch: ^2.6.7 + outvariant: ^1.3.0 + path-to-regexp: ^6.2.0 + strict-event-emitter: ^0.4.3 + type-fest: ^2.19.0 + yargs: ^17.3.1 + peerDependencies: + typescript: ">= 4.4.x <= 4.9.x" + peerDependenciesMeta: + typescript: + optional: true + bin: + msw: cli/index.js + checksum: 8322cd42cd69f289c05517d02bde22fc2f10e86fc2d0d209d9df54bd03d10b8123723c5587a2654dcd2cd0f314a016f9eccac88cffa30fafd1f9fead16db639e + languageName: node + linkType: hard + "msw@npm:^1.0.0, msw@npm:^1.0.1": version: 1.0.1 resolution: "msw@npm:1.0.1" From b9838936379f9d6b6e3c7e6ccc3ca7980267c53d Mon Sep 17 00:00:00 2001 From: Tomas Dabasinskas Date: Mon, 27 Feb 2023 09:11:44 +0200 Subject: [PATCH 047/147] Fix tests Signed-off-by: Tomas Dabasinskas --- .../src/providers/PuppetDbEntityProvider.test.ts | 8 ++++---- .../src/puppet/constants.ts | 4 ++-- .../src/puppet/read.test.ts | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.test.ts b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.test.ts index b72e0b8401..e9dc5e0fae 100644 --- a/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.test.ts +++ b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.test.ts @@ -166,10 +166,10 @@ describe('PuppetEntityProvider', () => { [ANNOTATION_PUPPET_CERTNAME]: 'node1', [ANNOTATION_LOCATION]: `url:${config.getString( 'catalog.providers.puppetdb.host', - )}${ENDPOINT_NODES}/node1`, + )}/${ENDPOINT_NODES}/node1`, [ANNOTATION_ORIGIN_LOCATION]: `url:${config.getString( 'catalog.providers.puppetdb.host', - )}${ENDPOINT_NODES}/node1`, + )}/${ENDPOINT_NODES}/node1`, }, tags: ['windows'], description: 'Description 1', @@ -194,10 +194,10 @@ describe('PuppetEntityProvider', () => { [ANNOTATION_PUPPET_CERTNAME]: 'node2', [ANNOTATION_LOCATION]: `url:${config.getString( 'catalog.providers.puppetdb.host', - )}${ENDPOINT_NODES}/node2`, + )}/${ENDPOINT_NODES}/node2`, [ANNOTATION_ORIGIN_LOCATION]: `url:${config.getString( 'catalog.providers.puppetdb.host', - )}${ENDPOINT_NODES}/node2`, + )}/${ENDPOINT_NODES}/node2`, }, tags: ['linux'], description: 'Description 2', diff --git a/plugins/catalog-backend-module-puppetdb/src/puppet/constants.ts b/plugins/catalog-backend-module-puppetdb/src/puppet/constants.ts index bf093182f2..730f21ec16 100644 --- a/plugins/catalog-backend-module-puppetdb/src/puppet/constants.ts +++ b/plugins/catalog-backend-module-puppetdb/src/puppet/constants.ts @@ -24,12 +24,12 @@ export const ANNOTATION_PUPPET_CERTNAME = 'puppet.com/certname'; /** * Path of PuppetDB FactSets endpoint. */ -export const ENDPOINT_FACTSETS = '/pdb/query/v4/factsets'; +export const ENDPOINT_FACTSETS = 'pdb/query/v4/factsets'; /** * Path of PuppetDB Nodes endpoint. */ -export const ENDPOINT_NODES = '/pdb/query/v4/nodes'; +export const ENDPOINT_NODES = 'pdb/query/v4/nodes'; /** * Default owner for entities created by the PuppetDB provider. diff --git a/plugins/catalog-backend-module-puppetdb/src/puppet/read.test.ts b/plugins/catalog-backend-module-puppetdb/src/puppet/read.test.ts index 8dcbff1a4c..e0bf5c6d43 100644 --- a/plugins/catalog-backend-module-puppetdb/src/puppet/read.test.ts +++ b/plugins/catalog-backend-module-puppetdb/src/puppet/read.test.ts @@ -222,7 +222,7 @@ describe('readPuppetNodes', () => { it('should return matched results', async () => { const entities = await readPuppetNodes(config); expect(mockFetch).toHaveBeenCalledWith( - `${config.host}${ENDPOINT_FACTSETS}?query=%5B%22%3D%22%2C+%22certname%22%2C+%22node1%22%5D`, + `${config.host}/${ENDPOINT_FACTSETS}?query=%5B%22%3D%22%2C+%22certname%22%2C+%22node1%22%5D`, { headers: { Accept: 'application/json', From 2128963db1dd4986c87902ca6fbc38dbcf4510d1 Mon Sep 17 00:00:00 2001 From: Tomas Dabasinskas Date: Mon, 27 Feb 2023 09:48:06 +0200 Subject: [PATCH 048/147] Improve nodes URL initialization Signed-off-by: Tomas Dabasinskas --- plugins/catalog-backend-module-puppetdb/src/puppet/read.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/plugins/catalog-backend-module-puppetdb/src/puppet/read.ts b/plugins/catalog-backend-module-puppetdb/src/puppet/read.ts index bbd7843ecc..67247d73a5 100644 --- a/plugins/catalog-backend-module-puppetdb/src/puppet/read.ts +++ b/plugins/catalog-backend-module-puppetdb/src/puppet/read.ts @@ -36,8 +36,7 @@ export async function readPuppetNodes( }, ): Promise { const transformFn = opts?.transformer ?? defaultResourceTransformer; - const url = new URL(config.host); - url.pathname = ENDPOINT_FACTSETS; + const url = new URL(ENDPOINT_FACTSETS, config.host); if (config.query) { url.searchParams.set('query', config.query); From c47a5ede5ca3e9c92376576c6f8e9c96aa9f1a3d Mon Sep 17 00:00:00 2001 From: Matteo Silvestri Date: Mon, 27 Feb 2023 11:04:20 +0100 Subject: [PATCH 049/147] add GitlabOrgDiscoveryEntityProvider documentation Signed-off-by: Matteo Silvestri --- docs/integrations/gitlab/org.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/integrations/gitlab/org.md b/docs/integrations/gitlab/org.md index 2ab72b4bd6..83dfd0f77d 100644 --- a/docs/integrations/gitlab/org.md +++ b/docs/integrations/gitlab/org.md @@ -31,4 +31,10 @@ catalog: yourProviderId: host: gitlab.com orgEnabled: true + group: org/teams # Optional. Must not end with slash. Accepts only groups under the provided path (excluded) + groupPattern: '[\s\S]*' # Optional. Filters found groups based on provided patter. Defaults to `[\s\S]*`, which means to not filter anything ``` + +When the `group` parameter is provided, the corresponding path prefix will be stripped out from each matching group +when computing the unique entity name. e.g. If `group` is `org/teams`, the name for `org/teams/avengers/gotg` will +be `avengers-gotg`. From 518e317b6146e127a49a6a9c82b913b90c2be504 Mon Sep 17 00:00:00 2001 From: Tomas Dabasinskas Date: Mon, 27 Feb 2023 17:00:48 +0200 Subject: [PATCH 050/147] Use node-fetch and msw Signed-off-by: Tomas Dabasinskas --- .../package.json | 2 + .../src/puppet/read.test.ts | 63 ++++++++++--------- .../src/puppet/read.ts | 1 + yarn.lock | 2 + 4 files changed, 38 insertions(+), 30 deletions(-) diff --git a/plugins/catalog-backend-module-puppetdb/package.json b/plugins/catalog-backend-module-puppetdb/package.json index 0ccb2fc24d..93646e01e7 100644 --- a/plugins/catalog-backend-module-puppetdb/package.json +++ b/plugins/catalog-backend-module-puppetdb/package.json @@ -41,6 +41,7 @@ "@backstage/errors": "workspace:^", "@backstage/plugin-catalog-backend": "workspace:^", "@backstage/types": "workspace:^", + "@types/node-fetch": "^2.5.12", "lodash": "^4.17.21", "luxon": "^3.0.0", "node-fetch": "^2.6.7", @@ -48,6 +49,7 @@ "winston": "^3.2.1" }, "devDependencies": { + "@backstage/backend-test-utils": "workspace:^", "@backstage/cli": "workspace:^", "@types/lodash": "^4.14.151", "msw": "^0.49.0" diff --git a/plugins/catalog-backend-module-puppetdb/src/puppet/read.test.ts b/plugins/catalog-backend-module-puppetdb/src/puppet/read.test.ts index e0bf5c6d43..78fc856066 100644 --- a/plugins/catalog-backend-module-puppetdb/src/puppet/read.test.ts +++ b/plugins/catalog-backend-module-puppetdb/src/puppet/read.test.ts @@ -20,15 +20,18 @@ import { PuppetDbEntityProviderConfig, } from '../providers'; import { DEFAULT_NAMESPACE } from '@backstage/catalog-model'; -import fetch from 'node-fetch'; +import { setupRequestMockHandlers } from '@backstage/backend-test-utils'; +import { rest } from 'msw'; +import { setupServer } from 'msw/node'; import { ANNOTATION_PUPPET_CERTNAME, ENDPOINT_FACTSETS } from './constants'; -jest.mock('node-fetch'); -(global as any).fetch = fetch; -const { Response } = jest.requireActual('node-fetch'); - describe('readPuppetNodes', () => { - const mockFetch = fetch as unknown as jest.Mocked; + const worker = setupServer(); + setupRequestMockHandlers(worker); + + beforeEach(() => { + jest.clearAllMocks(); + }); describe('where no query is specified', () => { const config: PuppetDbEntityProviderConfig = { @@ -37,10 +40,12 @@ describe('readPuppetNodes', () => { }; beforeEach(async () => { - mockFetch.mockReturnValueOnce( - Promise.resolve( - new Response( - JSON.stringify([ + worker.use( + rest.get(`${config.host}/${ENDPOINT_FACTSETS}`, (_req, res, ctx) => { + return res( + ctx.status(200), + ctx.set('Content-Type', 'application/json'), + ctx.json([ { certname: 'node1', timestamp: 'time1', @@ -106,8 +111,8 @@ describe('readPuppetNodes', () => { }, }, ]), - ), - ), + ); + }), ); }); @@ -188,8 +193,14 @@ describe('readPuppetNodes', () => { describe('where no results are matched', () => { beforeEach(async () => { - mockFetch.mockReturnValueOnce( - Promise.resolve(new Response(JSON.stringify([]))), + worker.use( + rest.get(`${config.host}/${ENDPOINT_FACTSETS}`, (_req, res, ctx) => { + return res( + ctx.status(200), + ctx.set('Content-Type', 'application/json'), + ctx.json([]), + ); + }), ); }); @@ -201,10 +212,12 @@ describe('readPuppetNodes', () => { describe('where results are matched', () => { beforeEach(async () => { - mockFetch.mockReturnValueOnce( - Promise.resolve( - new Response( - JSON.stringify([ + worker.use( + rest.get(`${config.host}/${ENDPOINT_FACTSETS}`, (_req, res, ctx) => { + return res( + ctx.status(200), + ctx.set('Content-Type', 'application/json'), + ctx.json([ { certname: 'node1', timestamp: 'time1', @@ -214,23 +227,13 @@ describe('readPuppetNodes', () => { environment: 'environment1', }, ]), - ), - ), + ); + }), ); }); it('should return matched results', async () => { const entities = await readPuppetNodes(config); - expect(mockFetch).toHaveBeenCalledWith( - `${config.host}/${ENDPOINT_FACTSETS}?query=%5B%22%3D%22%2C+%22certname%22%2C+%22node1%22%5D`, - { - headers: { - Accept: 'application/json', - 'Content-Type': 'application/json', - }, - method: 'GET', - }, - ); expect(entities).toHaveLength(1); }); }); diff --git a/plugins/catalog-backend-module-puppetdb/src/puppet/read.ts b/plugins/catalog-backend-module-puppetdb/src/puppet/read.ts index 67247d73a5..601ee28207 100644 --- a/plugins/catalog-backend-module-puppetdb/src/puppet/read.ts +++ b/plugins/catalog-backend-module-puppetdb/src/puppet/read.ts @@ -18,6 +18,7 @@ import { PuppetDbEntityProviderConfig } from '../providers'; import { PuppetNode, ResourceTransformer } from './types'; import { ResourceEntity } from '@backstage/catalog-model/'; import { defaultResourceTransformer } from './transformers'; +import fetch from 'node-fetch'; import { ResponseError } from '@backstage/errors'; import { ENDPOINT_FACTSETS } from './constants'; import { Logger } from 'winston'; diff --git a/yarn.lock b/yarn.lock index 2b88e6ce8c..55750f13be 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5212,6 +5212,7 @@ __metadata: dependencies: "@backstage/backend-common": "workspace:^" "@backstage/backend-tasks": "workspace:^" + "@backstage/backend-test-utils": "workspace:^" "@backstage/catalog-model": "workspace:^" "@backstage/cli": "workspace:^" "@backstage/config": "workspace:^" @@ -5219,6 +5220,7 @@ __metadata: "@backstage/plugin-catalog-backend": "workspace:^" "@backstage/types": "workspace:^" "@types/lodash": ^4.14.151 + "@types/node-fetch": ^2.5.12 lodash: ^4.17.21 luxon: ^3.0.0 msw: ^0.49.0 From 8f3ab173517d18b77945cf1f7374bb88ec0e7bce Mon Sep 17 00:00:00 2001 From: matteosilv Date: Mon, 27 Feb 2023 17:51:03 +0100 Subject: [PATCH 051/147] tidy up documentation Co-authored-by: Jamie Klassen Signed-off-by: matteosilv --- docs/integrations/gitlab/org.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/integrations/gitlab/org.md b/docs/integrations/gitlab/org.md index 83dfd0f77d..db703d8036 100644 --- a/docs/integrations/gitlab/org.md +++ b/docs/integrations/gitlab/org.md @@ -31,7 +31,7 @@ catalog: yourProviderId: host: gitlab.com orgEnabled: true - group: org/teams # Optional. Must not end with slash. Accepts only groups under the provided path (excluded) + group: org/teams # Optional. Must not end with slash. Accepts only groups under the provided path (which will be stripped) groupPattern: '[\s\S]*' # Optional. Filters found groups based on provided patter. Defaults to `[\s\S]*`, which means to not filter anything ``` From a7da2e1a5bdfce9a121e4b0eddf4a55a14c59020 Mon Sep 17 00:00:00 2001 From: matteosilv Date: Mon, 27 Feb 2023 17:51:27 +0100 Subject: [PATCH 052/147] fix typo Co-authored-by: Jamie Klassen Signed-off-by: matteosilv --- docs/integrations/gitlab/org.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/integrations/gitlab/org.md b/docs/integrations/gitlab/org.md index db703d8036..7ddc5202b5 100644 --- a/docs/integrations/gitlab/org.md +++ b/docs/integrations/gitlab/org.md @@ -32,7 +32,7 @@ catalog: host: gitlab.com orgEnabled: true group: org/teams # Optional. Must not end with slash. Accepts only groups under the provided path (which will be stripped) - groupPattern: '[\s\S]*' # Optional. Filters found groups based on provided patter. Defaults to `[\s\S]*`, which means to not filter anything + groupPattern: '[\s\S]*' # Optional. Filters found groups based on provided pattern. Defaults to `[\s\S]*`, which means to not filter anything ``` When the `group` parameter is provided, the corresponding path prefix will be stripped out from each matching group From abdb9aed3e63eed27b8b63cc2435976235ddf748 Mon Sep 17 00:00:00 2001 From: Tomas Dabasinskas Date: Mon, 27 Feb 2023 18:58:40 +0200 Subject: [PATCH 053/147] Remove node-types Signed-off-by: Tomas Dabasinskas --- plugins/catalog-backend-module-puppetdb/package.json | 1 - yarn.lock | 1 - 2 files changed, 2 deletions(-) diff --git a/plugins/catalog-backend-module-puppetdb/package.json b/plugins/catalog-backend-module-puppetdb/package.json index 93646e01e7..b6539dbbe6 100644 --- a/plugins/catalog-backend-module-puppetdb/package.json +++ b/plugins/catalog-backend-module-puppetdb/package.json @@ -41,7 +41,6 @@ "@backstage/errors": "workspace:^", "@backstage/plugin-catalog-backend": "workspace:^", "@backstage/types": "workspace:^", - "@types/node-fetch": "^2.5.12", "lodash": "^4.17.21", "luxon": "^3.0.0", "node-fetch": "^2.6.7", diff --git a/yarn.lock b/yarn.lock index 55750f13be..6e5fa48907 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5220,7 +5220,6 @@ __metadata: "@backstage/plugin-catalog-backend": "workspace:^" "@backstage/types": "workspace:^" "@types/lodash": ^4.14.151 - "@types/node-fetch": ^2.5.12 lodash: ^4.17.21 luxon: ^3.0.0 msw: ^0.49.0 From 99860d16c27e7a2c0727dcca36f0e09005289d10 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 27 Feb 2023 18:08:34 +0000 Subject: [PATCH 054/147] chore(deps): update react monorepo to v17.0.53 Signed-off-by: Renovate Bot --- yarn.lock | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/yarn.lock b/yarn.lock index d365859add..238256537e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3363,7 +3363,7 @@ __metadata: "@testing-library/jest-dom": ^5.10.1 "@testing-library/react": ^12.1.3 "@types/node": ^16.11.26 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^17 peerDependencies: react: ^16.13.1 || ^17.0.0 react-dom: ^16.13.1 || ^17.0.0 @@ -4436,7 +4436,7 @@ __metadata: dependencies: "@backstage/cli": "workspace:^" "@testing-library/jest-dom": ^5.16.4 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^17 grpc-docs: ^1.1.2 peerDependencies: react: ^16.13.1 || ^17.0.0 @@ -5551,7 +5551,7 @@ __metadata: "@material-ui/lab": 4.0.0-alpha.57 "@material-ui/pickers": ^3.3.10 "@types/luxon": ^3.0.0 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^17 already: ^3.2.0 humanize-duration: ^3.27.0 lodash: ^4.17.21 @@ -6432,7 +6432,7 @@ __metadata: "@testing-library/react": ^12.1.3 "@testing-library/user-event": ^14.0.0 "@types/node": "*" - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^17 cross-fetch: ^3.1.5 luxon: ^3.0.0 msw: ^1.0.0 @@ -6464,7 +6464,7 @@ __metadata: "@testing-library/react": ^12.1.3 "@testing-library/user-event": ^14.0.0 "@types/node": ^16.11.26 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^17 cross-fetch: ^3.1.5 luxon: ^3.0.0 msw: ^1.0.0 @@ -6911,7 +6911,7 @@ __metadata: "@testing-library/react-hooks": ^8.0.0 "@testing-library/user-event": ^14.0.0 "@types/node": ^16.11.26 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^17 cronstrue: ^2.2.0 cross-fetch: ^3.1.5 js-yaml: ^4.0.0 @@ -6973,7 +6973,7 @@ __metadata: "@testing-library/react-hooks": ^8.0.0 "@testing-library/user-event": ^14.0.0 "@types/node": ^16.11.26 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^17 cross-fetch: ^3.1.5 msw: ^1.0.0 react-use: ^17.2.4 @@ -7102,7 +7102,7 @@ __metadata: "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 "@testing-library/jest-dom": ^5.10.1 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^17 cross-fetch: ^3.1.5 react-use: ^17.2.4 peerDependencies: @@ -7567,7 +7567,7 @@ __metadata: "@testing-library/react-hooks": ^8.0.0 "@testing-library/user-event": ^14.0.0 "@types/node": ^16.11.26 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^17 cross-fetch: ^3.1.5 lodash: ^4.17.21 msw: ^1.0.0 @@ -8054,7 +8054,7 @@ __metadata: "@testing-library/user-event": ^14.0.0 "@types/luxon": ^3.0.0 "@types/node": ^16.11.26 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^17 cross-fetch: ^3.1.5 luxon: ^3.0.0 msw: ^1.0.0 @@ -8402,7 +8402,7 @@ __metadata: "@types/color": ^3.0.1 "@types/d3-force": ^3.0.0 "@types/node": ^16.11.26 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^17 color: ^4.0.1 cross-fetch: ^3.1.5 d3-force: ^3.0.0 @@ -8505,7 +8505,7 @@ __metadata: "@testing-library/react": ^12.1.3 "@testing-library/user-event": ^14.0.0 "@types/node": ^16.11.26 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^17 cross-fetch: ^3.1.5 git-url-parse: ^13.0.0 msw: ^1.0.0 @@ -8738,7 +8738,7 @@ __metadata: "@testing-library/react": ^12.1.3 "@testing-library/user-event": ^14.0.0 "@types/node": ^16.11.26 - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^17 cross-fetch: ^3.1.5 msw: ^1.0.0 react-use: ^17.2.4 @@ -10946,7 +10946,7 @@ __metadata: dependencies: "@backstage/plugin-catalog": "workspace:^" "@backstage/plugin-catalog-react": "workspace:^" - "@types/react": ^16.13.1 || ^17.0.0 + "@types/react": ^17 peerDependencies: react: ^16.13.1 || ^17.0.0 languageName: unknown @@ -22724,8 +22724,8 @@ __metadata: "@testing-library/user-event": ^14.0.0 "@types/jquery": ^3.3.34 "@types/node": ^16.11.26 - "@types/react": "*" - "@types/react-dom": "*" + "@types/react": ^17 + "@types/react-dom": ^17 "@types/zen-observable": ^0.8.0 cross-env: ^7.0.0 cypress: ^10.0.0 @@ -36898,7 +36898,7 @@ __metadata: "@testing-library/react": ^12.1.3 "@testing-library/user-event": ^14.0.0 "@types/node": ^16.11.26 - "@types/react-dom": "*" + "@types/react-dom": ^17 cross-env: ^7.0.0 cypress: ^10.0.0 eslint-plugin-cypress: ^2.10.3 From 26eef93c547da21fc32b82500155ad22ebdd0f58 Mon Sep 17 00:00:00 2001 From: Johannes Grumboeck Date: Tue, 28 Feb 2023 14:29:55 +0100 Subject: [PATCH 055/147] fix(msgraph): user.select was not passed along everywhere Signed-off-by: Johannes Grumboeck --- .changeset/gentle-bears-love.md | 5 +++++ .../src/microsoftGraph/read.ts | 17 ++++++++++++----- .../MicrosoftGraphOrgEntityProvider.ts | 3 ++- 3 files changed, 19 insertions(+), 6 deletions(-) create mode 100644 .changeset/gentle-bears-love.md diff --git a/.changeset/gentle-bears-love.md b/.changeset/gentle-bears-love.md new file mode 100644 index 0000000000..b6f6e3cfcf --- /dev/null +++ b/.changeset/gentle-bears-love.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-msgraph': patch +--- + +Fixed msgraph catalog backend to use user.select option when fetching user from AzureAD diff --git a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.ts b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.ts index 003448a3e8..ccf4c51556 100644 --- a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.ts +++ b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.ts @@ -46,8 +46,8 @@ export async function readMicrosoftGraphUsers( client: MicrosoftGraphClient, options: { queryMode?: 'basic' | 'advanced'; - userFilter?: string; userExpand?: string; + userFilter?: string; userSelect?: string[]; transformer?: UserTransformer; logger: Logger; @@ -80,6 +80,7 @@ export async function readMicrosoftGraphUsersInGroups( options: { queryMode?: 'basic' | 'advanced'; userExpand?: string; + userFilter?: string; userSelect?: string[]; userGroupMemberSearch?: string; userGroupMemberFilter?: string; @@ -98,8 +99,8 @@ export async function readMicrosoftGraphUsersInGroups( for await (const group of client.getGroups( { expand: options.groupExpand, - search: options.userGroupMemberSearch, filter: options.userGroupMemberFilter, + search: options.userGroupMemberSearch, select: ['id', 'displayName'], top: PAGE_SIZE, }, @@ -113,6 +114,8 @@ export async function readMicrosoftGraphUsersInGroups( group.id!, { expand: options.userExpand, + filter: options.userFilter, + select: options.userSelect, top: PAGE_SIZE, }, options.queryMode, @@ -199,8 +202,8 @@ export async function readMicrosoftGraphGroups( for await (const group of client.getGroups( { expand: options?.groupExpand, - search: options?.groupSearch, filter: options?.groupFilter, + search: options?.groupSearch, select: options?.groupSelect, top: PAGE_SIZE, }, @@ -383,6 +386,9 @@ export async function readMicrosoftGraphOrg( client, { queryMode: options.queryMode, + userExpand: options.userExpand, + userFilter: options.userFilter, + userSelect: options.userSelect, userGroupMemberFilter: options.userGroupMemberFilter, userGroupMemberSearch: options.userGroupMemberSearch, transformer: options.userTransformer, @@ -393,9 +399,9 @@ export async function readMicrosoftGraphOrg( } else { const { users: usersWithFilter } = await readMicrosoftGraphUsers(client, { queryMode: options.queryMode, + userExpand: options.userExpand, userFilter: options.userFilter, userSelect: options.userSelect, - userExpand: options.userExpand, transformer: options.userTransformer, logger: options.logger, }); @@ -404,8 +410,9 @@ export async function readMicrosoftGraphOrg( const { groups, rootGroup, groupMember, groupMemberOf } = await readMicrosoftGraphGroups(client, tenantId, { queryMode: options.queryMode, - groupSearch: options.groupSearch, + groupExpand: options.groupExpand, groupFilter: options.groupFilter, + groupSearch: options.groupSearch, groupSelect: options.groupSelect, groupTransformer: options.groupTransformer, organizationTransformer: options.organizationTransformer, diff --git a/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgEntityProvider.ts b/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgEntityProvider.ts index 5c1a7f9e1c..071fa7f266 100644 --- a/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgEntityProvider.ts +++ b/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgEntityProvider.ts @@ -308,10 +308,11 @@ export class MicrosoftGraphOrgEntityProvider implements EntityProvider { provider.tenantId, { userExpand: provider.userExpand, - groupExpand: provider.groupExpand, userFilter: provider.userFilter, + userSelect: provider.userSelect, userGroupMemberFilter: provider.userGroupMemberFilter, userGroupMemberSearch: provider.userGroupMemberSearch, + groupExpand: provider.groupExpand, groupFilter: provider.groupFilter, groupSearch: provider.groupSearch, groupSelect: provider.groupSelect, From 456eaa8cf8378a7fad044abc20baa970aae0cd13 Mon Sep 17 00:00:00 2001 From: Jamie Klassen Date: Mon, 27 Feb 2023 21:16:02 -0500 Subject: [PATCH 056/147] request `openid` scope for ID tokens The changeset justifies this choice Signed-off-by: Jamie Klassen --- .changeset/rotten-cats-matter.md | 19 +++++++++++++++ .../auth/oauth2/OAuth2.test.ts | 24 ++++++++++++------- .../implementations/auth/oauth2/OAuth2.ts | 5 +++- 3 files changed, 39 insertions(+), 9 deletions(-) create mode 100644 .changeset/rotten-cats-matter.md diff --git a/.changeset/rotten-cats-matter.md b/.changeset/rotten-cats-matter.md new file mode 100644 index 0000000000..2515db9991 --- /dev/null +++ b/.changeset/rotten-cats-matter.md @@ -0,0 +1,19 @@ +--- +'@backstage/core-app-api': minor +--- + +`OAuth2` now gets ID tokens from a session with the `openid` scope explicitly +requested. + +This should not be considered a breaking change, because spec-compliant OIDC +providers will already be returning ID tokens if and only if the `openid` scope +is granted. + +This change makes the dependence explicit, and removes the burden on +OAuth2-based providers which require an ID token (e.g. this is done by various +default [auth +handlers](https://backstage.io/docs/auth/identity-resolver/#authhandler)) to add +`openid` to their default scopes. _That_ could carry another indirect benefit: +by removing `openid` from the default scopes for a provider, grants for +resource-specific access tokens can avoid requesting excess ID token-related +scopes. diff --git a/packages/core-app-api/src/apis/implementations/auth/oauth2/OAuth2.test.ts b/packages/core-app-api/src/apis/implementations/auth/oauth2/OAuth2.test.ts index 0bb40c23fc..63070120ef 100644 --- a/packages/core-app-api/src/apis/implementations/auth/oauth2/OAuth2.test.ts +++ b/packages/core-app-api/src/apis/implementations/auth/oauth2/OAuth2.test.ts @@ -48,9 +48,8 @@ describe('OAuth2', () => { expect(await oauth2.getAccessToken('my-scope my-scope2')).toBe( 'access-token', ); - expect(getSession).toHaveBeenCalledTimes(1); - expect(getSession.mock.calls[0][0].scopes).toEqual( - new Set(['my-scope', 'my-scope2']), + expect(getSession).toHaveBeenCalledWith( + expect.objectContaining({ scopes: new Set(['my-scope', 'my-scope2']) }), ); }); @@ -65,9 +64,10 @@ describe('OAuth2', () => { }); expect(await oauth2.getAccessToken('my-scope')).toBe('access-token'); - expect(getSession).toHaveBeenCalledTimes(1); - expect(getSession.mock.calls[0][0].scopes).toEqual( - new Set(['my-prefix/my-scope']), + expect(getSession).toHaveBeenCalledWith( + expect.objectContaining({ + scopes: new Set(['my-prefix/my-scope']), + }), ); }); @@ -82,7 +82,11 @@ describe('OAuth2', () => { }); expect(await oauth2.getIdToken()).toBe('id-token'); - expect(getSession).toHaveBeenCalledTimes(1); + expect(getSession).toHaveBeenCalledWith( + expect.objectContaining({ + scopes: new Set(['openid']), + }), + ); }); it('should get optional id token', async () => { @@ -96,7 +100,11 @@ describe('OAuth2', () => { }); expect(await oauth2.getIdToken({ optional: true })).toBe('id-token'); - expect(getSession).toHaveBeenCalledTimes(1); + expect(getSession).toHaveBeenCalledWith( + expect.objectContaining({ + scopes: new Set(['openid']), + }), + ); }); it('should share popup closed errors', async () => { diff --git a/packages/core-app-api/src/apis/implementations/auth/oauth2/OAuth2.ts b/packages/core-app-api/src/apis/implementations/auth/oauth2/OAuth2.ts index ad2d04cb56..6f88178415 100644 --- a/packages/core-app-api/src/apis/implementations/auth/oauth2/OAuth2.ts +++ b/packages/core-app-api/src/apis/implementations/auth/oauth2/OAuth2.ts @@ -153,7 +153,10 @@ export default class OAuth2 } async getIdToken(options: AuthRequestOptions = {}) { - const session = await this.sessionManager.getSession(options); + const session = await this.sessionManager.getSession({ + ...options, + scopes: new Set(['openid']), + }); return session?.providerInfo.idToken ?? ''; } From ab750ddc4f2b3deac7eb0aabb797b99673647f43 Mon Sep 17 00:00:00 2001 From: Jamie Klassen Date: Mon, 27 Feb 2023 21:03:56 -0500 Subject: [PATCH 057/147] GitLab is an OpenIdConnectApi Signed-off-by: Jamie Klassen --- .changeset/young-walls-prove.md | 5 +++++ packages/core-plugin-api/api-report.md | 6 +++++- packages/core-plugin-api/src/apis/definitions/auth.ts | 6 +++++- packages/integration-react/api-report.md | 6 +++++- 4 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 .changeset/young-walls-prove.md diff --git a/.changeset/young-walls-prove.md b/.changeset/young-walls-prove.md new file mode 100644 index 0000000000..33fafa1548 --- /dev/null +++ b/.changeset/young-walls-prove.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-plugin-api': minor +--- + +The GitLab auth provider can now be used to get OpenID tokens. diff --git a/packages/core-plugin-api/api-report.md b/packages/core-plugin-api/api-report.md index 4887f0b7f2..eabd300fc6 100644 --- a/packages/core-plugin-api/api-report.md +++ b/packages/core-plugin-api/api-report.md @@ -482,7 +482,11 @@ export const githubAuthApiRef: ApiRef< // @public export const gitlabAuthApiRef: ApiRef< - OAuthApi & ProfileInfoApi & BackstageIdentityApi & SessionApi + OAuthApi & + OpenIdConnectApi & + ProfileInfoApi & + BackstageIdentityApi & + SessionApi >; // @public diff --git a/packages/core-plugin-api/src/apis/definitions/auth.ts b/packages/core-plugin-api/src/apis/definitions/auth.ts index 43597639b6..62d0d5c810 100644 --- a/packages/core-plugin-api/src/apis/definitions/auth.ts +++ b/packages/core-plugin-api/src/apis/definitions/auth.ts @@ -357,7 +357,11 @@ export const oktaAuthApiRef: ApiRef< * for a full list of supported scopes. */ export const gitlabAuthApiRef: ApiRef< - OAuthApi & ProfileInfoApi & BackstageIdentityApi & SessionApi + OAuthApi & + OpenIdConnectApi & + ProfileInfoApi & + BackstageIdentityApi & + SessionApi > = createApiRef({ id: 'core.auth.gitlab', }); diff --git a/packages/integration-react/api-report.md b/packages/integration-react/api-report.md index 5b0c9d6174..3af0704990 100644 --- a/packages/integration-react/api-report.md +++ b/packages/integration-react/api-report.md @@ -23,7 +23,11 @@ export class ScmAuth implements ScmAuthApi { ScmAuthApi, { github: OAuthApi & ProfileInfoApi & BackstageIdentityApi & SessionApi; - gitlab: OAuthApi & ProfileInfoApi & BackstageIdentityApi & SessionApi; + gitlab: OAuthApi & + OpenIdConnectApi & + ProfileInfoApi & + BackstageIdentityApi & + SessionApi; azure: OAuthApi & OpenIdConnectApi & ProfileInfoApi & From 8adeb19b37d60f55c6b2a906a630e13f05befbb3 Mon Sep 17 00:00:00 2001 From: Jamie Klassen Date: Thu, 16 Feb 2023 14:02:58 -0500 Subject: [PATCH 058/147] GitLab is an oidcTokenProvider Signed-off-by: Jamie Klassen --- .changeset/light-bees-end.md | 5 +++++ docs/auth/gitlab/provider.md | 6 +++++- docs/features/kubernetes/configuration.md | 5 +++-- plugins/kubernetes/src/plugin.ts | 4 ++++ 4 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 .changeset/light-bees-end.md diff --git a/.changeset/light-bees-end.md b/.changeset/light-bees-end.md new file mode 100644 index 0000000000..9fbbc44da0 --- /dev/null +++ b/.changeset/light-bees-end.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes': patch +--- + +GitLab can now be used as an `oidcTokenProvider` for Kubernetes clusters diff --git a/docs/auth/gitlab/provider.md b/docs/auth/gitlab/provider.md index 5041e161c5..dc41617812 100644 --- a/docs/auth/gitlab/provider.md +++ b/docs/auth/gitlab/provider.md @@ -18,7 +18,11 @@ Settings for local development: - Name: Backstage (or your custom app name) - Redirect URI: `http://localhost:7007/api/auth/gitlab/handler/frame` -- Scopes: `read_api` and `read_user` +- Scopes: `read_user` for sign-in. If you also need ID tokens (e.g. if you are + using the Kubernetes plugin and have clusters with `authProvider: oidc` and + [`oidcTokenProvider: +gitlab`](https://backstage.io/docs/features/kubernetes/configuration/#clustersoidctokenprovider-optional)), + add the `openid` scope. ## Configuration diff --git a/docs/features/kubernetes/configuration.md b/docs/features/kubernetes/configuration.md index 837574aa9e..458637f316 100644 --- a/docs/features/kubernetes/configuration.md +++ b/docs/features/kubernetes/configuration.md @@ -160,8 +160,9 @@ auth: audience: ${AUTH_OKTA_AUDIENCE} ``` -The following values are supported out-of-the-box by the frontend: `google`, `microsoft`, -`okta`, `onelogin`. +The following values are supported out-of-the-box by the frontend: `gitlab` (the +application whose `clientId` is used by the auth provider should be granted the +`openid` scope), `google`, `microsoft`, `okta`, `onelogin`. Take note that `oidcTokenProvider` is just the issuer for the token, you can use any of these with an OIDC enabled cluster, like using `microsoft` as the issuer for a EKS diff --git a/plugins/kubernetes/src/plugin.ts b/plugins/kubernetes/src/plugin.ts index 124bff831b..e2b13f43fe 100644 --- a/plugins/kubernetes/src/plugin.ts +++ b/plugins/kubernetes/src/plugin.ts @@ -23,6 +23,7 @@ import { createRouteRef, discoveryApiRef, identityApiRef, + gitlabAuthApiRef, googleAuthApiRef, microsoftAuthApiRef, oktaAuthApiRef, @@ -49,18 +50,21 @@ export const kubernetesPlugin = createPlugin({ createApiFactory({ api: kubernetesAuthProvidersApiRef, deps: { + gitlabAuthApi: gitlabAuthApiRef, googleAuthApi: googleAuthApiRef, microsoftAuthApi: microsoftAuthApiRef, oktaAuthApi: oktaAuthApiRef, oneloginAuthApi: oneloginAuthApiRef, }, factory: ({ + gitlabAuthApi, googleAuthApi, microsoftAuthApi, oktaAuthApi, oneloginAuthApi, }) => { const oidcProviders = { + gitlab: gitlabAuthApi, google: googleAuthApi, microsoft: microsoftAuthApi, okta: oktaAuthApi, From 039991c6c6d9da6adf3ee012f3b8caf8382e633b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 1 Mar 2023 00:40:02 +0000 Subject: [PATCH 059/147] fix(deps): update dependency @roadiehq/backstage-plugin-travis-ci to v2.1.6 Signed-off-by: Renovate Bot --- yarn.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/yarn.lock b/yarn.lock index e92c5d0b13..1d21e14bc2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13308,14 +13308,14 @@ __metadata: linkType: hard "@roadiehq/backstage-plugin-travis-ci@npm:^2.0.5": - version: 2.1.5 - resolution: "@roadiehq/backstage-plugin-travis-ci@npm:2.1.5" + version: 2.1.6 + resolution: "@roadiehq/backstage-plugin-travis-ci@npm:2.1.6" dependencies: - "@backstage/catalog-model": ^1.1.5 - "@backstage/core-components": ^0.12.3 - "@backstage/core-plugin-api": ^1.3.0 - "@backstage/plugin-catalog-react": ^1.2.4 - "@backstage/theme": ^0.2.16 + "@backstage/catalog-model": ^1.2.0 + "@backstage/core-components": ^0.12.4 + "@backstage/core-plugin-api": ^1.4.0 + "@backstage/plugin-catalog-react": ^1.3.0 + "@backstage/theme": ^0.2.17 "@material-ui/core": ^4.11.3 "@material-ui/icons": ^4.11.2 "@material-ui/lab": 4.0.0-alpha.57 @@ -13329,7 +13329,7 @@ __metadata: react-dom: ^16.13.1 || ^17.0.0 react-router: 6.0.0-beta.0 || ^6.3.0 react-router-dom: 6.0.0-beta.0 || ^6.3.0 - checksum: 955679aafcc707ca8d0b68eb394736209e13a1dee34fc4e0ff438f64568bcdf225ff5f68f389d89880a27debe06c3e7ae343f6435b942e7f4bda64f90285c4be + checksum: 657e58579bdc9387edb61538f4541be4ba2b33f33fcac9129f533b35dc6d207d9930e0eae0937435def7ebf5e791118727417d818dd96de05126bda1041f15d1 languageName: node linkType: hard From aabfc0305b14e28e2b0eca239a742045e80f1007 Mon Sep 17 00:00:00 2001 From: Tomas Dabasinskas Date: Wed, 1 Mar 2023 08:29:12 +0200 Subject: [PATCH 060/147] Rename host to baseUrl Signed-off-by: Tomas Dabasinskas --- .../catalog-backend-module-puppetdb/README.md | 4 +- .../api-report.md | 2 +- .../config.d.ts | 8 +-- .../providers/PuppetDbEntityProvider.test.ts | 10 ++-- .../src/providers/PuppetDbEntityProvider.ts | 8 +-- .../PuppetDbEntityProviderConfig.test.ts | 18 +++--- .../providers/PuppetDbEntityProviderConfig.ts | 10 ++-- .../src/puppet/read.test.ts | 58 ++++++++++--------- .../src/puppet/read.ts | 2 +- .../src/puppet/transformers.test.ts | 2 +- 10 files changed, 64 insertions(+), 58 deletions(-) diff --git a/plugins/catalog-backend-module-puppetdb/README.md b/plugins/catalog-backend-module-puppetdb/README.md index eeb363bd32..d4782c6d18 100644 --- a/plugins/catalog-backend-module-puppetdb/README.md +++ b/plugins/catalog-backend-module-puppetdb/README.md @@ -48,8 +48,8 @@ catalog: providers: puppetdb: default: - # (Required) The host of PuppetDB API instance: - host: https://puppetdb.example.com + # (Required) The base URL of PuppetDB API instance: + baseUrl: https://puppetdb.example.com # (Optional) Query to filter PuppetDB nodes: #query: '["=","certname","example.com"]' diff --git a/plugins/catalog-backend-module-puppetdb/api-report.md b/plugins/catalog-backend-module-puppetdb/api-report.md index 84227af5d3..8764ac1e7c 100644 --- a/plugins/catalog-backend-module-puppetdb/api-report.md +++ b/plugins/catalog-backend-module-puppetdb/api-report.md @@ -43,7 +43,7 @@ export class PuppetDbEntityProvider implements EntityProvider { // @public export type PuppetDbEntityProviderConfig = { id: string; - host: string; + baseUrl: string; query?: string; schedule?: TaskScheduleDefinition; }; diff --git a/plugins/catalog-backend-module-puppetdb/config.d.ts b/plugins/catalog-backend-module-puppetdb/config.d.ts index e890584f41..edd7ab3889 100644 --- a/plugins/catalog-backend-module-puppetdb/config.d.ts +++ b/plugins/catalog-backend-module-puppetdb/config.d.ts @@ -34,9 +34,9 @@ export interface Config { puppetdb?: | { /** - * (Required) The host of PuppetDB API instance. + * (Required) The base URL of PuppetDB API instance. */ - host: string; + baseUrl: string; /** * (Optional) PQL query to filter PuppetDB nodes. */ @@ -50,9 +50,9 @@ export interface Config { string, { /** - * (Required) The host of PuppetDB API instance. + * (Required) The base URL of PuppetDB API instance. */ - host: string; + baseUrl: string; /** * (Optional) PQL query to filter PuppetDB nodes. */ diff --git a/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.test.ts b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.test.ts index e9dc5e0fae..470bc5dbf8 100644 --- a/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.test.ts +++ b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.test.ts @@ -53,7 +53,7 @@ describe('PuppetEntityProvider', () => { catalog: { providers: { puppetdb: { - host: 'http://puppetdb:8080', + baseUrl: 'http://puppetdb:8080', schedule: { frequency: { minutes: 10, @@ -165,10 +165,10 @@ describe('PuppetEntityProvider', () => { annotations: { [ANNOTATION_PUPPET_CERTNAME]: 'node1', [ANNOTATION_LOCATION]: `url:${config.getString( - 'catalog.providers.puppetdb.host', + 'catalog.providers.puppetdb.baseUrl', )}/${ENDPOINT_NODES}/node1`, [ANNOTATION_ORIGIN_LOCATION]: `url:${config.getString( - 'catalog.providers.puppetdb.host', + 'catalog.providers.puppetdb.baseUrl', )}/${ENDPOINT_NODES}/node1`, }, tags: ['windows'], @@ -193,10 +193,10 @@ describe('PuppetEntityProvider', () => { annotations: { [ANNOTATION_PUPPET_CERTNAME]: 'node2', [ANNOTATION_LOCATION]: `url:${config.getString( - 'catalog.providers.puppetdb.host', + 'catalog.providers.puppetdb.baseUrl', )}/${ENDPOINT_NODES}/node2`, [ANNOTATION_ORIGIN_LOCATION]: `url:${config.getString( - 'catalog.providers.puppetdb.host', + 'catalog.providers.puppetdb.baseUrl', )}/${ENDPOINT_NODES}/node2`, }, tags: ['linux'], diff --git a/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.ts b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.ts index a3ac4b140e..b2d2738fd3 100644 --- a/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.ts +++ b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.ts @@ -176,7 +176,7 @@ export class PuppetDbEntityProvider implements EntityProvider { type: 'full', entities: [...entities].map(entity => ({ locationKey: this.getProviderName(), - entity: withLocations(this.config.host, entity), + entity: withLocations(this.config.baseUrl, entity), })), }); markCommitComplete(entities); @@ -186,13 +186,13 @@ export class PuppetDbEntityProvider implements EntityProvider { /** * Ensures the entities have required annotation data. * - * @param host - The host of the PuppetDB instance. + * @param baseUrl - The base URL of the PuppetDB instance. * @param entity - The entity to add the annotations to. * * @returns Entity with @{@link ANNOTATION_LOCATION} and @{@link ANNOTATION_ORIGIN_LOCATION} annotations. */ -function withLocations(host: string, entity: Entity): Entity { - const location = `${host}/${ENDPOINT_NODES}/${entity.metadata?.name}`; +function withLocations(baseUrl: string, entity: Entity): Entity { + const location = `${baseUrl}/${ENDPOINT_NODES}/${entity.metadata?.name}`; return merge( { diff --git a/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProviderConfig.test.ts b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProviderConfig.test.ts index 517247fd6d..8da0fb4150 100644 --- a/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProviderConfig.test.ts +++ b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProviderConfig.test.ts @@ -33,7 +33,7 @@ describe('readProviderConfigs', () => { catalog: { providers: { puppetdb: { - host: 'https://puppetdb', + baseUrl: 'https://puppetdb', }, }, }, @@ -43,7 +43,7 @@ describe('readProviderConfigs', () => { expect(providerConfigs).toHaveLength(1); expect(providerConfigs[0].id).toEqual('default'); - expect(providerConfigs[0].host).toEqual('https://puppetdb'); + expect(providerConfigs[0].baseUrl).toEqual('https://puppetdb'); }); it('single specific provider config', () => { @@ -52,7 +52,7 @@ describe('readProviderConfigs', () => { providers: { puppetdb: { 'my-provider': { - host: 'https://puppetdb', + baseUrl: 'https://puppetdb', }, }, }, @@ -63,7 +63,7 @@ describe('readProviderConfigs', () => { expect(providerConfigs).toHaveLength(1); expect(providerConfigs[0].id).toEqual('my-provider'); - expect(providerConfigs[0].host).toEqual('https://puppetdb'); + expect(providerConfigs[0].baseUrl).toEqual('https://puppetdb'); }); it('multiple provider configs', () => { @@ -72,11 +72,11 @@ describe('readProviderConfigs', () => { providers: { puppetdb: { 'my-provider': { - host: 'https://my-puppet/', + baseUrl: 'https://my-puppet/', query: 'my-query', }, 'your-provider': { - host: 'https://your-puppet', + baseUrl: 'https://your-puppet', query: 'your-query', }, }, @@ -89,12 +89,12 @@ describe('readProviderConfigs', () => { expect(providerConfigs).toHaveLength(2); expect(providerConfigs[0]).toEqual({ id: 'my-provider', - host: 'https://my-puppet', + baseUrl: 'https://my-puppet', query: 'my-query', }); expect(providerConfigs[1]).toEqual({ id: 'your-provider', - host: 'https://your-puppet', + baseUrl: 'https://your-puppet', query: 'your-query', }); }); @@ -104,7 +104,7 @@ describe('readProviderConfigs', () => { catalog: { providers: { puppetdb: { - host: 'https://puppetdb', + baseUrl: 'https://puppetdb', schedule: { frequency: 'PT30M', timeout: { diff --git a/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProviderConfig.ts b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProviderConfig.ts index 159a1e5504..7b95b7f387 100644 --- a/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProviderConfig.ts +++ b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProviderConfig.ts @@ -32,9 +32,9 @@ export type PuppetDbEntityProviderConfig = { */ id: string; /** - * (Required) The host of PuppetDB API instance. + * (Required) The base URL of PuppetDB API instance. */ - host: string; + baseUrl: string; /** * (Optional) PQL query to filter PuppetDB nodes. */ @@ -62,7 +62,7 @@ export function readProviderConfigs( return []; } - if (providersConfig.has('host')) { + if (providersConfig.has('baseUrl')) { return [readProviderConfig(DEFAULT_PROVIDER_ID, providersConfig)]; } @@ -83,7 +83,7 @@ function readProviderConfig( id: string, config: Config, ): PuppetDbEntityProviderConfig { - const host = config.getString('host').replace(/\/+$/, ''); + const baseUrl = config.getString('baseUrl').replace(/\/+$/, ''); const query = config.getOptionalString('query'); const schedule = config.has('schedule') @@ -92,7 +92,7 @@ function readProviderConfig( return { id, - host, + baseUrl, query, schedule, }; diff --git a/plugins/catalog-backend-module-puppetdb/src/puppet/read.test.ts b/plugins/catalog-backend-module-puppetdb/src/puppet/read.test.ts index 78fc856066..c3b750a417 100644 --- a/plugins/catalog-backend-module-puppetdb/src/puppet/read.test.ts +++ b/plugins/catalog-backend-module-puppetdb/src/puppet/read.test.ts @@ -35,13 +35,13 @@ describe('readPuppetNodes', () => { describe('where no query is specified', () => { const config: PuppetDbEntityProviderConfig = { - host: 'https://puppetdb', + baseUrl: 'https://puppetdb', id: DEFAULT_PROVIDER_ID, }; beforeEach(async () => { worker.use( - rest.get(`${config.host}/${ENDPOINT_FACTSETS}`, (_req, res, ctx) => { + rest.get(`${config.baseUrl}/${ENDPOINT_FACTSETS}`, (_req, res, ctx) => { return res( ctx.status(200), ctx.set('Content-Type', 'application/json'), @@ -186,7 +186,7 @@ describe('readPuppetNodes', () => { describe('where query is specified', () => { const config: PuppetDbEntityProviderConfig = { - host: 'https://puppetdb', + baseUrl: 'https://puppetdb', id: DEFAULT_PROVIDER_ID, query: '["=", "certname", "node1"]', }; @@ -194,13 +194,16 @@ describe('readPuppetNodes', () => { describe('where no results are matched', () => { beforeEach(async () => { worker.use( - rest.get(`${config.host}/${ENDPOINT_FACTSETS}`, (_req, res, ctx) => { - return res( - ctx.status(200), - ctx.set('Content-Type', 'application/json'), - ctx.json([]), - ); - }), + rest.get( + `${config.baseUrl}/${ENDPOINT_FACTSETS}`, + (_req, res, ctx) => { + return res( + ctx.status(200), + ctx.set('Content-Type', 'application/json'), + ctx.json([]), + ); + }, + ), ); }); @@ -213,22 +216,25 @@ describe('readPuppetNodes', () => { describe('where results are matched', () => { beforeEach(async () => { worker.use( - rest.get(`${config.host}/${ENDPOINT_FACTSETS}`, (_req, res, ctx) => { - return res( - ctx.status(200), - ctx.set('Content-Type', 'application/json'), - ctx.json([ - { - certname: 'node1', - timestamp: 'time1', - hash: 'hash1', - producer_timestamp: 'producer_time1', - producer: 'producer1', - environment: 'environment1', - }, - ]), - ); - }), + rest.get( + `${config.baseUrl}/${ENDPOINT_FACTSETS}`, + (_req, res, ctx) => { + return res( + ctx.status(200), + ctx.set('Content-Type', 'application/json'), + ctx.json([ + { + certname: 'node1', + timestamp: 'time1', + hash: 'hash1', + producer_timestamp: 'producer_time1', + producer: 'producer1', + environment: 'environment1', + }, + ]), + ); + }, + ), ); }); diff --git a/plugins/catalog-backend-module-puppetdb/src/puppet/read.ts b/plugins/catalog-backend-module-puppetdb/src/puppet/read.ts index 601ee28207..568ea7224e 100644 --- a/plugins/catalog-backend-module-puppetdb/src/puppet/read.ts +++ b/plugins/catalog-backend-module-puppetdb/src/puppet/read.ts @@ -37,7 +37,7 @@ export async function readPuppetNodes( }, ): Promise { const transformFn = opts?.transformer ?? defaultResourceTransformer; - const url = new URL(ENDPOINT_FACTSETS, config.host); + const url = new URL(ENDPOINT_FACTSETS, config.baseUrl); if (config.query) { url.searchParams.set('query', config.query); diff --git a/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.test.ts b/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.test.ts index 15f3bc1419..a56f7b549b 100644 --- a/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.test.ts +++ b/plugins/catalog-backend-module-puppetdb/src/puppet/transformers.test.ts @@ -23,7 +23,7 @@ import { ANNOTATION_PUPPET_CERTNAME, DEFAULT_ENTITY_OWNER } from './constants'; describe('defaultResourceTransformer', () => { it('should transform a puppet node to a resource entity', async () => { const config: PuppetDbEntityProviderConfig = { - host: '', + baseUrl: '', id: '', }; const node: PuppetNode = { From 36155899a6f86136e8b55a2a8e845b51d03ab32d Mon Sep 17 00:00:00 2001 From: Tomas Dabasinskas Date: Wed, 1 Mar 2023 10:20:41 +0200 Subject: [PATCH 061/147] Update provider tests Signed-off-by: Tomas Dabasinskas --- .../providers/PuppetDbEntityProvider.test.ts | 86 ++++++++++--------- 1 file changed, 44 insertions(+), 42 deletions(-) diff --git a/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.test.ts b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.test.ts index 470bc5dbf8..0ab6fb35b7 100644 --- a/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.test.ts +++ b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.test.ts @@ -18,22 +18,26 @@ import { TaskInvocationDefinition, TaskRunner } from '@backstage/backend-tasks'; import { ConfigReader } from '@backstage/config'; import { getVoidLogger } from '@backstage/backend-common'; import { PuppetDbEntityProvider } from './PuppetDbEntityProvider'; -import { EntityProviderConnection } from '@backstage/plugin-catalog-backend'; -import * as p from '../puppet/read'; +import { + DeferredEntity, + EntityProviderConnection, +} from '@backstage/plugin-catalog-backend'; +import * as puppetFunctions from '../puppet/read'; import { ANNOTATION_PUPPET_CERTNAME } from '../puppet'; import { ANNOTATION_LOCATION, ANNOTATION_ORIGIN_LOCATION, + ResourceEntity, } from '@backstage/catalog-model/'; import { DEFAULT_ENTITY_OWNER, ENDPOINT_NODES } from '../puppet/constants'; -const logger = getVoidLogger(); +jest.mock('../puppet/read', () => { + return { + readPuppetNodes: jest.fn(), + }; +}); -jest.mock('../puppet/read', () => ({ - __esModule: true, - default: jest.fn(), - readPuppetNodes: null, -})); +const logger = getVoidLogger(); class PersistingTaskRunner implements TaskRunner { private tasks: TaskInvocationDefinition[] = []; @@ -69,8 +73,7 @@ describe('PuppetEntityProvider', () => { describe('where there are no nodes', () => { beforeEach(() => { - // @ts-ignore - p.readPuppetNodes = jest.fn().mockResolvedValue([]); + jest.spyOn(puppetFunctions, 'readPuppetNodes').mockResolvedValueOnce([]); }); it('creates no entities', async () => { @@ -95,10 +98,9 @@ describe('PuppetEntityProvider', () => { describe('where there are nodes', () => { beforeEach(() => { - // @ts-ignore - p.readPuppetNodes = jest.fn().mockResolvedValue([ + jest.spyOn(puppetFunctions, 'readPuppetNodes').mockResolvedValueOnce([ { - api_version: 'backstage.io/v1beta1', + apiVersion: 'backstage.io/v1beta1', kind: 'Resource', metadata: { name: 'node1', @@ -108,16 +110,16 @@ describe('PuppetEntityProvider', () => { }, tags: ['windows'], description: 'Description 1', - spec: { - type: 'virtual-machine', - owner: DEFAULT_ENTITY_OWNER, - dependsOn: [], - dependencyOf: [], - }, + }, + spec: { + type: 'virtual-machine', + owner: DEFAULT_ENTITY_OWNER, + dependsOn: [], + dependencyOf: [], }, }, { - api_version: 'backstage.io/v1beta1', + apiVersion: 'backstage.io/v1beta1', kind: 'Resource', metadata: { name: 'node2', @@ -127,15 +129,15 @@ describe('PuppetEntityProvider', () => { }, tags: ['linux'], description: 'Description 2', - spec: { - type: 'physical-server', - owner: DEFAULT_ENTITY_OWNER, - dependsOn: [], - dependencyOf: [], - }, + }, + spec: { + type: 'physical-server', + owner: DEFAULT_ENTITY_OWNER, + dependsOn: [], + dependencyOf: [], }, }, - ]); + ] as ResourceEntity[]); }); it('creates entities', async () => { @@ -157,7 +159,7 @@ describe('PuppetEntityProvider', () => { { locationKey: providers[0].getProviderName(), entity: { - api_version: 'backstage.io/v1beta1', + apiVersion: 'backstage.io/v1beta1', kind: 'Resource', metadata: { name: 'node1', @@ -173,19 +175,19 @@ describe('PuppetEntityProvider', () => { }, tags: ['windows'], description: 'Description 1', - spec: { - type: 'virtual-machine', - owner: DEFAULT_ENTITY_OWNER, - dependsOn: [], - dependencyOf: [], - }, + }, + spec: { + type: 'virtual-machine', + owner: DEFAULT_ENTITY_OWNER, + dependsOn: [], + dependencyOf: [], }, }, }, { locationKey: providers[0].getProviderName(), entity: { - api_version: 'backstage.io/v1beta1', + apiVersion: 'backstage.io/v1beta1', kind: 'Resource', metadata: { name: 'node2', @@ -201,16 +203,16 @@ describe('PuppetEntityProvider', () => { }, tags: ['linux'], description: 'Description 2', - spec: { - type: 'physical-server', - owner: DEFAULT_ENTITY_OWNER, - dependsOn: [], - dependencyOf: [], - }, + }, + spec: { + type: 'physical-server', + owner: DEFAULT_ENTITY_OWNER, + dependsOn: [], + dependencyOf: [], }, }, }, - ], + ] as DeferredEntity[], }); }); }); From 92ddf0d6d9eeda3aafa24655c114346780e59883 Mon Sep 17 00:00:00 2001 From: Debabrata Panigrahi <50622005+Debanitrkl@users.noreply.github.com> Date: Wed, 1 Mar 2023 17:23:14 +0530 Subject: [PATCH 062/147] Add Harness Feature Flag plugin to marketplace Signed-off-by: Debabrata Panigrahi <50622005+Debanitrkl@users.noreply.github.com> --- microsite/data/plugins/harness-feature-flags.yaml | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 microsite/data/plugins/harness-feature-flags.yaml diff --git a/microsite/data/plugins/harness-feature-flags.yaml b/microsite/data/plugins/harness-feature-flags.yaml new file mode 100644 index 0000000000..ac085d901a --- /dev/null +++ b/microsite/data/plugins/harness-feature-flags.yaml @@ -0,0 +1,12 @@ +--- +title: Harness Feature Flags +author: harness.io +authorUrl: https://github.com/harness/backstage-plugins +category: Feature Flags +description: This plugin lets you view Harness Feature Flags created in your project inside Backstage. +documentation: https://github.com/harness/backstage-plugins/tree/main/plugins/harness-feature-flags +iconUrl: https://static.harness.io/ng-static/images/favicon.png +npmPackageName: '@harnessio/backstage-plugin-feature-flags' +tags: + - feature-flags +addedDate: '2023-03-01' From 35b55871187924d223289d81907aa7f458ffe4f0 Mon Sep 17 00:00:00 2001 From: Kacper Nowacki Date: Wed, 15 Feb 2023 17:31:38 +0100 Subject: [PATCH 063/147] Allow to change default document type of indexed files by catalog collator Signed-off-by: Kacper Nowacki --- .changeset/wet-pugs-exist.md | 5 +++ docs/features/search/how-to-guides.md | 43 +++++++++++++++++++ plugins/catalog-backend/api-report.md | 3 +- .../search/DefaultCatalogCollatorFactory.ts | 5 ++- 4 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 .changeset/wet-pugs-exist.md diff --git a/.changeset/wet-pugs-exist.md b/.changeset/wet-pugs-exist.md new file mode 100644 index 0000000000..dbc2c735c9 --- /dev/null +++ b/.changeset/wet-pugs-exist.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend': patch +--- + +Added optional parameter `type` to `DefaultCatalogCollatorFactoryOptions` which allows to override default document type `software-catalog`. For more details, see [How to customize document type in the Software Catalog index](../docs/features/search/how-to-guides.md#how-to-customize-document-type-in-the-software-catalog-index). diff --git a/docs/features/search/how-to-guides.md b/docs/features/search/how-to-guides.md index b464168724..be8bac43fb 100644 --- a/docs/features/search/how-to-guides.md +++ b/docs/features/search/how-to-guides.md @@ -184,6 +184,49 @@ indexBuilder.addCollator({ As shown above, you can add a catalog entity filter to narrow down what catalog entities are indexed by the search engine. +## How to customize document type in the Software Catalog index + +In some cases you might want to have the ability to change the document type in which catalog entities will be indexed by catalog collator. +Such option gives a possibility to customize SearchPage results and filters depending on which document type you would like to see results for. + +You can achieve that by passing additional parameter `type` to the `DefaultCatalogCollatorFactory`. + +Let's say that you want to have two different document types for some entities. +Our example will cover a use case in which we want to: + +- Store entities of kind `User` or `Group` under document type `yourCustomDocumentType`, +- Store rest of entities under default document type `software-catalog` + +To achieve that you will have to remove `User` and `Group` from your previous collator `filter` and register new `DefaultCatalogCollatorFactory` with new parameter `type`. + +```diff +// packages/backend/src/plugins/search.ts + + indexBuilder.addCollator({ + schedule, + factory: DefaultCatalogCollatorFactory.fromConfig(env.config, { + discovery: env.discovery, + tokenManager: env.tokenManager, + filter: { +- kind: ['API', 'Component', 'Domain', 'Resource', 'System', 'Template', 'User', 'Group'], ++ kind: ['API', 'Component', 'Domain', 'Resource', 'System', 'Template'], + }, + }), + }); + ++ indexBuilder.addCollator({ ++ schedule, ++ factory: DefaultCatalogCollatorFactory.fromConfig(env.config, { ++ discovery: env.discovery, ++ tokenManager: env.tokenManager, ++ filter: { ++ kind: ['User', 'Group'], ++ }, ++ type: 'yourCustomDocumentType', ++ }), ++ }); +``` + ## How to customize search results highlighting styling The default highlighting styling for matched terms in search results is your diff --git a/plugins/catalog-backend/api-report.md b/plugins/catalog-backend/api-report.md index f15f6b9ba9..dcca23c069 100644 --- a/plugins/catalog-backend/api-report.md +++ b/plugins/catalog-backend/api-report.md @@ -368,7 +368,7 @@ export class DefaultCatalogCollatorFactory implements DocumentCollatorFactory { // (undocumented) getCollator(): Promise; // (undocumented) - readonly type = 'software-catalog'; + readonly type: string; // (undocumented) readonly visibilityPermission: Permission; } @@ -382,6 +382,7 @@ export type DefaultCatalogCollatorFactoryOptions = { batchSize?: number; catalogClient?: CatalogApi; entityTransformer?: CatalogCollatorEntityTransformer; + type?: string; }; export { DeferredEntity }; diff --git a/plugins/catalog-backend/src/search/DefaultCatalogCollatorFactory.ts b/plugins/catalog-backend/src/search/DefaultCatalogCollatorFactory.ts index 1c03836e51..fc5c465ccb 100644 --- a/plugins/catalog-backend/src/search/DefaultCatalogCollatorFactory.ts +++ b/plugins/catalog-backend/src/search/DefaultCatalogCollatorFactory.ts @@ -44,11 +44,12 @@ export type DefaultCatalogCollatorFactoryOptions = { batchSize?: number; catalogClient?: CatalogApi; entityTransformer?: CatalogCollatorEntityTransformer; + type?: string; }; /** @public */ export class DefaultCatalogCollatorFactory implements DocumentCollatorFactory { - public readonly type = 'software-catalog'; + public readonly type: string; public readonly visibilityPermission: Permission = catalogEntityReadPermission; @@ -75,6 +76,7 @@ export class DefaultCatalogCollatorFactory implements DocumentCollatorFactory { catalogClient, tokenManager, entityTransformer, + type, } = options; this.locationTemplate = @@ -86,6 +88,7 @@ export class DefaultCatalogCollatorFactory implements DocumentCollatorFactory { this.tokenManager = tokenManager; this.entityTransformer = entityTransformer ?? defaultCatalogCollatorEntityTransformer; + this.type = type ?? 'software-catalog'; } async getCollator(): Promise { From 5a2df6c0c83700a376059d31321725cd87b2aaa6 Mon Sep 17 00:00:00 2001 From: Kacper Nowacki Date: Wed, 1 Mar 2023 14:14:31 +0100 Subject: [PATCH 064/147] Change variable name to documentType Signed-off-by: Kacper Nowacki --- .changeset/wet-pugs-exist.md | 2 +- docs/features/search/how-to-guides.md | 6 +++--- plugins/catalog-backend/api-report.md | 2 +- .../src/search/DefaultCatalogCollatorFactory.ts | 6 +++--- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.changeset/wet-pugs-exist.md b/.changeset/wet-pugs-exist.md index dbc2c735c9..509fb19f8d 100644 --- a/.changeset/wet-pugs-exist.md +++ b/.changeset/wet-pugs-exist.md @@ -2,4 +2,4 @@ '@backstage/plugin-catalog-backend': patch --- -Added optional parameter `type` to `DefaultCatalogCollatorFactoryOptions` which allows to override default document type `software-catalog`. For more details, see [How to customize document type in the Software Catalog index](../docs/features/search/how-to-guides.md#how-to-customize-document-type-in-the-software-catalog-index). +Added optional parameter `documentType` to `DefaultCatalogCollatorFactoryOptions` which allows to override default document type `software-catalog`. For more details, see [How to customize document type in the Software Catalog index](../docs/features/search/how-to-guides.md#how-to-customize-document-type-in-the-software-catalog-index). diff --git a/docs/features/search/how-to-guides.md b/docs/features/search/how-to-guides.md index be8bac43fb..d2c8c537f2 100644 --- a/docs/features/search/how-to-guides.md +++ b/docs/features/search/how-to-guides.md @@ -189,7 +189,7 @@ entities are indexed by the search engine. In some cases you might want to have the ability to change the document type in which catalog entities will be indexed by catalog collator. Such option gives a possibility to customize SearchPage results and filters depending on which document type you would like to see results for. -You can achieve that by passing additional parameter `type` to the `DefaultCatalogCollatorFactory`. +You can achieve that by passing additional parameter `documentType` to the `DefaultCatalogCollatorFactory`. Let's say that you want to have two different document types for some entities. Our example will cover a use case in which we want to: @@ -197,7 +197,7 @@ Our example will cover a use case in which we want to: - Store entities of kind `User` or `Group` under document type `yourCustomDocumentType`, - Store rest of entities under default document type `software-catalog` -To achieve that you will have to remove `User` and `Group` from your previous collator `filter` and register new `DefaultCatalogCollatorFactory` with new parameter `type`. +To achieve that you will have to remove `User` and `Group` from your previous collator `filter` and register new `DefaultCatalogCollatorFactory` with new parameter `documentType`. ```diff // packages/backend/src/plugins/search.ts @@ -222,7 +222,7 @@ To achieve that you will have to remove `User` and `Group` from your previous co + filter: { + kind: ['User', 'Group'], + }, -+ type: 'yourCustomDocumentType', ++ documentType: 'yourCustomDocumentType', + }), + }); ``` diff --git a/plugins/catalog-backend/api-report.md b/plugins/catalog-backend/api-report.md index dcca23c069..78c883a912 100644 --- a/plugins/catalog-backend/api-report.md +++ b/plugins/catalog-backend/api-report.md @@ -382,7 +382,7 @@ export type DefaultCatalogCollatorFactoryOptions = { batchSize?: number; catalogClient?: CatalogApi; entityTransformer?: CatalogCollatorEntityTransformer; - type?: string; + documentType?: string; }; export { DeferredEntity }; diff --git a/plugins/catalog-backend/src/search/DefaultCatalogCollatorFactory.ts b/plugins/catalog-backend/src/search/DefaultCatalogCollatorFactory.ts index fc5c465ccb..07da2da03a 100644 --- a/plugins/catalog-backend/src/search/DefaultCatalogCollatorFactory.ts +++ b/plugins/catalog-backend/src/search/DefaultCatalogCollatorFactory.ts @@ -44,7 +44,7 @@ export type DefaultCatalogCollatorFactoryOptions = { batchSize?: number; catalogClient?: CatalogApi; entityTransformer?: CatalogCollatorEntityTransformer; - type?: string; + documentType?: string; }; /** @public */ @@ -76,7 +76,7 @@ export class DefaultCatalogCollatorFactory implements DocumentCollatorFactory { catalogClient, tokenManager, entityTransformer, - type, + documentType, } = options; this.locationTemplate = @@ -88,7 +88,7 @@ export class DefaultCatalogCollatorFactory implements DocumentCollatorFactory { this.tokenManager = tokenManager; this.entityTransformer = entityTransformer ?? defaultCatalogCollatorEntityTransformer; - this.type = type ?? 'software-catalog'; + this.type = documentType ?? 'software-catalog'; } async getCollator(): Promise { From 62414770ead7390c129554fea815d22c9d0294b9 Mon Sep 17 00:00:00 2001 From: Heikki Hellgren Date: Wed, 1 Mar 2023 14:51:58 +0200 Subject: [PATCH 065/147] chore: allow undefined containerRunner in cookiecutter this is only needed if the cookiecutter command is not available. Signed-off-by: Heikki Hellgren --- .changeset/nine-bikes-applaud.md | 5 +++++ .../scaffolder-backend-module-cookiecutter/README.md | 2 ++ .../api-report.md | 2 +- .../src/actions/fetch/cookiecutter.test.ts | 12 ++++++++++++ .../src/actions/fetch/cookiecutter.ts | 11 ++++++++--- 5 files changed, 28 insertions(+), 4 deletions(-) create mode 100644 .changeset/nine-bikes-applaud.md diff --git a/.changeset/nine-bikes-applaud.md b/.changeset/nine-bikes-applaud.md new file mode 100644 index 0000000000..77a1c0e4be --- /dev/null +++ b/.changeset/nine-bikes-applaud.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend-module-cookiecutter': patch +--- + +allow container runner to be undefined in cookiecutter plugin diff --git a/plugins/scaffolder-backend-module-cookiecutter/README.md b/plugins/scaffolder-backend-module-cookiecutter/README.md index ae34e09c96..0e8e11ef7d 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/README.md +++ b/plugins/scaffolder-backend-module-cookiecutter/README.md @@ -161,3 +161,5 @@ You can do so by including the following lines in the last step of your Dockerfi RUN apt-get update && apt-get install -y python3 python3-pip RUN pip3 install cookiecutter ``` + +In this case, you don't have to include `containerRunner` in the action configuration. diff --git a/plugins/scaffolder-backend-module-cookiecutter/api-report.md b/plugins/scaffolder-backend-module-cookiecutter/api-report.md index 76f2ced66f..2944f5240e 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/api-report.md +++ b/plugins/scaffolder-backend-module-cookiecutter/api-report.md @@ -15,7 +15,7 @@ import { UrlReader } from '@backstage/backend-common'; export function createFetchCookiecutterAction(options: { reader: UrlReader; integrations: ScmIntegrations; - containerRunner: ContainerRunner; + containerRunner?: ContainerRunner; }): TemplateAction<{ url: string; targetPath?: string | undefined; diff --git a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts index f8b049f95f..9d7f06afc8 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts +++ b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts @@ -223,4 +223,16 @@ describe('fetch:cookiecutter', () => { }), ); }); + + it('should throw error if cookiecutter is not installed and containerRunner is undefined', async () => { + commandExists.mockResolvedValue(false); + const ccAction = createFetchCookiecutterAction({ + integrations, + reader: mockReader, + }); + + await expect(ccAction.handler(mockContext)).rejects.toThrow( + /Invalid state: containerRunner cannot be undefined when cookiecutter is not installed/, + ); + }); }); diff --git a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.ts b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.ts index 5c69b9dce2..b63a044a20 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.ts +++ b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.ts @@ -33,9 +33,9 @@ import { import { createTemplateAction } from '@backstage/plugin-scaffolder-node'; export class CookiecutterRunner { - private readonly containerRunner: ContainerRunner; + private readonly containerRunner?: ContainerRunner; - constructor({ containerRunner }: { containerRunner: ContainerRunner }) { + constructor({ containerRunner }: { containerRunner?: ContainerRunner }) { this.containerRunner = containerRunner; } @@ -101,6 +101,11 @@ export class CookiecutterRunner { logStream, }); } else { + if (this.containerRunner === undefined) { + throw new Error( + 'Invalid state: containerRunner cannot be undefined when cookiecutter is not installed', + ); + } await this.containerRunner.runContainer({ imageName: imageName ?? 'spotify/backstage-cookiecutter', command: 'cookiecutter', @@ -139,7 +144,7 @@ export class CookiecutterRunner { export function createFetchCookiecutterAction(options: { reader: UrlReader; integrations: ScmIntegrations; - containerRunner: ContainerRunner; + containerRunner?: ContainerRunner; }) { const { reader, containerRunner, integrations } = options; From 8a298b472401d04c12e178020c1f57d2e612bc65 Mon Sep 17 00:00:00 2001 From: Jos Craw Date: Thu, 2 Mar 2023 19:56:42 +1300 Subject: [PATCH 066/147] feat: add offline support for linguist Signed-off-by: Jos Craw --- .changeset/pink-dolls-unite.md | 5 +++++ plugins/linguist-backend/README.md | 8 ++++++++ plugins/linguist-backend/api-report.md | 3 +++ plugins/linguist-backend/src/api/LinguistBackendApi.ts | 5 ++++- plugins/linguist-backend/src/service/router.ts | 5 ++++- 5 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 .changeset/pink-dolls-unite.md diff --git a/.changeset/pink-dolls-unite.md b/.changeset/pink-dolls-unite.md new file mode 100644 index 0000000000..f7c8b8c40c --- /dev/null +++ b/.changeset/pink-dolls-unite.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-linguist-backend': minor +--- + +Added support for offline language data diff --git a/plugins/linguist-backend/README.md b/plugins/linguist-backend/README.md index a7c89d23b3..981cebc19e 100644 --- a/plugins/linguist-backend/README.md +++ b/plugins/linguist-backend/README.md @@ -85,6 +85,14 @@ return createRouter({ schedule: schedule, age: { days: 30 } }, { ...env }); With the `age` setup like this if the language breakdown is older than 15 days it will get regenerated. It's recommended that if you choose to use this configuration to set it to a large value - 30, 90, or 180 - as this data generally does not change drastically. +## Offline + +The default setup will pull the language data from GitHub, by setting `offline` to `true` a packaged offline version of this data is used instead. + +```ts +return createRouter({ schedule: schedule, offline: true }, { ...env }); +``` + ## Use Source Location You may wish to use the `backstage.io/source-location` annotation over using the `backstage.io/linguist` as you may not be able to quickly add that annotation to your Entities. To do this you'll just need to set the `useSourceLocation` boolean to `true` in your `packages/backend/src/plugins/linguist.ts` when you call `createRouter`: diff --git a/plugins/linguist-backend/api-report.md b/plugins/linguist-backend/api-report.md index d3a77bc2d7..c1486ab3ae 100644 --- a/plugins/linguist-backend/api-report.md +++ b/plugins/linguist-backend/api-report.md @@ -35,6 +35,7 @@ export class LinguistBackendApi { batchSize?: number, useSourceLocation?: boolean, kind?: string[], + offline?: boolean, ); // (undocumented) getEntityLanguages(entityRef: string): Promise; @@ -82,6 +83,8 @@ export interface PluginOptions { // (undocumented) kind?: string[]; // (undocumented) + offline?: boolean; + // (undocumented) schedule?: TaskScheduleDefinition; // (undocumented) useSourceLocation?: boolean; diff --git a/plugins/linguist-backend/src/api/LinguistBackendApi.ts b/plugins/linguist-backend/src/api/LinguistBackendApi.ts index 6a4cc0ea56..f58b913c2d 100644 --- a/plugins/linguist-backend/src/api/LinguistBackendApi.ts +++ b/plugins/linguist-backend/src/api/LinguistBackendApi.ts @@ -57,6 +57,7 @@ export class LinguistBackendApi { private readonly batchSize?: number; private readonly useSourceLocation?: boolean; private readonly kind: string[]; + private readonly offline?: boolean; public constructor( logger: Logger, store: LinguistBackendStore, @@ -67,6 +68,7 @@ export class LinguistBackendApi { batchSize?: number, useSourceLocation?: boolean, kind?: string[], + offline?: boolean, ) { this.logger = logger; this.store = store; @@ -78,6 +80,7 @@ export class LinguistBackendApi { this.age = age; this.useSourceLocation = useSourceLocation; this.kind = kindOrDefault(kind); + this.offline = offline; } public async getEntityLanguages(entityRef: string): Promise { @@ -190,7 +193,7 @@ export class LinguistBackendApi { const readTreeResponse = await this.urlReader.readTree(url); const dir = await readTreeResponse.dir(); - const results = await linguist(dir); + const results = await linguist(dir, { offline: this.offline }); try { const totalBytes = results.languages.bytes; diff --git a/plugins/linguist-backend/src/service/router.ts b/plugins/linguist-backend/src/service/router.ts index 66138f5ed2..4a279aba7d 100644 --- a/plugins/linguist-backend/src/service/router.ts +++ b/plugins/linguist-backend/src/service/router.ts @@ -38,6 +38,7 @@ export interface PluginOptions { age?: HumanDuration; batchSize?: number; useSourceLocation?: boolean; + offline?: boolean; kind?: string[]; } @@ -57,7 +58,8 @@ export async function createRouter( pluginOptions: PluginOptions, routerOptions: RouterOptions, ): Promise { - const { schedule, age, batchSize, useSourceLocation, kind } = pluginOptions; + const { schedule, age, batchSize, useSourceLocation, kind, offline } = + pluginOptions; const { logger, reader, database, discovery, scheduler, tokenManager } = routerOptions; @@ -78,6 +80,7 @@ export async function createRouter( batchSize, useSourceLocation, kind, + offline, ); if (scheduler && schedule) { From 87f0bbec175877acde20e82a1a69cd129dbb3545 Mon Sep 17 00:00:00 2001 From: Lucas Guarisco Date: Tue, 28 Feb 2023 17:41:39 -0300 Subject: [PATCH 067/147] upgrade aws-sdk to v3 for AwsS3UrlReader Signed-off-by: Lucas Guarisco --- .changeset/rotten-panthers-share.md | 5 + packages/backend-common/package.json | 9 +- .../src/reading/AwsS3UrlReader.test.ts | 136 ++++---- .../src/reading/AwsS3UrlReader.ts | 210 ++++++----- yarn.lock | 327 +++++++++++++++--- 5 files changed, 500 insertions(+), 187 deletions(-) create mode 100644 .changeset/rotten-panthers-share.md diff --git a/.changeset/rotten-panthers-share.md b/.changeset/rotten-panthers-share.md new file mode 100644 index 0000000000..7c42c5347e --- /dev/null +++ b/.changeset/rotten-panthers-share.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-common': minor +--- + +AwsS3UrlReader upgraded to use aws-sdk v3 diff --git a/packages/backend-common/package.json b/packages/backend-common/package.json index 905d78ba13..8a6a63fd91 100644 --- a/packages/backend-common/package.json +++ b/packages/backend-common/package.json @@ -46,6 +46,10 @@ "test:kubernetes": "backstage-cli package test -t KubernetesContainerRunner --no-watch" }, "dependencies": { + "@aws-sdk/abort-controller": "^3.272.0", + "@aws-sdk/client-s3": "^3.276.0", + "@aws-sdk/credential-providers": "^3.276.0", + "@aws-sdk/types": "^3.272.0", "@backstage/backend-app-api": "workspace:^", "@backstage/backend-dev-utils": "workspace:^", "@backstage/backend-plugin-api": "workspace:^", @@ -54,6 +58,7 @@ "@backstage/config-loader": "workspace:^", "@backstage/errors": "workspace:^", "@backstage/integration": "workspace:^", + "@backstage/integration-aws-node": "workspace:^", "@backstage/types": "workspace:^", "@google-cloud/storage": "^6.0.0", "@keyv/memcache": "^1.3.5", @@ -67,7 +72,6 @@ "@types/luxon": "^3.0.0", "@types/webpack-env": "^1.15.2", "archiver": "^5.0.2", - "aws-sdk": "^2.840.0", "base64-stream": "^1.0.0", "compression": "^1.7.4", "concat-stream": "^2.0.0", @@ -110,6 +114,7 @@ } }, "devDependencies": { + "@aws-sdk/util-stream-node": "^3.272.0", "@backstage/backend-test-utils": "workspace:^", "@backstage/cli": "workspace:^", "@types/archiver": "^5.1.0", @@ -128,9 +133,9 @@ "@types/tar": "^6.1.1", "@types/webpack-env": "^1.15.2", "@types/yauzl": "^2.10.0", + "aws-sdk-client-mock": "^2.0.1", "aws-sdk-mock": "^5.2.1", "better-sqlite3": "^8.0.0", - "http-errors": "^2.0.0", "mock-fs": "^5.1.0", "msw": "^1.0.0", "mysql2": "^2.2.5", diff --git a/packages/backend-common/src/reading/AwsS3UrlReader.test.ts b/packages/backend-common/src/reading/AwsS3UrlReader.test.ts index dd4cd23de4..76f23148aa 100644 --- a/packages/backend-common/src/reading/AwsS3UrlReader.test.ts +++ b/packages/backend-common/src/reading/AwsS3UrlReader.test.ts @@ -18,19 +18,26 @@ import { ConfigReader } from '@backstage/config'; import { JsonObject } from '@backstage/types'; import { getVoidLogger } from '../logging'; import { DefaultReadTreeResponseFactory } from './tree'; -import { rest } from 'msw'; import { setupServer } from 'msw/node'; import { setupRequestMockHandlers } from '@backstage/backend-test-utils'; -import { AwsS3UrlReader, parseUrl } from './AwsS3UrlReader'; +import { DEFAULT_REGION, AwsS3UrlReader, parseUrl } from './AwsS3UrlReader'; import { AwsS3Integration, readAwsS3IntegrationConfig, } from '@backstage/integration'; import { UrlReaderPredicateTuple } from './types'; -import AWSMock from 'aws-sdk-mock'; -import aws from 'aws-sdk'; import path from 'path'; import { NotModifiedError } from '@backstage/errors'; +import { mockClient } from 'aws-sdk-client-mock'; +import { + S3Client, + ListObjectsV2Command, + ListObjectsV2Output, + GetObjectCommand, + S3ServiceException, +} from '@aws-sdk/client-s3'; +import { sdkStreamMixin } from '@aws-sdk/util-stream-node'; +import fs from 'fs'; const treeResponseFactory = DefaultReadTreeResponseFactory.create({ config: new ConfigReader({}), @@ -97,7 +104,7 @@ describe('parseUrl', () => { ).toEqual({ path: 'a/puppy.jpg', bucket: 'my.bucket-3', - region: '', + region: DEFAULT_REGION, }); expect( parseUrl('https://my.bucket-3.my-host.com/a/puppy.jpg', { @@ -106,7 +113,7 @@ describe('parseUrl', () => { ).toEqual({ path: 'a/puppy.jpg', bucket: 'my.bucket-3', - region: '', + region: DEFAULT_REGION, }); expect( parseUrl('https://ignored.my-host.com/my.bucket-3/a/puppy.jpg', { @@ -116,12 +123,13 @@ describe('parseUrl', () => { ).toEqual({ path: 'a/puppy.jpg', bucket: 'my.bucket-3', - region: '', + region: DEFAULT_REGION, }); }); }); describe('AwsS3UrlReader', () => { + const s3Client = mockClient(S3Client); const worker = setupServer(); setupRequestMockHandlers(worker); @@ -232,17 +240,19 @@ describe('AwsS3UrlReader', () => { }); beforeEach(() => { - worker.use( - rest.get( - 'https://test-bucket.s3.amazonaws.com/awsS3-mock-object.yaml', - (_, res, ctx) => - res( - ctx.status(200), - ctx.set('ETag', '123abc'), - ctx.body('site_name: Test'), + s3Client.reset(); + + s3Client.on(GetObjectCommand).resolves({ + Body: sdkStreamMixin( + fs.createReadStream( + path.resolve( + __dirname, + '__fixtures__/awsS3/awsS3-mock-object.yaml', ), + ), ), - ); + ETag: '123abc', + }); }); it('returns contents of an object in a bucket', async () => { @@ -280,17 +290,19 @@ describe('AwsS3UrlReader', () => { }); beforeEach(() => { - worker.use( - rest.get( - 'https://test-bucket.s3.amazonaws.com/awsS3-mock-object.yaml', - (_, res, ctx) => - res( - ctx.status(200), - ctx.set('ETag', '123abc'), - ctx.body('site_name: Test'), + s3Client.reset(); + + s3Client.on(GetObjectCommand).resolves({ + Body: sdkStreamMixin( + fs.createReadStream( + path.resolve( + __dirname, + '__fixtures__/awsS3/awsS3-mock-object.yaml', ), + ), ), - ); + ETag: '123abc', + }); }); it('returns contents of an object in a bucket via buffer', async () => { @@ -340,17 +352,17 @@ describe('AwsS3UrlReader', () => { }); beforeEach(() => { - worker.use( - rest.get( - 'http://localhost:4566/test-bucket/awsS3-mock-object.yaml', - (_, res, ctx) => - res( - ctx.status(200), - ctx.set('ETag', '123abc'), - ctx.body('site_name: Test'), + s3Client.on(GetObjectCommand).resolves({ + Body: sdkStreamMixin( + fs.createReadStream( + path.resolve( + __dirname, + '__fixtures__/awsS3/awsS3-mock-object.yaml', ), + ), ), - ); + ETag: '123abc', + }); }); it('returns contents of an object in a bucket via buffer', async () => { @@ -377,12 +389,13 @@ describe('AwsS3UrlReader', () => { }); beforeEach(() => { - worker.use( - rest.get( - 'https://test-bucket.s3.amazonaws.com/awsS3-mock-object.yaml', - (_, res, ctx) => res(ctx.status(304)), - ), - ); + s3Client.reset(); + const t = new S3ServiceException({ + name: '304', + $fault: 'client', + $metadata: { httpStatusCode: 304 }, + }); + s3Client.on(GetObjectCommand).rejects(t); }); it('returns contents of an object in a bucket', async () => { @@ -400,44 +413,41 @@ describe('AwsS3UrlReader', () => { describe('readTree', () => { let awsS3UrlReader: AwsS3UrlReader; - beforeAll(() => { - const object: aws.S3.Types.Object = { + beforeEach(() => { + s3Client.reset(); + + const object: Object = { Key: 'awsS3-mock-object.yaml', }; - const objectList: aws.S3.ObjectList = [object]; - const output: aws.S3.Types.ListObjectsV2Output = { + const objectList: Object[] = [object]; + const output: ListObjectsV2Output = { Contents: objectList, }; - AWSMock.setSDKInstance(aws); - AWSMock.mock('S3', 'listObjectsV2', output); + s3Client.on(ListObjectsV2Command).resolves(output); - AWSMock.mock( - 'S3', - 'getObject', - Buffer.from( - require('fs').readFileSync( + s3Client.on(GetObjectCommand).resolves({ + Body: sdkStreamMixin( + fs.createReadStream( path.resolve( __dirname, '__fixtures__/awsS3/awsS3-mock-object.yaml', ), ), ), - ); + }); + + const config = new ConfigReader({ + host: '.amazonaws.com', + accessKeyId: 'fake-access-key', + secretAccessKey: 'fake-secret-key', + }); - const s3 = new aws.S3(); awsS3UrlReader = new AwsS3UrlReader( - new AwsS3Integration( - readAwsS3IntegrationConfig( - new ConfigReader({ - host: '.amazonaws.com', - accessKeyId: 'fake-access-key', - secretAccessKey: 'fake-secret-key', - }), - ), - ), - { s3, treeResponseFactory }, + config, + new AwsS3Integration(readAwsS3IntegrationConfig(config)), + { treeResponseFactory }, ); }); diff --git a/packages/backend-common/src/reading/AwsS3UrlReader.ts b/packages/backend-common/src/reading/AwsS3UrlReader.ts index dd7a3da3d4..b1183c510a 100644 --- a/packages/backend-common/src/reading/AwsS3UrlReader.ts +++ b/packages/backend-common/src/reading/AwsS3UrlReader.ts @@ -14,10 +14,6 @@ * limitations under the License. */ -// note: We do the import like this so that we don't get issues destructuring -// and it not being mocked by the aws-sdk-mock package which is unfortunate. -import aws from 'aws-sdk'; -import { CredentialsOptions } from 'aws-sdk/lib/credentials'; import { ReaderFactory, ReadTreeOptions, @@ -28,16 +24,30 @@ import { SearchResponse, UrlReader, } from './types'; +import { + AwsCredentialsManager, + DefaultAwsCredentialsManager, +} from '@backstage/integration-aws-node'; import { AwsS3Integration, ScmIntegrations, AwsS3IntegrationConfig, } from '@backstage/integration'; +import { Config } from '@backstage/config'; import { ForwardedError, NotModifiedError } from '@backstage/errors'; -import { ListObjectsV2Output, ObjectList } from 'aws-sdk/clients/s3'; +import { fromTemporaryCredentials } from '@aws-sdk/credential-providers'; +import { AwsCredentialIdentityProvider } from '@aws-sdk/types'; +import { + S3Client, + ListObjectsV2Command, + ListObjectsV2CommandOutput, + GetObjectCommand, +} from '@aws-sdk/client-s3'; +import { AbortController } from '@aws-sdk/abort-controller'; import { ReadUrlResponseFactory } from './ReadUrlResponseFactory'; +import { Readable } from 'stream'; -const DEFAULT_REGION = 'us-east-1'; +export const DEFAULT_REGION = 'us-east-1'; /** * Path style URLs: https://s3.(region).amazonaws.com/(bucket)/(key) @@ -105,14 +115,14 @@ export function parseUrl( return { path: pathname.substring(slashIndex + 1), bucket: pathname.substring(0, slashIndex), - region: '', + region: DEFAULT_REGION, }; } return { path: pathname, bucket: host.substring(0, host.length - config.host.length - 1), - region: '', + region: DEFAULT_REGION, }; } @@ -126,16 +136,7 @@ export class AwsS3UrlReader implements UrlReader { const integrations = ScmIntegrations.fromConfig(config); return integrations.awsS3.list().map(integration => { - const credentials = AwsS3UrlReader.buildCredentials(integration); - - const s3 = new aws.S3({ - apiVersion: '2006-03-01', - credentials, - endpoint: integration.config.endpoint, - s3ForcePathStyle: integration.config.s3ForcePathStyle, - }); - const reader = new AwsS3UrlReader(integration, { - s3, + const reader = new AwsS3UrlReader(config, integration, { treeResponseFactory, }); const predicate = (url: URL) => @@ -145,9 +146,9 @@ export class AwsS3UrlReader implements UrlReader { }; constructor( + private readonly defaultConfig: Config, private readonly integration: AwsS3Integration, private readonly deps: { - s3: aws.S3; treeResponseFactory: ReadTreeResponseFactory; }, ) {} @@ -156,39 +157,95 @@ export class AwsS3UrlReader implements UrlReader { * If accessKeyId and secretAccessKey are missing, the standard credentials provider chain will be used: * https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/auth/DefaultAWSCredentialsProviderChain.html */ - private static buildCredentials( - integration?: AwsS3Integration, - ): aws.Credentials | CredentialsOptions | undefined { - if (!integration) { - return undefined; - } - - const accessKeyId = integration.config.accessKeyId; - const secretAccessKey = integration.config.secretAccessKey; - let explicitCredentials: aws.Credentials | undefined; - - if (accessKeyId && secretAccessKey) { - explicitCredentials = new aws.Credentials({ + private static buildStaticCredentials( + accessKeyId: string, + secretAccessKey: string, + ): AwsCredentialIdentityProvider { + return async () => { + return Promise.resolve({ accessKeyId, secretAccessKey, }); + }; + } + + private static async buildCredentials( + credsManager: AwsCredentialsManager, + region: string, + integration?: AwsS3Integration, + ): Promise { + // Fall back to the default credential chain if neither account ID + // nor explicit credentials are provided + if (!integration) { + return (await credsManager.getCredentialProvider()).sdkCredentialProvider; + } + + // Pull credentials from the techdocs config section (deprecated) + const accessKeyId = integration.config.accessKeyId; + const secretAccessKey = integration.config.secretAccessKey; + let explicitCredentials: AwsCredentialIdentityProvider; + if (accessKeyId && secretAccessKey) { + explicitCredentials = AwsS3UrlReader.buildStaticCredentials( + accessKeyId, + secretAccessKey, + ); + } else { + explicitCredentials = (await credsManager.getCredentialProvider()) + .sdkCredentialProvider; } const roleArn = integration.config.roleArn; if (roleArn) { - return new aws.ChainableTemporaryCredentials({ + return fromTemporaryCredentials({ masterCredentials: explicitCredentials, params: { RoleSessionName: 'backstage-aws-s3-url-reader', RoleArn: roleArn, ExternalId: integration.config.externalId, }, + clientConfig: { region }, }); } return explicitCredentials; } + async buildS3Client( + defaultConfig: Config, + region: string, + integration: AwsS3Integration, + ): Promise { + const credsManager = DefaultAwsCredentialsManager.fromConfig(defaultConfig); + const credentials = await AwsS3UrlReader.buildCredentials( + credsManager, + region, + integration, + ); + + const s3 = new S3Client({ + region: region, + credentials: credentials, + endpoint: integration.config.endpoint, + forcePathStyle: integration.config.s3ForcePathStyle, + }); + return s3; + } + + async retrieveS3ObjectData(stream: Readable): Promise { + return new Promise((resolve, reject) => { + try { + const chunks: any[] = []; + stream.on('data', chunk => chunks.push(chunk)); + stream.on('error', (e: Error) => + reject(new ForwardedError('Unable to read stream', e)), + ); + stream.on('end', () => resolve(Readable.from(Buffer.concat(chunks)))); + } catch (e) { + throw new ForwardedError('Unable to parse the response data', e); + } + }); + } + async read(url: string): Promise { const response = await this.readUrl(url); return response.buffer(); @@ -200,7 +257,12 @@ export class AwsS3UrlReader implements UrlReader { ): Promise { try { const { path, bucket, region } = parseUrl(url, this.integration.config); - aws.config.update({ region: region }); + const s3Client = await this.buildS3Client( + this.defaultConfig, + region, + this.integration, + ); + const abortController = new AbortController(); let params; if (options?.etag) { @@ -215,44 +277,22 @@ export class AwsS3UrlReader implements UrlReader { Key: path, }; } - - const request = this.deps.s3.getObject(params); - options?.signal?.addEventListener('abort', () => request.abort()); - - // Since we're consuming the read stream we need to consume headers and errors via events. - const etagPromise = new Promise((resolve, reject) => { - request.on('httpHeaders', (status, headers) => { - if (status < 400) { - if (status === 200) { - resolve(headers.etag); - } else if (status !== 304 /* not modified */) { - reject( - new Error( - `S3 readUrl request received unexpected status '${status}' in response`, - ), - ); - } - } - }); - request.on('error', error => reject(error)); - request.on('complete', () => - reject( - new Error('S3 readUrl request completed without receiving headers'), - ), - ); + options?.signal?.addEventListener('abort', () => abortController.abort()); + const getObjectCommand = new GetObjectCommand(params); + const response = await s3Client.send(getObjectCommand, { + abortSignal: abortController.signal, }); - const stream = request.createReadStream(); - stream.on('error', () => { - // The AWS SDK forwards request errors to the stream, so we need to - // ignore those errors here or the process will crash. - }); + const s3ObjectData = await this.retrieveS3ObjectData( + response.Body as Readable, + ); + const etag = response.ETag; - return ReadUrlResponseFactory.fromReadable(stream, { - etag: await etagPromise, + return ReadUrlResponseFactory.fromReadable(s3ObjectData, { + etag: etag, }); } catch (e) { - if (e.statusCode === 304) { + if (e.$metadata && e.$metadata.httpStatusCode === 304) { throw new NotModifiedError(); } @@ -266,35 +306,49 @@ export class AwsS3UrlReader implements UrlReader { ): Promise { try { const { path, bucket, region } = parseUrl(url, this.integration.config); - const allObjects: ObjectList = []; + const s3Client = await this.buildS3Client( + this.defaultConfig, + region, + this.integration, + ); + const abortController = new AbortController(); + const allObjects: String[] = []; const responses = []; let continuationToken: string | undefined; - let output: ListObjectsV2Output; + let output: ListObjectsV2CommandOutput; do { - aws.config.update({ region: region }); - const request = this.deps.s3.listObjectsV2({ + const listObjectsV2Command = new ListObjectsV2Command({ Bucket: bucket, ContinuationToken: continuationToken, Prefix: path, }); - options?.signal?.addEventListener('abort', () => request.abort()); - output = await request.promise(); + options?.signal?.addEventListener('abort', () => + abortController.abort(), + ); + output = await s3Client.send(listObjectsV2Command, { + abortSignal: abortController.signal, + }); if (output.Contents) { output.Contents.forEach(contents => { - allObjects.push(contents); + allObjects.push(contents.Key!); }); } continuationToken = output.NextContinuationToken; } while (continuationToken); for (let i = 0; i < allObjects.length; i++) { - const object = this.deps.s3.getObject({ + const getObjectCommand = new GetObjectCommand({ Bucket: bucket, - Key: String(allObjects[i].Key), + Key: String(allObjects[i]), }); + const response = await s3Client.send(getObjectCommand); + const s3ObjectData = await this.retrieveS3ObjectData( + response.Body as Readable, + ); + responses.push({ - data: object.createReadStream(), - path: String(allObjects[i].Key), + data: s3ObjectData, + path: String(allObjects[i]), }); } diff --git a/yarn.lock b/yarn.lock index e92c5d0b13..d1a0bd9439 100644 --- a/yarn.lock +++ b/yarn.lock @@ -373,7 +373,7 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/abort-controller@npm:3.272.0": +"@aws-sdk/abort-controller@npm:3.272.0, @aws-sdk/abort-controller@npm:^3.272.0": version: 3.272.0 resolution: "@aws-sdk/abort-controller@npm:3.272.0" dependencies: @@ -402,21 +402,21 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/client-cognito-identity@npm:3.276.0": - version: 3.276.0 - resolution: "@aws-sdk/client-cognito-identity@npm:3.276.0" +"@aws-sdk/client-cognito-identity@npm:3.281.0": + version: 3.281.0 + resolution: "@aws-sdk/client-cognito-identity@npm:3.281.0" dependencies: "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/client-sts": 3.276.0 + "@aws-sdk/client-sts": 3.281.0 "@aws-sdk/config-resolver": 3.272.0 - "@aws-sdk/credential-provider-node": 3.272.0 + "@aws-sdk/credential-provider-node": 3.281.0 "@aws-sdk/fetch-http-handler": 3.272.0 "@aws-sdk/hash-node": 3.272.0 "@aws-sdk/invalid-dependency": 3.272.0 "@aws-sdk/middleware-content-length": 3.272.0 "@aws-sdk/middleware-endpoint": 3.272.0 - "@aws-sdk/middleware-host-header": 3.272.0 + "@aws-sdk/middleware-host-header": 3.278.0 "@aws-sdk/middleware-logger": 3.272.0 "@aws-sdk/middleware-recursion-detection": 3.272.0 "@aws-sdk/middleware-retry": 3.272.0 @@ -427,34 +427,34 @@ __metadata: "@aws-sdk/node-config-provider": 3.272.0 "@aws-sdk/node-http-handler": 3.272.0 "@aws-sdk/protocol-http": 3.272.0 - "@aws-sdk/smithy-client": 3.272.0 + "@aws-sdk/smithy-client": 3.279.0 "@aws-sdk/types": 3.272.0 "@aws-sdk/url-parser": 3.272.0 "@aws-sdk/util-base64": 3.208.0 "@aws-sdk/util-body-length-browser": 3.188.0 "@aws-sdk/util-body-length-node": 3.208.0 - "@aws-sdk/util-defaults-mode-browser": 3.272.0 - "@aws-sdk/util-defaults-mode-node": 3.272.0 + "@aws-sdk/util-defaults-mode-browser": 3.279.0 + "@aws-sdk/util-defaults-mode-node": 3.279.0 "@aws-sdk/util-endpoints": 3.272.0 "@aws-sdk/util-retry": 3.272.0 "@aws-sdk/util-user-agent-browser": 3.272.0 "@aws-sdk/util-user-agent-node": 3.272.0 "@aws-sdk/util-utf8": 3.254.0 tslib: ^2.3.1 - checksum: ff79c1c727d956e03510307b001c24534d522b327871b2b0a1d39120e6d6717e17d7b9c2b7a6d28c3e5c3f41cd8ff28e5150ddd1fda9bff0c239fdfef0a78e00 + checksum: 13c350badfdd7fc1df05687314ade61b407a7094d082ade35ff67c4ac870f4fb5bfda902e21c9dedf13898dbd76e74fc03707b632359fd2619a3f709bee5ac8c languageName: node linkType: hard -"@aws-sdk/client-s3@npm:^3.208.0": - version: 3.276.0 - resolution: "@aws-sdk/client-s3@npm:3.276.0" +"@aws-sdk/client-s3@npm:^3.208.0, @aws-sdk/client-s3@npm:^3.276.0": + version: 3.281.0 + resolution: "@aws-sdk/client-s3@npm:3.281.0" dependencies: "@aws-crypto/sha1-browser": 3.0.0 "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/client-sts": 3.276.0 + "@aws-sdk/client-sts": 3.281.0 "@aws-sdk/config-resolver": 3.272.0 - "@aws-sdk/credential-provider-node": 3.272.0 + "@aws-sdk/credential-provider-node": 3.281.0 "@aws-sdk/eventstream-serde-browser": 3.272.0 "@aws-sdk/eventstream-serde-config-resolver": 3.272.0 "@aws-sdk/eventstream-serde-node": 3.272.0 @@ -469,7 +469,7 @@ __metadata: "@aws-sdk/middleware-endpoint": 3.272.0 "@aws-sdk/middleware-expect-continue": 3.272.0 "@aws-sdk/middleware-flexible-checksums": 3.272.0 - "@aws-sdk/middleware-host-header": 3.272.0 + "@aws-sdk/middleware-host-header": 3.278.0 "@aws-sdk/middleware-location-constraint": 3.272.0 "@aws-sdk/middleware-logger": 3.272.0 "@aws-sdk/middleware-recursion-detection": 3.272.0 @@ -484,14 +484,14 @@ __metadata: "@aws-sdk/node-http-handler": 3.272.0 "@aws-sdk/protocol-http": 3.272.0 "@aws-sdk/signature-v4-multi-region": 3.272.0 - "@aws-sdk/smithy-client": 3.272.0 + "@aws-sdk/smithy-client": 3.279.0 "@aws-sdk/types": 3.272.0 "@aws-sdk/url-parser": 3.272.0 "@aws-sdk/util-base64": 3.208.0 "@aws-sdk/util-body-length-browser": 3.188.0 "@aws-sdk/util-body-length-node": 3.208.0 - "@aws-sdk/util-defaults-mode-browser": 3.272.0 - "@aws-sdk/util-defaults-mode-node": 3.272.0 + "@aws-sdk/util-defaults-mode-browser": 3.279.0 + "@aws-sdk/util-defaults-mode-node": 3.279.0 "@aws-sdk/util-endpoints": 3.272.0 "@aws-sdk/util-retry": 3.272.0 "@aws-sdk/util-stream-browser": 3.272.0 @@ -503,7 +503,7 @@ __metadata: "@aws-sdk/xml-builder": 3.201.0 fast-xml-parser: 4.1.2 tslib: ^2.3.1 - checksum: f7f475b92c0cff800536fb910bb6ffefcee6e650208f1791ea64c95bcbb6c63ef7a55e3f72af44e2e730a53865857ac4b974f00cb7da1e369d742cc95e33f02a + checksum: 30447fefd4fd1c98388457aab53cdb6db26a2610389912f5a389136db7a5992d358adf5116c8102eb82262b8c78864902c78437390ec7ffe7ef076dd78ab3b9a languageName: node linkType: hard @@ -593,6 +593,46 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/client-sso-oidc@npm:3.281.0": + version: 3.281.0 + resolution: "@aws-sdk/client-sso-oidc@npm:3.281.0" + dependencies: + "@aws-crypto/sha256-browser": 3.0.0 + "@aws-crypto/sha256-js": 3.0.0 + "@aws-sdk/config-resolver": 3.272.0 + "@aws-sdk/fetch-http-handler": 3.272.0 + "@aws-sdk/hash-node": 3.272.0 + "@aws-sdk/invalid-dependency": 3.272.0 + "@aws-sdk/middleware-content-length": 3.272.0 + "@aws-sdk/middleware-endpoint": 3.272.0 + "@aws-sdk/middleware-host-header": 3.278.0 + "@aws-sdk/middleware-logger": 3.272.0 + "@aws-sdk/middleware-recursion-detection": 3.272.0 + "@aws-sdk/middleware-retry": 3.272.0 + "@aws-sdk/middleware-serde": 3.272.0 + "@aws-sdk/middleware-stack": 3.272.0 + "@aws-sdk/middleware-user-agent": 3.272.0 + "@aws-sdk/node-config-provider": 3.272.0 + "@aws-sdk/node-http-handler": 3.272.0 + "@aws-sdk/protocol-http": 3.272.0 + "@aws-sdk/smithy-client": 3.279.0 + "@aws-sdk/types": 3.272.0 + "@aws-sdk/url-parser": 3.272.0 + "@aws-sdk/util-base64": 3.208.0 + "@aws-sdk/util-body-length-browser": 3.188.0 + "@aws-sdk/util-body-length-node": 3.208.0 + "@aws-sdk/util-defaults-mode-browser": 3.279.0 + "@aws-sdk/util-defaults-mode-node": 3.279.0 + "@aws-sdk/util-endpoints": 3.272.0 + "@aws-sdk/util-retry": 3.272.0 + "@aws-sdk/util-user-agent-browser": 3.272.0 + "@aws-sdk/util-user-agent-node": 3.272.0 + "@aws-sdk/util-utf8": 3.254.0 + tslib: ^2.3.1 + checksum: ce0515dbdf02f82f4f301e31e9f63adfa8660e776e665f41cd59d9f1a9a4ee373c1fa489d3f2286f0da6ddb55905562d34d799d05eef8ab2f04d9a4133e3b228 + languageName: node + linkType: hard + "@aws-sdk/client-sso@npm:3.272.0": version: 3.272.0 resolution: "@aws-sdk/client-sso@npm:3.272.0" @@ -633,7 +673,47 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/client-sts@npm:3.276.0, @aws-sdk/client-sts@npm:^3.208.0": +"@aws-sdk/client-sso@npm:3.281.0": + version: 3.281.0 + resolution: "@aws-sdk/client-sso@npm:3.281.0" + dependencies: + "@aws-crypto/sha256-browser": 3.0.0 + "@aws-crypto/sha256-js": 3.0.0 + "@aws-sdk/config-resolver": 3.272.0 + "@aws-sdk/fetch-http-handler": 3.272.0 + "@aws-sdk/hash-node": 3.272.0 + "@aws-sdk/invalid-dependency": 3.272.0 + "@aws-sdk/middleware-content-length": 3.272.0 + "@aws-sdk/middleware-endpoint": 3.272.0 + "@aws-sdk/middleware-host-header": 3.278.0 + "@aws-sdk/middleware-logger": 3.272.0 + "@aws-sdk/middleware-recursion-detection": 3.272.0 + "@aws-sdk/middleware-retry": 3.272.0 + "@aws-sdk/middleware-serde": 3.272.0 + "@aws-sdk/middleware-stack": 3.272.0 + "@aws-sdk/middleware-user-agent": 3.272.0 + "@aws-sdk/node-config-provider": 3.272.0 + "@aws-sdk/node-http-handler": 3.272.0 + "@aws-sdk/protocol-http": 3.272.0 + "@aws-sdk/smithy-client": 3.279.0 + "@aws-sdk/types": 3.272.0 + "@aws-sdk/url-parser": 3.272.0 + "@aws-sdk/util-base64": 3.208.0 + "@aws-sdk/util-body-length-browser": 3.188.0 + "@aws-sdk/util-body-length-node": 3.208.0 + "@aws-sdk/util-defaults-mode-browser": 3.279.0 + "@aws-sdk/util-defaults-mode-node": 3.279.0 + "@aws-sdk/util-endpoints": 3.272.0 + "@aws-sdk/util-retry": 3.272.0 + "@aws-sdk/util-user-agent-browser": 3.272.0 + "@aws-sdk/util-user-agent-node": 3.272.0 + "@aws-sdk/util-utf8": 3.254.0 + tslib: ^2.3.1 + checksum: 6607a853af57c435ce09c81876b1a89d7658bd60a9468f8c888273364a50d35c431e823302a7f6e5366ce6b947028a2ce6451171f5dfd869443e2569f2bb9c6d + languageName: node + linkType: hard + +"@aws-sdk/client-sts@npm:3.276.0": version: 3.276.0 resolution: "@aws-sdk/client-sts@npm:3.276.0" dependencies: @@ -677,6 +757,50 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/client-sts@npm:3.281.0, @aws-sdk/client-sts@npm:^3.208.0": + version: 3.281.0 + resolution: "@aws-sdk/client-sts@npm:3.281.0" + dependencies: + "@aws-crypto/sha256-browser": 3.0.0 + "@aws-crypto/sha256-js": 3.0.0 + "@aws-sdk/config-resolver": 3.272.0 + "@aws-sdk/credential-provider-node": 3.281.0 + "@aws-sdk/fetch-http-handler": 3.272.0 + "@aws-sdk/hash-node": 3.272.0 + "@aws-sdk/invalid-dependency": 3.272.0 + "@aws-sdk/middleware-content-length": 3.272.0 + "@aws-sdk/middleware-endpoint": 3.272.0 + "@aws-sdk/middleware-host-header": 3.278.0 + "@aws-sdk/middleware-logger": 3.272.0 + "@aws-sdk/middleware-recursion-detection": 3.272.0 + "@aws-sdk/middleware-retry": 3.272.0 + "@aws-sdk/middleware-sdk-sts": 3.272.0 + "@aws-sdk/middleware-serde": 3.272.0 + "@aws-sdk/middleware-signing": 3.272.0 + "@aws-sdk/middleware-stack": 3.272.0 + "@aws-sdk/middleware-user-agent": 3.272.0 + "@aws-sdk/node-config-provider": 3.272.0 + "@aws-sdk/node-http-handler": 3.272.0 + "@aws-sdk/protocol-http": 3.272.0 + "@aws-sdk/smithy-client": 3.279.0 + "@aws-sdk/types": 3.272.0 + "@aws-sdk/url-parser": 3.272.0 + "@aws-sdk/util-base64": 3.208.0 + "@aws-sdk/util-body-length-browser": 3.188.0 + "@aws-sdk/util-body-length-node": 3.208.0 + "@aws-sdk/util-defaults-mode-browser": 3.279.0 + "@aws-sdk/util-defaults-mode-node": 3.279.0 + "@aws-sdk/util-endpoints": 3.272.0 + "@aws-sdk/util-retry": 3.272.0 + "@aws-sdk/util-user-agent-browser": 3.272.0 + "@aws-sdk/util-user-agent-node": 3.272.0 + "@aws-sdk/util-utf8": 3.254.0 + fast-xml-parser: 4.1.2 + tslib: ^2.3.1 + checksum: c88b660279ca6fe56cb8ac7bb245a417b9ccd1a973b7e7c2b511b254f2eace11c92826c80f84423988d47796f1fb18b09363f867d9ffce436ae81f10695e31e5 + languageName: node + linkType: hard + "@aws-sdk/config-resolver@npm:3.272.0": version: 3.272.0 resolution: "@aws-sdk/config-resolver@npm:3.272.0" @@ -690,15 +814,15 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/credential-provider-cognito-identity@npm:3.276.0": - version: 3.276.0 - resolution: "@aws-sdk/credential-provider-cognito-identity@npm:3.276.0" +"@aws-sdk/credential-provider-cognito-identity@npm:3.281.0": + version: 3.281.0 + resolution: "@aws-sdk/credential-provider-cognito-identity@npm:3.281.0" dependencies: - "@aws-sdk/client-cognito-identity": 3.276.0 + "@aws-sdk/client-cognito-identity": 3.281.0 "@aws-sdk/property-provider": 3.272.0 "@aws-sdk/types": 3.272.0 tslib: ^2.3.1 - checksum: 2d255475f08beeccd000745b2f2c46553559fd6fe15c0ea9960956655535fb927df9ec3431cf743b80f9a460d033ede7e1c47e91aff44956559a70c5f43f7bab + checksum: 35a0c2193aafd329e0ecbb66bdb5630d707a3cb2ad75969a847a72306518c8eb08cf46f6aebd461ba824fe444bdf58384cc45f3714d024d3c636913f1656932d languageName: node linkType: hard @@ -743,7 +867,24 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/credential-provider-node@npm:3.272.0, @aws-sdk/credential-provider-node@npm:^3.208.0": +"@aws-sdk/credential-provider-ini@npm:3.281.0": + version: 3.281.0 + resolution: "@aws-sdk/credential-provider-ini@npm:3.281.0" + dependencies: + "@aws-sdk/credential-provider-env": 3.272.0 + "@aws-sdk/credential-provider-imds": 3.272.0 + "@aws-sdk/credential-provider-process": 3.272.0 + "@aws-sdk/credential-provider-sso": 3.281.0 + "@aws-sdk/credential-provider-web-identity": 3.272.0 + "@aws-sdk/property-provider": 3.272.0 + "@aws-sdk/shared-ini-file-loader": 3.272.0 + "@aws-sdk/types": 3.272.0 + tslib: ^2.3.1 + checksum: 3be8151f2dd7a09b0f3f887e83e43eaf1bc22a7d25e5c91397dbc756ef3df53667001ef39d276e545fad7d1b9680a050fb0aad6ac65c1ee7be593b9c2d353d39 + languageName: node + linkType: hard + +"@aws-sdk/credential-provider-node@npm:3.272.0": version: 3.272.0 resolution: "@aws-sdk/credential-provider-node@npm:3.272.0" dependencies: @@ -761,6 +902,24 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/credential-provider-node@npm:3.281.0, @aws-sdk/credential-provider-node@npm:^3.208.0": + version: 3.281.0 + resolution: "@aws-sdk/credential-provider-node@npm:3.281.0" + dependencies: + "@aws-sdk/credential-provider-env": 3.272.0 + "@aws-sdk/credential-provider-imds": 3.272.0 + "@aws-sdk/credential-provider-ini": 3.281.0 + "@aws-sdk/credential-provider-process": 3.272.0 + "@aws-sdk/credential-provider-sso": 3.281.0 + "@aws-sdk/credential-provider-web-identity": 3.272.0 + "@aws-sdk/property-provider": 3.272.0 + "@aws-sdk/shared-ini-file-loader": 3.272.0 + "@aws-sdk/types": 3.272.0 + tslib: ^2.3.1 + checksum: 583eaba8fac99c7c05ee35f72946b4df2da4ddc620ae8d70a1f1211a0e1ec032616971649cbd2a825d0208b8f3361a61d86a68a56a94eb4075f931988a659b6e + languageName: node + linkType: hard + "@aws-sdk/credential-provider-process@npm:3.272.0": version: 3.272.0 resolution: "@aws-sdk/credential-provider-process@npm:3.272.0" @@ -787,6 +946,20 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/credential-provider-sso@npm:3.281.0": + version: 3.281.0 + resolution: "@aws-sdk/credential-provider-sso@npm:3.281.0" + dependencies: + "@aws-sdk/client-sso": 3.281.0 + "@aws-sdk/property-provider": 3.272.0 + "@aws-sdk/shared-ini-file-loader": 3.272.0 + "@aws-sdk/token-providers": 3.281.0 + "@aws-sdk/types": 3.272.0 + tslib: ^2.3.1 + checksum: e1aa53df55352047993c2a63dece7e9f7eaab5358237ae666d6ca9f929fc650cf5a20d140d90d8fb10fdba7a9e6164a709a45ab6665b1ab862a21676d3b3b3dc + languageName: node + linkType: hard + "@aws-sdk/credential-provider-web-identity@npm:3.272.0": version: 3.272.0 resolution: "@aws-sdk/credential-provider-web-identity@npm:3.272.0" @@ -798,26 +971,26 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/credential-providers@npm:^3.208.0": - version: 3.276.0 - resolution: "@aws-sdk/credential-providers@npm:3.276.0" +"@aws-sdk/credential-providers@npm:^3.208.0, @aws-sdk/credential-providers@npm:^3.276.0": + version: 3.281.0 + resolution: "@aws-sdk/credential-providers@npm:3.281.0" dependencies: - "@aws-sdk/client-cognito-identity": 3.276.0 - "@aws-sdk/client-sso": 3.272.0 - "@aws-sdk/client-sts": 3.276.0 - "@aws-sdk/credential-provider-cognito-identity": 3.276.0 + "@aws-sdk/client-cognito-identity": 3.281.0 + "@aws-sdk/client-sso": 3.281.0 + "@aws-sdk/client-sts": 3.281.0 + "@aws-sdk/credential-provider-cognito-identity": 3.281.0 "@aws-sdk/credential-provider-env": 3.272.0 "@aws-sdk/credential-provider-imds": 3.272.0 - "@aws-sdk/credential-provider-ini": 3.272.0 - "@aws-sdk/credential-provider-node": 3.272.0 + "@aws-sdk/credential-provider-ini": 3.281.0 + "@aws-sdk/credential-provider-node": 3.281.0 "@aws-sdk/credential-provider-process": 3.272.0 - "@aws-sdk/credential-provider-sso": 3.272.0 + "@aws-sdk/credential-provider-sso": 3.281.0 "@aws-sdk/credential-provider-web-identity": 3.272.0 "@aws-sdk/property-provider": 3.272.0 "@aws-sdk/shared-ini-file-loader": 3.272.0 "@aws-sdk/types": 3.272.0 tslib: ^2.3.1 - checksum: 825fb0feda57ef98cc11ab3febc2a337161193dfa24bcc31ad2b47ecb4af564b3b5a5a0d9c17fd1a3ec118321d21fc515948980ba50c323e21ed79905c13dfe4 + checksum: 48e25c96eafd9e5b8144144d4e87586f9d0be16b1d72fb006ae14b9396b43a16ec595a0d841011af41bcb55f09ed799fb7423346b7737e7a34fca56a050c71e1 languageName: node linkType: hard @@ -1061,6 +1234,17 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/middleware-host-header@npm:3.278.0": + version: 3.278.0 + resolution: "@aws-sdk/middleware-host-header@npm:3.278.0" + dependencies: + "@aws-sdk/protocol-http": 3.272.0 + "@aws-sdk/types": 3.272.0 + tslib: ^2.3.1 + checksum: 5b9762f80a8b6041cbe62680e34ddfb0f9d6f687f2f39aa117b1f0a692f594312371cf109c090fe93ccf8084cee924cf3dc134c1d2c929012df4593edaf492bf + languageName: node + linkType: hard + "@aws-sdk/middleware-location-constraint@npm:3.272.0": version: 3.272.0 resolution: "@aws-sdk/middleware-location-constraint@npm:3.272.0" @@ -1347,6 +1531,17 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/smithy-client@npm:3.279.0": + version: 3.279.0 + resolution: "@aws-sdk/smithy-client@npm:3.279.0" + dependencies: + "@aws-sdk/middleware-stack": 3.272.0 + "@aws-sdk/types": 3.272.0 + tslib: ^2.3.1 + checksum: 43d933b714ba7249d7f9f007e6e107d88d34e76db2cf934c43f38b6039699da450227f25bf559a3a6f12f9f62c4dec6dd5c4dda2205e6889e7d530521b879d61 + languageName: node + linkType: hard + "@aws-sdk/token-providers@npm:3.272.0": version: 3.272.0 resolution: "@aws-sdk/token-providers@npm:3.272.0" @@ -1360,6 +1555,19 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/token-providers@npm:3.281.0": + version: 3.281.0 + resolution: "@aws-sdk/token-providers@npm:3.281.0" + dependencies: + "@aws-sdk/client-sso-oidc": 3.281.0 + "@aws-sdk/property-provider": 3.272.0 + "@aws-sdk/shared-ini-file-loader": 3.272.0 + "@aws-sdk/types": 3.272.0 + tslib: ^2.3.1 + checksum: 15b7ba37cf169662f2ddd85d90b6fb5d077593e6316914b3de381b4c68a613664dc7688848512feb1aa82018345b2ce8d0a33f55878e96d461c2c87486825728 + languageName: node + linkType: hard + "@aws-sdk/types@npm:3.208.0": version: 3.208.0 resolution: "@aws-sdk/types@npm:3.208.0" @@ -1367,7 +1575,7 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/types@npm:3.272.0, @aws-sdk/types@npm:^3.208.0, @aws-sdk/types@npm:^3.222.0": +"@aws-sdk/types@npm:3.272.0, @aws-sdk/types@npm:^3.208.0, @aws-sdk/types@npm:^3.222.0, @aws-sdk/types@npm:^3.272.0": version: 3.272.0 resolution: "@aws-sdk/types@npm:3.272.0" dependencies: @@ -1455,6 +1663,18 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/util-defaults-mode-browser@npm:3.279.0": + version: 3.279.0 + resolution: "@aws-sdk/util-defaults-mode-browser@npm:3.279.0" + dependencies: + "@aws-sdk/property-provider": 3.272.0 + "@aws-sdk/types": 3.272.0 + bowser: ^2.11.0 + tslib: ^2.3.1 + checksum: 727700ae9c741a24cb8d30991344d778ca5e9ec3ad30364a63f22af8889f03a5fedecad87c76b7022118ab2c6a3dfc48abd530502b7e1f0926bf467081189645 + languageName: node + linkType: hard + "@aws-sdk/util-defaults-mode-node@npm:3.272.0": version: 3.272.0 resolution: "@aws-sdk/util-defaults-mode-node@npm:3.272.0" @@ -1469,6 +1689,20 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/util-defaults-mode-node@npm:3.279.0": + version: 3.279.0 + resolution: "@aws-sdk/util-defaults-mode-node@npm:3.279.0" + dependencies: + "@aws-sdk/config-resolver": 3.272.0 + "@aws-sdk/credential-provider-imds": 3.272.0 + "@aws-sdk/node-config-provider": 3.272.0 + "@aws-sdk/property-provider": 3.272.0 + "@aws-sdk/types": 3.272.0 + tslib: ^2.3.1 + checksum: 8b1e89a9ef092c6a25d354823ed3e172a2f6415389f7f66034a8571321b8100b909435a238097f016dceb58a4894ebebd8a52e33698f069f8a9d3c5bb6bd633a + languageName: node + linkType: hard + "@aws-sdk/util-endpoints@npm:3.272.0": version: 3.272.0 resolution: "@aws-sdk/util-endpoints@npm:3.272.0" @@ -1530,7 +1764,7 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/util-stream-node@npm:3.272.0": +"@aws-sdk/util-stream-node@npm:3.272.0, @aws-sdk/util-stream-node@npm:^3.272.0": version: 3.272.0 resolution: "@aws-sdk/util-stream-node@npm:3.272.0" dependencies: @@ -3422,6 +3656,11 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/backend-common@workspace:packages/backend-common" dependencies: + "@aws-sdk/abort-controller": ^3.272.0 + "@aws-sdk/client-s3": ^3.276.0 + "@aws-sdk/credential-providers": ^3.276.0 + "@aws-sdk/types": ^3.272.0 + "@aws-sdk/util-stream-node": ^3.272.0 "@backstage/backend-app-api": "workspace:^" "@backstage/backend-dev-utils": "workspace:^" "@backstage/backend-plugin-api": "workspace:^" @@ -3432,6 +3671,7 @@ __metadata: "@backstage/config-loader": "workspace:^" "@backstage/errors": "workspace:^" "@backstage/integration": "workspace:^" + "@backstage/integration-aws-node": "workspace:^" "@backstage/types": "workspace:^" "@google-cloud/storage": ^6.0.0 "@keyv/memcache": ^1.3.5 @@ -3460,7 +3700,7 @@ __metadata: "@types/webpack-env": ^1.15.2 "@types/yauzl": ^2.10.0 archiver: ^5.0.2 - aws-sdk: ^2.840.0 + aws-sdk-client-mock: ^2.0.1 aws-sdk-mock: ^5.2.1 base64-stream: ^1.0.0 better-sqlite3: ^8.0.0 @@ -3473,7 +3713,6 @@ __metadata: fs-extra: 10.1.0 git-url-parse: ^13.0.0 helmet: ^6.0.0 - http-errors: ^2.0.0 isomorphic-git: ^1.8.0 jose: ^4.6.0 keyv: ^4.5.2 @@ -17509,7 +17748,7 @@ __metadata: languageName: node linkType: hard -"aws-sdk-client-mock@npm:^2.0.0": +"aws-sdk-client-mock@npm:^2.0.0, aws-sdk-client-mock@npm:^2.0.1": version: 2.0.1 resolution: "aws-sdk-client-mock@npm:2.0.1" dependencies: From bb4d8f42985df435993e534d8707e944ca1d48cd Mon Sep 17 00:00:00 2001 From: Lucas Guarisco Date: Tue, 28 Feb 2023 19:57:33 -0300 Subject: [PATCH 068/147] Restore http-errors Signed-off-by: Lucas Guarisco --- packages/backend-common/package.json | 1 + yarn.lock | 1 + 2 files changed, 2 insertions(+) diff --git a/packages/backend-common/package.json b/packages/backend-common/package.json index 8a6a63fd91..de5f972fab 100644 --- a/packages/backend-common/package.json +++ b/packages/backend-common/package.json @@ -136,6 +136,7 @@ "aws-sdk-client-mock": "^2.0.1", "aws-sdk-mock": "^5.2.1", "better-sqlite3": "^8.0.0", + "http-errors": "^2.0.0", "mock-fs": "^5.1.0", "msw": "^1.0.0", "mysql2": "^2.2.5", diff --git a/yarn.lock b/yarn.lock index d1a0bd9439..acda53d655 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3713,6 +3713,7 @@ __metadata: fs-extra: 10.1.0 git-url-parse: ^13.0.0 helmet: ^6.0.0 + http-errors: ^2.0.0 isomorphic-git: ^1.8.0 jose: ^4.6.0 keyv: ^4.5.2 From 0fc1a48c0ded33145f0224970fcc9ac715f19436 Mon Sep 17 00:00:00 2001 From: Lucas Guarisco Date: Wed, 1 Mar 2023 15:39:21 -0300 Subject: [PATCH 069/147] Remove unused worker object Signed-off-by: Lucas Guarisco --- packages/backend-common/src/reading/AwsS3UrlReader.test.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/packages/backend-common/src/reading/AwsS3UrlReader.test.ts b/packages/backend-common/src/reading/AwsS3UrlReader.test.ts index 76f23148aa..094bdc9d65 100644 --- a/packages/backend-common/src/reading/AwsS3UrlReader.test.ts +++ b/packages/backend-common/src/reading/AwsS3UrlReader.test.ts @@ -18,8 +18,6 @@ import { ConfigReader } from '@backstage/config'; import { JsonObject } from '@backstage/types'; import { getVoidLogger } from '../logging'; import { DefaultReadTreeResponseFactory } from './tree'; -import { setupServer } from 'msw/node'; -import { setupRequestMockHandlers } from '@backstage/backend-test-utils'; import { DEFAULT_REGION, AwsS3UrlReader, parseUrl } from './AwsS3UrlReader'; import { AwsS3Integration, @@ -130,8 +128,6 @@ describe('parseUrl', () => { describe('AwsS3UrlReader', () => { const s3Client = mockClient(S3Client); - const worker = setupServer(); - setupRequestMockHandlers(worker); const createReader = (config: JsonObject): UrlReaderPredicateTuple[] => { return AwsS3UrlReader.factory({ From 1b37850698be2ae713774686d5a285adec55e2dd Mon Sep 17 00:00:00 2001 From: Lucas Guarisco Date: Wed, 1 Mar 2023 15:40:11 -0300 Subject: [PATCH 070/147] Modify AwsS3DiscoveryProcessor to use aws-sdk v3 Signed-off-by: Lucas Guarisco --- .../catalog-backend-module-aws/package.json | 3 ++ .../AwsS3DiscoveryProcessor.test.ts | 41 +++++++++++-------- yarn.lock | 5 ++- 3 files changed, 32 insertions(+), 17 deletions(-) diff --git a/plugins/catalog-backend-module-aws/package.json b/plugins/catalog-backend-module-aws/package.json index 6db1b8aa11..4883d34425 100644 --- a/plugins/catalog-backend-module-aws/package.json +++ b/plugins/catalog-backend-module-aws/package.json @@ -45,6 +45,7 @@ "clean": "backstage-cli package clean" }, "dependencies": { + "@aws-sdk/client-s3": "^3.281.0", "@backstage/backend-common": "workspace:^", "@backstage/backend-plugin-api": "workspace:^", "@backstage/backend-tasks": "workspace:^", @@ -64,9 +65,11 @@ "winston": "^3.2.1" }, "devDependencies": { + "@aws-sdk/util-stream-node": "^3.272.0", "@backstage/backend-test-utils": "workspace:^", "@backstage/cli": "workspace:^", "@types/lodash": "^4.14.151", + "aws-sdk-client-mock": "^2.0.1", "aws-sdk-mock": "^5.2.1", "luxon": "^3.0.0", "yaml": "^2.0.0" diff --git a/plugins/catalog-backend-module-aws/src/processors/AwsS3DiscoveryProcessor.test.ts b/plugins/catalog-backend-module-aws/src/processors/AwsS3DiscoveryProcessor.test.ts index 6aab7b2bec..ef540da7f5 100644 --- a/plugins/catalog-backend-module-aws/src/processors/AwsS3DiscoveryProcessor.test.ts +++ b/plugins/catalog-backend-module-aws/src/processors/AwsS3DiscoveryProcessor.test.ts @@ -22,29 +22,26 @@ import { CatalogProcessorResult, processingResult, } from '@backstage/plugin-catalog-backend'; -import AWSMock from 'aws-sdk-mock'; -import aws from 'aws-sdk'; +import { + S3Client, + ListObjectsV2Command, + ListObjectsV2Output, + GetObjectCommand, +} from '@aws-sdk/client-s3'; +import { mockClient } from 'aws-sdk-client-mock'; +import { sdkStreamMixin } from '@aws-sdk/util-stream-node'; +import fs from 'fs'; import path from 'path'; import YAML from 'yaml'; -AWSMock.setSDKInstance(aws); -const object: aws.S3.Types.Object = { +const s3Client = mockClient(S3Client); +const object: Object = { Key: 'awsS3-mock-object.txt', }; -const objectList: aws.S3.ObjectList = [object]; -const output: aws.S3.Types.ListObjectsV2Output = { +const objectList: Object[] = [object]; +const output: ListObjectsV2Output = { Contents: objectList, }; -AWSMock.mock('S3', 'listObjectsV2', output); -AWSMock.mock( - 'S3', - 'getObject', - Buffer.from( - require('fs').readFileSync( - path.resolve(__dirname, '__fixtures__/awsS3-mock-object.txt'), - ), - ), -); const logger = getVoidLogger(); const reader = UrlReaders.default({ @@ -61,6 +58,18 @@ describe('readLocation', () => { target: 'https://testbucket.s3.us-east-2.amazonaws.com', }; + beforeEach(() => { + s3Client.reset(); + s3Client.on(ListObjectsV2Command).resolves(output); + s3Client.on(GetObjectCommand).resolves({ + Body: sdkStreamMixin( + fs.createReadStream( + path.resolve(__dirname, '__fixtures__/awsS3-mock-object.txt'), + ), + ), + }); + }); + it('should load from url', async () => { const generated = (await new Promise(emit => processor.readLocation( diff --git a/yarn.lock b/yarn.lock index acda53d655..82321cb4ca 100644 --- a/yarn.lock +++ b/yarn.lock @@ -445,7 +445,7 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/client-s3@npm:^3.208.0, @aws-sdk/client-s3@npm:^3.276.0": +"@aws-sdk/client-s3@npm:^3.208.0, @aws-sdk/client-s3@npm:^3.276.0, @aws-sdk/client-s3@npm:^3.281.0": version: 3.281.0 resolution: "@aws-sdk/client-s3@npm:3.281.0" dependencies: @@ -5177,6 +5177,8 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-catalog-backend-module-aws@workspace:plugins/catalog-backend-module-aws" dependencies: + "@aws-sdk/client-s3": ^3.281.0 + "@aws-sdk/util-stream-node": ^3.272.0 "@backstage/backend-common": "workspace:^" "@backstage/backend-plugin-api": "workspace:^" "@backstage/backend-tasks": "workspace:^" @@ -5193,6 +5195,7 @@ __metadata: "@backstage/types": "workspace:^" "@types/lodash": ^4.14.151 aws-sdk: ^2.840.0 + aws-sdk-client-mock: ^2.0.1 aws-sdk-mock: ^5.2.1 lodash: ^4.17.21 luxon: ^3.0.0 From 4b1ca13214305a233d3ab00fa329e8fa0baad4db Mon Sep 17 00:00:00 2001 From: Lucas Guarisco Date: Wed, 1 Mar 2023 16:49:52 -0300 Subject: [PATCH 071/147] updating changeset Signed-off-by: Lucas Guarisco --- .changeset/rotten-panthers-share.md | 1 + 1 file changed, 1 insertion(+) diff --git a/.changeset/rotten-panthers-share.md b/.changeset/rotten-panthers-share.md index 7c42c5347e..9851f3e8b2 100644 --- a/.changeset/rotten-panthers-share.md +++ b/.changeset/rotten-panthers-share.md @@ -1,5 +1,6 @@ --- '@backstage/backend-common': minor +'@backstage/plugin-catalog-backend-module-aws': minor --- AwsS3UrlReader upgraded to use aws-sdk v3 From 2dfc1b3ce5118ab3be5d47c27321faed08fa4c4c Mon Sep 17 00:00:00 2001 From: Lucas Guarisco Date: Wed, 1 Mar 2023 16:50:18 -0300 Subject: [PATCH 072/147] updating api-report Signed-off-by: Lucas Guarisco --- packages/backend-common/api-report.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/backend-common/api-report.md b/packages/backend-common/api-report.md index 1cde27877b..7a3b251510 100644 --- a/packages/backend-common/api-report.md +++ b/packages/backend-common/api-report.md @@ -6,7 +6,6 @@ /// /// -import aws from 'aws-sdk'; import { AwsS3Integration } from '@backstage/integration'; import { AzureIntegration } from '@backstage/integration'; import { BackendFeature } from '@backstage/backend-plugin-api'; @@ -51,6 +50,7 @@ import { ReadUrlOptions } from '@backstage/backend-plugin-api'; import { ReadUrlResponse } from '@backstage/backend-plugin-api'; import { RequestHandler } from 'express'; import { Router } from 'express'; +import { S3Client } from '@aws-sdk/client-s3'; import { SchedulerService } from '@backstage/backend-plugin-api'; import { SearchOptions } from '@backstage/backend-plugin-api'; import { SearchResponse } from '@backstage/backend-plugin-api'; @@ -67,13 +67,19 @@ import { Writable } from 'stream'; // @public export class AwsS3UrlReader implements UrlReader { constructor( + defaultConfig: Config, integration: AwsS3Integration, deps: { - s3: aws.S3; treeResponseFactory: ReadTreeResponseFactory; }, ); // (undocumented) + buildS3Client( + defaultConfig: Config, + region: string, + integration: AwsS3Integration, + ): Promise; + // (undocumented) static factory: ReaderFactory; // (undocumented) read(url: string): Promise; @@ -82,6 +88,8 @@ export class AwsS3UrlReader implements UrlReader { // (undocumented) readUrl(url: string, options?: ReadUrlOptions): Promise; // (undocumented) + retrieveS3ObjectData(stream: Readable): Promise; + // (undocumented) search(): Promise; // (undocumented) toString(): string; From 0aae45962960b5a17076e4532d919a0c661c83a9 Mon Sep 17 00:00:00 2001 From: Bogdan Nechyporenko Date: Thu, 2 Mar 2023 14:24:58 +0100 Subject: [PATCH 073/147] Fix the scaffolder validator for arrays when the item is a field in the object Signed-off-by: Bogdan Nechyporenko --- .changeset/silent-dryers-end.md | 5 ++ .../TemplatePage/createValidator.test.ts | 72 +++++++++++++++++++ .../TemplatePage/createValidator.ts | 52 +++++++------- 3 files changed, 104 insertions(+), 25 deletions(-) create mode 100644 .changeset/silent-dryers-end.md diff --git a/.changeset/silent-dryers-end.md b/.changeset/silent-dryers-end.md new file mode 100644 index 0000000000..642a5fb7da --- /dev/null +++ b/.changeset/silent-dryers-end.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder': minor +--- + +Fix the scaffolder validator for arrays when the item is a field in the object diff --git a/plugins/scaffolder/src/components/TemplatePage/createValidator.test.ts b/plugins/scaffolder/src/components/TemplatePage/createValidator.test.ts index f5be77811a..1858e40241 100644 --- a/plugins/scaffolder/src/components/TemplatePage/createValidator.test.ts +++ b/plugins/scaffolder/src/components/TemplatePage/createValidator.test.ts @@ -19,6 +19,12 @@ import { CustomFieldValidator } from '@backstage/plugin-scaffolder-react'; import { ApiHolder } from '@backstage/core-plugin-api'; import { FieldValidation, FormValidation } from '@rjsf/core'; +type CustomLinkType = { + url: string; + title: string; + icon: string; +}; + describe('createValidator', () => { const validators: Record> = { @@ -31,6 +37,23 @@ describe('createValidator', () => { fieldValidation.addError('Error !'); } }, + CustomLink: ( + values: unknown, + fieldValidation: FieldValidation, + _context: { apiHolder: ApiHolder }, + ) => { + const input = values as CustomLinkType[]; + for (const item of input) { + const validGitlabUrlRegex = + /gitlab\.(?:stg\.)?spotify\.com\?owner=.*&repo=.*/; + + if (!item || !validGitlabUrlRegex.test(item.url)) { + fieldValidation.addError( + `Make sure to put in a valid gitlab clone url.`, + ); + } + } + }, TagPicker: ( values: unknown, fieldValidation: FieldValidation, @@ -123,4 +146,53 @@ describe('createValidator', () => { expect(result).not.toBeNull(); expect(result.tags.addError).toHaveBeenCalledTimes(1); }); + + it('should call validator for array object property from a custom field extension', () => { + /* GIVEN */ + const rootSchema = { + title: 'My links', + properties: { + links: { + title: 'Links', + type: 'array', + items: { + type: 'object', + required: ['url', 'title', 'icon'], + properties: { + url: { + title: 'url', + description: 'url', + type: 'object', + 'ui:field': 'CustomLink', + }, + }, + }, + }, + }, + }; + const validator = createValidator(rootSchema, validators, context); + + const formData = { + links: [ + { + url: 'http://gitlab.spotify.nl/owener=me&repo=test', + icon: 'subject', + title: 'My repository for testing features', + } as CustomLinkType, + ], + }; + const errors = { + addError: jest.fn(), + links: { + addError: jest.fn(), + } as unknown as FormValidation, + } as unknown as FormValidation; + + /* WHEN */ + const result = validator(formData, errors); + + /* THEN */ + expect(result).not.toBeNull(); + expect(result.links.addError).toHaveBeenCalledTimes(1); + }); }); diff --git a/plugins/scaffolder/src/components/TemplatePage/createValidator.ts b/plugins/scaffolder/src/components/TemplatePage/createValidator.ts index 123a7e800e..8bfe8c8313 100644 --- a/plugins/scaffolder/src/components/TemplatePage/createValidator.ts +++ b/plugins/scaffolder/src/components/TemplatePage/createValidator.ts @@ -50,40 +50,42 @@ export const createValidator = ( for (const [key, propData] of Object.entries(formData)) { const propValidation = errors[key]; - const propSchemaProps = schemaProps[key]; - if (isObject(propData)) { - if (isObject(propSchemaProps)) { - validate( - propSchemaProps, - propData as JsonObject, - propValidation as FormValidation, - ); + const doValidate = (item: JsonValue | undefined) => { + if (item && isObject(item)) { + const fieldName = item['ui:field'] as string; + if (fieldName && typeof validators[fieldName] === 'function') { + validators[fieldName]!( + propData as JsonObject[], + propValidation, + context, + ); + } } + }; + + const propSchemaProps = schemaProps[key]; + if (isObject(propData) && isObject(propSchemaProps)) { + validate( + propSchemaProps, + propData as JsonObject, + propValidation as FormValidation, + ); } else if (isArray(propData)) { if (isObject(propSchemaProps)) { const { items } = propSchemaProps; if (isObject(items)) { - const fieldName = items['ui:field'] as string; - if (fieldName && typeof validators[fieldName] === 'function') { - validators[fieldName]!( - propData as JsonObject[], - propValidation, - context, - ); + if (items.type === 'object') { + const properties = (items?.properties ?? []) as JsonObject[]; + for (const [, value] of Object.entries(properties)) { + doValidate(value); + } + } else { + doValidate(items); } } } } else { - const fieldName = - isObject(propSchemaProps) && - (propSchemaProps['ui:field'] as string); - if (fieldName && typeof validators[fieldName] === 'function') { - validators[fieldName]!( - propData as JsonValue, - propValidation, - context, - ); - } + doValidate(propSchemaProps); } } } else if (customObject) { From 516068c139b421d2ed21d0f40883781e183a44b2 Mon Sep 17 00:00:00 2001 From: Jonathan Mezach Date: Thu, 2 Mar 2023 14:49:33 +0100 Subject: [PATCH 074/147] Replace logo Signed-off-by: Jonathan Mezach --- microsite/static/img/octopus-deploy.svg | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/microsite/static/img/octopus-deploy.svg b/microsite/static/img/octopus-deploy.svg index a3f7927617..45d8447277 100644 --- a/microsite/static/img/octopus-deploy.svg +++ b/microsite/static/img/octopus-deploy.svg @@ -1 +1,13 @@ - \ No newline at end of file + + + + + + From 1aeceee9fa29f16591759c98846679260a39c5c2 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 2 Mar 2023 15:30:43 +0100 Subject: [PATCH 075/147] chore: moving the guide to docs Signed-off-by: blam --- CONTRIBUTING.md | 60 ------------------------------- docs/overview/get-involved.md | 66 +++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+), 60 deletions(-) create mode 100644 docs/overview/get-involved.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c2df005a1c..70b0bcf842 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -8,66 +8,6 @@ Contributions are welcome, and they are greatly appreciated! Every little bit he Backstage is released under the Apache 2.0 License, and original creations contributed to this repo are accepted under the same license. -## Types of Contributions - -### Report bugs - -No one likes bugs. Report bugs as an issue [here](https://github.com/backstage/backstage/issues/new?template=bug_template.md). - -### Fix bugs or build new features - -Look through the GitHub issues for [bugs](https://github.com/backstage/backstage/labels/bug), [good first issues](https://github.com/backstage/backstage/labels/good%20first%20issue) or [help wanted](https://github.com/backstage/backstage/labels/help%20wanted). - -### Build a plugin - -The value of Backstage grows with every new plugin that gets added. Wouldn't it be fantastic if there was a plugin for every infrastructure project out there? We think so. And we would love your help. - -A great reference example of a plugin can be found on [our blog](https://backstage.io/blog/2020/04/06/lighthouse-plugin) (thanks [@fastfrwrd](https://github.com/fastfrwrd)!) - -What kind of plugins should/could be created? Some inspiration from the 120+ plugins that we have developed inside Spotify can be found [here](https://backstage.io/demos), but we will keep a running list of suggestions labeled with [[plugin]](https://github.com/backstage/backstage/labels/plugin). - -### Suggesting a plugin - -If you start developing a plugin that you aim to release as open source, we suggest that you create a [new Issue](https://github.com/backstage/backstage/issues/new?labels=plugin&template=plugin_template.md&title=%5BPlugin%5D+THE+PLUGIN+NAME). This helps the community know what plugins are in development. - -You can also use this process if you have an idea for a good plugin but you hope that someone else will pick up the work. - -### Adding Non-code Contributions - -Since there is such a large landscape of possible development, build, and deployment environments, we welcome community contributions in these areas in the [`/contrib`](https://github.com/backstage/backstage/tree/master/contrib) folder of the project. This is an excellent place to put things that help out the community at large, but which may not fit within the scope of the core product to support natively. Here, you will find Helm charts, alternative Docker images, and much more. - -### Write Documentation or improve the website - -The current documentation is very limited. Help us make the `/docs` folder come alive. - -Docs are published to [backstage.io/docs](https://backstage.io/docs). If you -contribute to the documentation, you might want to preview your changes before -submitting them. You'll find the website sources under [/microsite](/microsite) -with instructions for building and locally serving the website in the -[README](/microsite#readme). - -### Contribute to Storybook - -We think the best way to ensure different plugins provide a consistent experience is through a solid set of reusable UI/UX components. Backstage uses [Storybook](http://backstage.io/storybook). - -Either help us [create new components](https://github.com/backstage/backstage/labels/help%20wanted) or improve stories for the existing ones (look for files with `*.stories.tsx`). - -### Submit Feedback - -The best way to send feedback is to file [an issue](https://github.com/backstage/backstage/issues). - -If you are proposing a feature: - -- Explain in detail how it would work. -- Keep the scope as narrow as possible, to make it easier to implement. -- Use appropriate labels -- Remember that this is a volunteer-driven project, and that contributions - are welcome :) - -### Add your company to `ADOPTERS` - -Have you started using Backstage? Adding your company to [ADOPTERS](ADOPTERS.md) really helps the project, you can do this by filling out this [Adopter form](https://form.typeform.com/to/zcOaKikB). - ## Get Started! So...feel ready to jump in? Let's do this. 👏🏻💯 diff --git a/docs/overview/get-involved.md b/docs/overview/get-involved.md new file mode 100644 index 0000000000..675d0b23f3 --- /dev/null +++ b/docs/overview/get-involved.md @@ -0,0 +1,66 @@ +--- +id: get-involved +title: Get Involved +# prettier-ignore +description: How can you help us build Backstage? We welcome contributions of all kinds, from documentation to code to design. +--- + +We encourage contributions of all kinds, from documentation to code to design, here's some ideas on how you can help us build and improve Backstage! + +### Report bugs + +No one likes bugs. Report bugs as an issue [here](https://github.com/backstage/backstage/issues/new?template=bug_template.md). + +### Fix bugs or build new features + +Look through the GitHub issues for [bugs](https://github.com/backstage/backstage/labels/bug), [good first issues](https://github.com/backstage/backstage/labels/good%20first%20issue) or [help wanted](https://github.com/backstage/backstage/labels/help%20wanted). + +### Build a plugin + +The value of Backstage grows with every new plugin that gets added. Wouldn't it be fantastic if there was a plugin for every infrastructure project out there? We think so. And we would love your help. + +A great reference example of a plugin can be found on [our blog](https://backstage.io/blog/2020/04/06/lighthouse-plugin) (thanks [@fastfrwrd](https://github.com/fastfrwrd)!) + +What kind of plugins should/could be created? Some inspiration from the 120+ plugins that we have developed inside Spotify can be found [here](https://backstage.io/demos), but we will keep a running list of suggestions labeled with [[plugin]](https://github.com/backstage/backstage/labels/plugin). + +### Suggesting a plugin + +If you start developing a plugin that you aim to release as open source, we suggest that you create a [new Issue](https://github.com/backstage/backstage/issues/new?labels=plugin&template=plugin_template.md&title=%5BPlugin%5D+THE+PLUGIN+NAME). This helps the community know what plugins are in development. + +You can also use this process if you have an idea for a good plugin but you hope that someone else will pick up the work. + +### Adding Non-code Contributions + +Since there is such a large landscape of possible development, build, and deployment environments, we welcome community contributions in these areas in the [`/contrib`](https://github.com/backstage/backstage/tree/master/contrib) folder of the project. This is an excellent place to put things that help out the community at large, but which may not fit within the scope of the core product to support natively. Here, you will find Helm charts, alternative Docker images, and much more. + +### Write Documentation or improve the website + +The current documentation is very limited. Help us make the `/docs` folder come alive. + +Docs are published to [backstage.io/docs](https://backstage.io/docs). If you +contribute to the documentation, you might want to preview your changes before +submitting them. You'll find the website sources under [/microsite](/microsite) +with instructions for building and locally serving the website in the +[README](/microsite#readme). + +### Contribute to Storybook + +We think the best way to ensure different plugins provide a consistent experience is through a solid set of reusable UI/UX components. Backstage uses [Storybook](http://backstage.io/storybook). + +Either help us [create new components](https://github.com/backstage/backstage/labels/help%20wanted) or improve stories for the existing ones (look for files with `*.stories.tsx`). + +### Submit Feedback + +The best way to send feedback is to file [an issue](https://github.com/backstage/backstage/issues). + +If you are proposing a feature: + +- Explain in detail how it would work. +- Keep the scope as narrow as possible, to make it easier to implement. +- Use appropriate labels +- Remember that this is a volunteer-driven project, and that contributions + are welcome :) + +### Add your company to `ADOPTERS` + +Have you started using Backstage? Adding your company to [ADOPTERS](ADOPTERS.md) really helps the project, you can do this by filling out this [Adopter form](https://form.typeform.com/to/zcOaKikB). From ca4cdda5575ea0138dbb1407176d2d7618120717 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 2 Mar 2023 15:36:05 +0100 Subject: [PATCH 076/147] chore: links between docs Signed-off-by: blam --- CONTRIBUTING.md | 2 ++ docs/{overview => getting-started}/get-involved.md | 0 microsite-next/sidebars.json | 1 + 3 files changed, 3 insertions(+) rename docs/{overview => getting-started}/get-involved.md (100%) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 70b0bcf842..f816f1b6af 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -8,6 +8,8 @@ Contributions are welcome, and they are greatly appreciated! Every little bit he Backstage is released under the Apache 2.0 License, and original creations contributed to this repo are accepted under the same license. +You can find out more about the types of contributions over at [getting involved](https://backstage.io/docs/getting-started/get-involved)! + ## Get Started! So...feel ready to jump in? Let's do this. 👏🏻💯 diff --git a/docs/overview/get-involved.md b/docs/getting-started/get-involved.md similarity index 100% rename from docs/overview/get-involved.md rename to docs/getting-started/get-involved.md diff --git a/microsite-next/sidebars.json b/microsite-next/sidebars.json index f489771fa0..630e4474e6 100644 --- a/microsite-next/sidebars.json +++ b/microsite-next/sidebars.json @@ -46,6 +46,7 @@ "getting-started/keeping-backstage-updated", "getting-started/concepts", "getting-started/contributors", + "getting-started/get-involved", "getting-started/project-structure" ], "Local Development": [ From 6ca13414f25faaac6fcd9a95b0ada1f0ca3af71d Mon Sep 17 00:00:00 2001 From: Bogdan Nechyporenko Date: Thu, 2 Mar 2023 15:37:43 +0100 Subject: [PATCH 077/147] Fix the scaffolder validator for arrays when the item is a field in the object Signed-off-by: Bogdan Nechyporenko --- .../Stepper/createAsyncValidators.test.ts | 35 +++++++++++++++++++ .../Stepper/createAsyncValidators.ts | 20 +++++++++++ 2 files changed, 55 insertions(+) diff --git a/plugins/scaffolder-react/src/next/components/Stepper/createAsyncValidators.test.ts b/plugins/scaffolder-react/src/next/components/Stepper/createAsyncValidators.test.ts index 38543b2148..3633410769 100644 --- a/plugins/scaffolder-react/src/next/components/Stepper/createAsyncValidators.test.ts +++ b/plugins/scaffolder-react/src/next/components/Stepper/createAsyncValidators.test.ts @@ -406,4 +406,39 @@ describe('createAsyncValidators', () => { expect(validators.TagField).not.toHaveBeenCalled(); }); + + it('should call validator for array object property from a custom field extension', async () => { + const schema: JsonObject = { + type: 'object', + properties: { + links: { + title: 'Links', + type: 'array', + items: { + type: 'object', + required: ['url', 'title', 'icon'], + properties: { + url: { + title: 'url', + description: 'url', + type: 'object', + 'ui:field': 'CustomLinkField', + }, + }, + }, + }, + }, + }; + const validators = { CustomLinkField: jest.fn() }; + + const validate = createAsyncValidators(schema, validators, { + apiHolder: { get: jest.fn() }, + }); + + await validate({ + links: [{ url: 'http://my-url.spotify.com' }], + }); + + expect(validators.CustomLinkField).toHaveBeenCalled(); + }); }); diff --git a/plugins/scaffolder-react/src/next/components/Stepper/createAsyncValidators.ts b/plugins/scaffolder-react/src/next/components/Stepper/createAsyncValidators.ts index 31185d1c12..f5f3088c93 100644 --- a/plugins/scaffolder-react/src/next/components/Stepper/createAsyncValidators.ts +++ b/plugins/scaffolder-react/src/next/components/Stepper/createAsyncValidators.ts @@ -103,6 +103,26 @@ export const createAsyncValidators = ( itemsUiSchema, ); } + } else if ( + definitionInSchema && + definitionInSchema.items && + definitionInSchema.items.type === 'object' + ) { + const properties = (definitionInSchema.items?.properties ?? + []) as JsonObject[]; + for (const [, propValue] of Object.entries(properties)) { + if ('ui:field' in propValue) { + const { schema: itemsSchema, uiSchema: itemsUiSchema } = + extractSchemaFromStep(definitionInSchema.items); + await validateForm( + propValue['ui:field'] as string, + key, + value, + itemsSchema, + itemsUiSchema, + ); + } + } } else if (isObject(value)) { formValidation[key] = await validate(formData, path, value); } From 3ce12b6f0c8e61652ac7c7685144d7fadf6a9c78 Mon Sep 17 00:00:00 2001 From: Bogdan Nechyporenko Date: Thu, 2 Mar 2023 15:53:37 +0100 Subject: [PATCH 078/147] Fix the scaffolder validator for arrays when the item is a field in the object Signed-off-by: Bogdan Nechyporenko --- .../Stepper/createAsyncValidators.ts | 66 ++++++++----------- 1 file changed, 27 insertions(+), 39 deletions(-) diff --git a/plugins/scaffolder-react/src/next/components/Stepper/createAsyncValidators.ts b/plugins/scaffolder-react/src/next/components/Stepper/createAsyncValidators.ts index f5f3088c93..ceef701255 100644 --- a/plugins/scaffolder-react/src/next/components/Stepper/createAsyncValidators.ts +++ b/plugins/scaffolder-react/src/next/components/Stepper/createAsyncValidators.ts @@ -77,51 +77,39 @@ export const createAsyncValidators = ( const definitionInSchema = parsedSchema.getSchema(path, formData); const { schema, uiSchema } = extractSchemaFromStep(definitionInSchema); - if (definitionInSchema && 'ui:field' in definitionInSchema) { - if ('ui:field' in definitionInSchema) { - await validateForm( - definitionInSchema['ui:field'], - key, - value, - schema, - uiSchema, - ); - } - } else if ( - definitionInSchema && - definitionInSchema.items && - 'ui:field' in definitionInSchema.items - ) { - if ('ui:field' in definitionInSchema.items) { + const hasItems = definitionInSchema && definitionInSchema.items; + + const doValidateItem = async ( + propValue: JsonObject, + itemSchema: JsonObject, + itemUiSchema: NextFieldExtensionUiSchema, + ) => { + await validateForm( + propValue['ui:field'] as string, + key, + value, + itemSchema, + itemUiSchema, + ); + }; + + const doValidate = async (propValue: JsonObject) => { + if ('ui:field' in propValue) { const { schema: itemsSchema, uiSchema: itemsUiSchema } = extractSchemaFromStep(definitionInSchema.items); - await validateForm( - definitionInSchema.items['ui:field'], - key, - value, - itemsSchema, - itemsUiSchema, - ); + await doValidateItem(propValue, itemsSchema, itemsUiSchema); } - } else if ( - definitionInSchema && - definitionInSchema.items && - definitionInSchema.items.type === 'object' - ) { + }; + + if (definitionInSchema && 'ui:field' in definitionInSchema) { + await doValidateItem(definitionInSchema, schema, uiSchema); + } else if (hasItems && 'ui:field' in definitionInSchema.items) { + await doValidate(definitionInSchema.items); + } else if (hasItems && definitionInSchema.items.type === 'object') { const properties = (definitionInSchema.items?.properties ?? []) as JsonObject[]; for (const [, propValue] of Object.entries(properties)) { - if ('ui:field' in propValue) { - const { schema: itemsSchema, uiSchema: itemsUiSchema } = - extractSchemaFromStep(definitionInSchema.items); - await validateForm( - propValue['ui:field'] as string, - key, - value, - itemsSchema, - itemsUiSchema, - ); - } + await doValidate(propValue); } } else if (isObject(value)) { formValidation[key] = await validate(formData, path, value); From eebb6efe3088cee0420ce553729efec4fc16223d Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Thu, 2 Mar 2023 16:14:00 +0100 Subject: [PATCH 079/147] microsite: Fix missing missing image Signed-off-by: Johan Haals --- docs/features/software-catalog/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/features/software-catalog/index.md b/docs/features/software-catalog/index.md index 0326292e41..0e61b83af6 100644 --- a/docs/features/software-catalog/index.md +++ b/docs/features/software-catalog/index.md @@ -14,7 +14,7 @@ websites, libraries, data pipelines, etc). The catalog is built around the concept of [metadata YAML files](descriptor-format.md) stored together with the code, which are then harvested and visualized in Backstage. -![software-catalog](https://backstage.io/blog/assets/6/header.png) +![software-catalog](../../assets/header.png) ## How it works From 7d59c54e7df6e85191b908e2a2aa4abe89d1e5e5 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 2 Mar 2023 17:50:41 +0100 Subject: [PATCH 080/147] chore: bump old space size in order to fix microsite build Signed-off-by: blam --- .github/workflows/deploy_microsite.yml | 2 +- .github/workflows/verify_microsite-next.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy_microsite.yml b/.github/workflows/deploy_microsite.yml index ec7124ed35..b25dd90b84 100644 --- a/.github/workflows/deploy_microsite.yml +++ b/.github/workflows/deploy_microsite.yml @@ -14,7 +14,7 @@ jobs: env: CI: true - NODE_OPTIONS: --max-old-space-size=7168 + NODE_OPTIONS: --max-old-space-size=8192 DOCUSAURUS_SSR_CONCURRENCY: 5 steps: diff --git a/.github/workflows/verify_microsite-next.yml b/.github/workflows/verify_microsite-next.yml index 6c9edf2031..7db5f102a9 100644 --- a/.github/workflows/verify_microsite-next.yml +++ b/.github/workflows/verify_microsite-next.yml @@ -16,7 +16,7 @@ jobs: env: CI: true - NODE_OPTIONS: --max-old-space-size=4096 + NODE_OPTIONS: --max-old-space-size=8192 DOCUSAURUS_SSR_CONCURRENCY: 5 steps: From 052f3cc2d9dde62870fcbe5d93fffc904b7ab3c3 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 2 Mar 2023 18:24:44 +0100 Subject: [PATCH 081/147] docs/backend-system: add extension point example to plugin building docs Signed-off-by: Patrik Oldsberg --- .../building-plugins-and-modules/01-index.md | 56 ++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/docs/backend-system/building-plugins-and-modules/01-index.md b/docs/backend-system/building-plugins-and-modules/01-index.md index 1556b6b377..0e4dbcfd03 100644 --- a/docs/backend-system/building-plugins-and-modules/01-index.md +++ b/docs/backend-system/building-plugins-and-modules/01-index.md @@ -168,7 +168,61 @@ Whenever you want to allow modules to configure your plugin dynamically, for example in the way that the catalog backend lets catalog modules inject additional entity providers, you can use the extension points mechanism. This is described in detail with code examples in [the extension points architecture -article](../architecture/05-extension-points.md). +article](../architecture/05-extension-points.md), while the following is a more +slim example of how to implement an extension point for a plugin: + +```ts +import { createExtensionPoint } from '@backstage/backend-plugin-api'; + +// This is the extension point interface, which is how modules interact with your plugin. +export interface ExamplesExtensionPoint { + addExample(example: Example): void; +} + +// This is the extension point reference that encapsulates the above interface. +export const examplesExtensionPoint = + createExtensionPoint({ + id: 'example.examples', + }); + +// This is the implementation of the extension point, which is internal to your plugin. +class ExamplesExtension implements ExamplesExtensionPoint { + #examples: Example[] = []; + + addActions(example: Examples): void { + this.#examples.push(example); + } + + // Note that this method is internal to this implementation + getRegisteredExamples() { + return this.#examples; + } +} + +// The following shows how your plugin would register the extension point +// and use the features that other modules have registered. +export const examplePlugin = createBackendPlugin({ + pluginId: 'example', + register(env) { + const examplesExtensions = new ExamplesExtension(); + env.registerExtensionPoint(examplesExtensionPoint, examplesExtensions); + + env.registerInit({ + deps: { logger: coreServices.logger }, + async init({ logger }) { + // We can access `actionsExtension` directly, giving us access to the internal interface. + const examples = actionsExtension.getRegisteredActions(); + + logger.info(`The following examples have been registered: ${examples}`); + }, + }); + }, +}); +``` + +This is a very common type of extension point, one where modules are given the opportunity to register features to be used by the plugin. In this case modules are able to register examples that are then used by our examples plugin. + +Note that the public extension point interface only needs to expose the `addExample` method, while the `getRegisteredExamples()` method is kept internal to the plugin. ### Configuration From d0864ef9eb3a926b45051e5f438a660429c416b1 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 2 Mar 2023 19:06:30 +0100 Subject: [PATCH 082/147] chore: fixing broken links Signed-off-by: blam --- docs/getting-started/get-involved.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/getting-started/get-involved.md b/docs/getting-started/get-involved.md index 675d0b23f3..5d8dc35032 100644 --- a/docs/getting-started/get-involved.md +++ b/docs/getting-started/get-involved.md @@ -39,7 +39,7 @@ The current documentation is very limited. Help us make the `/docs` folder come Docs are published to [backstage.io/docs](https://backstage.io/docs). If you contribute to the documentation, you might want to preview your changes before -submitting them. You'll find the website sources under [/microsite](/microsite) +submitting them. You'll find the website sources under [/microsite](https://github.com/backstage/backstage/tree/master/microsite) with instructions for building and locally serving the website in the [README](/microsite#readme). @@ -63,4 +63,4 @@ If you are proposing a feature: ### Add your company to `ADOPTERS` -Have you started using Backstage? Adding your company to [ADOPTERS](ADOPTERS.md) really helps the project, you can do this by filling out this [Adopter form](https://form.typeform.com/to/zcOaKikB). +Have you started using Backstage? Adding your company to [ADOPTERS](https://github.com/backstage/backstage/blob/master/ADOPTERS.md) really helps the project, you can do this by filling out this [Adopter form](https://form.typeform.com/to/zcOaKikB). From 9b3bc42f1c3c522ba69afbb7a7604067d433809c Mon Sep 17 00:00:00 2001 From: Jos Craw Date: Fri, 3 Mar 2023 07:39:28 +1300 Subject: [PATCH 083/147] Update .changeset/pink-dolls-unite.md Co-authored-by: Johan Haals Signed-off-by: Jos Craw --- .changeset/pink-dolls-unite.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/pink-dolls-unite.md b/.changeset/pink-dolls-unite.md index f7c8b8c40c..d3c489cd2b 100644 --- a/.changeset/pink-dolls-unite.md +++ b/.changeset/pink-dolls-unite.md @@ -1,5 +1,5 @@ --- -'@backstage/plugin-linguist-backend': minor +'@backstage/plugin-linguist-backend': patch --- Added support for offline language data From 4eae5083108c768b57df421bfdbde720afd87597 Mon Sep 17 00:00:00 2001 From: Jos Craw Date: Fri, 3 Mar 2023 08:15:37 +1300 Subject: [PATCH 084/147] feat: changed to provide entire linguist-js options object Signed-off-by: Jos Craw --- .changeset/pink-dolls-unite.md | 2 +- plugins/linguist-backend/README.md | 9 ++++++--- plugins/linguist-backend/api-report.md | 4 ++-- .../linguist-backend/src/api/LinguistBackendApi.ts | 8 ++++---- plugins/linguist-backend/src/service/router.ts | 14 ++++++++++---- 5 files changed, 23 insertions(+), 14 deletions(-) diff --git a/.changeset/pink-dolls-unite.md b/.changeset/pink-dolls-unite.md index d3c489cd2b..aca62166b4 100644 --- a/.changeset/pink-dolls-unite.md +++ b/.changeset/pink-dolls-unite.md @@ -2,4 +2,4 @@ '@backstage/plugin-linguist-backend': patch --- -Added support for offline language data +Added support for linguist-js options. diff --git a/plugins/linguist-backend/README.md b/plugins/linguist-backend/README.md index 981cebc19e..46c067fb5a 100644 --- a/plugins/linguist-backend/README.md +++ b/plugins/linguist-backend/README.md @@ -85,12 +85,15 @@ return createRouter({ schedule: schedule, age: { days: 30 } }, { ...env }); With the `age` setup like this if the language breakdown is older than 15 days it will get regenerated. It's recommended that if you choose to use this configuration to set it to a large value - 30, 90, or 180 - as this data generally does not change drastically. -## Offline +## Linguist JS options -The default setup will pull the language data from GitHub, by setting `offline` to `true` a packaged offline version of this data is used instead. +The default setup will use the default [linguist-js](https://www.npmjs.com/package/linguist-js) options, a full list of the available options can be found [here](https://www.npmjs.com/package/linguist-js#API). ```ts -return createRouter({ schedule: schedule, offline: true }, { ...env }); +return createRouter( + { schedule: schedule, linguistJsOptions: { offline: true } }, + { ...env }, +); ``` ## Use Source Location diff --git a/plugins/linguist-backend/api-report.md b/plugins/linguist-backend/api-report.md index c1486ab3ae..8ac8b83dcd 100644 --- a/plugins/linguist-backend/api-report.md +++ b/plugins/linguist-backend/api-report.md @@ -35,7 +35,7 @@ export class LinguistBackendApi { batchSize?: number, useSourceLocation?: boolean, kind?: string[], - offline?: boolean, + linguistJsOptions?: Record, ); // (undocumented) getEntityLanguages(entityRef: string): Promise; @@ -83,7 +83,7 @@ export interface PluginOptions { // (undocumented) kind?: string[]; // (undocumented) - offline?: boolean; + linguistJsOptions?: Record; // (undocumented) schedule?: TaskScheduleDefinition; // (undocumented) diff --git a/plugins/linguist-backend/src/api/LinguistBackendApi.ts b/plugins/linguist-backend/src/api/LinguistBackendApi.ts index f58b913c2d..e0a3133255 100644 --- a/plugins/linguist-backend/src/api/LinguistBackendApi.ts +++ b/plugins/linguist-backend/src/api/LinguistBackendApi.ts @@ -57,7 +57,7 @@ export class LinguistBackendApi { private readonly batchSize?: number; private readonly useSourceLocation?: boolean; private readonly kind: string[]; - private readonly offline?: boolean; + private readonly linguistJsOptions?: Record; public constructor( logger: Logger, store: LinguistBackendStore, @@ -68,7 +68,7 @@ export class LinguistBackendApi { batchSize?: number, useSourceLocation?: boolean, kind?: string[], - offline?: boolean, + linguistJsOptions?: Record, ) { this.logger = logger; this.store = store; @@ -80,7 +80,7 @@ export class LinguistBackendApi { this.age = age; this.useSourceLocation = useSourceLocation; this.kind = kindOrDefault(kind); - this.offline = offline; + this.linguistJsOptions = linguistJsOptions; } public async getEntityLanguages(entityRef: string): Promise { @@ -193,7 +193,7 @@ export class LinguistBackendApi { const readTreeResponse = await this.urlReader.readTree(url); const dir = await readTreeResponse.dir(); - const results = await linguist(dir, { offline: this.offline }); + const results = await linguist(dir, this.linguistJsOptions); try { const totalBytes = results.languages.bytes; diff --git a/plugins/linguist-backend/src/service/router.ts b/plugins/linguist-backend/src/service/router.ts index 4a279aba7d..d10f185261 100644 --- a/plugins/linguist-backend/src/service/router.ts +++ b/plugins/linguist-backend/src/service/router.ts @@ -38,7 +38,7 @@ export interface PluginOptions { age?: HumanDuration; batchSize?: number; useSourceLocation?: boolean; - offline?: boolean; + linguistJsOptions?: Record; kind?: string[]; } @@ -58,8 +58,14 @@ export async function createRouter( pluginOptions: PluginOptions, routerOptions: RouterOptions, ): Promise { - const { schedule, age, batchSize, useSourceLocation, kind, offline } = - pluginOptions; + const { + schedule, + age, + batchSize, + useSourceLocation, + kind, + linguistJsOptions, + } = pluginOptions; const { logger, reader, database, discovery, scheduler, tokenManager } = routerOptions; @@ -80,7 +86,7 @@ export async function createRouter( batchSize, useSourceLocation, kind, - offline, + linguistJsOptions, ); if (scheduler && schedule) { From caa09a961c380a6f1c82e5f49757df1a3402a43d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 2 Mar 2023 21:47:01 +0000 Subject: [PATCH 085/147] chore(deps): bump dns-packet from 5.3.1 to 5.4.0 Bumps [dns-packet](https://github.com/mafintosh/dns-packet) from 5.3.1 to 5.4.0. - [Release notes](https://github.com/mafintosh/dns-packet/releases) - [Changelog](https://github.com/mafintosh/dns-packet/blob/master/CHANGELOG.md) - [Commits](https://github.com/mafintosh/dns-packet/compare/v5.3.1...5.4.0) --- updated-dependencies: - dependency-name: dns-packet dependency-type: indirect ... Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index e92c5d0b13..fe23c357e4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -21133,11 +21133,11 @@ __metadata: linkType: hard "dns-packet@npm:^5.2.2": - version: 5.3.1 - resolution: "dns-packet@npm:5.3.1" + version: 5.4.0 + resolution: "dns-packet@npm:5.4.0" dependencies: "@leichtgewicht/ip-codec": ^2.0.1 - checksum: 196ff74a0669126cf5fc901a5849b72f625bd7a4cb163b3f4d41fbe19ed0b017cf7674daef5b0acbd448c094fcd795e501d7066f301be428e4acecfcf3c5f336 + checksum: a169963848e8539dfd8a19058562f9e1c15c0f82cbf76fa98942f11c46f3c74e7e7c82e3a8a5182d4c9e6ff19e21be738dbd098a876dde755d3aedd2cc730880 languageName: node linkType: hard From 4cd04a9bb35a8b180e0b3a6f4f2726fe156bb7b6 Mon Sep 17 00:00:00 2001 From: Jos Craw Date: Fri, 3 Mar 2023 16:43:06 +1300 Subject: [PATCH 086/147] fix: added more detail to the changeset Signed-off-by: Jos Craw --- .changeset/pink-dolls-unite.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/pink-dolls-unite.md b/.changeset/pink-dolls-unite.md index aca62166b4..418edfd92b 100644 --- a/.changeset/pink-dolls-unite.md +++ b/.changeset/pink-dolls-unite.md @@ -2,4 +2,4 @@ '@backstage/plugin-linguist-backend': patch --- -Added support for linguist-js options. +Added support for linguist-js options using the linguistJSOptions in the plugin, the available config can be found [here](https://www.npmjs.com/package/linguist-js#API). From b789d02380966aee8aebea02e7c51b20e491bc89 Mon Sep 17 00:00:00 2001 From: Alessandro Rossi <4215912+kubealex@users.noreply.github.com> Date: Fri, 3 Mar 2023 09:04:03 +0100 Subject: [PATCH 087/147] Fixing broken links I fixed some broken links in the README, pointing to changed URLs or missing assets. Signed-off-by: Alessandro Rossi <4215912+kubealex@users.noreply.github.com> --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 60324a7789..75bea25f21 100644 --- a/README.md +++ b/README.md @@ -16,12 +16,12 @@ Backstage unifies all your infrastructure tooling, services, and documentation to create a streamlined development environment from end to end. -![software-catalog](https://backstage.io/blog/assets/6/header.png) +![software-catalog](docs/assets/header.png) Out of the box, Backstage includes: -- [Backstage Software Catalog](https://backstage.io/docs/features/software-catalog/software-catalog-overview) for managing all your software (microservices, libraries, data pipelines, websites, ML models, etc.) -- [Backstage Software Templates](https://backstage.io/docs/features/software-templates/software-templates-index) for quickly spinning up new projects and standardizing your tooling with your organization’s best practices +- [Backstage Software Catalog](https://backstage.io/docs/features/software-catalog/) for managing all your software (microservices, libraries, data pipelines, websites, ML models, etc.) +- [Backstage Software Templates](https://backstage.io/docs/features/software-templates/) for quickly spinning up new projects and standardizing your tooling with your organization’s best practices - [Backstage TechDocs](https://backstage.io/docs/features/techdocs/techdocs-overview) for making it easy to create, maintain, find, and use technical documentation, using a "docs like code" approach - Plus, a growing ecosystem of [open source plugins](https://github.com/backstage/backstage/tree/master/plugins) that further expand Backstage’s customizability and functionality @@ -38,8 +38,8 @@ Check out [the documentation](https://backstage.io/docs/getting-started) on how ## Documentation - [Main documentation](https://backstage.io/docs) -- [Software Catalog](https://backstage.io/docs/features/software-catalog/software-catalog-overview) -- [Architecture](https://backstage.io/docs/overview/architecture-overview) ([Decisions](https://backstage.io/docs/architecture-decisions/adrs-overview)) +- [Software Catalog](https://backstage.io/docs/features/software-catalog/) +- [Architecture](https://backstage.io/docs/overview/architecture-overview) ([Decisions](https://backstage.io/docs/architecture-decisions/)) - [Designing for Backstage](https://backstage.io/docs/dls/design) - [Storybook - UI components](https://backstage.io/storybook) From 9974ac13d87dd674a539c6e6fc70cd3b6fd6a9d4 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 3 Mar 2023 09:27:01 +0100 Subject: [PATCH 088/147] chore: fix yarn install Signed-off-by: blam --- yarn.lock | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/yarn.lock b/yarn.lock index 238256537e..d365859add 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3363,7 +3363,7 @@ __metadata: "@testing-library/jest-dom": ^5.10.1 "@testing-library/react": ^12.1.3 "@types/node": ^16.11.26 - "@types/react": ^17 + "@types/react": ^16.13.1 || ^17.0.0 peerDependencies: react: ^16.13.1 || ^17.0.0 react-dom: ^16.13.1 || ^17.0.0 @@ -4436,7 +4436,7 @@ __metadata: dependencies: "@backstage/cli": "workspace:^" "@testing-library/jest-dom": ^5.16.4 - "@types/react": ^17 + "@types/react": ^16.13.1 || ^17.0.0 grpc-docs: ^1.1.2 peerDependencies: react: ^16.13.1 || ^17.0.0 @@ -5551,7 +5551,7 @@ __metadata: "@material-ui/lab": 4.0.0-alpha.57 "@material-ui/pickers": ^3.3.10 "@types/luxon": ^3.0.0 - "@types/react": ^17 + "@types/react": ^16.13.1 || ^17.0.0 already: ^3.2.0 humanize-duration: ^3.27.0 lodash: ^4.17.21 @@ -6432,7 +6432,7 @@ __metadata: "@testing-library/react": ^12.1.3 "@testing-library/user-event": ^14.0.0 "@types/node": "*" - "@types/react": ^17 + "@types/react": ^16.13.1 || ^17.0.0 cross-fetch: ^3.1.5 luxon: ^3.0.0 msw: ^1.0.0 @@ -6464,7 +6464,7 @@ __metadata: "@testing-library/react": ^12.1.3 "@testing-library/user-event": ^14.0.0 "@types/node": ^16.11.26 - "@types/react": ^17 + "@types/react": ^16.13.1 || ^17.0.0 cross-fetch: ^3.1.5 luxon: ^3.0.0 msw: ^1.0.0 @@ -6911,7 +6911,7 @@ __metadata: "@testing-library/react-hooks": ^8.0.0 "@testing-library/user-event": ^14.0.0 "@types/node": ^16.11.26 - "@types/react": ^17 + "@types/react": ^16.13.1 || ^17.0.0 cronstrue: ^2.2.0 cross-fetch: ^3.1.5 js-yaml: ^4.0.0 @@ -6973,7 +6973,7 @@ __metadata: "@testing-library/react-hooks": ^8.0.0 "@testing-library/user-event": ^14.0.0 "@types/node": ^16.11.26 - "@types/react": ^17 + "@types/react": ^16.13.1 || ^17.0.0 cross-fetch: ^3.1.5 msw: ^1.0.0 react-use: ^17.2.4 @@ -7102,7 +7102,7 @@ __metadata: "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.57 "@testing-library/jest-dom": ^5.10.1 - "@types/react": ^17 + "@types/react": ^16.13.1 || ^17.0.0 cross-fetch: ^3.1.5 react-use: ^17.2.4 peerDependencies: @@ -7567,7 +7567,7 @@ __metadata: "@testing-library/react-hooks": ^8.0.0 "@testing-library/user-event": ^14.0.0 "@types/node": ^16.11.26 - "@types/react": ^17 + "@types/react": ^16.13.1 || ^17.0.0 cross-fetch: ^3.1.5 lodash: ^4.17.21 msw: ^1.0.0 @@ -8054,7 +8054,7 @@ __metadata: "@testing-library/user-event": ^14.0.0 "@types/luxon": ^3.0.0 "@types/node": ^16.11.26 - "@types/react": ^17 + "@types/react": ^16.13.1 || ^17.0.0 cross-fetch: ^3.1.5 luxon: ^3.0.0 msw: ^1.0.0 @@ -8402,7 +8402,7 @@ __metadata: "@types/color": ^3.0.1 "@types/d3-force": ^3.0.0 "@types/node": ^16.11.26 - "@types/react": ^17 + "@types/react": ^16.13.1 || ^17.0.0 color: ^4.0.1 cross-fetch: ^3.1.5 d3-force: ^3.0.0 @@ -8505,7 +8505,7 @@ __metadata: "@testing-library/react": ^12.1.3 "@testing-library/user-event": ^14.0.0 "@types/node": ^16.11.26 - "@types/react": ^17 + "@types/react": ^16.13.1 || ^17.0.0 cross-fetch: ^3.1.5 git-url-parse: ^13.0.0 msw: ^1.0.0 @@ -8738,7 +8738,7 @@ __metadata: "@testing-library/react": ^12.1.3 "@testing-library/user-event": ^14.0.0 "@types/node": ^16.11.26 - "@types/react": ^17 + "@types/react": ^16.13.1 || ^17.0.0 cross-fetch: ^3.1.5 msw: ^1.0.0 react-use: ^17.2.4 @@ -10946,7 +10946,7 @@ __metadata: dependencies: "@backstage/plugin-catalog": "workspace:^" "@backstage/plugin-catalog-react": "workspace:^" - "@types/react": ^17 + "@types/react": ^16.13.1 || ^17.0.0 peerDependencies: react: ^16.13.1 || ^17.0.0 languageName: unknown @@ -22724,8 +22724,8 @@ __metadata: "@testing-library/user-event": ^14.0.0 "@types/jquery": ^3.3.34 "@types/node": ^16.11.26 - "@types/react": ^17 - "@types/react-dom": ^17 + "@types/react": "*" + "@types/react-dom": "*" "@types/zen-observable": ^0.8.0 cross-env: ^7.0.0 cypress: ^10.0.0 @@ -36898,7 +36898,7 @@ __metadata: "@testing-library/react": ^12.1.3 "@testing-library/user-event": ^14.0.0 "@types/node": ^16.11.26 - "@types/react-dom": ^17 + "@types/react-dom": "*" cross-env: ^7.0.0 cypress: ^10.0.0 eslint-plugin-cypress: ^2.10.3 From fe91806a2d6f8d26b0e06b925d108a66aa1de985 Mon Sep 17 00:00:00 2001 From: Alessandro Rossi <4215912+kubealex@users.noreply.github.com> Date: Fri, 3 Mar 2023 09:34:18 +0100 Subject: [PATCH 089/147] Fix default icon for plugins broken link Edit the default icon path in the plugin.js page to point to the right asset. Signed-off-by: Alessandro Rossi <4215912+kubealex@users.noreply.github.com> --- microsite/pages/en/plugins.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/microsite/pages/en/plugins.js b/microsite/pages/en/plugins.js index 237161b98a..892976c85d 100644 --- a/microsite/pages/en/plugins.js +++ b/microsite/pages/en/plugins.js @@ -24,7 +24,7 @@ const truncate = text => const newForDays = 100; const addPluginDocsLink = '/docs/plugins/add-to-marketplace'; -const defaultIconUrl = 'img/logo-gradient-on-dark.svg'; +const defaultIconUrl = '/static/img/logo-gradient-on-dark.svg'; const Plugins = () => (
From 2fcfd1a9cfa3a04d44dfc2a6747c738a4b3187b1 Mon Sep 17 00:00:00 2001 From: Alessandro Rossi <4215912+kubealex@users.noreply.github.com> Date: Fri, 3 Mar 2023 09:46:11 +0100 Subject: [PATCH 090/147] Update plugins.js Signed-off-by: Alessandro Rossi <4215912+kubealex@users.noreply.github.com> --- microsite/pages/en/plugins.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/microsite/pages/en/plugins.js b/microsite/pages/en/plugins.js index 892976c85d..5d8df7b74f 100644 --- a/microsite/pages/en/plugins.js +++ b/microsite/pages/en/plugins.js @@ -24,7 +24,7 @@ const truncate = text => const newForDays = 100; const addPluginDocsLink = '/docs/plugins/add-to-marketplace'; -const defaultIconUrl = '/static/img/logo-gradient-on-dark.svg'; +const defaultIconUrl = '../../../static/img/logo-gradient-on-dark.svg'; const Plugins = () => (
From 6bc2831d7059d4865a379870c7853eec6f06427f Mon Sep 17 00:00:00 2001 From: Ben Lambert Date: Fri, 3 Mar 2023 09:45:51 +0100 Subject: [PATCH 091/147] Update silent-dryers-end.md Signed-off-by: blam --- .changeset/silent-dryers-end.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/silent-dryers-end.md b/.changeset/silent-dryers-end.md index 642a5fb7da..d15ea602ae 100644 --- a/.changeset/silent-dryers-end.md +++ b/.changeset/silent-dryers-end.md @@ -1,5 +1,5 @@ --- -'@backstage/plugin-scaffolder': minor +'@backstage/plugin-scaffolder': patch --- Fix the scaffolder validator for arrays when the item is a field in the object From 83717fc76a4f3e8294e790fc9d7e09fe774e366d Mon Sep 17 00:00:00 2001 From: Alessandro Rossi <4215912+kubealex@users.noreply.github.com> Date: Fri, 3 Mar 2023 09:57:43 +0100 Subject: [PATCH 092/147] Update plugins.js Signed-off-by: Alessandro Rossi <4215912+kubealex@users.noreply.github.com> --- microsite/pages/en/plugins.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/microsite/pages/en/plugins.js b/microsite/pages/en/plugins.js index 5d8df7b74f..8d1433289b 100644 --- a/microsite/pages/en/plugins.js +++ b/microsite/pages/en/plugins.js @@ -24,7 +24,7 @@ const truncate = text => const newForDays = 100; const addPluginDocsLink = '/docs/plugins/add-to-marketplace'; -const defaultIconUrl = '../../../static/img/logo-gradient-on-dark.svg'; +const defaultIconUrl = '../img/logo-gradient-on-dark.svg'; const Plugins = () => (
From bcf1c9ce760922d15811d77674118bb402650049 Mon Sep 17 00:00:00 2001 From: Alessandro Rossi <4215912+kubealex@users.noreply.github.com> Date: Fri, 3 Mar 2023 10:24:21 +0100 Subject: [PATCH 093/147] Update plugins.js Signed-off-by: Alessandro Rossi <4215912+kubealex@users.noreply.github.com> --- microsite/pages/en/plugins.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/microsite/pages/en/plugins.js b/microsite/pages/en/plugins.js index 8d1433289b..6e2e1c09ad 100644 --- a/microsite/pages/en/plugins.js +++ b/microsite/pages/en/plugins.js @@ -24,7 +24,7 @@ const truncate = text => const newForDays = 100; const addPluginDocsLink = '/docs/plugins/add-to-marketplace'; -const defaultIconUrl = '../img/logo-gradient-on-dark.svg'; +const defaultIconUrl = '/img/logo-gradient-on-dark.svg'; const Plugins = () => (
From 6b8ca73179b02df76f13fa4d22a576fd85f4ffd0 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 3 Mar 2023 10:29:30 +0100 Subject: [PATCH 094/147] chore: small tweaks for getting involved Signed-off-by: blam --- .../{get-involved.md => getting-involved.md} | 10 +++++----- microsite-next/sidebars.json | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) rename docs/getting-started/{get-involved.md => getting-involved.md} (96%) diff --git a/docs/getting-started/get-involved.md b/docs/getting-started/getting-involved.md similarity index 96% rename from docs/getting-started/get-involved.md rename to docs/getting-started/getting-involved.md index 5d8dc35032..7c0be46273 100644 --- a/docs/getting-started/get-involved.md +++ b/docs/getting-started/getting-involved.md @@ -1,6 +1,6 @@ --- -id: get-involved -title: Get Involved +id: getting-involved +title: Getting Involved # prettier-ignore description: How can you help us build Backstage? We welcome contributions of all kinds, from documentation to code to design. --- @@ -29,11 +29,11 @@ If you start developing a plugin that you aim to release as open source, we sugg You can also use this process if you have an idea for a good plugin but you hope that someone else will pick up the work. -### Adding Non-code Contributions +### Adding non-code Contributions Since there is such a large landscape of possible development, build, and deployment environments, we welcome community contributions in these areas in the [`/contrib`](https://github.com/backstage/backstage/tree/master/contrib) folder of the project. This is an excellent place to put things that help out the community at large, but which may not fit within the scope of the core product to support natively. Here, you will find Helm charts, alternative Docker images, and much more. -### Write Documentation or improve the website +### Write documentation or improve the website The current documentation is very limited. Help us make the `/docs` folder come alive. @@ -49,7 +49,7 @@ We think the best way to ensure different plugins provide a consistent experienc Either help us [create new components](https://github.com/backstage/backstage/labels/help%20wanted) or improve stories for the existing ones (look for files with `*.stories.tsx`). -### Submit Feedback +### Submit feedback The best way to send feedback is to file [an issue](https://github.com/backstage/backstage/issues). diff --git a/microsite-next/sidebars.json b/microsite-next/sidebars.json index 630e4474e6..ebb387f81c 100644 --- a/microsite-next/sidebars.json +++ b/microsite-next/sidebars.json @@ -46,7 +46,7 @@ "getting-started/keeping-backstage-updated", "getting-started/concepts", "getting-started/contributors", - "getting-started/get-involved", + "getting-started/getting-involved", "getting-started/project-structure" ], "Local Development": [ From 407b9ed40e2c75c2900092712c74acf954d637fe Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 3 Mar 2023 09:42:57 +0000 Subject: [PATCH 095/147] chore(deps): update dependency @types/sanitize-html to v2.8.1 Signed-off-by: Renovate Bot --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index fe23c357e4..031af3b131 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15733,11 +15733,11 @@ __metadata: linkType: hard "@types/sanitize-html@npm:^2.6.2": - version: 2.8.0 - resolution: "@types/sanitize-html@npm:2.8.0" + version: 2.8.1 + resolution: "@types/sanitize-html@npm:2.8.1" dependencies: htmlparser2: ^8.0.0 - checksum: 6e583cac673832536fac8da53890073f753baf2c49826fd0c2831e615cb5527692d03b2b5ba9eb8caf8694de4bfb1c31fd12398d2b68331725590a6ceb8f82fe + checksum: 9c07d3a9d925e291472f74b097fb179b32659ea01834f728887811e5fc75cf2b17d844e32e97c0e583eba993af86a3f8250c82c8fa3152abf9ff2a8582972906 languageName: node linkType: hard From 1f22c083f7a31b4c1e74fc292b7242934e4238cd Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 3 Mar 2023 14:03:13 +0100 Subject: [PATCH 096/147] chore: fixing getting involved Signed-off-by: blam --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f816f1b6af..7828791080 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -8,7 +8,7 @@ Contributions are welcome, and they are greatly appreciated! Every little bit he Backstage is released under the Apache 2.0 License, and original creations contributed to this repo are accepted under the same license. -You can find out more about the types of contributions over at [getting involved](https://backstage.io/docs/getting-started/get-involved)! +You can find out more about the types of contributions over at [getting involved](https://backstage.io/docs/getting-started/getting-involved)! ## Get Started! From 2343301db33258e4f5fccc638d0d0269d98ab700 Mon Sep 17 00:00:00 2001 From: hemanthhari2000 Date: Fri, 3 Mar 2023 22:31:33 +0530 Subject: [PATCH 097/147] Fix. new relic dashboard icon bug #16307 Signed-off-by: hemanthhari2000 --- microsite/data/plugins/newrelic-dashboard.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/microsite/data/plugins/newrelic-dashboard.yaml b/microsite/data/plugins/newrelic-dashboard.yaml index bbb1c4be7e..cd68a63165 100644 --- a/microsite/data/plugins/newrelic-dashboard.yaml +++ b/microsite/data/plugins/newrelic-dashboard.yaml @@ -5,7 +5,7 @@ authorUrl: https://github.com/mufaddal7 category: Monitoring description: Easily view your New Relic Dashboards in Backstage, via real-time snapshots of your dashboards documentation: https://github.com/backstage/backstage/tree/master/plugins/newrelic-dashboard -iconUrl: https://newrelic.com/themes/custom/curio/assets/mediakit/NR_logo_Horizontal_Rev.svg +iconUrl: https://newrelic.com/themes/custom/erno/assets/mediakit/new_relic_logo_vertical_white.svg npmPackageName: '@backstage/plugin-newrelic-dashboard' tags: - performance From 72c170fa682803a73729ac02593f7e21bf23a6b0 Mon Sep 17 00:00:00 2001 From: Jos Craw Date: Sat, 4 Mar 2023 08:13:38 +1300 Subject: [PATCH 098/147] fix: change Record value to unknown from any Signed-off-by: Jos Craw --- plugins/linguist-backend/api-report.md | 4 ++-- plugins/linguist-backend/src/api/LinguistBackendApi.ts | 4 ++-- plugins/linguist-backend/src/service/router.ts | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/plugins/linguist-backend/api-report.md b/plugins/linguist-backend/api-report.md index 8ac8b83dcd..a47f123ac4 100644 --- a/plugins/linguist-backend/api-report.md +++ b/plugins/linguist-backend/api-report.md @@ -35,7 +35,7 @@ export class LinguistBackendApi { batchSize?: number, useSourceLocation?: boolean, kind?: string[], - linguistJsOptions?: Record, + linguistJsOptions?: Record, ); // (undocumented) getEntityLanguages(entityRef: string): Promise; @@ -83,7 +83,7 @@ export interface PluginOptions { // (undocumented) kind?: string[]; // (undocumented) - linguistJsOptions?: Record; + linguistJsOptions?: Record; // (undocumented) schedule?: TaskScheduleDefinition; // (undocumented) diff --git a/plugins/linguist-backend/src/api/LinguistBackendApi.ts b/plugins/linguist-backend/src/api/LinguistBackendApi.ts index e0a3133255..df7e30a7b0 100644 --- a/plugins/linguist-backend/src/api/LinguistBackendApi.ts +++ b/plugins/linguist-backend/src/api/LinguistBackendApi.ts @@ -57,7 +57,7 @@ export class LinguistBackendApi { private readonly batchSize?: number; private readonly useSourceLocation?: boolean; private readonly kind: string[]; - private readonly linguistJsOptions?: Record; + private readonly linguistJsOptions?: Record; public constructor( logger: Logger, store: LinguistBackendStore, @@ -68,7 +68,7 @@ export class LinguistBackendApi { batchSize?: number, useSourceLocation?: boolean, kind?: string[], - linguistJsOptions?: Record, + linguistJsOptions?: Record, ) { this.logger = logger; this.store = store; diff --git a/plugins/linguist-backend/src/service/router.ts b/plugins/linguist-backend/src/service/router.ts index d10f185261..8d52a2e01d 100644 --- a/plugins/linguist-backend/src/service/router.ts +++ b/plugins/linguist-backend/src/service/router.ts @@ -38,7 +38,7 @@ export interface PluginOptions { age?: HumanDuration; batchSize?: number; useSourceLocation?: boolean; - linguistJsOptions?: Record; + linguistJsOptions?: Record; kind?: string[]; } From dcb3fb2bd5dbd3a82d37c04f5c2d77b8f867afb0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 5 Mar 2023 02:46:27 +0000 Subject: [PATCH 099/147] chore(deps): update dependency esbuild to v0.17.11 Signed-off-by: Renovate Bot --- yarn.lock | 182 +++++++++++++++++++++++++++--------------------------- 1 file changed, 91 insertions(+), 91 deletions(-) diff --git a/yarn.lock b/yarn.lock index 86c08a9d61..3fe9cb65dc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9600,9 +9600,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.17.10": - version: 0.17.10 - resolution: "@esbuild/android-arm64@npm:0.17.10" +"@esbuild/android-arm64@npm:0.17.11": + version: 0.17.11 + resolution: "@esbuild/android-arm64@npm:0.17.11" conditions: os=android & cpu=arm64 languageName: node linkType: hard @@ -9621,9 +9621,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm@npm:0.17.10": - version: 0.17.10 - resolution: "@esbuild/android-arm@npm:0.17.10" +"@esbuild/android-arm@npm:0.17.11": + version: 0.17.11 + resolution: "@esbuild/android-arm@npm:0.17.11" conditions: os=android & cpu=arm languageName: node linkType: hard @@ -9635,9 +9635,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-x64@npm:0.17.10": - version: 0.17.10 - resolution: "@esbuild/android-x64@npm:0.17.10" +"@esbuild/android-x64@npm:0.17.11": + version: 0.17.11 + resolution: "@esbuild/android-x64@npm:0.17.11" conditions: os=android & cpu=x64 languageName: node linkType: hard @@ -9649,9 +9649,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.17.10": - version: 0.17.10 - resolution: "@esbuild/darwin-arm64@npm:0.17.10" +"@esbuild/darwin-arm64@npm:0.17.11": + version: 0.17.11 + resolution: "@esbuild/darwin-arm64@npm:0.17.11" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard @@ -9663,9 +9663,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.17.10": - version: 0.17.10 - resolution: "@esbuild/darwin-x64@npm:0.17.10" +"@esbuild/darwin-x64@npm:0.17.11": + version: 0.17.11 + resolution: "@esbuild/darwin-x64@npm:0.17.11" conditions: os=darwin & cpu=x64 languageName: node linkType: hard @@ -9677,9 +9677,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.17.10": - version: 0.17.10 - resolution: "@esbuild/freebsd-arm64@npm:0.17.10" +"@esbuild/freebsd-arm64@npm:0.17.11": + version: 0.17.11 + resolution: "@esbuild/freebsd-arm64@npm:0.17.11" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard @@ -9691,9 +9691,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.17.10": - version: 0.17.10 - resolution: "@esbuild/freebsd-x64@npm:0.17.10" +"@esbuild/freebsd-x64@npm:0.17.11": + version: 0.17.11 + resolution: "@esbuild/freebsd-x64@npm:0.17.11" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard @@ -9705,9 +9705,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.17.10": - version: 0.17.10 - resolution: "@esbuild/linux-arm64@npm:0.17.10" +"@esbuild/linux-arm64@npm:0.17.11": + version: 0.17.11 + resolution: "@esbuild/linux-arm64@npm:0.17.11" conditions: os=linux & cpu=arm64 languageName: node linkType: hard @@ -9719,9 +9719,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.17.10": - version: 0.17.10 - resolution: "@esbuild/linux-arm@npm:0.17.10" +"@esbuild/linux-arm@npm:0.17.11": + version: 0.17.11 + resolution: "@esbuild/linux-arm@npm:0.17.11" conditions: os=linux & cpu=arm languageName: node linkType: hard @@ -9733,9 +9733,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.17.10": - version: 0.17.10 - resolution: "@esbuild/linux-ia32@npm:0.17.10" +"@esbuild/linux-ia32@npm:0.17.11": + version: 0.17.11 + resolution: "@esbuild/linux-ia32@npm:0.17.11" conditions: os=linux & cpu=ia32 languageName: node linkType: hard @@ -9754,9 +9754,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.17.10": - version: 0.17.10 - resolution: "@esbuild/linux-loong64@npm:0.17.10" +"@esbuild/linux-loong64@npm:0.17.11": + version: 0.17.11 + resolution: "@esbuild/linux-loong64@npm:0.17.11" conditions: os=linux & cpu=loong64 languageName: node linkType: hard @@ -9768,9 +9768,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.17.10": - version: 0.17.10 - resolution: "@esbuild/linux-mips64el@npm:0.17.10" +"@esbuild/linux-mips64el@npm:0.17.11": + version: 0.17.11 + resolution: "@esbuild/linux-mips64el@npm:0.17.11" conditions: os=linux & cpu=mips64el languageName: node linkType: hard @@ -9782,9 +9782,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.17.10": - version: 0.17.10 - resolution: "@esbuild/linux-ppc64@npm:0.17.10" +"@esbuild/linux-ppc64@npm:0.17.11": + version: 0.17.11 + resolution: "@esbuild/linux-ppc64@npm:0.17.11" conditions: os=linux & cpu=ppc64 languageName: node linkType: hard @@ -9796,9 +9796,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.17.10": - version: 0.17.10 - resolution: "@esbuild/linux-riscv64@npm:0.17.10" +"@esbuild/linux-riscv64@npm:0.17.11": + version: 0.17.11 + resolution: "@esbuild/linux-riscv64@npm:0.17.11" conditions: os=linux & cpu=riscv64 languageName: node linkType: hard @@ -9810,9 +9810,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.17.10": - version: 0.17.10 - resolution: "@esbuild/linux-s390x@npm:0.17.10" +"@esbuild/linux-s390x@npm:0.17.11": + version: 0.17.11 + resolution: "@esbuild/linux-s390x@npm:0.17.11" conditions: os=linux & cpu=s390x languageName: node linkType: hard @@ -9824,9 +9824,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.17.10": - version: 0.17.10 - resolution: "@esbuild/linux-x64@npm:0.17.10" +"@esbuild/linux-x64@npm:0.17.11": + version: 0.17.11 + resolution: "@esbuild/linux-x64@npm:0.17.11" conditions: os=linux & cpu=x64 languageName: node linkType: hard @@ -9838,9 +9838,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.17.10": - version: 0.17.10 - resolution: "@esbuild/netbsd-x64@npm:0.17.10" +"@esbuild/netbsd-x64@npm:0.17.11": + version: 0.17.11 + resolution: "@esbuild/netbsd-x64@npm:0.17.11" conditions: os=netbsd & cpu=x64 languageName: node linkType: hard @@ -9852,9 +9852,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.17.10": - version: 0.17.10 - resolution: "@esbuild/openbsd-x64@npm:0.17.10" +"@esbuild/openbsd-x64@npm:0.17.11": + version: 0.17.11 + resolution: "@esbuild/openbsd-x64@npm:0.17.11" conditions: os=openbsd & cpu=x64 languageName: node linkType: hard @@ -9866,9 +9866,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.17.10": - version: 0.17.10 - resolution: "@esbuild/sunos-x64@npm:0.17.10" +"@esbuild/sunos-x64@npm:0.17.11": + version: 0.17.11 + resolution: "@esbuild/sunos-x64@npm:0.17.11" conditions: os=sunos & cpu=x64 languageName: node linkType: hard @@ -9880,9 +9880,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.17.10": - version: 0.17.10 - resolution: "@esbuild/win32-arm64@npm:0.17.10" +"@esbuild/win32-arm64@npm:0.17.11": + version: 0.17.11 + resolution: "@esbuild/win32-arm64@npm:0.17.11" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard @@ -9894,9 +9894,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.17.10": - version: 0.17.10 - resolution: "@esbuild/win32-ia32@npm:0.17.10" +"@esbuild/win32-ia32@npm:0.17.11": + version: 0.17.11 + resolution: "@esbuild/win32-ia32@npm:0.17.11" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard @@ -9908,9 +9908,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.17.10": - version: 0.17.10 - resolution: "@esbuild/win32-x64@npm:0.17.10" +"@esbuild/win32-x64@npm:0.17.11": + version: 0.17.11 + resolution: "@esbuild/win32-x64@npm:0.17.11" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -22012,31 +22012,31 @@ __metadata: linkType: hard "esbuild@npm:^0.17.0": - version: 0.17.10 - resolution: "esbuild@npm:0.17.10" + version: 0.17.11 + resolution: "esbuild@npm:0.17.11" dependencies: - "@esbuild/android-arm": 0.17.10 - "@esbuild/android-arm64": 0.17.10 - "@esbuild/android-x64": 0.17.10 - "@esbuild/darwin-arm64": 0.17.10 - "@esbuild/darwin-x64": 0.17.10 - "@esbuild/freebsd-arm64": 0.17.10 - "@esbuild/freebsd-x64": 0.17.10 - "@esbuild/linux-arm": 0.17.10 - "@esbuild/linux-arm64": 0.17.10 - "@esbuild/linux-ia32": 0.17.10 - "@esbuild/linux-loong64": 0.17.10 - "@esbuild/linux-mips64el": 0.17.10 - "@esbuild/linux-ppc64": 0.17.10 - "@esbuild/linux-riscv64": 0.17.10 - "@esbuild/linux-s390x": 0.17.10 - "@esbuild/linux-x64": 0.17.10 - "@esbuild/netbsd-x64": 0.17.10 - "@esbuild/openbsd-x64": 0.17.10 - "@esbuild/sunos-x64": 0.17.10 - "@esbuild/win32-arm64": 0.17.10 - "@esbuild/win32-ia32": 0.17.10 - "@esbuild/win32-x64": 0.17.10 + "@esbuild/android-arm": 0.17.11 + "@esbuild/android-arm64": 0.17.11 + "@esbuild/android-x64": 0.17.11 + "@esbuild/darwin-arm64": 0.17.11 + "@esbuild/darwin-x64": 0.17.11 + "@esbuild/freebsd-arm64": 0.17.11 + "@esbuild/freebsd-x64": 0.17.11 + "@esbuild/linux-arm": 0.17.11 + "@esbuild/linux-arm64": 0.17.11 + "@esbuild/linux-ia32": 0.17.11 + "@esbuild/linux-loong64": 0.17.11 + "@esbuild/linux-mips64el": 0.17.11 + "@esbuild/linux-ppc64": 0.17.11 + "@esbuild/linux-riscv64": 0.17.11 + "@esbuild/linux-s390x": 0.17.11 + "@esbuild/linux-x64": 0.17.11 + "@esbuild/netbsd-x64": 0.17.11 + "@esbuild/openbsd-x64": 0.17.11 + "@esbuild/sunos-x64": 0.17.11 + "@esbuild/win32-arm64": 0.17.11 + "@esbuild/win32-ia32": 0.17.11 + "@esbuild/win32-x64": 0.17.11 dependenciesMeta: "@esbuild/android-arm": optional: true @@ -22084,7 +22084,7 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: 803de327036528c140b3d1d8e148604fd1446062b63d2b5a49cd8fe5fa607dc41be915f28dec1242be77164378e3ca27a2ed2968692a73cc833896c7bebc0e12 + checksum: febf218155513bb9c9c970508c03ec58e0aacfdc23394f425836a09f1da0dae0afa12949274adfd382782eef097f86b2d6b3032293062291f2f471de204f77ec languageName: node linkType: hard From 7bac0208ddfc46181ac62debb007fcc29cc621cb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 5 Mar 2023 04:38:10 +0000 Subject: [PATCH 100/147] chore(deps): update dependency nodemon to v2.0.21 Signed-off-by: Renovate Bot --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 3fe9cb65dc..fe4bdce8d0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -30619,8 +30619,8 @@ __metadata: linkType: hard "nodemon@npm:^2.0.2": - version: 2.0.20 - resolution: "nodemon@npm:2.0.20" + version: 2.0.21 + resolution: "nodemon@npm:2.0.21" dependencies: chokidar: ^3.5.2 debug: ^3.2.7 @@ -30634,7 +30634,7 @@ __metadata: undefsafe: ^2.0.5 bin: nodemon: bin/nodemon.js - checksum: 9fe858682414fe703179f4fe36c86e71f40d2693b5345c09803d7b191816a6589c5df8f1f9873bffee92893880183b95a031c86340e46b364ef1b0b7f619edbf + checksum: 0b9fe2d11fd95c51b66d61bd1ee85cddf579c9e674c9429752a74f445f1b98576235ae860858783728baa3666c87e4ef938ab67167cc34fe4bb8fcec74d6885b languageName: node linkType: hard From f79ad0b788e693ab0b15ddd904e58ac149f7e670 Mon Sep 17 00:00:00 2001 From: Taras Date: Fri, 3 Mar 2023 15:41:43 -0500 Subject: [PATCH 101/147] Use media breakpoint instead of isMobile Signed-off-by: Taras --- .../core-components/src/layout/Page/Page.tsx | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/packages/core-components/src/layout/Page/Page.tsx b/packages/core-components/src/layout/Page/Page.tsx index 1abb8da93b..a1939d1b0d 100644 --- a/packages/core-components/src/layout/Page/Page.tsx +++ b/packages/core-components/src/layout/Page/Page.tsx @@ -17,21 +17,23 @@ import React from 'react'; import { BackstageTheme } from '@backstage/theme'; import { makeStyles, ThemeProvider } from '@material-ui/core/styles'; -import { useSidebarPinState } from '../Sidebar/SidebarPinStateContext'; export type PageClassKey = 'root'; -const useStyles = makeStyles( - () => ({ - root: ({ isMobile }) => ({ +const useStyles = makeStyles( + theme => ({ + root: { display: 'grid', gridTemplateAreas: "'pageHeader pageHeader pageHeader' 'pageSubheader pageSubheader pageSubheader' 'pageNav pageContent pageSidebar'", gridTemplateRows: 'max-content auto 1fr', gridTemplateColumns: 'auto 1fr auto', - height: isMobile ? '100%' : '100vh', overflowY: 'auto', - }), + height: '100%', + [theme.breakpoints.up('md')]: { + height: '100vh', + }, + }, }), { name: 'BackstagePage' }, ); @@ -43,8 +45,7 @@ type Props = { export function Page(props: Props) { const { themeId, children } = props; - const { isMobile } = useSidebarPinState(); - const classes = useStyles({ isMobile }); + const classes = useStyles(); return ( ({ From fa004f668713c5a3b8162a4253110343c9d5d1e8 Mon Sep 17 00:00:00 2001 From: Taras Date: Fri, 3 Mar 2023 15:50:33 -0500 Subject: [PATCH 102/147] Added changeset Signed-off-by: Taras --- .changeset/tiny-llamas-jump.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/tiny-llamas-jump.md diff --git a/.changeset/tiny-llamas-jump.md b/.changeset/tiny-llamas-jump.md new file mode 100644 index 0000000000..bf5bc363b3 --- /dev/null +++ b/.changeset/tiny-llamas-jump.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-components': patch +--- + +Use css media query in BackstagePage style hook to eliminate style hook props From 7d98b1c185f9c1ece5cfd67803a8191a2cb56b39 Mon Sep 17 00:00:00 2001 From: Taras Date: Fri, 3 Mar 2023 15:58:19 -0500 Subject: [PATCH 103/147] Show Mobile only for smaller than xs Signed-off-by: Taras --- packages/core-components/src/layout/Page/Page.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/core-components/src/layout/Page/Page.tsx b/packages/core-components/src/layout/Page/Page.tsx index a1939d1b0d..00988c475b 100644 --- a/packages/core-components/src/layout/Page/Page.tsx +++ b/packages/core-components/src/layout/Page/Page.tsx @@ -29,9 +29,9 @@ const useStyles = makeStyles( gridTemplateRows: 'max-content auto 1fr', gridTemplateColumns: 'auto 1fr auto', overflowY: 'auto', - height: '100%', - [theme.breakpoints.up('md')]: { - height: '100vh', + height: '100vh', + [theme.breakpoints.down('xs')]: { + height: '100%', }, }, }), From f5b8072bc2dbddf48ae8915729acb72d32115a12 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 5 Mar 2023 20:04:52 +0100 Subject: [PATCH 104/147] Apply suggestions from code review Co-authored-by: Phil Kuang Signed-off-by: Patrik Oldsberg --- .../backend-system/building-plugins-and-modules/01-index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/backend-system/building-plugins-and-modules/01-index.md b/docs/backend-system/building-plugins-and-modules/01-index.md index 0e4dbcfd03..644816b053 100644 --- a/docs/backend-system/building-plugins-and-modules/01-index.md +++ b/docs/backend-system/building-plugins-and-modules/01-index.md @@ -189,7 +189,7 @@ export const examplesExtensionPoint = class ExamplesExtension implements ExamplesExtensionPoint { #examples: Example[] = []; - addActions(example: Examples): void { + addExample(example: Example): void { this.#examples.push(example); } @@ -210,8 +210,8 @@ export const examplePlugin = createBackendPlugin({ env.registerInit({ deps: { logger: coreServices.logger }, async init({ logger }) { - // We can access `actionsExtension` directly, giving us access to the internal interface. - const examples = actionsExtension.getRegisteredActions(); + // We can access `examplesExtension` directly, giving us access to the internal interface. + const examples = examplesExtension.getRegisteredExamples(); logger.info(`The following examples have been registered: ${examples}`); }, From c8bdcdccb990aa88c1a981319539cc717bbdcf0a Mon Sep 17 00:00:00 2001 From: Joep Peeters Date: Mon, 6 Mar 2023 09:27:49 +0100 Subject: [PATCH 105/147] rename: setRole -> role Signed-off-by: Joep Peeters --- packages/backend-common/config.d.ts | 4 ++-- .../src/database/DatabaseManager.test.ts | 10 +++++----- .../backend-common/src/database/DatabaseManager.ts | 10 +++++----- .../src/database/connectors/postgres.ts | 12 ++++++------ 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/packages/backend-common/config.d.ts b/packages/backend-common/config.d.ts index ad83bde485..8dd2c2db84 100644 --- a/packages/backend-common/config.d.ts +++ b/packages/backend-common/config.d.ts @@ -97,7 +97,7 @@ export interface Config { */ pluginDivisionMode?: 'database' | 'schema'; /** Configures the ownership of newly created schemas in pg databases. */ - setOwner?: string; + role?: string; /** * Arbitrary config object to pass to knex when initializing * (https://knexjs.org/#Installation-client). Most notable is the debug @@ -128,7 +128,7 @@ export interface Config { */ knexConfig?: object; /** Configures the ownership of newly created schemas in pg databases. */ - setOwner?: string; + role?: string; }; }; }; diff --git a/packages/backend-common/src/database/DatabaseManager.test.ts b/packages/backend-common/src/database/DatabaseManager.test.ts index 878fe62e4f..336e5d499c 100644 --- a/packages/backend-common/src/database/DatabaseManager.test.ts +++ b/packages/backend-common/src/database/DatabaseManager.test.ts @@ -698,7 +698,7 @@ describe('DatabaseManager', () => { host: 'localhost', database: 'foodb', }, - setOwner: 'backstage', + role: 'backstage', plugin: { testowner: {}, }, @@ -711,7 +711,7 @@ describe('DatabaseManager', () => { const mockCalls = mocked(createDatabaseClient).mock.calls.splice(-1); const [baseConfig] = mockCalls[0]; - expect(baseConfig.data.setOwner).toEqual('backstage'); + expect(baseConfig.data.role).toEqual('backstage'); }); it('sets the owner config for plugin using plugin config', async () => { @@ -724,10 +724,10 @@ describe('DatabaseManager', () => { host: 'localhost', database: 'foodb', }, - setOwner: 'backstage', + role: 'backstage', plugin: { testowner: { - setOwner: 'backstage-plugin', + role: 'backstage-plugin', }, }, }, @@ -739,7 +739,7 @@ describe('DatabaseManager', () => { const mockCalls = mocked(createDatabaseClient).mock.calls.splice(-1); const [baseConfig] = mockCalls[0]; - expect(baseConfig.data.setOwner).toEqual('backstage-plugin'); + expect(baseConfig.data.role).toEqual('backstage-plugin'); }); }); }); diff --git a/packages/backend-common/src/database/DatabaseManager.ts b/packages/backend-common/src/database/DatabaseManager.ts index 07a9bd2934..02f2c6b172 100644 --- a/packages/backend-common/src/database/DatabaseManager.ts +++ b/packages/backend-common/src/database/DatabaseManager.ts @@ -186,10 +186,10 @@ export class DatabaseManager { }; } - private getSetOwnerConfig(pluginId: string): string | undefined { + private getRoleConfig(pluginId: string): string | undefined { return ( - this.config.getOptionalString(`${pluginPath(pluginId)}.setOwner`) ?? - this.config.getOptionalString('setOwner') + this.config.getOptionalString(`${pluginPath(pluginId)}.role`) ?? + this.config.getOptionalString('role') ); } @@ -285,13 +285,13 @@ export class DatabaseManager { */ private getConfigForPlugin(pluginId: string): Knex.Config { const { client } = this.getClientType(pluginId); - const setOwner = this.getSetOwnerConfig(pluginId); + const role = this.getRoleConfig(pluginId); return { ...this.getAdditionalKnexConfig(pluginId), client, connection: this.getConnectionConfig(pluginId), - ...(setOwner && { setOwner }), + ...(role && { role }), }; } diff --git a/packages/backend-common/src/database/connectors/postgres.ts b/packages/backend-common/src/database/connectors/postgres.ts index 682b2e6ceb..54adc90757 100644 --- a/packages/backend-common/src/database/connectors/postgres.ts +++ b/packages/backend-common/src/database/connectors/postgres.ts @@ -36,11 +36,11 @@ export function createPgDatabaseClient( const knexConfig = buildPgDatabaseConfig(dbConfig, overrides); const database = knexFactory(knexConfig); - const owner = dbConfig.getOptionalString('setOwner'); + const role = dbConfig.getOptionalString('role'); - if (owner) { + if (role) { database.client.pool.on('createSuccess', (_event: any, pgClient: any) => { - pgClient.query(`SET ROLE ${owner}`, () => {}); + pgClient.query(`SET ROLE ${role}`, () => {}); }); } return database; @@ -155,14 +155,14 @@ export async function ensurePgSchemaExists( ...schemas: Array ): Promise { const admin = createPgDatabaseClient(dbConfig); - const setOwner = dbConfig.getOptionalString('setOwner'); + const role = dbConfig.getOptionalString('role'); try { const ensureSchema = async (database: string) => { - if (setOwner) { + if (role) { await admin.raw(`CREATE SCHEMA IF NOT EXISTS ?? AUTHORIZATION ??`, [ database, - setOwner, + role, ]); } else { await admin.raw(`CREATE SCHEMA IF NOT EXISTS ??`, [database]); From 0db534301019ef653bd4adc8bf51e7322c9171f6 Mon Sep 17 00:00:00 2001 From: Joep Peeters Date: Mon, 6 Mar 2023 09:29:07 +0100 Subject: [PATCH 106/147] stricter types Signed-off-by: Joep Peeters --- .../backend-common/src/database/connectors/postgres.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/backend-common/src/database/connectors/postgres.ts b/packages/backend-common/src/database/connectors/postgres.ts index 54adc90757..0b20b6f19a 100644 --- a/packages/backend-common/src/database/connectors/postgres.ts +++ b/packages/backend-common/src/database/connectors/postgres.ts @@ -39,9 +39,12 @@ export function createPgDatabaseClient( const role = dbConfig.getOptionalString('role'); if (role) { - database.client.pool.on('createSuccess', (_event: any, pgClient: any) => { - pgClient.query(`SET ROLE ${role}`, () => {}); - }); + database.client.pool.on( + 'createSuccess', + (_event: number, pgClient: Knex.Client) => { + pgClient.query(`SET ROLE ${role}`, () => {}); + }, + ); } return database; } From cd64a788ece641b5e74400c08437b8da6340b193 Mon Sep 17 00:00:00 2001 From: Said Sakuh Date: Mon, 6 Mar 2023 11:00:53 +0100 Subject: [PATCH 107/147] Add support for ARM64 docker image Signed-off-by: Said Sakuh --- .github/workflows/deploy_docker-image.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/deploy_docker-image.yml b/.github/workflows/deploy_docker-image.yml index 6394b75401..4cd296827d 100644 --- a/.github/workflows/deploy_docker-image.yml +++ b/.github/workflows/deploy_docker-image.yml @@ -55,6 +55,7 @@ jobs: context: './example-app' file: ./example-app/packages/backend/Dockerfile push: true + platforms: linux/amd64,linux/arm64 tags: | ghcr.io/${{ github.repository_owner }}/backstage:latest ghcr.io/${{ github.repository_owner }}/backstage:${{ github.event.client_payload.version }} From 23cc40039c06564c4e5524b7eefd961449d87a80 Mon Sep 17 00:00:00 2001 From: Heikki Hellgren Date: Fri, 24 Feb 2023 11:04:46 +0200 Subject: [PATCH 108/147] feat: allow entity switch to render all cases that match this is required for example in the CI/CD page where multiple different kinds of integrations might need rendering (some might have for example jenkins, AWS codebuild and AWS codepipeline for single component). by default, the EntitSwitch will behave like it used to so it's not a breaking change. Signed-off-by: Heikki Hellgren --- .changeset/silver-bikes-breathe.md | 5 ++ plugins/catalog/api-report.md | 4 +- .../EntitySwitch/EntitySwitch.test.tsx | 87 +++++++++++++++++++ .../components/EntitySwitch/EntitySwitch.tsx | 49 +++++++++-- 4 files changed, 137 insertions(+), 8 deletions(-) create mode 100644 .changeset/silver-bikes-breathe.md diff --git a/.changeset/silver-bikes-breathe.md b/.changeset/silver-bikes-breathe.md new file mode 100644 index 0000000000..63dabf7b2e --- /dev/null +++ b/.changeset/silver-bikes-breathe.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog': minor +--- + +allow entity switch to render all cases that match the condition diff --git a/plugins/catalog/api-report.md b/plugins/catalog/api-report.md index ee0ca180f4..0524265c2d 100644 --- a/plugins/catalog/api-report.md +++ b/plugins/catalog/api-report.md @@ -352,7 +352,7 @@ export function EntityProcessingErrorsPanel(): JSX.Element | null; // @public (undocumented) export const EntitySwitch: { - (props: EntitySwitchProps): JSX.Element | null; + (props: EntitySwitchProps): JSX.Element; Case: (_props: EntitySwitchCaseProps) => null; }; @@ -373,6 +373,8 @@ export interface EntitySwitchCaseProps { export interface EntitySwitchProps { // (undocumented) children: ReactNode; + // (undocumented) + renderMultipleMatches?: 'first' | 'all'; } // @public @deprecated (undocumented) diff --git a/plugins/catalog/src/components/EntitySwitch/EntitySwitch.test.tsx b/plugins/catalog/src/components/EntitySwitch/EntitySwitch.test.tsx index 164c7e60fd..8ee44041c8 100644 --- a/plugins/catalog/src/components/EntitySwitch/EntitySwitch.test.tsx +++ b/plugins/catalog/src/components/EntitySwitch/EntitySwitch.test.tsx @@ -131,6 +131,48 @@ describe('EntitySwitch', () => { expect(screen.getByText('B')).toBeInTheDocument(); }); + it('should render all elements that match the condition', () => { + const entity = { metadata: { name: 'mock' }, kind: 'component' } as Entity; + + render( + + + + A

} /> + B

} /> + C

} /> + D

} /> +
+
+
, + ); + + expect(screen.getByText('A')).toBeInTheDocument(); + expect(screen.getByText('B')).toBeInTheDocument(); + expect(screen.queryByText('C')).not.toBeInTheDocument(); + expect(screen.queryByText('D')).not.toBeInTheDocument(); + }); + + it('should render default element if none of the cases match', () => { + const entity = { metadata: { name: 'mock' }, kind: 'component' } as Entity; + + render( + + + + A

} /> + B

} /> + C

} /> +
+
+
, + ); + + expect(screen.queryByText('A')).not.toBeInTheDocument(); + expect(screen.queryByText('B')).not.toBeInTheDocument(); + expect(screen.getByText('C')).toBeInTheDocument(); + }); + it('should switch with async condition that is true', async () => { const entity = { metadata: { name: 'mock' }, kind: 'component' } as Entity; @@ -150,6 +192,51 @@ describe('EntitySwitch', () => { expect(screen.queryByText('B')).not.toBeInTheDocument(); }); + it('should render all elements with async result as true', async () => { + const entity = { metadata: { name: 'mock' }, kind: 'component' } as Entity; + + const shouldRender = () => Promise.resolve(true); + const shouldNotRender = () => Promise.resolve(false); + render( + + + + A

} /> + B

} /> + C

} /> + D

} /> +
+
+
, + ); + + await expect(screen.findByText('A')).resolves.toBeInTheDocument(); + await expect(screen.findByText('B')).resolves.toBeInTheDocument(); + expect(screen.queryByText('C')).not.toBeInTheDocument(); + expect(screen.queryByText('D')).not.toBeInTheDocument(); + }); + + it('should render default element if none of the async cases match', async () => { + const entity = { metadata: { name: 'mock' }, kind: 'component' } as Entity; + + const shouldNotRender = () => Promise.resolve(false); + render( + + + + A

} /> + B

} /> + C

} /> +
+
+
, + ); + + await expect(screen.findByText('C')).resolves.toBeInTheDocument(); + expect(screen.queryByText('A')).not.toBeInTheDocument(); + expect(screen.queryByText('B')).not.toBeInTheDocument(); + }); + it('should switch with sync condition that is false', async () => { const entity = { metadata: { name: 'mock' }, kind: 'component' } as Entity; diff --git a/plugins/catalog/src/components/EntitySwitch/EntitySwitch.tsx b/plugins/catalog/src/components/EntitySwitch/EntitySwitch.tsx index 993e7daa80..6ad3c66ab3 100644 --- a/plugins/catalog/src/components/EntitySwitch/EntitySwitch.tsx +++ b/plugins/catalog/src/components/EntitySwitch/EntitySwitch.tsx @@ -49,7 +49,7 @@ interface EntitySwitchCase { } type SwitchCaseResult = { - if: boolean | Promise; + if?: boolean | Promise; children: JSX.Element; }; @@ -59,6 +59,7 @@ type SwitchCaseResult = { */ export interface EntitySwitchProps { children: ReactNode; + renderMultipleMatches?: 'first' | 'all'; } /** @public */ @@ -94,25 +95,45 @@ export const EntitySwitch = (props: EntitySwitchProps) => { } return [ { - if: condition?.(entity, { apis }) ?? true, + if: condition?.(entity, { apis }), children: elementsChildren, }, ]; }), [apis, entity, loading], ); + const hasAsyncCases = results.some( r => typeof r.if === 'object' && 'then' in r.if, ); if (hasAsyncCases) { - return ; + return ( + + ); } - return results.find(r => r.if)?.children ?? null; + if (props.renderMultipleMatches === 'all') { + const children = results.filter(r => r.if).map(r => r.children); + if (children.length === 0) { + return getDefaultChildren(results); + } + return <>{children}; + } + + return results.find(r => r.if)?.children ?? getDefaultChildren(results); }; -function AsyncEntitySwitch({ results }: { results: SwitchCaseResult[] }) { +function AsyncEntitySwitch({ + results, + renderMultipleMatches, +}: { + results: SwitchCaseResult[]; + renderMultipleMatches?: 'first' | 'all'; +}) { const { loading, value } = useAsync(async () => { const promises = results.map( async ({ if: condition, children: output }) => { @@ -123,11 +144,21 @@ function AsyncEntitySwitch({ results }: { results: SwitchCaseResult[] }) { } catch { /* ignored */ } - return null; }, ); - return (await Promise.all(promises)).find(Boolean) ?? null; + + if (renderMultipleMatches === 'all') { + const children = (await Promise.all(promises)).filter(Boolean); + if (children.length === 0) { + return getDefaultChildren(results); + } + return <>{children}; + } + + return ( + (await Promise.all(promises)).find(Boolean) ?? getDefaultChildren(results) + ); }, [results]); if (loading || !value) { @@ -137,4 +168,8 @@ function AsyncEntitySwitch({ results }: { results: SwitchCaseResult[] }) { return value; } +function getDefaultChildren(results: SwitchCaseResult[]) { + return results.filter(r => r.if === undefined)[0].children ?? null; +} + EntitySwitch.Case = EntitySwitchCaseComponent; From 347c8ed6dcbc639dd4498bb1949264435e419bc7 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 6 Mar 2023 11:43:17 +0100 Subject: [PATCH 109/147] docs/local-dev: fix incorrect exports command Signed-off-by: Patrik Oldsberg --- docs/local-dev/cli-build-system.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/local-dev/cli-build-system.md b/docs/local-dev/cli-build-system.md index 2eb695e3a3..a86c0eaa35 100644 --- a/docs/local-dev/cli-build-system.md +++ b/docs/local-dev/cli-build-system.md @@ -671,7 +671,7 @@ TypeScript support is currently handled though the `typesVersions` field, as the To add subpath exports to an existing package, simply add the desired `"exports"` fields and then run the following command: ```bash -yarn backstage-cli package migrate package-exports +yarn backstage-cli migrate package-exports ``` ## Experimental Type Build From e5a9031eae0d9a8dac5363888e3e43c4a4f9db71 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 6 Mar 2023 11:41:31 +0100 Subject: [PATCH 110/147] microsite-next: redirects for new index pages + fix links Signed-off-by: Patrik Oldsberg --- README.md | 2 +- contrib/catalog/README.md | 2 +- docs/FAQ.md | 2 +- docs/features/techdocs/cli.md | 2 +- docs/features/techdocs/how-to-guides.md | 2 +- docs/getting-started/create-an-app.md | 6 +++--- .../plugins/integrating-search-into-plugins.md | 2 +- microsite-next/docusaurus.config.js | 18 +++++++++++++++++- microsite-next/src/pages/home/_home.tsx | 6 +++--- ...-announcing-backstage-software-templates.md | 2 +- .../blog/2020-09-08-announcing-tech-docs.md | 2 +- ...-24-announcing-backstage-search-platform.md | 2 +- microsite/blog/2022-03-17-backstage-1.0.md | 8 ++++---- .../2022-05-13-techdocs-addon-framework.md | 2 +- ...022-07-19-releasing-backstage-search-1.0.md | 4 ++-- .../2023-01-31-incremental-entity-provider.md | 4 ++-- packages/backend/README.md | 2 +- .../default-app/app-config.production.yaml | 2 +- .../default-app/packages/backend/README.md | 2 +- plugins/catalog-backend/README.md | 2 +- plugins/catalog-common/src/permissions.ts | 2 +- plugins/catalog-customized/README.md | 2 +- .../src/api/CatalogImportClient.ts | 2 +- .../ImportInfoCard/ImportInfoCard.tsx | 2 +- plugins/catalog/README.md | 2 +- plugins/scaffolder-backend/README.md | 2 +- plugins/scaffolder/README.md | 2 +- .../documented-component/docs/index.md | 2 +- 28 files changed, 53 insertions(+), 37 deletions(-) diff --git a/README.md b/README.md index 75bea25f21..86e3b64ec5 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ Out of the box, Backstage includes: - [Backstage Software Catalog](https://backstage.io/docs/features/software-catalog/) for managing all your software (microservices, libraries, data pipelines, websites, ML models, etc.) - [Backstage Software Templates](https://backstage.io/docs/features/software-templates/) for quickly spinning up new projects and standardizing your tooling with your organization’s best practices -- [Backstage TechDocs](https://backstage.io/docs/features/techdocs/techdocs-overview) for making it easy to create, maintain, find, and use technical documentation, using a "docs like code" approach +- [Backstage TechDocs](https://backstage.io/docs/features/techdocs/) for making it easy to create, maintain, find, and use technical documentation, using a "docs like code" approach - Plus, a growing ecosystem of [open source plugins](https://github.com/backstage/backstage/tree/master/plugins) that further expand Backstage’s customizability and functionality Backstage was created by Spotify but is now hosted by the [Cloud Native Computing Foundation (CNCF)](https://www.cncf.io) as an Incubation level project. Read the announcement [here](https://backstage.io/blog/2022/03/16/backstage-turns-two#out-of-the-sandbox-and-into-incubation). diff --git a/contrib/catalog/README.md b/contrib/catalog/README.md index e02760cdb0..2898969c4c 100644 --- a/contrib/catalog/README.md +++ b/contrib/catalog/README.md @@ -1,6 +1,6 @@ # Catalog Contrib -This directory contains various community contributions related to [the Backstage catalog](https://backstage.io/docs/features/software-catalog/software-catalog-overview). +This directory contains various community contributions related to [the Backstage catalog](https://backstage.io/docs/features/software-catalog/). There is no guarantee of correctness or fitness of purpose of these contributions, but we hope that they are helpful to someone! diff --git a/docs/FAQ.md b/docs/FAQ.md index 5b93f07d78..6f24786102 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -176,7 +176,7 @@ By far, our most-used plugin is our TechDocs plugin, which we use for creating technical documentation. Our philosophy at Spotify is to treat "docs like code", where you write documentation using the same workflow as you write your code. This makes it easier to create, find, and update documentation. -[TechDocs is now open source.](https://backstage.io/docs/features/techdocs/techdocs-overview) +[TechDocs is now open source.](https://backstage.io/docs/features/techdocs/) (See also: "[Will Spotify's internal plugins be open sourced, too?](#will-spotifys-internal-plugins-be-open-sourced-too)" above) diff --git a/docs/features/techdocs/cli.md b/docs/features/techdocs/cli.md index 6b2e4383b8..b174896d6a 100644 --- a/docs/features/techdocs/cli.md +++ b/docs/features/techdocs/cli.md @@ -8,7 +8,7 @@ description: TechDocs CLI - a utility command line interface for managing TechDo Utility command line interface for managing TechDocs sites in [Backstage](https://github.com/backstage/backstage). -https://backstage.io/docs/features/techdocs/techdocs-overview +https://backstage.io/docs/features/techdocs/ ## Features diff --git a/docs/features/techdocs/how-to-guides.md b/docs/features/techdocs/how-to-guides.md index cfca7c6a7f..64f7335335 100644 --- a/docs/features/techdocs/how-to-guides.md +++ b/docs/features/techdocs/how-to-guides.md @@ -433,7 +433,7 @@ const app = createApp({ ## How to add the documentation setup to your software templates -[Software Templates](https://backstage.io/docs/features/software-templates/software-templates-index) +[Software Templates](https://backstage.io/docs/features/software-templates/) in Backstage is a tool that can help your users to create new components out of already configured templates. It comes with a set of default templates to use, but you can also diff --git a/docs/getting-started/create-an-app.md b/docs/getting-started/create-an-app.md index 535bc848fc..ba5050a73b 100644 --- a/docs/getting-started/create-an-app.md +++ b/docs/getting-started/create-an-app.md @@ -71,9 +71,9 @@ app good starting point for you to get to know Backstage. - **packages/backend/**: We include a backend that helps power features such as [Authentication](https://backstage.io/docs/auth/), - [Software Catalog](https://backstage.io/docs/features/software-catalog/software-catalog-overview), - [Software Templates](https://backstage.io/docs/features/software-templates/software-templates-index) - and [TechDocs](https://backstage.io/docs/features/techdocs/techdocs-overview) + [Software Catalog](https://backstage.io/docs/features/software-catalog/), + [Software Templates](https://backstage.io/docs/features/software-templates/) + and [TechDocs](https://backstage.io/docs/features/techdocs/) amongst other things. ### Troubleshooting diff --git a/docs/plugins/integrating-search-into-plugins.md b/docs/plugins/integrating-search-into-plugins.md index 524daf18cd..4e829b6ae9 100644 --- a/docs/plugins/integrating-search-into-plugins.md +++ b/docs/plugins/integrating-search-into-plugins.md @@ -146,7 +146,7 @@ Look at [DefaultTechDocsCollatorFactory test](https://github.com/backstage/backs #### 6. Make your plugins collator discoverable for others -If you want to make your collator discoverable for other adopters, add it to the list of [plugins integrated to search](https://backstage.io/docs/features/search/search-overview#plugins-integrated-with-backstage-search). +If you want to make your collator discoverable for other adopters, add it to the list of [plugins integrated to search](https://backstage.io/docs/features/search/#plugins-integrated-with-backstage-search). ## Building a search experience into your plugin diff --git a/microsite-next/docusaurus.config.js b/microsite-next/docusaurus.config.js index b3d1d16af1..bdb35d3317 100644 --- a/microsite-next/docusaurus.config.js +++ b/microsite-next/docusaurus.config.js @@ -104,6 +104,22 @@ module.exports = { from: '/docs', to: '/docs/overview/what-is-backstage', }, + { + from: '/docs/features/software-catalog/software-catalog-overview', + to: '/docs/features/software-catalog/', + }, + { + from: '/docs/features/software-templates/software-templates-index', + to: '/docs/features/software-templates/', + }, + { + from: '/docs/features/techdocs/techdocs-overview', + to: '/docs/features/techdocs/', + }, + { + from: '/docs/features/search/search-overview', + to: '/docs/features/search/', + }, ], }, ], @@ -181,7 +197,7 @@ module.exports = { }, { label: 'Software Catalog', - to: 'docs/features/software-catalog/software-catalog-overview', + to: 'docs/features/software-catalog/', }, { label: 'Create a Plugin', diff --git a/microsite-next/src/pages/home/_home.tsx b/microsite-next/src/pages/home/_home.tsx index 4ba5539348..ea22062d28 100644 --- a/microsite-next/src/pages/home/_home.tsx +++ b/microsite-next/src/pages/home/_home.tsx @@ -188,7 +188,7 @@ const HomePage = () => {

Learn more about the software catalog

READ @@ -312,7 +312,7 @@ const HomePage = () => {

Learn more about TechDocs

DOCS @@ -373,7 +373,7 @@ const HomePage = () => {

Learn more about Backstage Search

READ diff --git a/microsite/blog/2020-08-05-announcing-backstage-software-templates.md b/microsite/blog/2020-08-05-announcing-backstage-software-templates.md index 6acefa571c..f9db71d3c4 100644 --- a/microsite/blog/2020-08-05-announcing-backstage-software-templates.md +++ b/microsite/blog/2020-08-05-announcing-backstage-software-templates.md @@ -69,7 +69,7 @@ New components, of course, get added automatically to the Backstage Service Cata ## Define your standards -Backstage ships with four example templates, but since these are likely not the (only) ones you want to promote inside your company, the next step is to add [your own templates](https://backstage.io/docs/features/software-templates/software-templates-index). Using Backstage’s Software Templates feature, it’s easy to help your engineers get started building software with your organization’s best practices built-in. +Backstage ships with four example templates, but since these are likely not the (only) ones you want to promote inside your company, the next step is to add [your own templates](https://backstage.io/docs/features/software-templates/). Using Backstage’s Software Templates feature, it’s easy to help your engineers get started building software with your organization’s best practices built-in. We have learned that one of the keys to getting these standards adopted is to keep an open process. Templates are code. By making it clear to your engineers that you are open to pull requests, and that teams with different needs can add their own templates, you are on the path of striking a good balance between autonomy and standardization. diff --git a/microsite/blog/2020-09-08-announcing-tech-docs.md b/microsite/blog/2020-09-08-announcing-tech-docs.md index 578f03a54f..d83a9d0dbc 100644 --- a/microsite/blog/2020-09-08-announcing-tech-docs.md +++ b/microsite/blog/2020-09-08-announcing-tech-docs.md @@ -40,7 +40,7 @@ More specifically, with this first iteration, you can: - Choose your own storage solution for the documentation. - Define your own API to interface with your documentation solution. -For a full overview, including getting started instructions, check out our [TechDocs Documentation](https://backstage.io/docs/features/techdocs/techdocs-overview). +For a full overview, including getting started instructions, check out our [TechDocs Documentation](https://backstage.io/docs/features/techdocs/). But before you go there, let me tell you a bit about the TechDocs story — and why we believe TechDocs is such a powerful yet simple solution for great documentation. diff --git a/microsite/blog/2021-06-24-announcing-backstage-search-platform.md b/microsite/blog/2021-06-24-announcing-backstage-search-platform.md index 118ac1f43c..d96b5153ad 100644 --- a/microsite/blog/2021-06-24-announcing-backstage-search-platform.md +++ b/microsite/blog/2021-06-24-announcing-backstage-search-platform.md @@ -97,6 +97,6 @@ Whichever situation you’re in, we have you covered. We’ve built the foundation for the Backstage Search platform, and we can't wait to see the exciting engines, collators, and components the community builds on the platform. -You can check out our [project roadmap](https://backstage.io/docs/features/search/search-overview#project-roadmap) in our search documentation or track the progress of our [Beta milestone](https://github.com/backstage/backstage/milestone/27) and [GA milestone](https://github.com/backstage/backstage/milestone/28). +You can check out our [project roadmap](https://backstage.io/docs/features/search/#project-roadmap) in our search documentation or track the progress of our [Beta milestone](https://github.com/backstage/backstage/milestone/27) and [GA milestone](https://github.com/backstage/backstage/milestone/28). For any questions, feedback or ideas about the Backstage Search platform, join us in the #search channel on [Discord](https://discord.gg/backstage-687207715902193673)! diff --git a/microsite/blog/2022-03-17-backstage-1.0.md b/microsite/blog/2022-03-17-backstage-1.0.md index 8cc627c127..5afbc3d1ee 100644 --- a/microsite/blog/2022-03-17-backstage-1.0.md +++ b/microsite/blog/2022-03-17-backstage-1.0.md @@ -25,11 +25,11 @@ To start, let’s define Backstage: it’s an open platform for building develop Our definition of Backstage 1.0 includes: - Backstage Core 1.0 libraries as the set of libraries to make the platform work -- [Backstage Software Catalog](https://backstage.io/docs/features/software-catalog/software-catalog-overview) 1.0 -- [Backstage Software Templates](https://backstage.io/docs/features/software-templates/software-templates-index) 1.0 -- [Backstage TechDocs](https://backstage.io/docs/features/techdocs/techdocs-overview) 1.0 +- [Backstage Software Catalog](https://backstage.io/docs/features/software-catalog/) 1.0 +- [Backstage Software Templates](https://backstage.io/docs/features/software-templates/) 1.0 +- [Backstage TechDocs](https://backstage.io/docs/features/techdocs/) 1.0 -Coming soon: [Backstage Search](https://backstage.io/docs/features/search/search-overview) 1.0 will be included in the near future as part of the regular releases to the Backstage platform. +Coming soon: [Backstage Search](https://backstage.io/docs/features/search/) 1.0 will be included in the near future as part of the regular releases to the Backstage platform. In terms of features, the maintainers will not be shipping new stuff as part of the major release but instead: diff --git a/microsite/blog/2022-05-13-techdocs-addon-framework.md b/microsite/blog/2022-05-13-techdocs-addon-framework.md index 7169d45d23..1c88989dd6 100644 --- a/microsite/blog/2022-05-13-techdocs-addon-framework.md +++ b/microsite/blog/2022-05-13-techdocs-addon-framework.md @@ -14,7 +14,7 @@ _TL;DR:_ Introducing the TechDocs Addon Framework — a way for us all to contri -[TechDocs](https://backstage.io/docs/features/techdocs/techdocs-overview) is a centralized platform for publishing, viewing, and discovering technical documentation across an entire organization. It's a solid foundation! But TechDocs doesn't solve higher order documentation needs on its own such as: How do you create and reinforce a culture of documentation? How do you build trust in the quality of technical documentation? +[TechDocs](https://backstage.io/docs/features/techdocs/) is a centralized platform for publishing, viewing, and discovering technical documentation across an entire organization. It's a solid foundation! But TechDocs doesn't solve higher order documentation needs on its own such as: How do you create and reinforce a culture of documentation? How do you build trust in the quality of technical documentation? To address this need, we’re proud to introduce the [TechDocs Addon Framework](https://github.com/backstage/backstage/issues/9636) — a way for us all to contribute and share additional features, TechDocs Addons, on top of the base docs-like-code experience. Using TechDocs Addons, you can customize the TechDocs experience to address some of these higher order needs. diff --git a/microsite/blog/2022-07-19-releasing-backstage-search-1.0.md b/microsite/blog/2022-07-19-releasing-backstage-search-1.0.md index d1bff97a53..4c63e21f21 100644 --- a/microsite/blog/2022-07-19-releasing-backstage-search-1.0.md +++ b/microsite/blog/2022-07-19-releasing-backstage-search-1.0.md @@ -1,11 +1,11 @@ --- # prettier-ignore -title: Releasing Backstage Search 1.0 +title: Releasing Backstage Search 1.0 author: Emma Indal, Spotify authorURL: https://www.linkedin.com/in/emma-indal --- -**TL;DR** If you’ve been waiting for Backstage Search to come out of beta, we’re excited to announce that [Backstage Search 1.0](https://backstage.io/docs/features/search/search-overview#backstage-search-10) is here! +**TL;DR** If you’ve been waiting for Backstage Search to come out of beta, we’re excited to announce that [Backstage Search 1.0](https://backstage.io/docs/features/search/#backstage-search-10) is here! We first released the Backstage Search Platform over a year ago. Backstage Search Platform is a search experience built for you, by you. diff --git a/microsite/blog/2023-01-31-incremental-entity-provider.md b/microsite/blog/2023-01-31-incremental-entity-provider.md index fd273af208..b878c66871 100644 --- a/microsite/blog/2023-01-31-incremental-entity-provider.md +++ b/microsite/blog/2023-01-31-incremental-entity-provider.md @@ -4,13 +4,13 @@ author: Paul Cowan & Taras Mankovski authorURL: https://frontside.com/ --- -At the heart of [Backstage](https://backstage.io/) is the [Backstage Software Catalog](https://backstage.io/docs/features/software-catalog/software-catalog-overview), which is a data store that allows an organization to centralize and visualize its many software services and components. Backstage inspects and transforms an organization's disparate software services and parts into a centralized data store. This blog post introduces the concept of incremental entity providers, which allow Backstage to scale ingestion to even larger datasets. +At the heart of [Backstage](https://backstage.io/) is the [Backstage Software Catalog](https://backstage.io/docs/features/software-catalog/), which is a data store that allows an organization to centralize and visualize its many software services and components. Backstage inspects and transforms an organization's disparate software services and parts into a centralized data store. This blog post introduces the concept of incremental entity providers, which allow Backstage to scale ingestion to even larger datasets. ![catalog pipeline](assets/2023-01-31/catalog-pipeline.png) -A common use case is for an organization to want to surface ownership and metadata about repositories. Backstage provides a mechanism for discovering and transforming repository information into a standard data structure and persisting it into the Backstage [Catalog](https://backstage.io/docs/features/software-catalog/software-catalog-overview). This process is known as ingestion, where all data is transformed into a standard Backstage data structure known as an entity. Entities in the Catalog’s data store are accessible to the Backstage App via the REST API. +A common use case is for an organization to want to surface ownership and metadata about repositories. Backstage provides a mechanism for discovering and transforming repository information into a standard data structure and persisting it into the Backstage [Catalog](https://backstage.io/docs/features/software-catalog/). This process is known as ingestion, where all data is transformed into a standard Backstage data structure known as an entity. Entities in the Catalog’s data store are accessible to the Backstage App via the REST API. Data is transformed into entities via what is known as the ingestion and processing loop, which can be thought of as an [extract, transform and load (ETL) pipeline](https://en.wikipedia.org/wiki/Extract,_transform,_load), where raw data such as GitHub repositories are loaded from GitHub, transformed into entities and outputted to the Catalog. diff --git a/packages/backend/README.md b/packages/backend/README.md index f86d09842a..f71fc9f9d8 100644 --- a/packages/backend/README.md +++ b/packages/backend/README.md @@ -44,7 +44,7 @@ To debug the backend in [Visual Studio Code](https://code.visualstudio.com/): If you want to use the catalog functionality, you need to add so called locations to the backend. These are places where the backend can find some entity descriptor data to consume and serve. For more information, see -[Software Catalog Overview - Adding Components to the Catalog](https://backstage.io/docs/features/software-catalog/software-catalog-overview#adding-components-to-the-catalog). +[Software Catalog Overview - Adding Components to the Catalog](https://backstage.io/docs/features/software-catalog/#adding-components-to-the-catalog). For convenience we already include some statically configured example locations in `app-config.yaml` under `catalog.locations`. For local development you can override these in your own `app-config.local.yaml`. diff --git a/packages/create-app/templates/default-app/app-config.production.yaml b/packages/create-app/templates/default-app/app-config.production.yaml index df09dac50a..8f0751cd31 100644 --- a/packages/create-app/templates/default-app/app-config.production.yaml +++ b/packages/create-app/templates/default-app/app-config.production.yaml @@ -30,6 +30,6 @@ backend: catalog: # Overrides the default list locations from app-config.yaml as these contain example data. - # See https://backstage.io/docs/features/software-catalog/software-catalog-overview#adding-components-to-the-catalog for more details + # See https://backstage.io/docs/features/software-catalog/#adding-components-to-the-catalog for more details # on how to get entities into the catalog. locations: [] diff --git a/packages/create-app/templates/default-app/packages/backend/README.md b/packages/create-app/templates/default-app/packages/backend/README.md index 867487ba0a..3607b0a092 100644 --- a/packages/create-app/templates/default-app/packages/backend/README.md +++ b/packages/create-app/templates/default-app/packages/backend/README.md @@ -36,7 +36,7 @@ The backend starts up on port 7007 per default. If you want to use the catalog functionality, you need to add so called locations to the backend. These are places where the backend can find some entity descriptor data to consume and serve. For more information, see -[Software Catalog Overview - Adding Components to the Catalog](https://backstage.io/docs/features/software-catalog/software-catalog-overview#adding-components-to-the-catalog). +[Software Catalog Overview - Adding Components to the Catalog](https://backstage.io/docs/features/software-catalog/#adding-components-to-the-catalog). To get started quickly, this template already includes some statically configured example locations in `app-config.yaml` under `catalog.locations`. You can remove and replace these locations as you diff --git a/plugins/catalog-backend/README.md b/plugins/catalog-backend/README.md index fbd0fd4a91..1e2bce3142 100644 --- a/plugins/catalog-backend/README.md +++ b/plugins/catalog-backend/README.md @@ -1,7 +1,7 @@ # Catalog Backend This is the backend for the default Backstage [software -catalog](http://backstage.io/docs/features/software-catalog/software-catalog-overview). +catalog](http://backstage.io/docs/features/software-catalog/). This provides an API for consumers such as the frontend [catalog plugin](https://github.com/backstage/backstage/tree/master/plugins/catalog). diff --git a/plugins/catalog-common/src/permissions.ts b/plugins/catalog-common/src/permissions.ts index 615f02a7fb..3082c0da70 100644 --- a/plugins/catalog-common/src/permissions.ts +++ b/plugins/catalog-common/src/permissions.ts @@ -22,7 +22,7 @@ import { /** * Permission resource type which corresponds to catalog entities. * - * {@link https://backstage.io/docs/features/software-catalog/software-catalog-overview} + * {@link https://backstage.io/docs/features/software-catalog/} * @alpha */ export const RESOURCE_TYPE_CATALOG_ENTITY = 'catalog-entity'; diff --git a/plugins/catalog-customized/README.md b/plugins/catalog-customized/README.md index 129d70ad58..b7323d7430 100644 --- a/plugins/catalog-customized/README.md +++ b/plugins/catalog-customized/README.md @@ -1,7 +1,7 @@ # Backstage Catalog Frontend This is the React frontend to customize Backstage [software -catalog](http://backstage.io/docs/features/software-catalog/software-catalog-overview). +catalog](http://backstage.io/docs/features/software-catalog/). This package supplies the example how it can be achieved. ## Installation diff --git a/plugins/catalog-import/src/api/CatalogImportClient.ts b/plugins/catalog-import/src/api/CatalogImportClient.ts index 4981331c89..7b582c90fa 100644 --- a/plugins/catalog-import/src/api/CatalogImportClient.ts +++ b/plugins/catalog-import/src/api/CatalogImportClient.ts @@ -164,7 +164,7 @@ export class CatalogImportClient implements CatalogImportApi { to this repository so that the component can be added to the \ [${appTitle} software catalog](${appBaseUrl}).\n\nAfter this pull request is merged, \ the component will become available.\n\nFor more information, read an \ -[overview of the Backstage software catalog](https://backstage.io/docs/features/software-catalog/software-catalog-overview).`, +[overview of the Backstage software catalog](https://backstage.io/docs/features/software-catalog/).`, }; } diff --git a/plugins/catalog-import/src/components/ImportInfoCard/ImportInfoCard.tsx b/plugins/catalog-import/src/components/ImportInfoCard/ImportInfoCard.tsx index 4779e2d64b..f7086fce19 100644 --- a/plugins/catalog-import/src/components/ImportInfoCard/ImportInfoCard.tsx +++ b/plugins/catalog-import/src/components/ImportInfoCard/ImportInfoCard.tsx @@ -56,7 +56,7 @@ export const ImportInfoCard = (props: ImportInfoCardProps) => { titleTypographyProps={{ component: 'h3' }} deepLink={{ title: 'Learn more about the Software Catalog', - link: 'https://backstage.io/docs/features/software-catalog/software-catalog-overview', + link: 'https://backstage.io/docs/features/software-catalog/', }} > diff --git a/plugins/catalog/README.md b/plugins/catalog/README.md index 74d0f9e901..b35110053e 100644 --- a/plugins/catalog/README.md +++ b/plugins/catalog/README.md @@ -1,7 +1,7 @@ # Backstage Catalog Frontend This is the React frontend for the default Backstage [software -catalog](http://backstage.io/docs/features/software-catalog/software-catalog-overview). +catalog](http://backstage.io/docs/features/software-catalog/). This package supplies interfaces related to listing catalog entities or showing more information about them on entity pages. diff --git a/plugins/scaffolder-backend/README.md b/plugins/scaffolder-backend/README.md index 6a29911e13..ba9183c5cc 100644 --- a/plugins/scaffolder-backend/README.md +++ b/plugins/scaffolder-backend/README.md @@ -1,7 +1,7 @@ # Scaffolder Backend This is the backend for the default Backstage [software -templates](https://backstage.io/docs/features/software-templates/software-templates-index). +templates](https://backstage.io/docs/features/software-templates/). This provides the API for the frontend [scaffolder plugin](https://github.com/backstage/backstage/tree/master/plugins/scaffolder), as well as the built-in template actions, tasks and stages. diff --git a/plugins/scaffolder/README.md b/plugins/scaffolder/README.md index 83fa01e6e5..80d59160c4 100644 --- a/plugins/scaffolder/README.md +++ b/plugins/scaffolder/README.md @@ -1,7 +1,7 @@ # Scaffolder Frontend This is the React frontend for the default Backstage [software -templates](https://backstage.io/docs/features/software-templates/software-templates-index). +templates](https://backstage.io/docs/features/software-templates/). This package supplies interfaces related to showing available templates in the Backstage catalog and the workflow to create software using those templates. diff --git a/plugins/techdocs-backend/examples/documented-component/docs/index.md b/plugins/techdocs-backend/examples/documented-component/docs/index.md index 5a3d7508cd..6295a69406 100644 --- a/plugins/techdocs-backend/examples/documented-component/docs/index.md +++ b/plugins/techdocs-backend/examples/documented-component/docs/index.md @@ -35,7 +35,7 @@ Check out the [Markdown Guide](https://www.markdownguide.org/) to learn more abo simply create documentation. You can also learn more about how to configure and setup this documentation in Backstage, -[read up on the TechDocs Overview](https://backstage.io/docs/features/techdocs/techdocs-overview). +[read up on the TechDocs Overview](https://backstage.io/docs/features/techdocs/). ## Image Example From d68c16a28590363df3cd17a93650b783e364367a Mon Sep 17 00:00:00 2001 From: Joep Peeters Date: Mon, 6 Mar 2023 12:05:18 +0100 Subject: [PATCH 111/147] add callback with error handling Signed-off-by: Joep Peeters --- packages/backend-common/src/database/connectors/postgres.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/backend-common/src/database/connectors/postgres.ts b/packages/backend-common/src/database/connectors/postgres.ts index 0b20b6f19a..afa0d1f732 100644 --- a/packages/backend-common/src/database/connectors/postgres.ts +++ b/packages/backend-common/src/database/connectors/postgres.ts @@ -42,7 +42,9 @@ export function createPgDatabaseClient( database.client.pool.on( 'createSuccess', (_event: number, pgClient: Knex.Client) => { - pgClient.query(`SET ROLE ${role}`, () => {}); + pgClient.query(`SET ROLE ${role}`, (err: Error, _res: any) => { + if (err) throw err; + }); }, ); } From f8a9fa1b0fe1519615345a26905cfc95d97228ce Mon Sep 17 00:00:00 2001 From: Joep Peeters Date: Mon, 6 Mar 2023 12:28:03 +0100 Subject: [PATCH 112/147] add @types/pg and set correct type Signed-off-by: Joep Peeters --- packages/backend-common/package.json | 2 ++ .../src/database/connectors/postgres.ts | 3 +- yarn.lock | 33 +++++++++++++------ 3 files changed, 27 insertions(+), 11 deletions(-) diff --git a/packages/backend-common/package.json b/packages/backend-common/package.json index d356d67fab..2378a24383 100644 --- a/packages/backend-common/package.json +++ b/packages/backend-common/package.json @@ -78,6 +78,7 @@ "morgan": "^1.10.0", "node-fetch": "^2.6.7", "node-forge": "^1.3.1", + "pg": "^8.9.0", "raw-body": "^2.4.1", "request": "^2.88.2", "selfsigned": "^2.0.0", @@ -110,6 +111,7 @@ "@types/mock-fs": "^4.13.0", "@types/morgan": "^1.9.0", "@types/node-forge": "^1.3.0", + "@types/pg": "^8.6.6", "@types/recursive-readdir": "^2.2.0", "@types/stoppable": "^1.1.0", "@types/supertest": "^2.0.8", diff --git a/packages/backend-common/src/database/connectors/postgres.ts b/packages/backend-common/src/database/connectors/postgres.ts index afa0d1f732..7dab81dcbb 100644 --- a/packages/backend-common/src/database/connectors/postgres.ts +++ b/packages/backend-common/src/database/connectors/postgres.ts @@ -22,6 +22,7 @@ import { mergeDatabaseConfig } from '../config'; import { DatabaseConnector } from '../types'; import defaultNameOverride from './defaultNameOverride'; import defaultSchemaOverride from './defaultSchemaOverride'; +import { Client } from 'pg'; /** * Creates a knex postgres database connection @@ -41,7 +42,7 @@ export function createPgDatabaseClient( if (role) { database.client.pool.on( 'createSuccess', - (_event: number, pgClient: Knex.Client) => { + (_event: number, pgClient: Client) => { pgClient.query(`SET ROLE ${role}`, (err: Error, _res: any) => { if (err) throw err; }); diff --git a/yarn.lock b/yarn.lock index 7d00ad8f19..e8567c9620 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3453,6 +3453,7 @@ __metadata: "@types/mock-fs": ^4.13.0 "@types/morgan": ^1.9.0 "@types/node-forge": ^1.3.0 + "@types/pg": ^8.6.6 "@types/recursive-readdir": ^2.2.0 "@types/stoppable": ^1.1.0 "@types/supertest": ^2.0.8 @@ -3489,6 +3490,7 @@ __metadata: mysql2: ^2.2.5 node-fetch: ^2.6.7 node-forge: ^1.3.1 + pg: ^8.9.0 raw-body: ^2.4.1 recursive-readdir: ^2.2.2 request: ^2.88.2 @@ -15117,6 +15119,17 @@ __metadata: languageName: node linkType: hard +"@types/pg@npm:^8.6.6": + version: 8.6.6 + resolution: "@types/pg@npm:8.6.6" + dependencies: + "@types/node": "*" + pg-protocol: "*" + pg-types: ^2.2.0 + checksum: ac145553a8ad2f357feacad1bceaf5d6ce904eb9d66233b84c469a2b4fa3738d4ebdf29b7ea45387be2d07f915fd873a229f90a2f766d7c377afa7c41fbcf8d1 + languageName: node + linkType: hard + "@types/pluralize@npm:^0.0.29": version: 0.0.29 resolution: "@types/pluralize@npm:0.0.29" @@ -31569,14 +31582,14 @@ __metadata: languageName: node linkType: hard -"pg-protocol@npm:^1.5.0": - version: 1.5.0 - resolution: "pg-protocol@npm:1.5.0" - checksum: b839d12cafe942ef9cbc5b13c174eb2356804fb4fe8ead8279f46a36be90722d19a91409955beb8a3d5301639c44854e49749de4aef02dc361fee3e2a61fb1e4 +"pg-protocol@npm:*, pg-protocol@npm:^1.6.0": + version: 1.6.0 + resolution: "pg-protocol@npm:1.6.0" + checksum: e12662d2de2011e0c3a03f6a09f435beb1025acdc860f181f18a600a5495dc38a69d753bbde1ace279c8c442536af9c1a7c11e1d0fe3fad3aa1348b28d9d2683 languageName: node linkType: hard -"pg-types@npm:^2.1.0": +"pg-types@npm:^2.1.0, pg-types@npm:^2.2.0": version: 2.2.0 resolution: "pg-types@npm:2.2.0" dependencies: @@ -31589,15 +31602,15 @@ __metadata: languageName: node linkType: hard -"pg@npm:^8.3.0, pg@npm:^8.4.0": - version: 8.8.0 - resolution: "pg@npm:8.8.0" +"pg@npm:^8.3.0, pg@npm:^8.4.0, pg@npm:^8.9.0": + version: 8.9.0 + resolution: "pg@npm:8.9.0" dependencies: buffer-writer: 2.0.0 packet-reader: 1.0.0 pg-connection-string: ^2.5.0 pg-pool: ^3.5.2 - pg-protocol: ^1.5.0 + pg-protocol: ^1.6.0 pg-types: ^2.1.0 pgpass: 1.x peerDependencies: @@ -31605,7 +31618,7 @@ __metadata: peerDependenciesMeta: pg-native: optional: true - checksum: fa30a85814dd7238b582c3bc6c0b9e2b0ae38dd0a6bb485ef480e64bb5ce589de6cb873ce4d3cd10c37a3e0a1e1281ba75dc7d80b1a68bae91999cd5b70d398b + checksum: dfd158955318f9ffb9428eaada29f3ee98b9eb07e87ed4b56589a19984d109f23bb8f88db78b7d7f870553e5b75ca0d58d0ed55755a8c6aed5df44e038c1d529 languageName: node linkType: hard From 4698b8eaf79277b7f1f69400894d33e7b85e1818 Mon Sep 17 00:00:00 2001 From: Joep Peeters Date: Mon, 6 Mar 2023 14:04:04 +0100 Subject: [PATCH 113/147] remove callback Signed-off-by: Joep Peeters --- packages/backend-common/src/database/connectors/postgres.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/backend-common/src/database/connectors/postgres.ts b/packages/backend-common/src/database/connectors/postgres.ts index 7dab81dcbb..afc8c207be 100644 --- a/packages/backend-common/src/database/connectors/postgres.ts +++ b/packages/backend-common/src/database/connectors/postgres.ts @@ -42,10 +42,8 @@ export function createPgDatabaseClient( if (role) { database.client.pool.on( 'createSuccess', - (_event: number, pgClient: Client) => { - pgClient.query(`SET ROLE ${role}`, (err: Error, _res: any) => { - if (err) throw err; - }); + async (_event: number, pgClient: Client) => { + await pgClient.query(`SET ROLE ${role}`); }, ); } From c93425b635f25ea14ed01f7df9050a3d8fb34ba6 Mon Sep 17 00:00:00 2001 From: Joep Peeters Date: Mon, 6 Mar 2023 14:13:15 +0100 Subject: [PATCH 114/147] add example config to changelog Signed-off-by: Joep Peeters --- .changeset/mean-toys-itch.md | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/.changeset/mean-toys-itch.md b/.changeset/mean-toys-itch.md index 19f8c861df..f456b048fa 100644 --- a/.changeset/mean-toys-itch.md +++ b/.changeset/mean-toys-itch.md @@ -2,4 +2,20 @@ '@backstage/backend-common': patch --- -Adds config option to set ownership for newly created schemas and tables in Postgres +Adds config option `backend.database.role` to set ownership for newly created schemas and tables in Postgres + +### example config + +The example config below connects to the database as user `v-backstage-123` but sets the ownership of +the create schema's and tables to `backstage` + +```yaml +backend: + database: + client: pg + pluginDivisionMode: schema + role: backstage + connection: + user: v-backstage-123 + ... +``` From f1a128ac9337873a67ace6d397d4b1b1d0b0ebf3 Mon Sep 17 00:00:00 2001 From: Taras Mankovski Date: Mon, 6 Mar 2023 08:14:31 -0500 Subject: [PATCH 115/147] Update .changeset/tiny-llamas-jump.md Co-authored-by: Ben Lambert Signed-off-by: Taras Mankovski --- .changeset/tiny-llamas-jump.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/tiny-llamas-jump.md b/.changeset/tiny-llamas-jump.md index bf5bc363b3..ccf42cd514 100644 --- a/.changeset/tiny-llamas-jump.md +++ b/.changeset/tiny-llamas-jump.md @@ -2,4 +2,4 @@ '@backstage/core-components': patch --- -Use css media query in BackstagePage style hook to eliminate style hook props +Use media queries to change layout instead of `isMobile` prop in `BackstagePage` component From 3c96e77b51395b937aab7398580efc738e03275e Mon Sep 17 00:00:00 2001 From: Axel Hecht Date: Mon, 6 Mar 2023 14:14:41 +0100 Subject: [PATCH 116/147] Use page theme fontColor consistently in scaffolder headers and cards. This fixes problems with themes with white header background, which end up with white-on-white text for card heads and context menus. Signed-off-by: Axel Hecht --- .changeset/cool-feet-speak.md | 6 ++++ .../components/TemplateCard/CardHeader.tsx | 28 +++++++++++-------- .../ScaffolderPageContextMenu.tsx | 5 ++-- .../components/TemplateCard/TemplateCard.tsx | 13 +++++++-- .../src/next/TemplateListPage/ContextMenu.tsx | 5 ++-- 5 files changed, 39 insertions(+), 18 deletions(-) create mode 100644 .changeset/cool-feet-speak.md diff --git a/.changeset/cool-feet-speak.md b/.changeset/cool-feet-speak.md new file mode 100644 index 0000000000..8cf3df759a --- /dev/null +++ b/.changeset/cool-feet-speak.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-scaffolder-react': minor +'@backstage/plugin-scaffolder': minor +--- + +Make scaffolder adhere to page themes by using page fontColor consistently. If your theme overwrites template list or card headers, review those stylings. diff --git a/plugins/scaffolder-react/src/next/components/TemplateCard/CardHeader.tsx b/plugins/scaffolder-react/src/next/components/TemplateCard/CardHeader.tsx index 3a5785a4f6..608af1a0bf 100644 --- a/plugins/scaffolder-react/src/next/components/TemplateCard/CardHeader.tsx +++ b/plugins/scaffolder-react/src/next/components/TemplateCard/CardHeader.tsx @@ -21,17 +21,22 @@ import { BackstageTheme } from '@backstage/theme'; import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common'; import { FavoriteEntity } from '@backstage/plugin-catalog-react'; -const useStyles = makeStyles( - () => ({ - header: { - backgroundImage: ({ cardBackgroundImage }) => cardBackgroundImage, - }, - subtitleWrapper: { - display: 'flex', - justifyContent: 'space-between', - }, - }), -); +const useStyles = makeStyles< + BackstageTheme, + { + cardFontColor: string; + cardBackgroundImage: string; + } +>(() => ({ + header: { + backgroundImage: ({ cardBackgroundImage }) => cardBackgroundImage, + color: ({ cardFontColor }) => cardFontColor, + }, + subtitleWrapper: { + display: 'flex', + justifyContent: 'space-between', + }, +})); /** * Props for the CardHeader component @@ -54,6 +59,7 @@ export const CardHeader = (props: CardHeaderProps) => { const themeForType = getPageTheme({ themeId: type }); const styles = useStyles({ + cardFontColor: themeForType.fontColor, cardBackgroundImage: themeForType.backgroundImage, }); diff --git a/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPageContextMenu.tsx b/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPageContextMenu.tsx index ca7648546e..ef79eda406 100644 --- a/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPageContextMenu.tsx +++ b/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPageContextMenu.tsx @@ -15,6 +15,7 @@ */ import { useRouteRef } from '@backstage/core-plugin-api'; +import { BackstageTheme } from '@backstage/theme'; import IconButton from '@material-ui/core/IconButton'; import ListItemIcon from '@material-ui/core/ListItemIcon'; import ListItemText from '@material-ui/core/ListItemText'; @@ -34,9 +35,9 @@ import { scaffolderListTaskRouteRef, } from '../../routes'; -const useStyles = makeStyles(theme => ({ +const useStyles = makeStyles(theme => ({ button: { - color: theme.palette.common.white, + color: theme.page.fontColor, }, })); diff --git a/plugins/scaffolder/src/components/TemplateCard/TemplateCard.tsx b/plugins/scaffolder/src/components/TemplateCard/TemplateCard.tsx index 80aba04060..825317ef73 100644 --- a/plugins/scaffolder/src/components/TemplateCard/TemplateCard.tsx +++ b/plugins/scaffolder/src/components/TemplateCard/TemplateCard.tsx @@ -64,12 +64,16 @@ import WarningIcon from '@material-ui/icons/Warning'; import React from 'react'; import { selectedTemplateRouteRef, viewTechDocRouteRef } from '../../routes'; -const useStyles = makeStyles(theme => ({ +const useStyles = makeStyles< + BackstageTheme, + { fontColor: string; backgroundImage: string } +>(theme => ({ cardHeader: { position: 'relative', }, title: { - backgroundImage: ({ backgroundImage }: any) => backgroundImage, + backgroundImage: ({ backgroundImage }) => backgroundImage, + color: ({ fontColor }) => fontColor, }, box: { overflow: 'hidden', @@ -186,7 +190,10 @@ export const TemplateCard = ({ template, deprecated }: TemplateCardProps) => { ? templateProps.type : 'other'; const theme = backstageTheme.getPageTheme({ themeId }); - const classes = useStyles({ backgroundImage: theme.backgroundImage }); + const classes = useStyles({ + fontColor: theme.fontColor, + backgroundImage: theme.backgroundImage, + }); const { name, namespace } = parseEntityRef(stringifyEntityRef(template)); const href = templateRoute({ templateName: name, namespace }); diff --git a/plugins/scaffolder/src/next/TemplateListPage/ContextMenu.tsx b/plugins/scaffolder/src/next/TemplateListPage/ContextMenu.tsx index 6165d40e7c..d78b8a62c4 100644 --- a/plugins/scaffolder/src/next/TemplateListPage/ContextMenu.tsx +++ b/plugins/scaffolder/src/next/TemplateListPage/ContextMenu.tsx @@ -15,6 +15,7 @@ */ import { useRouteRef } from '@backstage/core-plugin-api'; +import { BackstageTheme } from '@backstage/theme'; import IconButton from '@material-ui/core/IconButton'; import ListItemIcon from '@material-ui/core/ListItemIcon'; import ListItemText from '@material-ui/core/ListItemText'; @@ -34,9 +35,9 @@ import { nextScaffolderListTaskRouteRef, } from '../routes'; -const useStyles = makeStyles(theme => ({ +const useStyles = makeStyles((theme: BackstageTheme) => ({ button: { - color: theme.palette.common.white, + color: theme.page.fontColor, }, })); From 6d4b1740476d6cb3e282820d067cbce9af688491 Mon Sep 17 00:00:00 2001 From: Joep Peeters Date: Mon, 6 Mar 2023 14:17:42 +0100 Subject: [PATCH 117/147] spelling Signed-off-by: Joep Peeters --- .changeset/mean-toys-itch.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/mean-toys-itch.md b/.changeset/mean-toys-itch.md index f456b048fa..c80d99f44d 100644 --- a/.changeset/mean-toys-itch.md +++ b/.changeset/mean-toys-itch.md @@ -7,7 +7,7 @@ Adds config option `backend.database.role` to set ownership for newly created sc ### example config The example config below connects to the database as user `v-backstage-123` but sets the ownership of -the create schema's and tables to `backstage` +the create schemas and tables to `backstage` ```yaml backend: From d571c111946582966f41e2d2699b77a3a5643cff Mon Sep 17 00:00:00 2001 From: Axel Hecht Date: Mon, 6 Mar 2023 14:33:46 +0100 Subject: [PATCH 118/147] Fix vale Signed-off-by: Axel Hecht --- .changeset/cool-feet-speak.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/cool-feet-speak.md b/.changeset/cool-feet-speak.md index 8cf3df759a..f6c3eb3035 100644 --- a/.changeset/cool-feet-speak.md +++ b/.changeset/cool-feet-speak.md @@ -3,4 +3,4 @@ '@backstage/plugin-scaffolder': minor --- -Make scaffolder adhere to page themes by using page fontColor consistently. If your theme overwrites template list or card headers, review those stylings. +Make scaffolder adhere to page themes by using page `fontColor` consistently. If your theme overwrites template list or card headers, review those styles. From 8bbf95b55072e6a9a43d49c384cf7fee3f352ce5 Mon Sep 17 00:00:00 2001 From: Avantika Iyer Date: Mon, 6 Mar 2023 16:20:02 +0000 Subject: [PATCH 119/147] Replace style override fix with a Classes prop override instead (#16621) * replace style override fix Signed-off-by: Avantika Iyer * Update clean-lemons-jump.md Signed-off-by: Avantika Iyer * Update clean-lemons-jump.md Signed-off-by: Avantika Iyer * Update .changeset/clean-lemons-jump.md Signed-off-by: Patrik Oldsberg --------- Signed-off-by: Avantika Iyer Signed-off-by: Patrik Oldsberg Co-authored-by: Patrik Oldsberg --- .changeset/clean-lemons-jump.md | 7 +++++++ packages/core-components/src/layout/Sidebar/Bar.tsx | 3 --- packages/core-components/src/layout/Sidebar/Items.tsx | 1 + 3 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 .changeset/clean-lemons-jump.md diff --git a/.changeset/clean-lemons-jump.md b/.changeset/clean-lemons-jump.md new file mode 100644 index 0000000000..ab6f22136a --- /dev/null +++ b/.changeset/clean-lemons-jump.md @@ -0,0 +1,7 @@ +--- +'@backstage/core-components': patch +--- + +Button labels in the sidebar (previously displayed in uppercase) will be displayed in the case that is provided without any transformations. +For example, a sidebar button with the label "Search" will appear as Search, "search" will appear as search, "SEARCH" will appear as SEARCH etc. +This can potentially affect any overriding styles previously applied to change the appearance of Button labels in the Sidebar. diff --git a/packages/core-components/src/layout/Sidebar/Bar.tsx b/packages/core-components/src/layout/Sidebar/Bar.tsx index 95ed88b1ec..69b77dd5e1 100644 --- a/packages/core-components/src/layout/Sidebar/Bar.tsx +++ b/packages/core-components/src/layout/Sidebar/Bar.tsx @@ -63,9 +63,6 @@ const useStyles = makeStyles( '&::-webkit-scrollbar': { display: 'none', }, - '& .MuiButtonBase-root': { - textTransform: 'none', - }, }), drawerOpen: props => ({ width: props.sidebarConfig.drawerWidthOpen, diff --git a/packages/core-components/src/layout/Sidebar/Items.tsx b/packages/core-components/src/layout/Sidebar/Items.tsx index 823320403e..00d1871947 100644 --- a/packages/core-components/src/layout/Sidebar/Items.tsx +++ b/packages/core-components/src/layout/Sidebar/Items.tsx @@ -103,6 +103,7 @@ const makeSidebarStyles = (sidebarConfig: SidebarConfig) => padding: 0, textAlign: 'inherit', font: 'inherit', + textTransform: 'none', }, closed: { width: sidebarConfig.drawerWidthClosed, From 708d0abd9dcd7676bf28fe63b815e2369fd66281 Mon Sep 17 00:00:00 2001 From: Guillermo Manzo Date: Mon, 6 Mar 2023 09:28:26 -0800 Subject: [PATCH 120/147] Update ADOPTERS.md making it easier for people to get a hold of me Signed-off-by: Guillermo Manzo --- ADOPTERS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ADOPTERS.md b/ADOPTERS.md index 8fa8d37c79..b78163b993 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -21,7 +21,7 @@ _You can do this by using the [Adopter form](https://info.backstage.spotify.com/ | [Fiverr](https://www.fiverr.com) | [@nirga](https://github.com/nirga) | Unifying separate tools that developers are using today (i.e. monitoring, dead letter queues management, etc.) into a single platform. | | [Zalando SE](https://www.zalando.de) | [@leviferreira](https://github.com/leviferreira) | Building V2 of the Internal Development Portal. | | [LegalZoom](https://legalzoom.com) | [@backjo](https://github.com/backjo) | Developer portal - hub for all engineering projects and metadata. | -| [Expedia Group](https://www.expediagroup.com) | [@gman0922](https://github.com/gman0922), [Sheena Sharma](mailto:shesharma@expediagroup.com), [Alekhya Karuturi](mailto:akaruturi@expediagroup.com) | EG Developer Front Door | +| [Expedia Group](https://www.expediagroup.com) | [Guillermo Manzo](mailto:gmanzo@expediagroup.com), [Sheena Sharma](mailto:shesharma@expediagroup.com), [Alekhya Karuturi](mailto:akaruturi@expediagroup.com) | EG Developer Front Door | | [Paddle.com](https://paddle.com) | [Ioannis Georgoulas](https://github.com/geototti21) | Developer portal (Tech Docs, Service Catalog, Internal Tooling), we use vanilla Backstage FE and custom BE implementation in Go | | [Acast.com](https://acast.com) | [Olle Lundberg](https://github.com/lndbrg) | Developer portal with tech docs, service catalog and a bunch of other internal tooling | | [Lunar](https://lunar.app) | [Bjørn Hald Sørensen](https://github.com/crevil) | Internal developer portal for service overview and insights, API documentation, technical guides, onboarding guides and RFC's. | From 1e7e20559c8e8e8495eaa14f789a6ca4a6b8386a Mon Sep 17 00:00:00 2001 From: Lucas Guarisco Date: Mon, 6 Mar 2023 14:35:12 -0300 Subject: [PATCH 121/147] Change from minor to patch version Signed-off-by: Lucas Guarisco --- .changeset/rotten-panthers-share.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.changeset/rotten-panthers-share.md b/.changeset/rotten-panthers-share.md index 9851f3e8b2..b9f0dd6691 100644 --- a/.changeset/rotten-panthers-share.md +++ b/.changeset/rotten-panthers-share.md @@ -1,6 +1,6 @@ --- -'@backstage/backend-common': minor -'@backstage/plugin-catalog-backend-module-aws': minor +'@backstage/backend-common': patch +'@backstage/plugin-catalog-backend-module-aws': patch --- AwsS3UrlReader upgraded to use aws-sdk v3 From 550d3476b9720cfb4d0fa0db2d3448d92f71c56b Mon Sep 17 00:00:00 2001 From: Lucas Guarisco Date: Mon, 6 Mar 2023 14:49:39 -0300 Subject: [PATCH 122/147] Changes to method signatures and returns Signed-off-by: Lucas Guarisco --- packages/backend-common/api-report.md | 9 --------- packages/backend-common/src/reading/AwsS3UrlReader.ts | 8 ++++---- 2 files changed, 4 insertions(+), 13 deletions(-) diff --git a/packages/backend-common/api-report.md b/packages/backend-common/api-report.md index 7a3b251510..ebafb3dda0 100644 --- a/packages/backend-common/api-report.md +++ b/packages/backend-common/api-report.md @@ -50,7 +50,6 @@ import { ReadUrlOptions } from '@backstage/backend-plugin-api'; import { ReadUrlResponse } from '@backstage/backend-plugin-api'; import { RequestHandler } from 'express'; import { Router } from 'express'; -import { S3Client } from '@aws-sdk/client-s3'; import { SchedulerService } from '@backstage/backend-plugin-api'; import { SearchOptions } from '@backstage/backend-plugin-api'; import { SearchResponse } from '@backstage/backend-plugin-api'; @@ -74,12 +73,6 @@ export class AwsS3UrlReader implements UrlReader { }, ); // (undocumented) - buildS3Client( - defaultConfig: Config, - region: string, - integration: AwsS3Integration, - ): Promise; - // (undocumented) static factory: ReaderFactory; // (undocumented) read(url: string): Promise; @@ -88,8 +81,6 @@ export class AwsS3UrlReader implements UrlReader { // (undocumented) readUrl(url: string, options?: ReadUrlOptions): Promise; // (undocumented) - retrieveS3ObjectData(stream: Readable): Promise; - // (undocumented) search(): Promise; // (undocumented) toString(): string; diff --git a/packages/backend-common/src/reading/AwsS3UrlReader.ts b/packages/backend-common/src/reading/AwsS3UrlReader.ts index b1183c510a..3c564e807a 100644 --- a/packages/backend-common/src/reading/AwsS3UrlReader.ts +++ b/packages/backend-common/src/reading/AwsS3UrlReader.ts @@ -162,10 +162,10 @@ export class AwsS3UrlReader implements UrlReader { secretAccessKey: string, ): AwsCredentialIdentityProvider { return async () => { - return Promise.resolve({ + return { accessKeyId, secretAccessKey, - }); + }; }; } @@ -210,7 +210,7 @@ export class AwsS3UrlReader implements UrlReader { return explicitCredentials; } - async buildS3Client( + private async buildS3Client( defaultConfig: Config, region: string, integration: AwsS3Integration, @@ -231,7 +231,7 @@ export class AwsS3UrlReader implements UrlReader { return s3; } - async retrieveS3ObjectData(stream: Readable): Promise { + private async retrieveS3ObjectData(stream: Readable): Promise { return new Promise((resolve, reject) => { try { const chunks: any[] = []; From 614c9cb6f0e753348e8e125a5a3176e40d92e96e Mon Sep 17 00:00:00 2001 From: Lucas Guarisco Date: Mon, 6 Mar 2023 14:50:28 -0300 Subject: [PATCH 123/147] Change dependencies versions Signed-off-by: Lucas Guarisco --- packages/backend-common/package.json | 12 +- .../catalog-backend-module-aws/package.json | 6 +- yarn.lock | 585 ++++++++++++------ 3 files changed, 393 insertions(+), 210 deletions(-) diff --git a/packages/backend-common/package.json b/packages/backend-common/package.json index de5f972fab..5f1e023117 100644 --- a/packages/backend-common/package.json +++ b/packages/backend-common/package.json @@ -46,10 +46,10 @@ "test:kubernetes": "backstage-cli package test -t KubernetesContainerRunner --no-watch" }, "dependencies": { - "@aws-sdk/abort-controller": "^3.272.0", - "@aws-sdk/client-s3": "^3.276.0", - "@aws-sdk/credential-providers": "^3.276.0", - "@aws-sdk/types": "^3.272.0", + "@aws-sdk/abort-controller": "^3.208.0", + "@aws-sdk/client-s3": "^3.208.0", + "@aws-sdk/credential-providers": "^3.208.0", + "@aws-sdk/types": "^3.208.0", "@backstage/backend-app-api": "workspace:^", "@backstage/backend-dev-utils": "workspace:^", "@backstage/backend-plugin-api": "workspace:^", @@ -114,7 +114,7 @@ } }, "devDependencies": { - "@aws-sdk/util-stream-node": "^3.272.0", + "@aws-sdk/util-stream-node": "^3.208.0", "@backstage/backend-test-utils": "workspace:^", "@backstage/cli": "workspace:^", "@types/archiver": "^5.1.0", @@ -133,7 +133,7 @@ "@types/tar": "^6.1.1", "@types/webpack-env": "^1.15.2", "@types/yauzl": "^2.10.0", - "aws-sdk-client-mock": "^2.0.1", + "aws-sdk-client-mock": "^2.0.0", "aws-sdk-mock": "^5.2.1", "better-sqlite3": "^8.0.0", "http-errors": "^2.0.0", diff --git a/plugins/catalog-backend-module-aws/package.json b/plugins/catalog-backend-module-aws/package.json index 4883d34425..18b210ae67 100644 --- a/plugins/catalog-backend-module-aws/package.json +++ b/plugins/catalog-backend-module-aws/package.json @@ -45,7 +45,7 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@aws-sdk/client-s3": "^3.281.0", + "@aws-sdk/client-s3": "^3.208.0", "@backstage/backend-common": "workspace:^", "@backstage/backend-plugin-api": "workspace:^", "@backstage/backend-tasks": "workspace:^", @@ -65,11 +65,11 @@ "winston": "^3.2.1" }, "devDependencies": { - "@aws-sdk/util-stream-node": "^3.272.0", + "@aws-sdk/util-stream-node": "^3.208.0", "@backstage/backend-test-utils": "workspace:^", "@backstage/cli": "workspace:^", "@types/lodash": "^4.14.151", - "aws-sdk-client-mock": "^2.0.1", + "aws-sdk-client-mock": "^2.0.0", "aws-sdk-mock": "^5.2.1", "luxon": "^3.0.0", "yaml": "^2.0.0" diff --git a/yarn.lock b/yarn.lock index 82321cb4ca..cc3844efab 100644 --- a/yarn.lock +++ b/yarn.lock @@ -373,7 +373,7 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/abort-controller@npm:3.272.0, @aws-sdk/abort-controller@npm:^3.272.0": +"@aws-sdk/abort-controller@npm:3.272.0, @aws-sdk/abort-controller@npm:^3.208.0": version: 3.272.0 resolution: "@aws-sdk/abort-controller@npm:3.272.0" dependencies: @@ -402,31 +402,31 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/client-cognito-identity@npm:3.281.0": - version: 3.281.0 - resolution: "@aws-sdk/client-cognito-identity@npm:3.281.0" +"@aws-sdk/client-cognito-identity@npm:3.282.0": + version: 3.282.0 + resolution: "@aws-sdk/client-cognito-identity@npm:3.282.0" dependencies: "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/client-sts": 3.281.0 - "@aws-sdk/config-resolver": 3.272.0 - "@aws-sdk/credential-provider-node": 3.281.0 - "@aws-sdk/fetch-http-handler": 3.272.0 + "@aws-sdk/client-sts": 3.282.0 + "@aws-sdk/config-resolver": 3.282.0 + "@aws-sdk/credential-provider-node": 3.282.0 + "@aws-sdk/fetch-http-handler": 3.282.0 "@aws-sdk/hash-node": 3.272.0 "@aws-sdk/invalid-dependency": 3.272.0 - "@aws-sdk/middleware-content-length": 3.272.0 - "@aws-sdk/middleware-endpoint": 3.272.0 - "@aws-sdk/middleware-host-header": 3.278.0 + "@aws-sdk/middleware-content-length": 3.282.0 + "@aws-sdk/middleware-endpoint": 3.282.0 + "@aws-sdk/middleware-host-header": 3.282.0 "@aws-sdk/middleware-logger": 3.272.0 - "@aws-sdk/middleware-recursion-detection": 3.272.0 - "@aws-sdk/middleware-retry": 3.272.0 + "@aws-sdk/middleware-recursion-detection": 3.282.0 + "@aws-sdk/middleware-retry": 3.282.0 "@aws-sdk/middleware-serde": 3.272.0 - "@aws-sdk/middleware-signing": 3.272.0 + "@aws-sdk/middleware-signing": 3.282.0 "@aws-sdk/middleware-stack": 3.272.0 - "@aws-sdk/middleware-user-agent": 3.272.0 + "@aws-sdk/middleware-user-agent": 3.282.0 "@aws-sdk/node-config-provider": 3.272.0 - "@aws-sdk/node-http-handler": 3.272.0 - "@aws-sdk/protocol-http": 3.272.0 + "@aws-sdk/node-http-handler": 3.282.0 + "@aws-sdk/protocol-http": 3.282.0 "@aws-sdk/smithy-client": 3.279.0 "@aws-sdk/types": 3.272.0 "@aws-sdk/url-parser": 3.272.0 @@ -434,56 +434,56 @@ __metadata: "@aws-sdk/util-body-length-browser": 3.188.0 "@aws-sdk/util-body-length-node": 3.208.0 "@aws-sdk/util-defaults-mode-browser": 3.279.0 - "@aws-sdk/util-defaults-mode-node": 3.279.0 + "@aws-sdk/util-defaults-mode-node": 3.282.0 "@aws-sdk/util-endpoints": 3.272.0 "@aws-sdk/util-retry": 3.272.0 - "@aws-sdk/util-user-agent-browser": 3.272.0 - "@aws-sdk/util-user-agent-node": 3.272.0 + "@aws-sdk/util-user-agent-browser": 3.282.0 + "@aws-sdk/util-user-agent-node": 3.282.0 "@aws-sdk/util-utf8": 3.254.0 tslib: ^2.3.1 - checksum: 13c350badfdd7fc1df05687314ade61b407a7094d082ade35ff67c4ac870f4fb5bfda902e21c9dedf13898dbd76e74fc03707b632359fd2619a3f709bee5ac8c + checksum: 9f7790e26dd3d7b0316105dd40092736526f1f6a11b814fcc95736ade3fe40058fb93f1dc2558f1b54b7871908247852e314cb1a892109e6294958eeff1d4439 languageName: node linkType: hard -"@aws-sdk/client-s3@npm:^3.208.0, @aws-sdk/client-s3@npm:^3.276.0, @aws-sdk/client-s3@npm:^3.281.0": - version: 3.281.0 - resolution: "@aws-sdk/client-s3@npm:3.281.0" +"@aws-sdk/client-s3@npm:^3.208.0": + version: 3.282.0 + resolution: "@aws-sdk/client-s3@npm:3.282.0" dependencies: "@aws-crypto/sha1-browser": 3.0.0 "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/client-sts": 3.281.0 - "@aws-sdk/config-resolver": 3.272.0 - "@aws-sdk/credential-provider-node": 3.281.0 + "@aws-sdk/client-sts": 3.282.0 + "@aws-sdk/config-resolver": 3.282.0 + "@aws-sdk/credential-provider-node": 3.282.0 "@aws-sdk/eventstream-serde-browser": 3.272.0 "@aws-sdk/eventstream-serde-config-resolver": 3.272.0 "@aws-sdk/eventstream-serde-node": 3.272.0 - "@aws-sdk/fetch-http-handler": 3.272.0 + "@aws-sdk/fetch-http-handler": 3.282.0 "@aws-sdk/hash-blob-browser": 3.272.0 "@aws-sdk/hash-node": 3.272.0 "@aws-sdk/hash-stream-node": 3.272.0 "@aws-sdk/invalid-dependency": 3.272.0 "@aws-sdk/md5-js": 3.272.0 - "@aws-sdk/middleware-bucket-endpoint": 3.272.0 - "@aws-sdk/middleware-content-length": 3.272.0 - "@aws-sdk/middleware-endpoint": 3.272.0 - "@aws-sdk/middleware-expect-continue": 3.272.0 - "@aws-sdk/middleware-flexible-checksums": 3.272.0 - "@aws-sdk/middleware-host-header": 3.278.0 + "@aws-sdk/middleware-bucket-endpoint": 3.282.0 + "@aws-sdk/middleware-content-length": 3.282.0 + "@aws-sdk/middleware-endpoint": 3.282.0 + "@aws-sdk/middleware-expect-continue": 3.282.0 + "@aws-sdk/middleware-flexible-checksums": 3.282.0 + "@aws-sdk/middleware-host-header": 3.282.0 "@aws-sdk/middleware-location-constraint": 3.272.0 "@aws-sdk/middleware-logger": 3.272.0 - "@aws-sdk/middleware-recursion-detection": 3.272.0 - "@aws-sdk/middleware-retry": 3.272.0 - "@aws-sdk/middleware-sdk-s3": 3.272.0 + "@aws-sdk/middleware-recursion-detection": 3.282.0 + "@aws-sdk/middleware-retry": 3.282.0 + "@aws-sdk/middleware-sdk-s3": 3.282.0 "@aws-sdk/middleware-serde": 3.272.0 - "@aws-sdk/middleware-signing": 3.272.0 + "@aws-sdk/middleware-signing": 3.282.0 "@aws-sdk/middleware-ssec": 3.272.0 "@aws-sdk/middleware-stack": 3.272.0 - "@aws-sdk/middleware-user-agent": 3.272.0 + "@aws-sdk/middleware-user-agent": 3.282.0 "@aws-sdk/node-config-provider": 3.272.0 - "@aws-sdk/node-http-handler": 3.272.0 - "@aws-sdk/protocol-http": 3.272.0 - "@aws-sdk/signature-v4-multi-region": 3.272.0 + "@aws-sdk/node-http-handler": 3.282.0 + "@aws-sdk/protocol-http": 3.282.0 + "@aws-sdk/signature-v4-multi-region": 3.282.0 "@aws-sdk/smithy-client": 3.279.0 "@aws-sdk/types": 3.272.0 "@aws-sdk/url-parser": 3.272.0 @@ -491,19 +491,19 @@ __metadata: "@aws-sdk/util-body-length-browser": 3.188.0 "@aws-sdk/util-body-length-node": 3.208.0 "@aws-sdk/util-defaults-mode-browser": 3.279.0 - "@aws-sdk/util-defaults-mode-node": 3.279.0 + "@aws-sdk/util-defaults-mode-node": 3.282.0 "@aws-sdk/util-endpoints": 3.272.0 "@aws-sdk/util-retry": 3.272.0 - "@aws-sdk/util-stream-browser": 3.272.0 - "@aws-sdk/util-stream-node": 3.272.0 - "@aws-sdk/util-user-agent-browser": 3.272.0 - "@aws-sdk/util-user-agent-node": 3.272.0 + "@aws-sdk/util-stream-browser": 3.282.0 + "@aws-sdk/util-stream-node": 3.282.0 + "@aws-sdk/util-user-agent-browser": 3.282.0 + "@aws-sdk/util-user-agent-node": 3.282.0 "@aws-sdk/util-utf8": 3.254.0 "@aws-sdk/util-waiter": 3.272.0 "@aws-sdk/xml-builder": 3.201.0 fast-xml-parser: 4.1.2 tslib: ^2.3.1 - checksum: 30447fefd4fd1c98388457aab53cdb6db26a2610389912f5a389136db7a5992d358adf5116c8102eb82262b8c78864902c78437390ec7ffe7ef076dd78ab3b9a + checksum: 4f0a1d9ddad89eb71da6f39c210c451461d570d11bc394c6b3d7af139e3ea077bed88fee56fae8318182e7a26464d31119620f191f0d552b51125b9f6ddffe0b languageName: node linkType: hard @@ -593,28 +593,28 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/client-sso-oidc@npm:3.281.0": - version: 3.281.0 - resolution: "@aws-sdk/client-sso-oidc@npm:3.281.0" +"@aws-sdk/client-sso-oidc@npm:3.282.0": + version: 3.282.0 + resolution: "@aws-sdk/client-sso-oidc@npm:3.282.0" dependencies: "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/config-resolver": 3.272.0 - "@aws-sdk/fetch-http-handler": 3.272.0 + "@aws-sdk/config-resolver": 3.282.0 + "@aws-sdk/fetch-http-handler": 3.282.0 "@aws-sdk/hash-node": 3.272.0 "@aws-sdk/invalid-dependency": 3.272.0 - "@aws-sdk/middleware-content-length": 3.272.0 - "@aws-sdk/middleware-endpoint": 3.272.0 - "@aws-sdk/middleware-host-header": 3.278.0 + "@aws-sdk/middleware-content-length": 3.282.0 + "@aws-sdk/middleware-endpoint": 3.282.0 + "@aws-sdk/middleware-host-header": 3.282.0 "@aws-sdk/middleware-logger": 3.272.0 - "@aws-sdk/middleware-recursion-detection": 3.272.0 - "@aws-sdk/middleware-retry": 3.272.0 + "@aws-sdk/middleware-recursion-detection": 3.282.0 + "@aws-sdk/middleware-retry": 3.282.0 "@aws-sdk/middleware-serde": 3.272.0 "@aws-sdk/middleware-stack": 3.272.0 - "@aws-sdk/middleware-user-agent": 3.272.0 + "@aws-sdk/middleware-user-agent": 3.282.0 "@aws-sdk/node-config-provider": 3.272.0 - "@aws-sdk/node-http-handler": 3.272.0 - "@aws-sdk/protocol-http": 3.272.0 + "@aws-sdk/node-http-handler": 3.282.0 + "@aws-sdk/protocol-http": 3.282.0 "@aws-sdk/smithy-client": 3.279.0 "@aws-sdk/types": 3.272.0 "@aws-sdk/url-parser": 3.272.0 @@ -622,14 +622,14 @@ __metadata: "@aws-sdk/util-body-length-browser": 3.188.0 "@aws-sdk/util-body-length-node": 3.208.0 "@aws-sdk/util-defaults-mode-browser": 3.279.0 - "@aws-sdk/util-defaults-mode-node": 3.279.0 + "@aws-sdk/util-defaults-mode-node": 3.282.0 "@aws-sdk/util-endpoints": 3.272.0 "@aws-sdk/util-retry": 3.272.0 - "@aws-sdk/util-user-agent-browser": 3.272.0 - "@aws-sdk/util-user-agent-node": 3.272.0 + "@aws-sdk/util-user-agent-browser": 3.282.0 + "@aws-sdk/util-user-agent-node": 3.282.0 "@aws-sdk/util-utf8": 3.254.0 tslib: ^2.3.1 - checksum: ce0515dbdf02f82f4f301e31e9f63adfa8660e776e665f41cd59d9f1a9a4ee373c1fa489d3f2286f0da6ddb55905562d34d799d05eef8ab2f04d9a4133e3b228 + checksum: 4b7d40614d5379e30ce800acd60d6c04751f2a1e347474925d74fc4b9bdf9529132fd2e40933ae2fba5ef65569d55387ea80ca5312d810a868826276296b18a4 languageName: node linkType: hard @@ -673,28 +673,28 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/client-sso@npm:3.281.0": - version: 3.281.0 - resolution: "@aws-sdk/client-sso@npm:3.281.0" +"@aws-sdk/client-sso@npm:3.282.0": + version: 3.282.0 + resolution: "@aws-sdk/client-sso@npm:3.282.0" dependencies: "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/config-resolver": 3.272.0 - "@aws-sdk/fetch-http-handler": 3.272.0 + "@aws-sdk/config-resolver": 3.282.0 + "@aws-sdk/fetch-http-handler": 3.282.0 "@aws-sdk/hash-node": 3.272.0 "@aws-sdk/invalid-dependency": 3.272.0 - "@aws-sdk/middleware-content-length": 3.272.0 - "@aws-sdk/middleware-endpoint": 3.272.0 - "@aws-sdk/middleware-host-header": 3.278.0 + "@aws-sdk/middleware-content-length": 3.282.0 + "@aws-sdk/middleware-endpoint": 3.282.0 + "@aws-sdk/middleware-host-header": 3.282.0 "@aws-sdk/middleware-logger": 3.272.0 - "@aws-sdk/middleware-recursion-detection": 3.272.0 - "@aws-sdk/middleware-retry": 3.272.0 + "@aws-sdk/middleware-recursion-detection": 3.282.0 + "@aws-sdk/middleware-retry": 3.282.0 "@aws-sdk/middleware-serde": 3.272.0 "@aws-sdk/middleware-stack": 3.272.0 - "@aws-sdk/middleware-user-agent": 3.272.0 + "@aws-sdk/middleware-user-agent": 3.282.0 "@aws-sdk/node-config-provider": 3.272.0 - "@aws-sdk/node-http-handler": 3.272.0 - "@aws-sdk/protocol-http": 3.272.0 + "@aws-sdk/node-http-handler": 3.282.0 + "@aws-sdk/protocol-http": 3.282.0 "@aws-sdk/smithy-client": 3.279.0 "@aws-sdk/types": 3.272.0 "@aws-sdk/url-parser": 3.272.0 @@ -702,14 +702,14 @@ __metadata: "@aws-sdk/util-body-length-browser": 3.188.0 "@aws-sdk/util-body-length-node": 3.208.0 "@aws-sdk/util-defaults-mode-browser": 3.279.0 - "@aws-sdk/util-defaults-mode-node": 3.279.0 + "@aws-sdk/util-defaults-mode-node": 3.282.0 "@aws-sdk/util-endpoints": 3.272.0 "@aws-sdk/util-retry": 3.272.0 - "@aws-sdk/util-user-agent-browser": 3.272.0 - "@aws-sdk/util-user-agent-node": 3.272.0 + "@aws-sdk/util-user-agent-browser": 3.282.0 + "@aws-sdk/util-user-agent-node": 3.282.0 "@aws-sdk/util-utf8": 3.254.0 tslib: ^2.3.1 - checksum: 6607a853af57c435ce09c81876b1a89d7658bd60a9468f8c888273364a50d35c431e823302a7f6e5366ce6b947028a2ce6451171f5dfd869443e2569f2bb9c6d + checksum: e227d6c3dfcb4c0ec8c2a42ba281bca82dc6134ec69e6af6901892567d729be7f4b361cd0b70e18d85117e29f52aa75affc8e91fef1eb8c024f577897480085f languageName: node linkType: hard @@ -757,31 +757,31 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/client-sts@npm:3.281.0, @aws-sdk/client-sts@npm:^3.208.0": - version: 3.281.0 - resolution: "@aws-sdk/client-sts@npm:3.281.0" +"@aws-sdk/client-sts@npm:3.282.0, @aws-sdk/client-sts@npm:^3.208.0": + version: 3.282.0 + resolution: "@aws-sdk/client-sts@npm:3.282.0" dependencies: "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/config-resolver": 3.272.0 - "@aws-sdk/credential-provider-node": 3.281.0 - "@aws-sdk/fetch-http-handler": 3.272.0 + "@aws-sdk/config-resolver": 3.282.0 + "@aws-sdk/credential-provider-node": 3.282.0 + "@aws-sdk/fetch-http-handler": 3.282.0 "@aws-sdk/hash-node": 3.272.0 "@aws-sdk/invalid-dependency": 3.272.0 - "@aws-sdk/middleware-content-length": 3.272.0 - "@aws-sdk/middleware-endpoint": 3.272.0 - "@aws-sdk/middleware-host-header": 3.278.0 + "@aws-sdk/middleware-content-length": 3.282.0 + "@aws-sdk/middleware-endpoint": 3.282.0 + "@aws-sdk/middleware-host-header": 3.282.0 "@aws-sdk/middleware-logger": 3.272.0 - "@aws-sdk/middleware-recursion-detection": 3.272.0 - "@aws-sdk/middleware-retry": 3.272.0 - "@aws-sdk/middleware-sdk-sts": 3.272.0 + "@aws-sdk/middleware-recursion-detection": 3.282.0 + "@aws-sdk/middleware-retry": 3.282.0 + "@aws-sdk/middleware-sdk-sts": 3.282.0 "@aws-sdk/middleware-serde": 3.272.0 - "@aws-sdk/middleware-signing": 3.272.0 + "@aws-sdk/middleware-signing": 3.282.0 "@aws-sdk/middleware-stack": 3.272.0 - "@aws-sdk/middleware-user-agent": 3.272.0 + "@aws-sdk/middleware-user-agent": 3.282.0 "@aws-sdk/node-config-provider": 3.272.0 - "@aws-sdk/node-http-handler": 3.272.0 - "@aws-sdk/protocol-http": 3.272.0 + "@aws-sdk/node-http-handler": 3.282.0 + "@aws-sdk/protocol-http": 3.282.0 "@aws-sdk/smithy-client": 3.279.0 "@aws-sdk/types": 3.272.0 "@aws-sdk/url-parser": 3.272.0 @@ -789,15 +789,15 @@ __metadata: "@aws-sdk/util-body-length-browser": 3.188.0 "@aws-sdk/util-body-length-node": 3.208.0 "@aws-sdk/util-defaults-mode-browser": 3.279.0 - "@aws-sdk/util-defaults-mode-node": 3.279.0 + "@aws-sdk/util-defaults-mode-node": 3.282.0 "@aws-sdk/util-endpoints": 3.272.0 "@aws-sdk/util-retry": 3.272.0 - "@aws-sdk/util-user-agent-browser": 3.272.0 - "@aws-sdk/util-user-agent-node": 3.272.0 + "@aws-sdk/util-user-agent-browser": 3.282.0 + "@aws-sdk/util-user-agent-node": 3.282.0 "@aws-sdk/util-utf8": 3.254.0 fast-xml-parser: 4.1.2 tslib: ^2.3.1 - checksum: c88b660279ca6fe56cb8ac7bb245a417b9ccd1a973b7e7c2b511b254f2eace11c92826c80f84423988d47796f1fb18b09363f867d9ffce436ae81f10695e31e5 + checksum: 5af24417f7ef2dbebe6b0c0aa545eeb809e92136bce2b1e7dd07de1159f2308c2d673c3b136440e4137ce7524cbdabe50e80d7ca6f8635a3d9dcd2983532a9e7 languageName: node linkType: hard @@ -814,15 +814,28 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/credential-provider-cognito-identity@npm:3.281.0": - version: 3.281.0 - resolution: "@aws-sdk/credential-provider-cognito-identity@npm:3.281.0" +"@aws-sdk/config-resolver@npm:3.282.0": + version: 3.282.0 + resolution: "@aws-sdk/config-resolver@npm:3.282.0" dependencies: - "@aws-sdk/client-cognito-identity": 3.281.0 + "@aws-sdk/signature-v4": 3.282.0 + "@aws-sdk/types": 3.272.0 + "@aws-sdk/util-config-provider": 3.208.0 + "@aws-sdk/util-middleware": 3.272.0 + tslib: ^2.3.1 + checksum: 47628c4c66d93f2fb109039a55f206f1d9360fd3440ba2354489b5ddf05aab5322791a7e688cb02012342b3ecc7c5a61030838e6b94be76461f7f86d10a3c120 + languageName: node + linkType: hard + +"@aws-sdk/credential-provider-cognito-identity@npm:3.282.0": + version: 3.282.0 + resolution: "@aws-sdk/credential-provider-cognito-identity@npm:3.282.0" + dependencies: + "@aws-sdk/client-cognito-identity": 3.282.0 "@aws-sdk/property-provider": 3.272.0 "@aws-sdk/types": 3.272.0 tslib: ^2.3.1 - checksum: 35a0c2193aafd329e0ecbb66bdb5630d707a3cb2ad75969a847a72306518c8eb08cf46f6aebd461ba824fe444bdf58384cc45f3714d024d3c636913f1656932d + checksum: c78e08a43e5611d6fbf15871720b38d76168ffbf75e24394ad10550b636d454c97bc6caaf70b0a3b960406b85874c7e45406167e6d38ae18acadfcaac16b2d73 languageName: node linkType: hard @@ -867,20 +880,20 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/credential-provider-ini@npm:3.281.0": - version: 3.281.0 - resolution: "@aws-sdk/credential-provider-ini@npm:3.281.0" +"@aws-sdk/credential-provider-ini@npm:3.282.0": + version: 3.282.0 + resolution: "@aws-sdk/credential-provider-ini@npm:3.282.0" dependencies: "@aws-sdk/credential-provider-env": 3.272.0 "@aws-sdk/credential-provider-imds": 3.272.0 "@aws-sdk/credential-provider-process": 3.272.0 - "@aws-sdk/credential-provider-sso": 3.281.0 + "@aws-sdk/credential-provider-sso": 3.282.0 "@aws-sdk/credential-provider-web-identity": 3.272.0 "@aws-sdk/property-provider": 3.272.0 "@aws-sdk/shared-ini-file-loader": 3.272.0 "@aws-sdk/types": 3.272.0 tslib: ^2.3.1 - checksum: 3be8151f2dd7a09b0f3f887e83e43eaf1bc22a7d25e5c91397dbc756ef3df53667001ef39d276e545fad7d1b9680a050fb0aad6ac65c1ee7be593b9c2d353d39 + checksum: e5281422c8e060dbfca271ccb2f80f23fac11d513d2f97954a7070ca3fdfa0293aed55d8bb0e65cc50dbb60c624755436892a9dd41a659dd3ab8f91d1d9ba74e languageName: node linkType: hard @@ -902,21 +915,21 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/credential-provider-node@npm:3.281.0, @aws-sdk/credential-provider-node@npm:^3.208.0": - version: 3.281.0 - resolution: "@aws-sdk/credential-provider-node@npm:3.281.0" +"@aws-sdk/credential-provider-node@npm:3.282.0, @aws-sdk/credential-provider-node@npm:^3.208.0": + version: 3.282.0 + resolution: "@aws-sdk/credential-provider-node@npm:3.282.0" dependencies: "@aws-sdk/credential-provider-env": 3.272.0 "@aws-sdk/credential-provider-imds": 3.272.0 - "@aws-sdk/credential-provider-ini": 3.281.0 + "@aws-sdk/credential-provider-ini": 3.282.0 "@aws-sdk/credential-provider-process": 3.272.0 - "@aws-sdk/credential-provider-sso": 3.281.0 + "@aws-sdk/credential-provider-sso": 3.282.0 "@aws-sdk/credential-provider-web-identity": 3.272.0 "@aws-sdk/property-provider": 3.272.0 "@aws-sdk/shared-ini-file-loader": 3.272.0 "@aws-sdk/types": 3.272.0 tslib: ^2.3.1 - checksum: 583eaba8fac99c7c05ee35f72946b4df2da4ddc620ae8d70a1f1211a0e1ec032616971649cbd2a825d0208b8f3361a61d86a68a56a94eb4075f931988a659b6e + checksum: dc76e67a635bb8807e2e80f4095beaa9d19a07cb5ed7e86080dd9ccff9fc23d6a84af88b74994233742032766efaebc2fd621cd3f8462d8ff041fdf5604a0ee4 languageName: node linkType: hard @@ -946,17 +959,17 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/credential-provider-sso@npm:3.281.0": - version: 3.281.0 - resolution: "@aws-sdk/credential-provider-sso@npm:3.281.0" +"@aws-sdk/credential-provider-sso@npm:3.282.0": + version: 3.282.0 + resolution: "@aws-sdk/credential-provider-sso@npm:3.282.0" dependencies: - "@aws-sdk/client-sso": 3.281.0 + "@aws-sdk/client-sso": 3.282.0 "@aws-sdk/property-provider": 3.272.0 "@aws-sdk/shared-ini-file-loader": 3.272.0 - "@aws-sdk/token-providers": 3.281.0 + "@aws-sdk/token-providers": 3.282.0 "@aws-sdk/types": 3.272.0 tslib: ^2.3.1 - checksum: e1aa53df55352047993c2a63dece7e9f7eaab5358237ae666d6ca9f929fc650cf5a20d140d90d8fb10fdba7a9e6164a709a45ab6665b1ab862a21676d3b3b3dc + checksum: 7888c5fbb0be701a8b6ad0a853959f5de0549e0c54dd475767395cfd9337e429056c948ee332da3b447751899635886955a8cc30e0ffbb1b86b6d887712ac0e4 languageName: node linkType: hard @@ -971,26 +984,26 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/credential-providers@npm:^3.208.0, @aws-sdk/credential-providers@npm:^3.276.0": - version: 3.281.0 - resolution: "@aws-sdk/credential-providers@npm:3.281.0" +"@aws-sdk/credential-providers@npm:^3.208.0": + version: 3.282.0 + resolution: "@aws-sdk/credential-providers@npm:3.282.0" dependencies: - "@aws-sdk/client-cognito-identity": 3.281.0 - "@aws-sdk/client-sso": 3.281.0 - "@aws-sdk/client-sts": 3.281.0 - "@aws-sdk/credential-provider-cognito-identity": 3.281.0 + "@aws-sdk/client-cognito-identity": 3.282.0 + "@aws-sdk/client-sso": 3.282.0 + "@aws-sdk/client-sts": 3.282.0 + "@aws-sdk/credential-provider-cognito-identity": 3.282.0 "@aws-sdk/credential-provider-env": 3.272.0 "@aws-sdk/credential-provider-imds": 3.272.0 - "@aws-sdk/credential-provider-ini": 3.281.0 - "@aws-sdk/credential-provider-node": 3.281.0 + "@aws-sdk/credential-provider-ini": 3.282.0 + "@aws-sdk/credential-provider-node": 3.282.0 "@aws-sdk/credential-provider-process": 3.272.0 - "@aws-sdk/credential-provider-sso": 3.281.0 + "@aws-sdk/credential-provider-sso": 3.282.0 "@aws-sdk/credential-provider-web-identity": 3.272.0 "@aws-sdk/property-provider": 3.272.0 "@aws-sdk/shared-ini-file-loader": 3.272.0 "@aws-sdk/types": 3.272.0 tslib: ^2.3.1 - checksum: 48e25c96eafd9e5b8144144d4e87586f9d0be16b1d72fb006ae14b9396b43a16ec595a0d841011af41bcb55f09ed799fb7423346b7737e7a34fca56a050c71e1 + checksum: ec707176eba558fc5bfc45b2917d624a83995c75bfc38a121d3a3fe6c0be541c25815d4892fc33fd0f1de5f892232014724b0d5c62c19a2d6d3f839258b25840 languageName: node linkType: hard @@ -1075,6 +1088,19 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/fetch-http-handler@npm:3.282.0": + version: 3.282.0 + resolution: "@aws-sdk/fetch-http-handler@npm:3.282.0" + dependencies: + "@aws-sdk/protocol-http": 3.282.0 + "@aws-sdk/querystring-builder": 3.272.0 + "@aws-sdk/types": 3.272.0 + "@aws-sdk/util-base64": 3.208.0 + tslib: ^2.3.1 + checksum: 20823143bfed12dd25dc77abb8f869b4f013506f5a028477add87213ec184649dd799f4c6db5d25699a050763ef4a24c6363c06ff096e3a9b7413e2e865a10f6 + languageName: node + linkType: hard + "@aws-sdk/hash-blob-browser@npm:3.272.0": version: 3.272.0 resolution: "@aws-sdk/hash-blob-browser@npm:3.272.0" @@ -1157,16 +1183,16 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/middleware-bucket-endpoint@npm:3.272.0": - version: 3.272.0 - resolution: "@aws-sdk/middleware-bucket-endpoint@npm:3.272.0" +"@aws-sdk/middleware-bucket-endpoint@npm:3.282.0": + version: 3.282.0 + resolution: "@aws-sdk/middleware-bucket-endpoint@npm:3.282.0" dependencies: - "@aws-sdk/protocol-http": 3.272.0 + "@aws-sdk/protocol-http": 3.282.0 "@aws-sdk/types": 3.272.0 "@aws-sdk/util-arn-parser": 3.208.0 "@aws-sdk/util-config-provider": 3.208.0 tslib: ^2.3.1 - checksum: 2c9dffb5545e085ce6323e9628d5998b551332f213f33cdbd606e889b4ca4fdac61648e2c0d8cadcf11aa5908049a764083a794082fce611980056a093c78e55 + checksum: 1b2f2dfcbf808b8f6e24173f05bdec21c8c6d5ea4eda6b01b3d3812e51e69fd39fe4880922f0f8f6ecbf35bf8410622458882b754d24a67eae59871c1273a2d4 languageName: node linkType: hard @@ -1181,6 +1207,17 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/middleware-content-length@npm:3.282.0": + version: 3.282.0 + resolution: "@aws-sdk/middleware-content-length@npm:3.282.0" + dependencies: + "@aws-sdk/protocol-http": 3.282.0 + "@aws-sdk/types": 3.272.0 + tslib: ^2.3.1 + checksum: ebe0f4f55c30cd8ea3711a412e8f0c216c863b7b313ebd12de35b2c8e857cc38b5638c8acdfeca62307911b1092a516d5eaac60493dbeb76806012cda96f46d5 + languageName: node + linkType: hard + "@aws-sdk/middleware-endpoint@npm:3.272.0": version: 3.272.0 resolution: "@aws-sdk/middleware-endpoint@npm:3.272.0" @@ -1197,29 +1234,45 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/middleware-expect-continue@npm:3.272.0": - version: 3.272.0 - resolution: "@aws-sdk/middleware-expect-continue@npm:3.272.0" +"@aws-sdk/middleware-endpoint@npm:3.282.0": + version: 3.282.0 + resolution: "@aws-sdk/middleware-endpoint@npm:3.282.0" dependencies: - "@aws-sdk/protocol-http": 3.272.0 + "@aws-sdk/middleware-serde": 3.272.0 + "@aws-sdk/protocol-http": 3.282.0 + "@aws-sdk/signature-v4": 3.282.0 "@aws-sdk/types": 3.272.0 + "@aws-sdk/url-parser": 3.272.0 + "@aws-sdk/util-config-provider": 3.208.0 + "@aws-sdk/util-middleware": 3.272.0 tslib: ^2.3.1 - checksum: 19f32623758ccc1d08e2ff08db8efc62c3e04c3e89b15a7ca4b1719fa15ce7bfaad0eea3cceadc395f769405181a356a6a4efdadb2e6f6bd90afd31f8532ca40 + checksum: 84a9f3d6d5f904e9728c20444f3e2fc369b8a57e9dbc01cf3c3f5a6b6062b2ba470774bddd60a095845bba62ce153590c69a10211f61609d4eebf173338299e7 languageName: node linkType: hard -"@aws-sdk/middleware-flexible-checksums@npm:3.272.0": - version: 3.272.0 - resolution: "@aws-sdk/middleware-flexible-checksums@npm:3.272.0" +"@aws-sdk/middleware-expect-continue@npm:3.282.0": + version: 3.282.0 + resolution: "@aws-sdk/middleware-expect-continue@npm:3.282.0" + dependencies: + "@aws-sdk/protocol-http": 3.282.0 + "@aws-sdk/types": 3.272.0 + tslib: ^2.3.1 + checksum: 9b940175d545140608f17d7d5aefd798ea36640acfca95923320eab087bdd2edd25986a68f950a1ecfdf3c922bf91c0cae5b1bc4ce32d51c2f3e1915acc3939a + languageName: node + linkType: hard + +"@aws-sdk/middleware-flexible-checksums@npm:3.282.0": + version: 3.282.0 + resolution: "@aws-sdk/middleware-flexible-checksums@npm:3.282.0" dependencies: "@aws-crypto/crc32": 3.0.0 "@aws-crypto/crc32c": 3.0.0 "@aws-sdk/is-array-buffer": 3.201.0 - "@aws-sdk/protocol-http": 3.272.0 + "@aws-sdk/protocol-http": 3.282.0 "@aws-sdk/types": 3.272.0 "@aws-sdk/util-utf8": 3.254.0 tslib: ^2.3.1 - checksum: 06d0f9edd3c78d17e0669dd913daed67f0c45d59be54bf39e68ad1184fd0dc80d544545bbe09f6dd51ca6dca8a42b585ba83e5be3aa665c6486fb5210b08f8df + checksum: 7575ebdf82e62b0a03813acc18dab4c070c019b0e723ffb7be41d36955d29d87603689351ecb612a44ff9b70fd83fe6977c5a36f1d7c9cb80b104e28f19ddf23 languageName: node linkType: hard @@ -1234,14 +1287,14 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/middleware-host-header@npm:3.278.0": - version: 3.278.0 - resolution: "@aws-sdk/middleware-host-header@npm:3.278.0" +"@aws-sdk/middleware-host-header@npm:3.282.0": + version: 3.282.0 + resolution: "@aws-sdk/middleware-host-header@npm:3.282.0" dependencies: - "@aws-sdk/protocol-http": 3.272.0 + "@aws-sdk/protocol-http": 3.282.0 "@aws-sdk/types": 3.272.0 tslib: ^2.3.1 - checksum: 5b9762f80a8b6041cbe62680e34ddfb0f9d6f687f2f39aa117b1f0a692f594312371cf109c090fe93ccf8084cee924cf3dc134c1d2c929012df4593edaf492bf + checksum: 19b5c9284ec5df8732301d5853007613d62ec43657d8793be14bd1dc4b64700748b37d09dbae835750be440faae0105be6d14caaa55f1309842873a701007b72 languageName: node linkType: hard @@ -1276,6 +1329,17 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/middleware-recursion-detection@npm:3.282.0": + version: 3.282.0 + resolution: "@aws-sdk/middleware-recursion-detection@npm:3.282.0" + dependencies: + "@aws-sdk/protocol-http": 3.282.0 + "@aws-sdk/types": 3.272.0 + tslib: ^2.3.1 + checksum: 3e2b43e4e3f8ebb4f02a5bf33b15d95b559e5a35a872a94ca254497fdc896508baa8c316f3bec660d6fad2154041d81a5295be8ed245943dcdb3abc2dd75ef27 + languageName: node + linkType: hard + "@aws-sdk/middleware-retry@npm:3.272.0": version: 3.272.0 resolution: "@aws-sdk/middleware-retry@npm:3.272.0" @@ -1291,15 +1355,30 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/middleware-sdk-s3@npm:3.272.0": - version: 3.272.0 - resolution: "@aws-sdk/middleware-sdk-s3@npm:3.272.0" +"@aws-sdk/middleware-retry@npm:3.282.0": + version: 3.282.0 + resolution: "@aws-sdk/middleware-retry@npm:3.282.0" dependencies: - "@aws-sdk/protocol-http": 3.272.0 + "@aws-sdk/protocol-http": 3.282.0 + "@aws-sdk/service-error-classification": 3.272.0 + "@aws-sdk/types": 3.272.0 + "@aws-sdk/util-middleware": 3.272.0 + "@aws-sdk/util-retry": 3.272.0 + tslib: ^2.3.1 + uuid: ^8.3.2 + checksum: fca7a6c8bac2f52df9987a66f7be5891e85fda0f6eff678ed78bc545ee45e159026d30cc8a136293e731ca69f9e5edc4f9f4895fea73bf28634426d9db0021f6 + languageName: node + linkType: hard + +"@aws-sdk/middleware-sdk-s3@npm:3.282.0": + version: 3.282.0 + resolution: "@aws-sdk/middleware-sdk-s3@npm:3.282.0" + dependencies: + "@aws-sdk/protocol-http": 3.282.0 "@aws-sdk/types": 3.272.0 "@aws-sdk/util-arn-parser": 3.208.0 tslib: ^2.3.1 - checksum: 464f38d1593866724ce4e793e065c4e23b875ec889384a99c64d7aa34baf765ebdc18b218ed5e83f4f6c257d7b56c560aab8c0b617960a200484970ec8d55526 + checksum: c373dcb455450897075adb943e454da84eae66e6b223a30a80599e2d8a33b61cf1a5e46ec8f7595adfd9059132ce444316f9e376eff6ca121f05b1bb67e99b2b languageName: node linkType: hard @@ -1329,6 +1408,20 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/middleware-sdk-sts@npm:3.282.0": + version: 3.282.0 + resolution: "@aws-sdk/middleware-sdk-sts@npm:3.282.0" + dependencies: + "@aws-sdk/middleware-signing": 3.282.0 + "@aws-sdk/property-provider": 3.272.0 + "@aws-sdk/protocol-http": 3.282.0 + "@aws-sdk/signature-v4": 3.282.0 + "@aws-sdk/types": 3.272.0 + tslib: ^2.3.1 + checksum: bcd2ee00d30191262da5caf5fda4d6c12a9a4aa1ae76693b5e49dc562c89294b4bd133e7036b3811d69806d3d6277848731a3ff8eb919644c33d58909f6ce42e + languageName: node + linkType: hard + "@aws-sdk/middleware-serde@npm:3.272.0": version: 3.272.0 resolution: "@aws-sdk/middleware-serde@npm:3.272.0" @@ -1353,6 +1446,20 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/middleware-signing@npm:3.282.0": + version: 3.282.0 + resolution: "@aws-sdk/middleware-signing@npm:3.282.0" + dependencies: + "@aws-sdk/property-provider": 3.272.0 + "@aws-sdk/protocol-http": 3.282.0 + "@aws-sdk/signature-v4": 3.282.0 + "@aws-sdk/types": 3.272.0 + "@aws-sdk/util-middleware": 3.272.0 + tslib: ^2.3.1 + checksum: bf3040f3939430d2d32ccc893103f34a7ffd3d979021a124d6f03e6dbbe3b1537fe8736143ddee20f13170a46e545ed5774dd08bdc0be2d8d9b610dd90949246 + languageName: node + linkType: hard + "@aws-sdk/middleware-ssec@npm:3.272.0": version: 3.272.0 resolution: "@aws-sdk/middleware-ssec@npm:3.272.0" @@ -1383,6 +1490,17 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/middleware-user-agent@npm:3.282.0": + version: 3.282.0 + resolution: "@aws-sdk/middleware-user-agent@npm:3.282.0" + dependencies: + "@aws-sdk/protocol-http": 3.282.0 + "@aws-sdk/types": 3.272.0 + tslib: ^2.3.1 + checksum: 6ad66ec8517deccb6dbbc1c3241d2afc2fa73d9a3bbaf56f3c1e8adbfd0791391f43058f79f2e2ace40090be481b5bbe8db8a42c0f444fc7cc56666c5ca07c72 + languageName: node + linkType: hard + "@aws-sdk/node-config-provider@npm:3.272.0": version: 3.272.0 resolution: "@aws-sdk/node-config-provider@npm:3.272.0" @@ -1395,7 +1513,7 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/node-http-handler@npm:3.272.0, @aws-sdk/node-http-handler@npm:^3.208.0": +"@aws-sdk/node-http-handler@npm:3.272.0": version: 3.272.0 resolution: "@aws-sdk/node-http-handler@npm:3.272.0" dependencies: @@ -1408,6 +1526,19 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/node-http-handler@npm:3.282.0, @aws-sdk/node-http-handler@npm:^3.208.0": + version: 3.282.0 + resolution: "@aws-sdk/node-http-handler@npm:3.282.0" + dependencies: + "@aws-sdk/abort-controller": 3.272.0 + "@aws-sdk/protocol-http": 3.282.0 + "@aws-sdk/querystring-builder": 3.272.0 + "@aws-sdk/types": 3.272.0 + tslib: ^2.3.1 + checksum: 22bbb8cae68c3405f3695de2a4be4d08ade5ffaad5367badcc40dc06ef08ec634fb95953deed58641775265d852f7afb095675d353cd7c82b7cb21881f5cc549 + languageName: node + linkType: hard + "@aws-sdk/property-provider@npm:3.272.0": version: 3.272.0 resolution: "@aws-sdk/property-provider@npm:3.272.0" @@ -1438,6 +1569,16 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/protocol-http@npm:3.282.0": + version: 3.282.0 + resolution: "@aws-sdk/protocol-http@npm:3.282.0" + dependencies: + "@aws-sdk/types": 3.272.0 + tslib: ^2.3.1 + checksum: 5f9d927a69cc1d51767df86d5bfa76f280866e3ef7bcfb8b7b8dab7fc11638ca92d20e3a8a2708a251748c15c0582ad032dfd89aada8ce6068c58605b193e555 + languageName: node + linkType: hard + "@aws-sdk/querystring-builder@npm:3.208.0": version: 3.208.0 resolution: "@aws-sdk/querystring-builder@npm:3.208.0" @@ -1487,12 +1628,12 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/signature-v4-multi-region@npm:3.272.0": - version: 3.272.0 - resolution: "@aws-sdk/signature-v4-multi-region@npm:3.272.0" +"@aws-sdk/signature-v4-multi-region@npm:3.282.0": + version: 3.282.0 + resolution: "@aws-sdk/signature-v4-multi-region@npm:3.282.0" dependencies: - "@aws-sdk/protocol-http": 3.272.0 - "@aws-sdk/signature-v4": 3.272.0 + "@aws-sdk/protocol-http": 3.282.0 + "@aws-sdk/signature-v4": 3.282.0 "@aws-sdk/types": 3.272.0 "@aws-sdk/util-arn-parser": 3.208.0 tslib: ^2.3.1 @@ -1501,7 +1642,7 @@ __metadata: peerDependenciesMeta: "@aws-sdk/signature-v4-crt": optional: true - checksum: 231eac2d4203a9ed3829d55a93d503d629bbd43301516d4e06c461dd16eba3a72373c004a59789de43487804266ca4ced259adcb1d26b6916f7b3545401ff544 + checksum: 3f25ba04145d9e274f5bea5ac34de77021c2a06d68085e29cd9bae3b0803aef53a0ab8b184034c67019b7b730730374a9e5a216859ee8f01c11032417ca84f7c languageName: node linkType: hard @@ -1520,6 +1661,21 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/signature-v4@npm:3.282.0": + version: 3.282.0 + resolution: "@aws-sdk/signature-v4@npm:3.282.0" + dependencies: + "@aws-sdk/is-array-buffer": 3.201.0 + "@aws-sdk/types": 3.272.0 + "@aws-sdk/util-hex-encoding": 3.201.0 + "@aws-sdk/util-middleware": 3.272.0 + "@aws-sdk/util-uri-escape": 3.201.0 + "@aws-sdk/util-utf8": 3.254.0 + tslib: ^2.3.1 + checksum: ef5a5f32c7671979c173cded5ca4749f3d4d156c67b7de11eac881a0141b2f43cc6ac5f29facd3e6af2a3883775de64d0c2789b2f7ccb1c6d14f0da5e22a58f0 + languageName: node + linkType: hard + "@aws-sdk/smithy-client@npm:3.272.0": version: 3.272.0 resolution: "@aws-sdk/smithy-client@npm:3.272.0" @@ -1555,16 +1711,16 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/token-providers@npm:3.281.0": - version: 3.281.0 - resolution: "@aws-sdk/token-providers@npm:3.281.0" +"@aws-sdk/token-providers@npm:3.282.0": + version: 3.282.0 + resolution: "@aws-sdk/token-providers@npm:3.282.0" dependencies: - "@aws-sdk/client-sso-oidc": 3.281.0 + "@aws-sdk/client-sso-oidc": 3.282.0 "@aws-sdk/property-provider": 3.272.0 "@aws-sdk/shared-ini-file-loader": 3.272.0 "@aws-sdk/types": 3.272.0 tslib: ^2.3.1 - checksum: 15b7ba37cf169662f2ddd85d90b6fb5d077593e6316914b3de381b4c68a613664dc7688848512feb1aa82018345b2ce8d0a33f55878e96d461c2c87486825728 + checksum: 064425ec0373269ccc7c4eeb583dd31e79b02af5e4c4ade25258cec59986dd3f8d4d80770d4802b26882dba9a61f66ca9d49d9ade70002417f73bdd46c64bace languageName: node linkType: hard @@ -1575,7 +1731,7 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/types@npm:3.272.0, @aws-sdk/types@npm:^3.208.0, @aws-sdk/types@npm:^3.222.0, @aws-sdk/types@npm:^3.272.0": +"@aws-sdk/types@npm:3.272.0, @aws-sdk/types@npm:^3.208.0, @aws-sdk/types@npm:^3.222.0": version: 3.272.0 resolution: "@aws-sdk/types@npm:3.272.0" dependencies: @@ -1689,17 +1845,17 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/util-defaults-mode-node@npm:3.279.0": - version: 3.279.0 - resolution: "@aws-sdk/util-defaults-mode-node@npm:3.279.0" +"@aws-sdk/util-defaults-mode-node@npm:3.282.0": + version: 3.282.0 + resolution: "@aws-sdk/util-defaults-mode-node@npm:3.282.0" dependencies: - "@aws-sdk/config-resolver": 3.272.0 + "@aws-sdk/config-resolver": 3.282.0 "@aws-sdk/credential-provider-imds": 3.272.0 "@aws-sdk/node-config-provider": 3.272.0 "@aws-sdk/property-provider": 3.272.0 "@aws-sdk/types": 3.272.0 tslib: ^2.3.1 - checksum: 8b1e89a9ef092c6a25d354823ed3e172a2f6415389f7f66034a8571321b8100b909435a238097f016dceb58a4894ebebd8a52e33698f069f8a9d3c5bb6bd633a + checksum: 56086b64a65f9999923bbba56c87ecdb886cc729d32683107ae3dd8c9077b6aceecdf2acfc934220522883282f03dd6e37690d242a2d63fee3ec7f3db39cecb7 languageName: node linkType: hard @@ -1750,29 +1906,29 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/util-stream-browser@npm:3.272.0": - version: 3.272.0 - resolution: "@aws-sdk/util-stream-browser@npm:3.272.0" +"@aws-sdk/util-stream-browser@npm:3.282.0": + version: 3.282.0 + resolution: "@aws-sdk/util-stream-browser@npm:3.282.0" dependencies: - "@aws-sdk/fetch-http-handler": 3.272.0 + "@aws-sdk/fetch-http-handler": 3.282.0 "@aws-sdk/types": 3.272.0 "@aws-sdk/util-base64": 3.208.0 "@aws-sdk/util-hex-encoding": 3.201.0 "@aws-sdk/util-utf8": 3.254.0 tslib: ^2.3.1 - checksum: 18e3dfa4efcf12e5e4eda55da14c9a98154f063b1bbf0a926fc406ffdf791363a1881e93194fa5a160e7bd26dd1b1933d6a57b19134e6f0a4feda8c6f5cfcb13 + checksum: 30dda128249c30052cc7d92fbc08c423d03938c202bd95ffcbeb0b72804da19defe742ca702062fd96803381bb508cedc27b4b4bf4d418175f905849352fdf71 languageName: node linkType: hard -"@aws-sdk/util-stream-node@npm:3.272.0, @aws-sdk/util-stream-node@npm:^3.272.0": - version: 3.272.0 - resolution: "@aws-sdk/util-stream-node@npm:3.272.0" +"@aws-sdk/util-stream-node@npm:3.282.0, @aws-sdk/util-stream-node@npm:^3.208.0": + version: 3.282.0 + resolution: "@aws-sdk/util-stream-node@npm:3.282.0" dependencies: - "@aws-sdk/node-http-handler": 3.272.0 + "@aws-sdk/node-http-handler": 3.282.0 "@aws-sdk/types": 3.272.0 "@aws-sdk/util-buffer-from": 3.208.0 tslib: ^2.3.1 - checksum: 7fa500251680e3eb5fa63d47c6d4846ca66f8c781ee0d990ed79d16a12b0bb074eb7d5c9e26390afd7a18159a758fbc333ce1b788c2a8dea7438cbe2f4c6c7c3 + checksum: 0b19609d0c2608c120e317b6127a49016c90f746e38c300893ee16e276951c294fd4fef8dbee42978e655f34c2c56676e8def637fdb5a3f9284c475c73a67f62 languageName: node linkType: hard @@ -1801,6 +1957,17 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/util-user-agent-browser@npm:3.282.0": + version: 3.282.0 + resolution: "@aws-sdk/util-user-agent-browser@npm:3.282.0" + dependencies: + "@aws-sdk/types": 3.272.0 + bowser: ^2.11.0 + tslib: ^2.3.1 + checksum: cf751b285e57c4d7a00584ac4eab4c27c5fc6d73dc9d6ed8082d297885b262a27bc0a51b882e57779eb807149c27b4d083e07596b99ae145c9acb46f64edf587 + languageName: node + linkType: hard + "@aws-sdk/util-user-agent-node@npm:3.272.0": version: 3.272.0 resolution: "@aws-sdk/util-user-agent-node@npm:3.272.0" @@ -1817,6 +1984,22 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/util-user-agent-node@npm:3.282.0": + version: 3.282.0 + resolution: "@aws-sdk/util-user-agent-node@npm:3.282.0" + dependencies: + "@aws-sdk/node-config-provider": 3.272.0 + "@aws-sdk/types": 3.272.0 + tslib: ^2.3.1 + peerDependencies: + aws-crt: ">=1.0.0" + peerDependenciesMeta: + aws-crt: + optional: true + checksum: b13d7e114610c15d0d4d6137e6b6e2ce2d9b696aec1f3ba60515228b9c59068260fb976a0af2d9166705e00c99408c603abf4ebc65384bcd76abfa9003a4afa4 + languageName: node + linkType: hard + "@aws-sdk/util-utf8-browser@npm:3.188.0, @aws-sdk/util-utf8-browser@npm:^3.0.0": version: 3.188.0 resolution: "@aws-sdk/util-utf8-browser@npm:3.188.0" @@ -3656,11 +3839,11 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/backend-common@workspace:packages/backend-common" dependencies: - "@aws-sdk/abort-controller": ^3.272.0 - "@aws-sdk/client-s3": ^3.276.0 - "@aws-sdk/credential-providers": ^3.276.0 - "@aws-sdk/types": ^3.272.0 - "@aws-sdk/util-stream-node": ^3.272.0 + "@aws-sdk/abort-controller": ^3.208.0 + "@aws-sdk/client-s3": ^3.208.0 + "@aws-sdk/credential-providers": ^3.208.0 + "@aws-sdk/types": ^3.208.0 + "@aws-sdk/util-stream-node": ^3.208.0 "@backstage/backend-app-api": "workspace:^" "@backstage/backend-dev-utils": "workspace:^" "@backstage/backend-plugin-api": "workspace:^" @@ -3700,7 +3883,7 @@ __metadata: "@types/webpack-env": ^1.15.2 "@types/yauzl": ^2.10.0 archiver: ^5.0.2 - aws-sdk-client-mock: ^2.0.1 + aws-sdk-client-mock: ^2.0.0 aws-sdk-mock: ^5.2.1 base64-stream: ^1.0.0 better-sqlite3: ^8.0.0 @@ -5177,8 +5360,8 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-catalog-backend-module-aws@workspace:plugins/catalog-backend-module-aws" dependencies: - "@aws-sdk/client-s3": ^3.281.0 - "@aws-sdk/util-stream-node": ^3.272.0 + "@aws-sdk/client-s3": ^3.208.0 + "@aws-sdk/util-stream-node": ^3.208.0 "@backstage/backend-common": "workspace:^" "@backstage/backend-plugin-api": "workspace:^" "@backstage/backend-tasks": "workspace:^" @@ -5195,7 +5378,7 @@ __metadata: "@backstage/types": "workspace:^" "@types/lodash": ^4.14.151 aws-sdk: ^2.840.0 - aws-sdk-client-mock: ^2.0.1 + aws-sdk-client-mock: ^2.0.0 aws-sdk-mock: ^5.2.1 lodash: ^4.17.21 luxon: ^3.0.0 @@ -17752,14 +17935,14 @@ __metadata: languageName: node linkType: hard -"aws-sdk-client-mock@npm:^2.0.0, aws-sdk-client-mock@npm:^2.0.1": - version: 2.0.1 - resolution: "aws-sdk-client-mock@npm:2.0.1" +"aws-sdk-client-mock@npm:^2.0.0": + version: 2.1.0 + resolution: "aws-sdk-client-mock@npm:2.1.0" dependencies: "@types/sinon": ^10.0.10 sinon: ^14.0.2 tslib: ^2.1.0 - checksum: 447502ba9270777db129ddcf0245502771c1415d4293f7b001e0a3dc18ab0ce778a7f2d40a86dadb2637d3b83be2df4e833d7f4f6c49678495c932340558c465 + checksum: c6179c5528709ff1ad7e7308d03c74850fb5b973ca3d63836ca9973ca70de0c3dd7846fcbd3fd02bf4dabe6cae1095683b38c4202878458c8369e7e837962cd2 languageName: node linkType: hard From 8bc7dcec820bb625e4cef02970221d1a7f673746 Mon Sep 17 00:00:00 2001 From: Carlos Esteban Lopez Date: Mon, 6 Mar 2023 12:53:48 -0500 Subject: [PATCH 124/147] fix(plugin-api-docs): Fix dark theme Swagger's clear button font color Signed-off-by: Carlos Esteban Lopez --- .changeset/orange-experts-hug.md | 5 +++++ .../components/OpenApiDefinitionWidget/OpenApiDefinition.tsx | 3 +++ 2 files changed, 8 insertions(+) create mode 100644 .changeset/orange-experts-hug.md diff --git a/.changeset/orange-experts-hug.md b/.changeset/orange-experts-hug.md new file mode 100644 index 0000000000..1bf8b4a7d7 --- /dev/null +++ b/.changeset/orange-experts-hug.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-api-docs': patch +--- + +Fix dark theme Swagger's clear button font color. diff --git a/plugins/api-docs/src/components/OpenApiDefinitionWidget/OpenApiDefinition.tsx b/plugins/api-docs/src/components/OpenApiDefinitionWidget/OpenApiDefinition.tsx index cff21dcf78..c67088476b 100644 --- a/plugins/api-docs/src/components/OpenApiDefinitionWidget/OpenApiDefinition.tsx +++ b/plugins/api-docs/src/components/OpenApiDefinitionWidget/OpenApiDefinition.tsx @@ -25,6 +25,9 @@ const useStyles = makeStyles(theme => ({ fontFamily: theme.typography.fontFamily, color: theme.palette.text.primary, + ['& .btn-clear']: { + color: theme.palette.text.primary, + }, [`& .scheme-container`]: { backgroundColor: theme.palette.background.default, }, From 1aec34d55b55d09e9174d935e0bec90aad5aaf84 Mon Sep 17 00:00:00 2001 From: Lucas Guarisco Date: Mon, 6 Mar 2023 15:05:41 -0300 Subject: [PATCH 125/147] Remove wrong comment about config location Signed-off-by: Lucas Guarisco --- packages/backend-common/src/reading/AwsS3UrlReader.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/backend-common/src/reading/AwsS3UrlReader.ts b/packages/backend-common/src/reading/AwsS3UrlReader.ts index 3c564e807a..a0984b5e34 100644 --- a/packages/backend-common/src/reading/AwsS3UrlReader.ts +++ b/packages/backend-common/src/reading/AwsS3UrlReader.ts @@ -180,7 +180,6 @@ export class AwsS3UrlReader implements UrlReader { return (await credsManager.getCredentialProvider()).sdkCredentialProvider; } - // Pull credentials from the techdocs config section (deprecated) const accessKeyId = integration.config.accessKeyId; const secretAccessKey = integration.config.secretAccessKey; let explicitCredentials: AwsCredentialIdentityProvider; From 9ab5675d76f5a2a335629c1010ef1d6eafcde789 Mon Sep 17 00:00:00 2001 From: Ben Lambert Date: Mon, 6 Mar 2023 19:16:15 +0100 Subject: [PATCH 126/147] Update cool-feet-speak.md Signed-off-by: Ben Lambert --- .changeset/cool-feet-speak.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.changeset/cool-feet-speak.md b/.changeset/cool-feet-speak.md index f6c3eb3035..9240c5bb52 100644 --- a/.changeset/cool-feet-speak.md +++ b/.changeset/cool-feet-speak.md @@ -1,6 +1,6 @@ --- -'@backstage/plugin-scaffolder-react': minor -'@backstage/plugin-scaffolder': minor +'@backstage/plugin-scaffolder-react': patch +'@backstage/plugin-scaffolder': patch --- Make scaffolder adhere to page themes by using page `fontColor` consistently. If your theme overwrites template list or card headers, review those styles. From 37aef5a8756fce5541237f85bb56f7b2b2eda628 Mon Sep 17 00:00:00 2001 From: Lucas Guarisco Date: Mon, 6 Mar 2023 15:19:52 -0300 Subject: [PATCH 127/147] Build credsManager when instantiating the class Signed-off-by: Lucas Guarisco --- packages/backend-common/api-report.md | 3 ++- .../src/reading/AwsS3UrlReader.test.ts | 5 ++++- .../backend-common/src/reading/AwsS3UrlReader.ts | 13 ++++++------- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/packages/backend-common/api-report.md b/packages/backend-common/api-report.md index ebafb3dda0..ebdd7315c9 100644 --- a/packages/backend-common/api-report.md +++ b/packages/backend-common/api-report.md @@ -6,6 +6,7 @@ /// /// +import { AwsCredentialsManager } from '@backstage/integration-aws-node'; import { AwsS3Integration } from '@backstage/integration'; import { AzureIntegration } from '@backstage/integration'; import { BackendFeature } from '@backstage/backend-plugin-api'; @@ -66,7 +67,7 @@ import { Writable } from 'stream'; // @public export class AwsS3UrlReader implements UrlReader { constructor( - defaultConfig: Config, + credsManager: AwsCredentialsManager, integration: AwsS3Integration, deps: { treeResponseFactory: ReadTreeResponseFactory; diff --git a/packages/backend-common/src/reading/AwsS3UrlReader.test.ts b/packages/backend-common/src/reading/AwsS3UrlReader.test.ts index 094bdc9d65..dad12c7660 100644 --- a/packages/backend-common/src/reading/AwsS3UrlReader.test.ts +++ b/packages/backend-common/src/reading/AwsS3UrlReader.test.ts @@ -23,6 +23,7 @@ import { AwsS3Integration, readAwsS3IntegrationConfig, } from '@backstage/integration'; +import { DefaultAwsCredentialsManager } from '@backstage/integration-aws-node'; import { UrlReaderPredicateTuple } from './types'; import path from 'path'; import { NotModifiedError } from '@backstage/errors'; @@ -440,8 +441,10 @@ describe('AwsS3UrlReader', () => { secretAccessKey: 'fake-secret-key', }); + const credsManager = DefaultAwsCredentialsManager.fromConfig(config); + awsS3UrlReader = new AwsS3UrlReader( - config, + credsManager, new AwsS3Integration(readAwsS3IntegrationConfig(config)), { treeResponseFactory }, ); diff --git a/packages/backend-common/src/reading/AwsS3UrlReader.ts b/packages/backend-common/src/reading/AwsS3UrlReader.ts index a0984b5e34..d06e2d0ad6 100644 --- a/packages/backend-common/src/reading/AwsS3UrlReader.ts +++ b/packages/backend-common/src/reading/AwsS3UrlReader.ts @@ -33,7 +33,6 @@ import { ScmIntegrations, AwsS3IntegrationConfig, } from '@backstage/integration'; -import { Config } from '@backstage/config'; import { ForwardedError, NotModifiedError } from '@backstage/errors'; import { fromTemporaryCredentials } from '@aws-sdk/credential-providers'; import { AwsCredentialIdentityProvider } from '@aws-sdk/types'; @@ -134,9 +133,10 @@ export function parseUrl( export class AwsS3UrlReader implements UrlReader { static factory: ReaderFactory = ({ config, treeResponseFactory }) => { const integrations = ScmIntegrations.fromConfig(config); + const credsManager = DefaultAwsCredentialsManager.fromConfig(config); return integrations.awsS3.list().map(integration => { - const reader = new AwsS3UrlReader(config, integration, { + const reader = new AwsS3UrlReader(credsManager, integration, { treeResponseFactory, }); const predicate = (url: URL) => @@ -146,7 +146,7 @@ export class AwsS3UrlReader implements UrlReader { }; constructor( - private readonly defaultConfig: Config, + private readonly credsManager: AwsCredentialsManager, private readonly integration: AwsS3Integration, private readonly deps: { treeResponseFactory: ReadTreeResponseFactory; @@ -210,11 +210,10 @@ export class AwsS3UrlReader implements UrlReader { } private async buildS3Client( - defaultConfig: Config, + credsManager: AwsCredentialsManager, region: string, integration: AwsS3Integration, ): Promise { - const credsManager = DefaultAwsCredentialsManager.fromConfig(defaultConfig); const credentials = await AwsS3UrlReader.buildCredentials( credsManager, region, @@ -257,7 +256,7 @@ export class AwsS3UrlReader implements UrlReader { try { const { path, bucket, region } = parseUrl(url, this.integration.config); const s3Client = await this.buildS3Client( - this.defaultConfig, + this.credsManager, region, this.integration, ); @@ -306,7 +305,7 @@ export class AwsS3UrlReader implements UrlReader { try { const { path, bucket, region } = parseUrl(url, this.integration.config); const s3Client = await this.buildS3Client( - this.defaultConfig, + this.credsManager, region, this.integration, ); From d700b9c341cb31c03d3a8a503ac8081c934e07bf Mon Sep 17 00:00:00 2001 From: blam Date: Mon, 6 Mar 2023 21:32:53 +0100 Subject: [PATCH 128/147] chore: amtch the version types with the rest of the packages Signed-off-by: blam --- .changeset/mean-toys-itch.md | 2 -- packages/backend-common/package.json | 2 +- yarn.lock | 4 ++-- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/.changeset/mean-toys-itch.md b/.changeset/mean-toys-itch.md index c80d99f44d..75252b3482 100644 --- a/.changeset/mean-toys-itch.md +++ b/.changeset/mean-toys-itch.md @@ -4,8 +4,6 @@ Adds config option `backend.database.role` to set ownership for newly created schemas and tables in Postgres -### example config - The example config below connects to the database as user `v-backstage-123` but sets the ownership of the create schemas and tables to `backstage` diff --git a/packages/backend-common/package.json b/packages/backend-common/package.json index 2378a24383..778994ee80 100644 --- a/packages/backend-common/package.json +++ b/packages/backend-common/package.json @@ -78,7 +78,7 @@ "morgan": "^1.10.0", "node-fetch": "^2.6.7", "node-forge": "^1.3.1", - "pg": "^8.9.0", + "pg": "^8.3.0", "raw-body": "^2.4.1", "request": "^2.88.2", "selfsigned": "^2.0.0", diff --git a/yarn.lock b/yarn.lock index e8567c9620..f2a4af718f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3490,7 +3490,7 @@ __metadata: mysql2: ^2.2.5 node-fetch: ^2.6.7 node-forge: ^1.3.1 - pg: ^8.9.0 + pg: ^8.3.0 raw-body: ^2.4.1 recursive-readdir: ^2.2.2 request: ^2.88.2 @@ -31602,7 +31602,7 @@ __metadata: languageName: node linkType: hard -"pg@npm:^8.3.0, pg@npm:^8.4.0, pg@npm:^8.9.0": +"pg@npm:^8.3.0, pg@npm:^8.4.0": version: 8.9.0 resolution: "pg@npm:8.9.0" dependencies: From 937eb9b913e8af20c752d23f3d0d772d5f1d42dc Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 6 Mar 2023 23:05:22 +0000 Subject: [PATCH 129/147] fix(deps): update dependency @google-cloud/storage to v6.9.4 Signed-off-by: Renovate Bot --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index f1688f25b0..3d4ffd9183 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10118,8 +10118,8 @@ __metadata: linkType: hard "@google-cloud/storage@npm:^6.0.0": - version: 6.9.3 - resolution: "@google-cloud/storage@npm:6.9.3" + version: 6.9.4 + resolution: "@google-cloud/storage@npm:6.9.4" dependencies: "@google-cloud/paginator": ^3.0.7 "@google-cloud/projectify": ^3.0.0 @@ -10138,7 +10138,7 @@ __metadata: retry-request: ^5.0.0 teeny-request: ^8.0.0 uuid: ^8.0.0 - checksum: 32bd3b49509b823504f0007d1d5cb1ec854bbc84e6be1ef397879b99c0f198c6251b85ddec81226428e046a06c0346356d82d26485e9d1f9e7ef943e091db06f + checksum: d8ee110843e22d7141a9a93fae01590f5b15946e389544eda858d78abf3aaae2ab353548c15f219f53cac9af63ef52bd565540b638f8c7866ade5da414efc5ce languageName: node linkType: hard From 38420d42c3d3c36eca9cec86d4183fac0d987094 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 6 Mar 2023 23:05:58 +0000 Subject: [PATCH 130/147] fix(deps): update dependency @graphql-tools/schema to v9.0.17 Signed-off-by: Renovate Bot --- yarn.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/yarn.lock b/yarn.lock index f1688f25b0..6c9f686869 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10658,15 +10658,15 @@ __metadata: languageName: node linkType: hard -"@graphql-tools/merge@npm:8.3.18, @graphql-tools/merge@npm:^8.2.6": - version: 8.3.18 - resolution: "@graphql-tools/merge@npm:8.3.18" +"@graphql-tools/merge@npm:8.4.0, @graphql-tools/merge@npm:^8.2.6": + version: 8.4.0 + resolution: "@graphql-tools/merge@npm:8.4.0" dependencies: "@graphql-tools/utils": 9.2.1 tslib: ^2.4.0 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 0834fcf13dec5ee92e39f2e1b27a098654e2db20bf6ef6f43d7efce56b7d750caa59dd16aacb211b8f5a198d29c19d36471401762f5a34e0bc22657285dcae92 + checksum: 32265749833615ac2cb3d958318f5c46b7bd5ec858acfbad7136d379594ec3c98ba67ba5f04f4061187e5dfd52bb277155cd98fdeb2b4c5535c16bdb4f117ae0 languageName: node linkType: hard @@ -10794,16 +10794,16 @@ __metadata: linkType: hard "@graphql-tools/schema@npm:^9.0.0": - version: 9.0.16 - resolution: "@graphql-tools/schema@npm:9.0.16" + version: 9.0.17 + resolution: "@graphql-tools/schema@npm:9.0.17" dependencies: - "@graphql-tools/merge": 8.3.18 + "@graphql-tools/merge": 8.4.0 "@graphql-tools/utils": 9.2.1 tslib: ^2.4.0 value-or-promise: 1.0.12 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: ecbd27b4a36424c8d4b2206b1f2d2ec2cff3c66f52ec452b17977642017ca7f00df4df44f2d0426174ceea9596474d0656bc0227f4c1149f2288abb6d186cd68 + checksum: 1c6513dd88b47d07702d01a48941ee164c4090c69b2475b1dde48a3d8866ed48fd39a33d15510682f6d8c18d19ceb72b77104eb4edbb194f96a129cc03909e89 languageName: node linkType: hard From a6b8f39508db07cff222ab4e4c12b113718d8090 Mon Sep 17 00:00:00 2001 From: Carlos Esteban Lopez Date: Mon, 6 Mar 2023 18:49:22 -0500 Subject: [PATCH 131/147] feat(microsite-next): Add nominate page with basic styles Signed-off-by: Carlos Esteban Lopez --- microsite-next/src/pages/nominate/index.tsx | 27 ++++++++++++++++ .../src/pages/nominate/nominate.module.scss | 32 +++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 microsite-next/src/pages/nominate/index.tsx create mode 100644 microsite-next/src/pages/nominate/nominate.module.scss diff --git a/microsite-next/src/pages/nominate/index.tsx b/microsite-next/src/pages/nominate/index.tsx new file mode 100644 index 0000000000..58ff1dcef4 --- /dev/null +++ b/microsite-next/src/pages/nominate/index.tsx @@ -0,0 +1,27 @@ +import React from 'react'; + +import nominateStyles from './nominate.module.scss'; +import Layout from '@theme/Layout'; +import clsx from 'clsx'; +import { BannerSection } from '@site/src/components/bannerSection/bannerSection'; +import { BannerSectionGrid } from '../../components/bannerSection/bannerSectionGrid'; +import { ContentBlock } from '@site/src/components/contentBlock/contentBlock'; + +const Nominate = () => { + return ( + +
+ + Contributor Spotlight nomination}> + + + +
+
+ ); +}; + +export default Nominate; diff --git a/microsite-next/src/pages/nominate/nominate.module.scss b/microsite-next/src/pages/nominate/nominate.module.scss new file mode 100644 index 0000000000..cdec103a8a --- /dev/null +++ b/microsite-next/src/pages/nominate/nominate.module.scss @@ -0,0 +1,32 @@ +.nominatePage { + font-size: 1.25rem; + + &, + & > section, + & > section > div { + flex: 1; + display: flex; + flex-direction: column; + } + + & > section > div > div { + flex: 1; + grid-template-rows: auto 1fr; + } + + h1 { + font-size: 54px; + line-height: 56px; + word-break: break-word; + } + + p { + text-align: justify; + } + + iframe { + width: 100%; + height: 100%; + min-height: 400px; + } +} From c1cab2c87258c97e992c3438ddcc7cb51ce5aa1e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 7 Mar 2023 06:16:26 +0000 Subject: [PATCH 132/147] fix(deps): update dependency @keyv/redis to v2.5.6 Signed-off-by: Renovate Bot --- yarn.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/yarn.lock b/yarn.lock index f6e994f0b2..e71581e906 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11539,11 +11539,11 @@ __metadata: linkType: hard "@keyv/redis@npm:^2.5.3": - version: 2.5.5 - resolution: "@keyv/redis@npm:2.5.5" + version: 2.5.6 + resolution: "@keyv/redis@npm:2.5.6" dependencies: - ioredis: ^5.3.0 - checksum: dc4c4e9c0a44dec1166a6a4481a42342289b4618136c2f640306bee381cf30d737346b064ecc369fc8ebdd2baaaba47e099aabe9f37839911171a9c006d75e62 + ioredis: ^5.3.1 + checksum: ccd19ed1f3e9b0a820b5b537d978dadd2bae19988cbb136312a38cb8cc3d3b2d88a53d20aefdd96e85ce9f341ee3ab29f371379627bd27bd587cd3926d3115a3 languageName: node linkType: hard @@ -25682,9 +25682,9 @@ __metadata: languageName: node linkType: hard -"ioredis@npm:^5.3.0": - version: 5.3.0 - resolution: "ioredis@npm:5.3.0" +"ioredis@npm:^5.3.1": + version: 5.3.1 + resolution: "ioredis@npm:5.3.1" dependencies: "@ioredis/commands": ^1.1.1 cluster-key-slot: ^1.1.0 @@ -25695,7 +25695,7 @@ __metadata: redis-errors: ^1.2.0 redis-parser: ^3.0.0 standard-as-callback: ^2.1.0 - checksum: d3a1fd8f1b5d9ce6d4b7dd083773dbe0936ea3d1f55f07d36daa3d0b59c4636e95640f90bc003a08bc900a9803307e7d7e191817a2c2970696e204dae6f3dc35 + checksum: 6c98cb8f8772ad4bb2b6b7a0a224e4a63f4759f9a28e84205f18788552f08221d51f391c10892dca01a1b10b2804d0a7e6082b0b7decd65538a5fb6b0f4f1f82 languageName: node linkType: hard From 3e467093730f820c6bd7fdeb3184a0f8754aac14 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 7 Mar 2023 06:17:43 +0000 Subject: [PATCH 133/147] fix(deps): update dependency @roadiehq/backstage-plugin-github-insights to v2.3.7 Signed-off-by: Renovate Bot --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index f6e994f0b2..b34cc31cdc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13274,8 +13274,8 @@ __metadata: linkType: hard "@roadiehq/backstage-plugin-github-insights@npm:^2.0.5": - version: 2.3.6 - resolution: "@roadiehq/backstage-plugin-github-insights@npm:2.3.6" + version: 2.3.7 + resolution: "@roadiehq/backstage-plugin-github-insights@npm:2.3.7" dependencies: "@backstage/catalog-model": ^1.2.0 "@backstage/core-components": ^0.12.4 @@ -13297,7 +13297,7 @@ __metadata: react: ^16.13.1 || ^17.0.0 react-dom: ^16.13.1 || ^17.0.0 react-router: 6.0.0-beta.0 || ^6.3.0 - checksum: 10b5be80d6691ccd2a7f06fb701bb9d3c50af5463e342efa8b34574b325d6103f98fbf5781df4156e0dce86834f25735fe1b14101d59cbde04460ea87a2314ed + checksum: 0818a109c6ebbcc312f1a9f6575cd8d47f7adec6201d3555cfc1ad2d25c5f80ff08ad26eee692a40d059283c7b3dadbb5a6533802318a8ae5c781c1fcaaf077d languageName: node linkType: hard From f1e163a4bb0c1aec59a325d73b6589737b05cb2a Mon Sep 17 00:00:00 2001 From: lafomit26 Date: Tue, 7 Mar 2023 08:57:02 +0100 Subject: [PATCH 134/147] Add N26 to ADOPTERS.md Signed-off-by: lafomit26 --- ADOPTERS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/ADOPTERS.md b/ADOPTERS.md index 8fa8d37c79..c2f5202019 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -231,3 +231,4 @@ _You can do this by using the [Adopter form](https://info.backstage.spotify.com/ | [MusicTribe](https://careers.musictribe.com/) | [Alex Ford](mailto:alex.j.ford@gmail.com), [Tiago Barbosa](https://github.com/t1agob) | We are starting to use Backstage as a developer portal to share API specifications and documentation, to quickly onboard new projects with the software templates, and to help developers discover software through the catalog. | [Cazoo](https://www.cazoo.co.uk/) | [Abz Mungul](https://www.linkedin.com/in/abzmungul/), [Scott Edwards](https://www.linkedin.com/in/scott-edwards-tech/) | We're assessing Backstage as our developer platform at Cazoo with a focus on reducing cognitive load for our engineers. We're currently aiming for 3 outcomes: creating visibility into service ownership across teams, improving the discoverability of event schemas and relationships, and improving the discoverability of technical documentation and best practices. | | [Gumtree](https://www.gumtree.com.au) | [Kumar Gaurav](https://www.linkedin.com/in/kumargaurav517) | We are starting to use it as a single place to find all component information in a distributed architecture. | +| [N26](https://n26.com) | [Alexei Timofti](https://www.linkedin.com/in/alexeitimofti) | We use Backstage for our service catalog and are actively looking into adopting other plugins like TechDocs, TechInsights and Software Templates. | From a064e3870581d62678a76227d51c97b1be14729a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 7 Mar 2023 08:44:08 +0000 Subject: [PATCH 135/147] fix(deps): update dependency @swc/core to v1.3.38 Signed-off-by: Renovate Bot --- microsite-next/yarn.lock | 86 ++++++++++++++++++++-------------------- storybook/yarn.lock | 86 ++++++++++++++++++++-------------------- yarn.lock | 86 ++++++++++++++++++++-------------------- 3 files changed, 129 insertions(+), 129 deletions(-) diff --git a/microsite-next/yarn.lock b/microsite-next/yarn.lock index 517e3c2280..a9db81ead4 100644 --- a/microsite-next/yarn.lock +++ b/microsite-next/yarn.lock @@ -2623,90 +2623,90 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.3.36": - version: 1.3.36 - resolution: "@swc/core-darwin-arm64@npm:1.3.36" +"@swc/core-darwin-arm64@npm:1.3.38": + version: 1.3.38 + resolution: "@swc/core-darwin-arm64@npm:1.3.38" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.3.36": - version: 1.3.36 - resolution: "@swc/core-darwin-x64@npm:1.3.36" +"@swc/core-darwin-x64@npm:1.3.38": + version: 1.3.38 + resolution: "@swc/core-darwin-x64@npm:1.3.38" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.3.36": - version: 1.3.36 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.36" +"@swc/core-linux-arm-gnueabihf@npm:1.3.38": + version: 1.3.38 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.38" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.3.36": - version: 1.3.36 - resolution: "@swc/core-linux-arm64-gnu@npm:1.3.36" +"@swc/core-linux-arm64-gnu@npm:1.3.38": + version: 1.3.38 + resolution: "@swc/core-linux-arm64-gnu@npm:1.3.38" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.3.36": - version: 1.3.36 - resolution: "@swc/core-linux-arm64-musl@npm:1.3.36" +"@swc/core-linux-arm64-musl@npm:1.3.38": + version: 1.3.38 + resolution: "@swc/core-linux-arm64-musl@npm:1.3.38" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.3.36": - version: 1.3.36 - resolution: "@swc/core-linux-x64-gnu@npm:1.3.36" +"@swc/core-linux-x64-gnu@npm:1.3.38": + version: 1.3.38 + resolution: "@swc/core-linux-x64-gnu@npm:1.3.38" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.3.36": - version: 1.3.36 - resolution: "@swc/core-linux-x64-musl@npm:1.3.36" +"@swc/core-linux-x64-musl@npm:1.3.38": + version: 1.3.38 + resolution: "@swc/core-linux-x64-musl@npm:1.3.38" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.3.36": - version: 1.3.36 - resolution: "@swc/core-win32-arm64-msvc@npm:1.3.36" +"@swc/core-win32-arm64-msvc@npm:1.3.38": + version: 1.3.38 + resolution: "@swc/core-win32-arm64-msvc@npm:1.3.38" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.3.36": - version: 1.3.36 - resolution: "@swc/core-win32-ia32-msvc@npm:1.3.36" +"@swc/core-win32-ia32-msvc@npm:1.3.38": + version: 1.3.38 + resolution: "@swc/core-win32-ia32-msvc@npm:1.3.38" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.3.36": - version: 1.3.36 - resolution: "@swc/core-win32-x64-msvc@npm:1.3.36" +"@swc/core-win32-x64-msvc@npm:1.3.38": + version: 1.3.38 + resolution: "@swc/core-win32-x64-msvc@npm:1.3.38" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@swc/core@npm:^1.3.36": - version: 1.3.36 - resolution: "@swc/core@npm:1.3.36" + version: 1.3.38 + resolution: "@swc/core@npm:1.3.38" dependencies: - "@swc/core-darwin-arm64": 1.3.36 - "@swc/core-darwin-x64": 1.3.36 - "@swc/core-linux-arm-gnueabihf": 1.3.36 - "@swc/core-linux-arm64-gnu": 1.3.36 - "@swc/core-linux-arm64-musl": 1.3.36 - "@swc/core-linux-x64-gnu": 1.3.36 - "@swc/core-linux-x64-musl": 1.3.36 - "@swc/core-win32-arm64-msvc": 1.3.36 - "@swc/core-win32-ia32-msvc": 1.3.36 - "@swc/core-win32-x64-msvc": 1.3.36 + "@swc/core-darwin-arm64": 1.3.38 + "@swc/core-darwin-x64": 1.3.38 + "@swc/core-linux-arm-gnueabihf": 1.3.38 + "@swc/core-linux-arm64-gnu": 1.3.38 + "@swc/core-linux-arm64-musl": 1.3.38 + "@swc/core-linux-x64-gnu": 1.3.38 + "@swc/core-linux-x64-musl": 1.3.38 + "@swc/core-win32-arm64-msvc": 1.3.38 + "@swc/core-win32-ia32-msvc": 1.3.38 + "@swc/core-win32-x64-msvc": 1.3.38 dependenciesMeta: "@swc/core-darwin-arm64": optional: true @@ -2728,7 +2728,7 @@ __metadata: optional: true "@swc/core-win32-x64-msvc": optional: true - checksum: 36e96e86d1ab8fd84eb51e7264a7ae781ee7e507d36b9ccc028d7f31a2ccf2949f074656e34139c970196774d24d55a54c3aa5c53d04eb6e3569c71cbfed0c0d + checksum: c55d30e57638bcd21f788add8490c3f3e71bfe027aa5a8b153e1b1b9686ecddd6deeaaa6a6b17717c7eab4c1e2a232b465b6755b6c891506fc0d03139badfbf7 languageName: node linkType: hard diff --git a/storybook/yarn.lock b/storybook/yarn.lock index 5584e16296..9c05864306 100644 --- a/storybook/yarn.lock +++ b/storybook/yarn.lock @@ -2966,90 +2966,90 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.3.36": - version: 1.3.36 - resolution: "@swc/core-darwin-arm64@npm:1.3.36" +"@swc/core-darwin-arm64@npm:1.3.38": + version: 1.3.38 + resolution: "@swc/core-darwin-arm64@npm:1.3.38" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.3.36": - version: 1.3.36 - resolution: "@swc/core-darwin-x64@npm:1.3.36" +"@swc/core-darwin-x64@npm:1.3.38": + version: 1.3.38 + resolution: "@swc/core-darwin-x64@npm:1.3.38" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.3.36": - version: 1.3.36 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.36" +"@swc/core-linux-arm-gnueabihf@npm:1.3.38": + version: 1.3.38 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.38" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.3.36": - version: 1.3.36 - resolution: "@swc/core-linux-arm64-gnu@npm:1.3.36" +"@swc/core-linux-arm64-gnu@npm:1.3.38": + version: 1.3.38 + resolution: "@swc/core-linux-arm64-gnu@npm:1.3.38" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.3.36": - version: 1.3.36 - resolution: "@swc/core-linux-arm64-musl@npm:1.3.36" +"@swc/core-linux-arm64-musl@npm:1.3.38": + version: 1.3.38 + resolution: "@swc/core-linux-arm64-musl@npm:1.3.38" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.3.36": - version: 1.3.36 - resolution: "@swc/core-linux-x64-gnu@npm:1.3.36" +"@swc/core-linux-x64-gnu@npm:1.3.38": + version: 1.3.38 + resolution: "@swc/core-linux-x64-gnu@npm:1.3.38" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.3.36": - version: 1.3.36 - resolution: "@swc/core-linux-x64-musl@npm:1.3.36" +"@swc/core-linux-x64-musl@npm:1.3.38": + version: 1.3.38 + resolution: "@swc/core-linux-x64-musl@npm:1.3.38" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.3.36": - version: 1.3.36 - resolution: "@swc/core-win32-arm64-msvc@npm:1.3.36" +"@swc/core-win32-arm64-msvc@npm:1.3.38": + version: 1.3.38 + resolution: "@swc/core-win32-arm64-msvc@npm:1.3.38" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.3.36": - version: 1.3.36 - resolution: "@swc/core-win32-ia32-msvc@npm:1.3.36" +"@swc/core-win32-ia32-msvc@npm:1.3.38": + version: 1.3.38 + resolution: "@swc/core-win32-ia32-msvc@npm:1.3.38" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.3.36": - version: 1.3.36 - resolution: "@swc/core-win32-x64-msvc@npm:1.3.36" +"@swc/core-win32-x64-msvc@npm:1.3.38": + version: 1.3.38 + resolution: "@swc/core-win32-x64-msvc@npm:1.3.38" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@swc/core@npm:^1.3.9": - version: 1.3.36 - resolution: "@swc/core@npm:1.3.36" + version: 1.3.38 + resolution: "@swc/core@npm:1.3.38" dependencies: - "@swc/core-darwin-arm64": 1.3.36 - "@swc/core-darwin-x64": 1.3.36 - "@swc/core-linux-arm-gnueabihf": 1.3.36 - "@swc/core-linux-arm64-gnu": 1.3.36 - "@swc/core-linux-arm64-musl": 1.3.36 - "@swc/core-linux-x64-gnu": 1.3.36 - "@swc/core-linux-x64-musl": 1.3.36 - "@swc/core-win32-arm64-msvc": 1.3.36 - "@swc/core-win32-ia32-msvc": 1.3.36 - "@swc/core-win32-x64-msvc": 1.3.36 + "@swc/core-darwin-arm64": 1.3.38 + "@swc/core-darwin-x64": 1.3.38 + "@swc/core-linux-arm-gnueabihf": 1.3.38 + "@swc/core-linux-arm64-gnu": 1.3.38 + "@swc/core-linux-arm64-musl": 1.3.38 + "@swc/core-linux-x64-gnu": 1.3.38 + "@swc/core-linux-x64-musl": 1.3.38 + "@swc/core-win32-arm64-msvc": 1.3.38 + "@swc/core-win32-ia32-msvc": 1.3.38 + "@swc/core-win32-x64-msvc": 1.3.38 dependenciesMeta: "@swc/core-darwin-arm64": optional: true @@ -3071,7 +3071,7 @@ __metadata: optional: true "@swc/core-win32-x64-msvc": optional: true - checksum: 36e96e86d1ab8fd84eb51e7264a7ae781ee7e507d36b9ccc028d7f31a2ccf2949f074656e34139c970196774d24d55a54c3aa5c53d04eb6e3569c71cbfed0c0d + checksum: c55d30e57638bcd21f788add8490c3f3e71bfe027aa5a8b153e1b1b9686ecddd6deeaaa6a6b17717c7eab4c1e2a232b465b6755b6c891506fc0d03139badfbf7 languageName: node linkType: hard diff --git a/yarn.lock b/yarn.lock index 53957e5c36..c2fd528a28 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13854,90 +13854,90 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.3.36": - version: 1.3.36 - resolution: "@swc/core-darwin-arm64@npm:1.3.36" +"@swc/core-darwin-arm64@npm:1.3.38": + version: 1.3.38 + resolution: "@swc/core-darwin-arm64@npm:1.3.38" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.3.36": - version: 1.3.36 - resolution: "@swc/core-darwin-x64@npm:1.3.36" +"@swc/core-darwin-x64@npm:1.3.38": + version: 1.3.38 + resolution: "@swc/core-darwin-x64@npm:1.3.38" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.3.36": - version: 1.3.36 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.36" +"@swc/core-linux-arm-gnueabihf@npm:1.3.38": + version: 1.3.38 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.38" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.3.36": - version: 1.3.36 - resolution: "@swc/core-linux-arm64-gnu@npm:1.3.36" +"@swc/core-linux-arm64-gnu@npm:1.3.38": + version: 1.3.38 + resolution: "@swc/core-linux-arm64-gnu@npm:1.3.38" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.3.36": - version: 1.3.36 - resolution: "@swc/core-linux-arm64-musl@npm:1.3.36" +"@swc/core-linux-arm64-musl@npm:1.3.38": + version: 1.3.38 + resolution: "@swc/core-linux-arm64-musl@npm:1.3.38" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.3.36": - version: 1.3.36 - resolution: "@swc/core-linux-x64-gnu@npm:1.3.36" +"@swc/core-linux-x64-gnu@npm:1.3.38": + version: 1.3.38 + resolution: "@swc/core-linux-x64-gnu@npm:1.3.38" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.3.36": - version: 1.3.36 - resolution: "@swc/core-linux-x64-musl@npm:1.3.36" +"@swc/core-linux-x64-musl@npm:1.3.38": + version: 1.3.38 + resolution: "@swc/core-linux-x64-musl@npm:1.3.38" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.3.36": - version: 1.3.36 - resolution: "@swc/core-win32-arm64-msvc@npm:1.3.36" +"@swc/core-win32-arm64-msvc@npm:1.3.38": + version: 1.3.38 + resolution: "@swc/core-win32-arm64-msvc@npm:1.3.38" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.3.36": - version: 1.3.36 - resolution: "@swc/core-win32-ia32-msvc@npm:1.3.36" +"@swc/core-win32-ia32-msvc@npm:1.3.38": + version: 1.3.38 + resolution: "@swc/core-win32-ia32-msvc@npm:1.3.38" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.3.36": - version: 1.3.36 - resolution: "@swc/core-win32-x64-msvc@npm:1.3.36" +"@swc/core-win32-x64-msvc@npm:1.3.38": + version: 1.3.38 + resolution: "@swc/core-win32-x64-msvc@npm:1.3.38" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@swc/core@npm:^1.3.9": - version: 1.3.36 - resolution: "@swc/core@npm:1.3.36" + version: 1.3.38 + resolution: "@swc/core@npm:1.3.38" dependencies: - "@swc/core-darwin-arm64": 1.3.36 - "@swc/core-darwin-x64": 1.3.36 - "@swc/core-linux-arm-gnueabihf": 1.3.36 - "@swc/core-linux-arm64-gnu": 1.3.36 - "@swc/core-linux-arm64-musl": 1.3.36 - "@swc/core-linux-x64-gnu": 1.3.36 - "@swc/core-linux-x64-musl": 1.3.36 - "@swc/core-win32-arm64-msvc": 1.3.36 - "@swc/core-win32-ia32-msvc": 1.3.36 - "@swc/core-win32-x64-msvc": 1.3.36 + "@swc/core-darwin-arm64": 1.3.38 + "@swc/core-darwin-x64": 1.3.38 + "@swc/core-linux-arm-gnueabihf": 1.3.38 + "@swc/core-linux-arm64-gnu": 1.3.38 + "@swc/core-linux-arm64-musl": 1.3.38 + "@swc/core-linux-x64-gnu": 1.3.38 + "@swc/core-linux-x64-musl": 1.3.38 + "@swc/core-win32-arm64-msvc": 1.3.38 + "@swc/core-win32-ia32-msvc": 1.3.38 + "@swc/core-win32-x64-msvc": 1.3.38 dependenciesMeta: "@swc/core-darwin-arm64": optional: true @@ -13959,7 +13959,7 @@ __metadata: optional: true "@swc/core-win32-x64-msvc": optional: true - checksum: 36e96e86d1ab8fd84eb51e7264a7ae781ee7e507d36b9ccc028d7f31a2ccf2949f074656e34139c970196774d24d55a54c3aa5c53d04eb6e3569c71cbfed0c0d + checksum: c55d30e57638bcd21f788add8490c3f3e71bfe027aa5a8b153e1b1b9686ecddd6deeaaa6a6b17717c7eab4c1e2a232b465b6755b6c891506fc0d03139badfbf7 languageName: node linkType: hard From 014e41add3a834357ccc793f23d6df59dd0fc344 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Tue, 7 Mar 2023 10:20:57 +0100 Subject: [PATCH 136/147] try to fix windows build error MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/techdocs-node/src/stages/generate/helpers.test.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/techdocs-node/src/stages/generate/helpers.test.ts b/plugins/techdocs-node/src/stages/generate/helpers.test.ts index b24d85430b..6bcdf0d984 100644 --- a/plugins/techdocs-node/src/stages/generate/helpers.test.ts +++ b/plugins/techdocs-node/src/stages/generate/helpers.test.ts @@ -565,7 +565,9 @@ describe('helpers', () => { } = await getMkdocsYml(inputDir, defaultSiteOptions); expect(mkdocsPath).toBe(key); - expect(content).toBe(mkdocsDefaultYml.toString()); + expect(content.split(/[\r\n]+/g)).toEqual( + mkdocsDefaultYml.toString().split(/[\r\n]+/g), + ); expect(configIsTemporary).toBe(true); }); From a37fc0688a5f23fb5390eea5b54bbc7b8c4dab8c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 7 Mar 2023 10:12:58 +0000 Subject: [PATCH 137/147] chore(deps): update dependency aws-sdk-client-mock to v2.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 14d1ddbc05..58bbeefec8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17546,13 +17546,13 @@ __metadata: linkType: hard "aws-sdk-client-mock@npm:^2.0.0": - version: 2.0.1 - resolution: "aws-sdk-client-mock@npm:2.0.1" + version: 2.1.0 + resolution: "aws-sdk-client-mock@npm:2.1.0" dependencies: "@types/sinon": ^10.0.10 sinon: ^14.0.2 tslib: ^2.1.0 - checksum: 447502ba9270777db129ddcf0245502771c1415d4293f7b001e0a3dc18ab0ce778a7f2d40a86dadb2637d3b83be2df4e833d7f4f6c49678495c932340558c465 + checksum: c6179c5528709ff1ad7e7308d03c74850fb5b973ca3d63836ca9973ca70de0c3dd7846fcbd3fd02bf4dabe6cae1095683b38c4202878458c8369e7e837962cd2 languageName: node linkType: hard From b2daee5a33a1531b0c4e62681ba55b288f832d53 Mon Sep 17 00:00:00 2001 From: Niklas Aronsson Date: Tue, 7 Mar 2023 11:59:42 +0100 Subject: [PATCH 138/147] Scaffolder next docs: Fix import of createNextScaffolderFieldExtension Signed-off-by: Niklas Aronsson --- docs/features/software-templates/testing-scaffolder-alpha.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/features/software-templates/testing-scaffolder-alpha.md b/docs/features/software-templates/testing-scaffolder-alpha.md index 76479b137e..36da23e92d 100644 --- a/docs/features/software-templates/testing-scaffolder-alpha.md +++ b/docs/features/software-templates/testing-scaffolder-alpha.md @@ -97,7 +97,7 @@ References for `createScaffolderFieldExtension` have an `/alpha` version of `cre ```diff -import { createScaffolderFieldExtension } from '@backstage/plugin-scaffolder'; -+import { createNextScaffolderFieldExtension } from '@backstage/plugin-scaffolder/alpha'; ++import { createNextScaffolderFieldExtension } from '@backstage/plugin-scaffolder-react/alpha'; export const EntityNamePickerFieldExtension = scaffolderPlugin.provide( - createScaffolderFieldExtension({ From 395501fc3994b74c3c65eb2f7fb487a24ec170bd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 7 Mar 2023 11:08:15 +0000 Subject: [PATCH 139/147] chore(deps): update dependency aws-sdk-client-mock-jest to v2.1.0 Signed-off-by: Renovate Bot --- yarn.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/yarn.lock b/yarn.lock index cb5b301877..2ba0ded91c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17960,14 +17960,14 @@ __metadata: linkType: hard "aws-sdk-client-mock-jest@npm:^2.0.0": - version: 2.0.1 - resolution: "aws-sdk-client-mock-jest@npm:2.0.1" + version: 2.1.0 + resolution: "aws-sdk-client-mock-jest@npm:2.1.0" dependencies: "@types/jest": ^28.1.3 tslib: ^2.1.0 peerDependencies: - aws-sdk-client-mock: 2.0.1 - checksum: 7a45ace039f0d506bdebb8941f43dc0108061fed76601a369874550ef3b0ce65228702c848f945b0d38075fa2581987fa3abc88941b869a0086fd65df16af631 + aws-sdk-client-mock: 2.1.0 + checksum: 567e2084d71c90f71e5bfa82f2a4b592fec5ea818cb4edf3586f922454cee4fec1403d4161d3d91a3db3ccebe1db5babe069754d76204c7f6986ab71bafb1084 languageName: node linkType: hard From ddd67399de0c3ef2e847af90f8e1636f122d972a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Tue, 7 Mar 2023 12:46:54 +0100 Subject: [PATCH 140/147] add migrations test, return tasks async MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- packages/backend-tasks/api-report.md | 12 ++- packages/backend-tasks/src/migrations.test.ts | 82 +++++++++++++++++++ .../src/tasks/LocalTaskWorker.ts | 4 +- .../src/tasks/PluginTaskSchedulerImpl.test.ts | 27 +++--- .../src/tasks/PluginTaskSchedulerImpl.ts | 52 +++++------- packages/backend-tasks/src/tasks/types.ts | 24 ++++-- 6 files changed, 148 insertions(+), 53 deletions(-) create mode 100644 packages/backend-tasks/src/migrations.test.ts diff --git a/packages/backend-tasks/api-report.md b/packages/backend-tasks/api-report.md index 66f901adad..1d978068b3 100644 --- a/packages/backend-tasks/api-report.md +++ b/packages/backend-tasks/api-report.md @@ -7,6 +7,7 @@ import { Config } from '@backstage/config'; import { DatabaseManager } from '@backstage/backend-common'; import { Duration } from 'luxon'; import { HumanDuration as HumanDuration_2 } from '@backstage/types'; +import { JsonObject } from '@backstage/types'; import { Logger } from 'winston'; import { PluginDatabaseManager } from '@backstage/backend-common'; @@ -16,7 +17,7 @@ export type HumanDuration = HumanDuration_2; // @public export interface PluginTaskScheduler { createScheduledTaskRunner(schedule: TaskScheduleDefinition): TaskRunner; - getScheduledTasks(): TaskDescriptor[]; + getScheduledTasks(): Promise; scheduleTask( task: TaskScheduleDefinition & TaskInvocationDefinition, ): Promise; @@ -29,8 +30,13 @@ export function readTaskScheduleDefinitionFromConfig( ): TaskScheduleDefinition; // @public -export type TaskDescriptor = TaskScheduleDefinition & - Exclude; +export type TaskDescriptor = { + id: string; + scope: 'global' | 'local'; + settings: { + version: number; + } & JsonObject; +}; // @public export type TaskFunction = diff --git a/packages/backend-tasks/src/migrations.test.ts b/packages/backend-tasks/src/migrations.test.ts new file mode 100644 index 0000000000..4d37b9d39e --- /dev/null +++ b/packages/backend-tasks/src/migrations.test.ts @@ -0,0 +1,82 @@ +/* + * 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 { Knex } from 'knex'; +import { TestDatabases } from '@backstage/backend-test-utils'; +import fs from 'fs'; + +const migrationsDir = `${__dirname}/../migrations`; +const migrationsFiles = fs.readdirSync(migrationsDir).sort(); + +async function migrateUpOnce(knex: Knex): Promise { + await knex.migrate.up({ directory: migrationsDir }); +} + +async function migrateDownOnce(knex: Knex): Promise { + await knex.migrate.down({ directory: migrationsDir }); +} + +async function migrateUntilBefore(knex: Knex, target: string): Promise { + const index = migrationsFiles.indexOf(target); + if (index === -1) { + throw new Error(`Migration ${target} not found`); + } + for (let i = 0; i < index; i++) { + await migrateUpOnce(knex); + } +} + +describe('migrations', () => { + const databases = TestDatabases.create({ + ids: ['POSTGRES_13', 'POSTGRES_9', 'SQLITE_3'], + }); + + it.each(databases.eachSupportedId())( + '20210928160613_init.js, %p', + async databaseId => { + const knex = await databases.init(databaseId); + + await migrateUntilBefore(knex, '20210928160613_init.js'); + await migrateUpOnce(knex); + + await knex('backstage_backend_tasks__tasks').insert({ + id: 'test', + settings_json: '{}', + next_run_start_at: knex.fn.now(), + }); + + await expect(knex('backstage_backend_tasks__tasks')).resolves.toEqual([ + { + id: 'test', + settings_json: '{}', + next_run_start_at: expect.anything(), + current_run_ticket: null, + current_run_started_at: null, + current_run_expires_at: null, + }, + ]); + + await migrateDownOnce(knex); + + await expect(knex('backstage_backend_tasks__tasks')).rejects.toThrow( + /backstage_backend_tasks__tasks/, + ); + + await knex.destroy(); + }, + 60_000, + ); +}); diff --git a/packages/backend-tasks/src/tasks/LocalTaskWorker.ts b/packages/backend-tasks/src/tasks/LocalTaskWorker.ts index 0edec5e84e..347d22e48e 100644 --- a/packages/backend-tasks/src/tasks/LocalTaskWorker.ts +++ b/packages/backend-tasks/src/tasks/LocalTaskWorker.ts @@ -39,8 +39,9 @@ export class LocalTaskWorker { this.logger.info( `Task worker starting: ${this.taskId}, ${JSON.stringify(settings)}`, ); - let attemptNum = 1; + (async () => { + let attemptNum = 1; for (;;) { try { if (settings.initialDelayDuration) { @@ -60,6 +61,7 @@ export class LocalTaskWorker { options?.signal, ); } + this.logger.info(`Task worker finished: ${this.taskId}`); attemptNum = 0; break; diff --git a/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.test.ts b/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.test.ts index d64f353c27..9a29810683 100644 --- a/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.test.ts +++ b/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.test.ts @@ -309,9 +309,8 @@ describe('PluginTaskManagerImpl', () => { 'can fetch both global and local task ids, %p', async databaseId => { const { manager } = await init(databaseId); - const fn = jest.fn(); - const promise = new Promise(resolve => fn.mockImplementation(resolve)); + await manager.scheduleTask({ id: 'task1', timeout: Duration.fromMillis(5000), @@ -328,18 +327,18 @@ describe('PluginTaskManagerImpl', () => { scope: 'local', }); - await promise; - - const tasks = manager.getScheduledTasks(); - expect(tasks.length).toEqual(2); - expect(tasks[0].id).toEqual('task1'); - expect(tasks[1].id).toEqual('task2'); - expect(tasks[0].scope).toEqual('global'); - expect(tasks[1].scope).toEqual('local'); - expect(tasks[0].fn).toBeUndefined(); - expect(tasks[1].fn).toBeUndefined(); - expect(tasks[0].signal).toBeUndefined(); - expect(tasks[1].signal).toBeUndefined(); + await expect(manager.getScheduledTasks()).resolves.toEqual([ + { + id: 'task1', + scope: 'global', + settings: expect.objectContaining({ cadence: 'PT5S' }), + }, + { + id: 'task2', + scope: 'local', + settings: expect.objectContaining({ cadence: 'PT5S' }), + }, + ]); }, 60_000, ); diff --git a/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.ts b/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.ts index bbc2b45718..253d7869df 100644 --- a/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.ts +++ b/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.ts @@ -25,6 +25,7 @@ import { TaskInvocationDefinition, TaskRunner, TaskScheduleDefinition, + TaskSettingsV2, } from './types'; import { validateId } from './util'; @@ -57,6 +58,14 @@ export class PluginTaskSchedulerImpl implements PluginTaskScheduler { validateId(task.id); const scope = task.scope ?? 'global'; + const settings: TaskSettingsV2 = { + version: 2, + cadence: parseDuration(task.frequency), + initialDelayDuration: + task.initialDelay && parseDuration(task.initialDelay), + timeoutAfterDuration: parseDuration(task.timeout), + }; + if (scope === 'global') { const knex = await this.databaseFactory(); const worker = new TaskWorker( @@ -65,39 +74,22 @@ export class PluginTaskSchedulerImpl implements PluginTaskScheduler { knex, this.logger.child({ task: task.id }), ); - - await worker.start( - { - version: 2, - cadence: parseDuration(task.frequency), - initialDelayDuration: - task.initialDelay && parseDuration(task.initialDelay), - timeoutAfterDuration: parseDuration(task.timeout), - }, - { - signal: task.signal, - }, - ); + await worker.start(settings, { signal: task.signal }); } else { - const worker = new LocalTaskWorker(task.id, task.fn, this.logger); - - worker.start( - { - version: 2, - cadence: parseDuration(task.frequency), - initialDelayDuration: - task.initialDelay && parseDuration(task.initialDelay), - timeoutAfterDuration: parseDuration(task.timeout), - }, - { - signal: task.signal, - }, + const worker = new LocalTaskWorker( + task.id, + task.fn, + this.logger.child({ task: task.id }), ); - + worker.start(settings, { signal: task.signal }); this.localTasksById.set(task.id, worker); } - const { fn: _, signal: __, ...descriptor } = task; - this.allScheduledTasks.push(descriptor as TaskDescriptor); + + this.allScheduledTasks.push({ + id: task.id, + scope: scope, + settings: settings, + }); } createScheduledTaskRunner(schedule: TaskScheduleDefinition): TaskRunner { @@ -108,7 +100,7 @@ export class PluginTaskSchedulerImpl implements PluginTaskScheduler { }; } - getScheduledTasks(): TaskDescriptor[] { + async getScheduledTasks(): Promise { return this.allScheduledTasks; } } diff --git a/packages/backend-tasks/src/tasks/types.ts b/packages/backend-tasks/src/tasks/types.ts index d8aa58bcb3..14339dda0e 100644 --- a/packages/backend-tasks/src/tasks/types.ts +++ b/packages/backend-tasks/src/tasks/types.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { HumanDuration } from '@backstage/types'; +import { HumanDuration, JsonObject } from '@backstage/types'; import { CronTime } from 'cron'; import { Duration } from 'luxon'; import { z } from 'zod'; @@ -32,12 +32,26 @@ export type TaskFunction = | (() => void | Promise); /** - * A type to describe a scheduled task. + * A semi-opaque type to describe an actively scheduled task. * * @public */ -export type TaskDescriptor = TaskScheduleDefinition & - Exclude; +export type TaskDescriptor = { + /** + * The unique identifier of the task. + */ + id: string; + /** + * The scope of the task. + */ + scope: 'global' | 'local'; + /** + * The settings that control the task flow. This is a semi-opaque structure + * that is mainly there for debugging purposes. Do not make any assumptions + * about the contents of this field. + */ + settings: { version: number } & JsonObject; +}; /** * Options that control the scheduling of a task. @@ -327,7 +341,7 @@ export interface PluginTaskScheduler { * * @returns Scheduled tasks */ - getScheduledTasks(): TaskDescriptor[]; + getScheduledTasks(): Promise; } function isValidOptionalDurationString(d: string | undefined): boolean { From ba667ef4c16bc350bb72e343de1f1927e8141c87 Mon Sep 17 00:00:00 2001 From: Waqas Ali <3605691+waqasali47@users.noreply.github.com> Date: Tue, 7 Mar 2023 12:58:07 +0100 Subject: [PATCH 141/147] Update ADOPTERS.md Added The LEGO Group to adopters. Signed-off-by: Waqas Ali <3605691+waqasali47@users.noreply.github.com> --- ADOPTERS.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ADOPTERS.md b/ADOPTERS.md index e31cdce19f..70b2992cf9 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -232,3 +232,5 @@ _You can do this by using the [Adopter form](https://info.backstage.spotify.com/ | [Cazoo](https://www.cazoo.co.uk/) | [Abz Mungul](https://www.linkedin.com/in/abzmungul/), [Scott Edwards](https://www.linkedin.com/in/scott-edwards-tech/) | We're assessing Backstage as our developer platform at Cazoo with a focus on reducing cognitive load for our engineers. We're currently aiming for 3 outcomes: creating visibility into service ownership across teams, improving the discoverability of event schemas and relationships, and improving the discoverability of technical documentation and best practices. | | [Gumtree](https://www.gumtree.com.au) | [Kumar Gaurav](https://www.linkedin.com/in/kumargaurav517) | We are starting to use it as a single place to find all component information in a distributed architecture. | | [N26](https://n26.com) | [Alexei Timofti](https://www.linkedin.com/in/alexeitimofti) | We use Backstage for our service catalog and are actively looking into adopting other plugins like TechDocs, TechInsights and Software Templates. | +| [The LEGO Group](https://www.lego.com) | [Waqas Ali](https://www.linkedin.com/in/waqasali47) | We are building our internal develper portal on top of Backstage. | + From cfa52ae692b5ea0923301b975a6fe297105e930e Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 7 Mar 2023 14:11:01 +0100 Subject: [PATCH 142/147] chore: this should pass through properties instead of being strict Signed-off-by: blam --- .../src/scaffolder/actions/builtin/catalog/write.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/write.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/write.ts index aaaf504833..9e823d2574 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/write.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/catalog/write.ts @@ -70,6 +70,7 @@ export function createCatalogWriteAction() { // TODO: this should reference an zod entity validator if it existed. entity: z .object({}) + .passthrough() .describe( 'You can provide the same values used in the Entity schema.', ), From 9968f45592154aa763e50466c3071101082f58de Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 7 Mar 2023 14:13:01 +0100 Subject: [PATCH 143/147] chore: add changeset Signed-off-by: blam --- .changeset/honest-clouds-shout.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/honest-clouds-shout.md diff --git a/.changeset/honest-clouds-shout.md b/.changeset/honest-clouds-shout.md new file mode 100644 index 0000000000..0a7249d9ad --- /dev/null +++ b/.changeset/honest-clouds-shout.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend': patch +--- + +catalog write action should allow any shape of object From c2113b15a05a2da1089758706fdc323d4db528dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Tue, 7 Mar 2023 14:56:36 +0100 Subject: [PATCH 144/147] make the tasks migrations test stable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- packages/backend-tasks/src/migrations.test.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/backend-tasks/src/migrations.test.ts b/packages/backend-tasks/src/migrations.test.ts index 4d37b9d39e..74503ab9a7 100644 --- a/packages/backend-tasks/src/migrations.test.ts +++ b/packages/backend-tasks/src/migrations.test.ts @@ -71,8 +71,11 @@ describe('migrations', () => { await migrateDownOnce(knex); - await expect(knex('backstage_backend_tasks__tasks')).rejects.toThrow( - /backstage_backend_tasks__tasks/, + // This looks odd - you might expect a .toThrow at the end but that + // actually is flaky for some reason specifically on sqlite when + // performing multiple runs in sequence + await expect(knex('backstage_backend_tasks__tasks')).rejects.toEqual( + expect.anything(), ); await knex.destroy(); From 4a5b95751857354aff61dbfa3cd5505e11258dc1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 7 Mar 2023 14:16:48 +0000 Subject: [PATCH 145/147] chore(deps): update dependency swr to v2.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 2bf9c900df..cc19ee71d0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -37332,13 +37332,13 @@ __metadata: linkType: hard "swr@npm:^2.0.0": - version: 2.0.4 - resolution: "swr@npm:2.0.4" + version: 2.1.0 + resolution: "swr@npm:2.1.0" dependencies: use-sync-external-store: ^1.2.0 peerDependencies: react: ^16.11.0 || ^17.0.0 || ^18.0.0 - checksum: 2fd26baed9a0ad3ecf24d7a64c4929f9c3be71c942e883ab369c3929aa297a47b0512c29ed8cdfd0ce2e3f5ee3f181d80c16b2b95128a0ae58bc133b4a0ea5a8 + checksum: 7de1799f319c7ebfb996cb843279169144b7087215ce7318dd6011590908341ac7d5bca93a197666557c2450b0297d9efbc610fd069b82dc3387130c619965fc languageName: node linkType: hard From f4fbbf7db67819d5d0448e9e0894c41fccf90ac2 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 7 Mar 2023 18:02:30 +0100 Subject: [PATCH 146/147] =?UTF-8?q?Revert=20"Allow=20to=20change=20default?= =?UTF-8?q?=20document=20type=20of=20indexed=20files=20by=20catalog=20col?= =?UTF-8?q?=E2=80=A6"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Patrik Oldsberg --- .changeset/wet-pugs-exist.md | 5 --- docs/features/search/how-to-guides.md | 43 ------------------- plugins/catalog-backend/api-report.md | 3 +- .../search/DefaultCatalogCollatorFactory.ts | 5 +-- 4 files changed, 2 insertions(+), 54 deletions(-) delete mode 100644 .changeset/wet-pugs-exist.md diff --git a/.changeset/wet-pugs-exist.md b/.changeset/wet-pugs-exist.md deleted file mode 100644 index 509fb19f8d..0000000000 --- a/.changeset/wet-pugs-exist.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend': patch ---- - -Added optional parameter `documentType` to `DefaultCatalogCollatorFactoryOptions` which allows to override default document type `software-catalog`. For more details, see [How to customize document type in the Software Catalog index](../docs/features/search/how-to-guides.md#how-to-customize-document-type-in-the-software-catalog-index). diff --git a/docs/features/search/how-to-guides.md b/docs/features/search/how-to-guides.md index d2c8c537f2..b464168724 100644 --- a/docs/features/search/how-to-guides.md +++ b/docs/features/search/how-to-guides.md @@ -184,49 +184,6 @@ indexBuilder.addCollator({ As shown above, you can add a catalog entity filter to narrow down what catalog entities are indexed by the search engine. -## How to customize document type in the Software Catalog index - -In some cases you might want to have the ability to change the document type in which catalog entities will be indexed by catalog collator. -Such option gives a possibility to customize SearchPage results and filters depending on which document type you would like to see results for. - -You can achieve that by passing additional parameter `documentType` to the `DefaultCatalogCollatorFactory`. - -Let's say that you want to have two different document types for some entities. -Our example will cover a use case in which we want to: - -- Store entities of kind `User` or `Group` under document type `yourCustomDocumentType`, -- Store rest of entities under default document type `software-catalog` - -To achieve that you will have to remove `User` and `Group` from your previous collator `filter` and register new `DefaultCatalogCollatorFactory` with new parameter `documentType`. - -```diff -// packages/backend/src/plugins/search.ts - - indexBuilder.addCollator({ - schedule, - factory: DefaultCatalogCollatorFactory.fromConfig(env.config, { - discovery: env.discovery, - tokenManager: env.tokenManager, - filter: { -- kind: ['API', 'Component', 'Domain', 'Resource', 'System', 'Template', 'User', 'Group'], -+ kind: ['API', 'Component', 'Domain', 'Resource', 'System', 'Template'], - }, - }), - }); - -+ indexBuilder.addCollator({ -+ schedule, -+ factory: DefaultCatalogCollatorFactory.fromConfig(env.config, { -+ discovery: env.discovery, -+ tokenManager: env.tokenManager, -+ filter: { -+ kind: ['User', 'Group'], -+ }, -+ documentType: 'yourCustomDocumentType', -+ }), -+ }); -``` - ## How to customize search results highlighting styling The default highlighting styling for matched terms in search results is your diff --git a/plugins/catalog-backend/api-report.md b/plugins/catalog-backend/api-report.md index 8aae10fefb..00c13a31ea 100644 --- a/plugins/catalog-backend/api-report.md +++ b/plugins/catalog-backend/api-report.md @@ -288,7 +288,7 @@ export class DefaultCatalogCollatorFactory implements DocumentCollatorFactory { // (undocumented) getCollator(): Promise; // (undocumented) - readonly type: string; + readonly type = 'software-catalog'; // (undocumented) readonly visibilityPermission: Permission; } @@ -302,7 +302,6 @@ export type DefaultCatalogCollatorFactoryOptions = { batchSize?: number; catalogClient?: CatalogApi; entityTransformer?: CatalogCollatorEntityTransformer; - documentType?: string; }; export { DeferredEntity }; diff --git a/plugins/catalog-backend/src/search/DefaultCatalogCollatorFactory.ts b/plugins/catalog-backend/src/search/DefaultCatalogCollatorFactory.ts index d04b8d54d3..ed81d39bbb 100644 --- a/plugins/catalog-backend/src/search/DefaultCatalogCollatorFactory.ts +++ b/plugins/catalog-backend/src/search/DefaultCatalogCollatorFactory.ts @@ -42,12 +42,11 @@ export type DefaultCatalogCollatorFactoryOptions = { batchSize?: number; catalogClient?: CatalogApi; entityTransformer?: CatalogCollatorEntityTransformer; - documentType?: string; }; /** @public */ export class DefaultCatalogCollatorFactory implements DocumentCollatorFactory { - public readonly type: string; + public readonly type = 'software-catalog'; public readonly visibilityPermission: Permission = catalogEntityReadPermission; @@ -74,7 +73,6 @@ export class DefaultCatalogCollatorFactory implements DocumentCollatorFactory { catalogClient, tokenManager, entityTransformer, - documentType, } = options; this.locationTemplate = @@ -86,7 +84,6 @@ export class DefaultCatalogCollatorFactory implements DocumentCollatorFactory { this.tokenManager = tokenManager; this.entityTransformer = entityTransformer ?? defaultCatalogCollatorEntityTransformer; - this.type = documentType ?? 'software-catalog'; } async getCollator(): Promise { From 0eceadb9502196a91f46e9dbb7cf3a87cc2acbc5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 7 Mar 2023 17:21:48 +0000 Subject: [PATCH 147/147] Version Packages (next) --- .changeset/create-app-1678209629.md | 5 + .changeset/pre.json | 31 +- docs/releases/v1.12.0-next.2-changelog.md | 1833 +++++++++++++++++ package.json | 2 +- packages/app-defaults/CHANGELOG.md | 10 + packages/app-defaults/package.json | 2 +- packages/app/CHANGELOG.md | 64 + packages/app/package.json | 2 +- packages/backend-app-api/CHANGELOG.md | 12 + packages/backend-app-api/package.json | 2 +- packages/backend-common/CHANGELOG.md | 28 + packages/backend-common/package.json | 2 +- packages/backend-defaults/CHANGELOG.md | 9 + packages/backend-defaults/package.json | 2 +- packages/backend-next/CHANGELOG.md | 11 + packages/backend-next/package.json | 2 +- packages/backend-plugin-api/CHANGELOG.md | 9 + packages/backend-plugin-api/package.json | 2 +- packages/backend-tasks/CHANGELOG.md | 12 + packages/backend-tasks/package.json | 2 +- packages/backend-test-utils/CHANGELOG.md | 11 + packages/backend-test-utils/package.json | 2 +- packages/backend/CHANGELOG.md | 47 + packages/backend/package.json | 2 +- packages/core-app-api/CHANGELOG.md | 26 + packages/core-app-api/package.json | 2 +- packages/core-components/CHANGELOG.md | 12 + packages/core-components/package.json | 2 +- packages/core-plugin-api/CHANGELOG.md | 11 + packages/core-plugin-api/package.json | 2 +- packages/create-app/CHANGELOG.md | 6 + packages/create-app/package.json | 2 +- packages/dev-utils/CHANGELOG.md | 13 + packages/dev-utils/package.json | 2 +- packages/e2e-test/CHANGELOG.md | 7 + packages/e2e-test/package.json | 2 +- packages/integration-react/CHANGELOG.md | 10 + packages/integration-react/package.json | 2 +- .../techdocs-cli-embedded-app/CHANGELOG.md | 17 + .../techdocs-cli-embedded-app/package.json | 2 +- packages/techdocs-cli/CHANGELOG.md | 9 + packages/techdocs-cli/package.json | 2 +- packages/test-utils/CHANGELOG.md | 10 + packages/test-utils/package.json | 2 +- plugins/adr-backend/CHANGELOG.md | 10 + plugins/adr-backend/package.json | 2 +- plugins/adr/CHANGELOG.md | 11 + plugins/adr/package.json | 2 +- plugins/airbrake-backend/CHANGELOG.md | 8 + plugins/airbrake-backend/package.json | 2 +- plugins/airbrake/CHANGELOG.md | 11 + plugins/airbrake/package.json | 2 +- plugins/allure/CHANGELOG.md | 9 + plugins/allure/package.json | 2 +- plugins/analytics-module-ga/CHANGELOG.md | 9 + plugins/analytics-module-ga/package.json | 2 +- plugins/apache-airflow/CHANGELOG.md | 8 + plugins/apache-airflow/package.json | 2 +- plugins/api-docs/CHANGELOG.md | 11 + plugins/api-docs/package.json | 2 +- plugins/apollo-explorer/CHANGELOG.md | 8 + plugins/apollo-explorer/package.json | 2 +- plugins/app-backend/CHANGELOG.md | 9 + plugins/app-backend/package.json | 2 +- plugins/auth-backend/CHANGELOG.md | 9 + plugins/auth-backend/package.json | 2 +- plugins/auth-node/CHANGELOG.md | 9 + plugins/auth-node/package.json | 2 +- plugins/azure-devops-backend/CHANGELOG.md | 8 + plugins/azure-devops-backend/package.json | 2 +- plugins/azure-devops/CHANGELOG.md | 9 + plugins/azure-devops/package.json | 2 +- plugins/azure-sites-backend/CHANGELOG.md | 8 + plugins/azure-sites-backend/package.json | 2 +- plugins/azure-sites/CHANGELOG.md | 9 + plugins/azure-sites/package.json | 2 +- plugins/badges-backend/CHANGELOG.md | 8 + plugins/badges-backend/package.json | 2 +- plugins/badges/CHANGELOG.md | 9 + plugins/badges/package.json | 2 +- plugins/bazaar-backend/CHANGELOG.md | 10 + plugins/bazaar-backend/package.json | 2 +- plugins/bazaar/CHANGELOG.md | 11 + plugins/bazaar/package.json | 2 +- plugins/bitrise/CHANGELOG.md | 9 + plugins/bitrise/package.json | 2 +- .../catalog-backend-module-aws/CHANGELOG.md | 14 + .../catalog-backend-module-aws/package.json | 2 +- .../catalog-backend-module-azure/CHANGELOG.md | 13 + .../catalog-backend-module-azure/package.json | 2 +- .../CHANGELOG.md | 14 + .../package.json | 2 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 10 + .../package.json | 2 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 15 + .../package.json | 2 +- .../CHANGELOG.md | 14 + .../package.json | 2 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../catalog-backend-module-ldap/CHANGELOG.md | 9 + .../catalog-backend-module-ldap/package.json | 2 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 11 + .../package.json | 2 +- .../CHANGELOG.md | 15 + .../package.json | 2 +- plugins/catalog-backend/CHANGELOG.md | 12 + plugins/catalog-backend/package.json | 2 +- plugins/catalog-customized/CHANGELOG.md | 8 + plugins/catalog-customized/package.json | 2 +- plugins/catalog-graph/CHANGELOG.md | 9 + plugins/catalog-graph/package.json | 2 +- plugins/catalog-import/CHANGELOG.md | 12 + plugins/catalog-import/package.json | 2 +- plugins/catalog-node/CHANGELOG.md | 7 + plugins/catalog-node/package.json | 2 +- plugins/catalog-react/CHANGELOG.md | 11 + plugins/catalog-react/package.json | 2 +- plugins/catalog/CHANGELOG.md | 15 + plugins/catalog/package.json | 2 +- .../CHANGELOG.md | 8 + .../package.json | 2 +- plugins/cicd-statistics/CHANGELOG.md | 8 + plugins/cicd-statistics/package.json | 2 +- plugins/circleci/CHANGELOG.md | 9 + plugins/circleci/package.json | 2 +- plugins/cloudbuild/CHANGELOG.md | 9 + plugins/cloudbuild/package.json | 2 +- plugins/code-climate/CHANGELOG.md | 9 + plugins/code-climate/package.json | 2 +- plugins/code-coverage-backend/CHANGELOG.md | 9 + plugins/code-coverage-backend/package.json | 2 +- plugins/code-coverage/CHANGELOG.md | 10 + plugins/code-coverage/package.json | 2 +- plugins/codescene/CHANGELOG.md | 9 + plugins/codescene/package.json | 2 +- plugins/config-schema/CHANGELOG.md | 9 + plugins/config-schema/package.json | 2 +- plugins/cost-insights/CHANGELOG.md | 10 + plugins/cost-insights/package.json | 2 +- plugins/dynatrace/CHANGELOG.md | 9 + plugins/dynatrace/package.json | 2 +- plugins/entity-feedback-backend/CHANGELOG.md | 9 + plugins/entity-feedback-backend/package.json | 2 +- plugins/entity-feedback/CHANGELOG.md | 9 + plugins/entity-feedback/package.json | 2 +- plugins/entity-validation/CHANGELOG.md | 9 + plugins/entity-validation/package.json | 2 +- .../CHANGELOG.md | 11 + .../package.json | 2 +- .../events-backend-module-azure/CHANGELOG.md | 8 + .../events-backend-module-azure/package.json | 2 +- .../CHANGELOG.md | 8 + .../package.json | 2 +- .../events-backend-module-gerrit/CHANGELOG.md | 8 + .../events-backend-module-gerrit/package.json | 2 +- .../events-backend-module-github/CHANGELOG.md | 9 + .../events-backend-module-github/package.json | 2 +- .../events-backend-module-gitlab/CHANGELOG.md | 9 + .../events-backend-module-gitlab/package.json | 2 +- .../events-backend-test-utils/CHANGELOG.md | 7 + .../events-backend-test-utils/package.json | 2 +- plugins/events-backend/CHANGELOG.md | 10 + plugins/events-backend/package.json | 2 +- plugins/events-node/CHANGELOG.md | 7 + plugins/events-node/package.json | 2 +- .../example-todo-list-backend/CHANGELOG.md | 10 + .../example-todo-list-backend/package.json | 2 +- plugins/example-todo-list/CHANGELOG.md | 8 + plugins/example-todo-list/package.json | 2 +- plugins/explore-backend/CHANGELOG.md | 8 + plugins/explore-backend/package.json | 2 +- plugins/explore-react/CHANGELOG.md | 7 + plugins/explore-react/package.json | 2 +- plugins/explore/CHANGELOG.md | 12 + plugins/explore/package.json | 2 +- plugins/firehydrant/CHANGELOG.md | 9 + plugins/firehydrant/package.json | 2 +- plugins/fossa/CHANGELOG.md | 9 + plugins/fossa/package.json | 2 +- plugins/gcalendar/CHANGELOG.md | 8 + plugins/gcalendar/package.json | 2 +- plugins/gcp-projects/CHANGELOG.md | 8 + plugins/gcp-projects/package.json | 2 +- plugins/git-release-manager/CHANGELOG.md | 9 + plugins/git-release-manager/package.json | 2 +- plugins/github-actions/CHANGELOG.md | 10 + plugins/github-actions/package.json | 2 +- plugins/github-deployments/CHANGELOG.md | 11 + plugins/github-deployments/package.json | 2 +- plugins/github-issues/CHANGELOG.md | 10 + plugins/github-issues/package.json | 2 +- .../github-pull-requests-board/CHANGELOG.md | 10 + .../github-pull-requests-board/package.json | 2 +- plugins/gitops-profiles/CHANGELOG.md | 8 + plugins/gitops-profiles/package.json | 2 +- plugins/gocd/CHANGELOG.md | 9 + plugins/gocd/package.json | 2 +- plugins/graphiql/CHANGELOG.md | 8 + plugins/graphiql/package.json | 2 +- plugins/graphql-backend/CHANGELOG.md | 9 + plugins/graphql-backend/package.json | 2 +- plugins/graphql-voyager/CHANGELOG.md | 8 + plugins/graphql-voyager/package.json | 2 +- plugins/home/CHANGELOG.md | 10 + plugins/home/package.json | 2 +- plugins/ilert/CHANGELOG.md | 9 + plugins/ilert/package.json | 2 +- plugins/jenkins-backend/CHANGELOG.md | 9 + plugins/jenkins-backend/package.json | 2 +- plugins/jenkins/CHANGELOG.md | 9 + plugins/jenkins/package.json | 2 +- plugins/kafka-backend/CHANGELOG.md | 9 + plugins/kafka-backend/package.json | 2 +- plugins/kafka/CHANGELOG.md | 10 + plugins/kafka/package.json | 2 +- plugins/kubernetes-backend/CHANGELOG.md | 9 + plugins/kubernetes-backend/package.json | 2 +- plugins/kubernetes/CHANGELOG.md | 11 + plugins/kubernetes/package.json | 2 +- plugins/lighthouse-backend/CHANGELOG.md | 9 + plugins/lighthouse-backend/package.json | 2 +- plugins/lighthouse/CHANGELOG.md | 10 + plugins/lighthouse/package.json | 2 +- plugins/linguist-backend/CHANGELOG.md | 11 + plugins/linguist-backend/package.json | 2 +- plugins/linguist/CHANGELOG.md | 9 + plugins/linguist/package.json | 2 +- plugins/microsoft-calendar/CHANGELOG.md | 8 + plugins/microsoft-calendar/package.json | 2 +- plugins/newrelic-dashboard/CHANGELOG.md | 9 + plugins/newrelic-dashboard/package.json | 2 +- plugins/newrelic/CHANGELOG.md | 8 + plugins/newrelic/package.json | 2 +- plugins/octopus-deploy/CHANGELOG.md | 9 + plugins/octopus-deploy/package.json | 2 +- plugins/org-react/CHANGELOG.md | 9 + plugins/org-react/package.json | 2 +- plugins/org/CHANGELOG.md | 10 + plugins/org/package.json | 2 +- plugins/pagerduty/CHANGELOG.md | 9 + plugins/pagerduty/package.json | 2 +- plugins/periskop-backend/CHANGELOG.md | 9 + plugins/periskop-backend/package.json | 2 +- plugins/periskop/CHANGELOG.md | 9 + plugins/periskop/package.json | 2 +- plugins/permission-backend/CHANGELOG.md | 10 + plugins/permission-backend/package.json | 2 +- plugins/permission-node/CHANGELOG.md | 9 + plugins/permission-node/package.json | 2 +- plugins/permission-react/CHANGELOG.md | 8 + plugins/permission-react/package.json | 2 +- plugins/playlist-backend/CHANGELOG.md | 10 + plugins/playlist-backend/package.json | 2 +- plugins/playlist/CHANGELOG.md | 11 + plugins/playlist/package.json | 2 +- plugins/proxy-backend/CHANGELOG.md | 9 + plugins/proxy-backend/package.json | 2 +- plugins/rollbar-backend/CHANGELOG.md | 8 + plugins/rollbar-backend/package.json | 2 +- plugins/rollbar/CHANGELOG.md | 9 + plugins/rollbar/package.json | 2 +- .../CHANGELOG.md | 12 + .../package.json | 2 +- .../CHANGELOG.md | 11 + .../package.json | 2 +- .../CHANGELOG.md | 8 + .../package.json | 2 +- .../CHANGELOG.md | 8 + .../package.json | 2 +- plugins/scaffolder-backend/CHANGELOG.md | 18 + plugins/scaffolder-backend/package.json | 2 +- plugins/scaffolder-node/CHANGELOG.md | 7 + plugins/scaffolder-node/package.json | 2 +- plugins/scaffolder-react/CHANGELOG.md | 12 + plugins/scaffolder-react/package.json | 2 +- plugins/scaffolder/CHANGELOG.md | 21 + plugins/scaffolder/package.json | 2 +- .../CHANGELOG.md | 9 + .../package.json | 2 +- plugins/search-backend-module-pg/CHANGELOG.md | 9 + plugins/search-backend-module-pg/package.json | 2 +- plugins/search-backend-node/CHANGELOG.md | 9 + plugins/search-backend-node/package.json | 2 +- plugins/search-backend/CHANGELOG.md | 11 + plugins/search-backend/package.json | 2 +- plugins/search-react/CHANGELOG.md | 10 + plugins/search-react/package.json | 2 +- plugins/search/CHANGELOG.md | 12 + plugins/search/package.json | 2 +- plugins/sentry/CHANGELOG.md | 9 + plugins/sentry/package.json | 2 +- plugins/shortcuts/CHANGELOG.md | 8 + plugins/shortcuts/package.json | 2 +- plugins/sonarqube-backend/CHANGELOG.md | 8 + plugins/sonarqube-backend/package.json | 2 +- plugins/sonarqube-react/CHANGELOG.md | 7 + plugins/sonarqube-react/package.json | 2 +- plugins/sonarqube/CHANGELOG.md | 11 + plugins/sonarqube/package.json | 2 +- plugins/splunk-on-call/CHANGELOG.md | 10 + plugins/splunk-on-call/package.json | 2 +- plugins/stack-overflow-backend/CHANGELOG.md | 8 + plugins/stack-overflow-backend/package.json | 2 +- plugins/stack-overflow/CHANGELOG.md | 11 + plugins/stack-overflow/package.json | 2 +- plugins/stackstorm/CHANGELOG.md | 8 + plugins/stackstorm/package.json | 2 +- .../CHANGELOG.md | 10 + .../package.json | 2 +- plugins/tech-insights-backend/CHANGELOG.md | 10 + plugins/tech-insights-backend/package.json | 2 +- plugins/tech-insights-node/CHANGELOG.md | 9 + plugins/tech-insights-node/package.json | 2 +- plugins/tech-insights/CHANGELOG.md | 10 + plugins/tech-insights/package.json | 2 +- plugins/tech-radar/CHANGELOG.md | 8 + plugins/tech-radar/package.json | 2 +- .../techdocs-addons-test-utils/CHANGELOG.md | 15 + .../techdocs-addons-test-utils/package.json | 2 +- plugins/techdocs-backend/CHANGELOG.md | 10 + plugins/techdocs-backend/package.json | 2 +- .../CHANGELOG.md | 11 + .../package.json | 2 +- plugins/techdocs-node/CHANGELOG.md | 11 + plugins/techdocs-node/package.json | 2 +- plugins/techdocs-react/CHANGELOG.md | 10 + plugins/techdocs-react/package.json | 2 +- plugins/techdocs/CHANGELOG.md | 15 + plugins/techdocs/package.json | 2 +- plugins/todo-backend/CHANGELOG.md | 11 + plugins/todo-backend/package.json | 2 +- plugins/todo/CHANGELOG.md | 9 + plugins/todo/package.json | 2 +- plugins/user-settings-backend/CHANGELOG.md | 9 + plugins/user-settings-backend/package.json | 2 +- plugins/user-settings/CHANGELOG.md | 10 + plugins/user-settings/package.json | 2 +- plugins/vault-backend/CHANGELOG.md | 9 + plugins/vault-backend/package.json | 2 +- plugins/vault/CHANGELOG.md | 9 + plugins/vault/package.json | 2 +- plugins/xcmetrics/CHANGELOG.md | 8 + plugins/xcmetrics/package.json | 2 +- 350 files changed, 3873 insertions(+), 176 deletions(-) create mode 100644 .changeset/create-app-1678209629.md create mode 100644 docs/releases/v1.12.0-next.2-changelog.md create mode 100644 plugins/catalog-backend-module-puppetdb/CHANGELOG.md diff --git a/.changeset/create-app-1678209629.md b/.changeset/create-app-1678209629.md new file mode 100644 index 0000000000..b50d431d4b --- /dev/null +++ b/.changeset/create-app-1678209629.md @@ -0,0 +1,5 @@ +--- +'@backstage/create-app': patch +--- + +Bumped create-app version. diff --git a/.changeset/pre.json b/.changeset/pre.json index 2f69a85050..8514b7fa26 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -210,44 +210,63 @@ "@backstage/plugin-vault-backend": "0.2.8", "@backstage/plugin-xcmetrics": "0.2.35", "@backstage/plugin-octopus-deploy": "0.0.0", - "@backstage/plugin-stackstorm": "0.0.0" + "@backstage/plugin-stackstorm": "0.0.0", + "@backstage/plugin-catalog-backend-module-puppetdb": "0.0.1" }, "changesets": [ "afraid-trees-stare", + "backend-token-authentication", "breezy-bees-care", "bright-kids-raise", + "clean-lemons-jump", "clean-planes-join", + "clever-dogs-cheat", "cool-clocks-prove", + "cool-feet-speak", "create-app-1676993958", + "create-app-1678209629", "curvy-pets-hang", "eight-radios-bake", + "eighty-chairs-roll", "eighty-geese-return", + "empty-books-occur", "famous-sloths-tie", + "fifty-beds-dress", "flat-kids-occur", "flat-peaches-act", "forty-snails-clap", "four-lizards-grin", + "fresh-hairs-switch", "fuzzy-trains-search", + "gentle-bears-love", "gentle-pears-clean", "great-trains-jam", "grumpy-bikes-begin", "happy-boxes-arrive", + "honest-clouds-shout", "honest-nails-bake", "khaki-poems-run", + "light-bees-end", "light-sheep-trade", "long-nails-pump", "long-wolves-drive", + "lovely-tigers-look", + "mean-toys-itch", "metal-suns-rhyme", "mighty-games-turn", "mighty-years-own", "new-jobs-deny", "nice-planets-wave", + "nine-bikes-applaud", "ninety-turtles-wait", "odd-fireants-bathe", "odd-oranges-tease", "odd-waves-rescue", "old-foxes-shave", + "olive-berries-poke", + "orange-experts-hug", "perfect-mayflies-greet", + "pink-dolls-unite", "polite-chicken-do", "polite-falcons-jump", "polite-wombats-smash", @@ -267,8 +286,13 @@ "renovate-fb85ae7", "rich-clocks-approve", "rich-wombats-rescue", + "rotten-cats-matter", + "rotten-panthers-share", + "selfish-hats-wait", "short-mayflies-fix", + "silent-dryers-end", "silly-suits-run", + "silver-bikes-breathe", "silver-lies-rest", "six-melons-rhyme", "slimy-lobsters-kneel", @@ -282,6 +306,7 @@ "tall-hats-talk", "ten-tigers-marry", "thin-candles-wait", + "tiny-llamas-jump", "tricky-jars-film", "twelve-cars-push", "twenty-jeans-speak", @@ -292,9 +317,11 @@ "wicked-lions-repeat", "wicked-spoons-call", "wild-ads-pull", + "wild-bulldogs-suffer", "witty-geckos-design", "yellow-bananas-yawn", "young-schools-double", - "young-scissors-cough" + "young-scissors-cough", + "young-walls-prove" ] } diff --git a/docs/releases/v1.12.0-next.2-changelog.md b/docs/releases/v1.12.0-next.2-changelog.md new file mode 100644 index 0000000000..7a64ec5f84 --- /dev/null +++ b/docs/releases/v1.12.0-next.2-changelog.md @@ -0,0 +1,1833 @@ +# Release v1.12.0-next.2 + +## @backstage/backend-tasks@0.5.0-next.2 + +### Minor Changes + +- 1578276708a: add functionality to get descriptions from the scheduler for triggering + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/core-app-api@1.6.0-next.2 + +### Minor Changes + +- 456eaa8cf83: `OAuth2` now gets ID tokens from a session with the `openid` scope explicitly + requested. + + This should not be considered a breaking change, because spec-compliant OIDC + providers will already be returning ID tokens if and only if the `openid` scope + is granted. + + This change makes the dependence explicit, and removes the burden on + OAuth2-based providers which require an ID token (e.g. this is done by various + default [auth + handlers](https://backstage.io/docs/auth/identity-resolver/#authhandler)) to add + `openid` to their default scopes. _That_ could carry another indirect benefit: + by removing `openid` from the default scopes for a provider, grants for + resource-specific access tokens can avoid requesting excess ID token-related + scopes. + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/core-plugin-api@1.5.0-next.2 + +### Minor Changes + +- ab750ddc4f2: The GitLab auth provider can now be used to get OpenID tokens. + +### Patch Changes + +- Updated dependencies + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-catalog@1.9.0-next.2 + +### Minor Changes + +- 23cc40039c0: allow entity switch to render all cases that match the condition + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/plugin-search-react@1.5.1-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/integration-react@1.1.11-next.2 + +## @backstage/plugin-catalog-backend-module-puppetdb@0.1.0-next.0 + +### Minor Changes + +- a1efcf9a658: Initial version of the plugin. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/plugin-catalog-backend@1.8.0-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-scaffolder@1.12.0-next.2 + +### Minor Changes + +- 0d61fcca9c3: Update `EntityPicker` to use the fully qualified entity ref instead of the humanized version. + +### Patch Changes + +- 65454876fb2: Minor API report tweaks +- 3c96e77b513: Make scaffolder adhere to page themes by using page `fontColor` consistently. If your theme overwrites template list or card headers, review those styles. +- 0aae4596296: Fix the scaffolder validator for arrays when the item is a field in the object +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-scaffolder-react@1.2.0-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/integration-react@1.1.11-next.2 + - @backstage/plugin-permission-react@0.4.11-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + +## @backstage/app-defaults@1.2.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-app-api@1.6.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/plugin-permission-react@0.4.11-next.2 + +## @backstage/backend-app-api@0.4.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.2.12-next.2 + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/plugin-permission-node@0.7.6-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/backend-common@0.18.3-next.2 + +### Patch Changes + +- f75097868a7: Adds config option `backend.database.role` to set ownership for newly created schemas and tables in Postgres + + The example config below connects to the database as user `v-backstage-123` but sets the ownership of + the create schemas and tables to `backstage` + + ```yaml + backend: + database: + client: pg + pluginDivisionMode: schema + role: backstage + connection: + user: v-backstage-123 + ... + ``` + +- 87f0bbec175: AwsS3UrlReader upgraded to use aws-sdk v3 + +- Updated dependencies + - @backstage/backend-app-api@0.4.1-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + - @backstage/integration-aws-node@0.1.2-next.0 + +## @backstage/backend-defaults@0.1.8-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-app-api@0.4.1-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + +## @backstage/backend-plugin-api@0.4.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.2.12-next.2 + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/backend-test-utils@0.1.35-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.2.12-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-app-api@0.4.1-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/core-components@0.12.5-next.2 + +### Patch Changes + +- 8bbf95b5507: Button labels in the sidebar (previously displayed in uppercase) will be displayed in the case that is provided without any transformations. + For example, a sidebar button with the label "Search" will appear as Search, "search" will appear as search, "SEARCH" will appear as SEARCH etc. + This can potentially affect any overriding styles previously applied to change the appearance of Button labels in the Sidebar. +- fa004f66871: Use media queries to change layout instead of `isMobile` prop in `BackstagePage` component +- Updated dependencies + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/create-app@0.4.38-next.2 + +### Patch Changes + +- Bumped create-app version. + +## @backstage/dev-utils@1.0.13-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-app-api@1.6.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/app-defaults@1.2.1-next.2 + - @backstage/integration-react@1.1.11-next.2 + - @backstage/test-utils@1.2.6-next.2 + +## @backstage/integration-react@1.1.11-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + +## @techdocs/cli@1.4.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-techdocs-node@1.6.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/test-utils@1.2.6-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-app-api@1.6.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/plugin-permission-react@0.4.11-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-adr@0.4.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/plugin-search-react@1.5.1-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/integration-react@1.1.11-next.2 + +## @backstage/plugin-adr-backend@0.3.1-next.2 + +### Patch Changes + +- 2a73ded3861: Support MADR v3 format +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + +## @backstage/plugin-airbrake@0.3.16-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/dev-utils@1.0.13-next.2 + - @backstage/test-utils@1.2.6-next.2 + +## @backstage/plugin-airbrake-backend@0.2.16-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-allure@0.1.32-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-analytics-module-ga@0.1.27-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-apache-airflow@0.2.9-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-api-docs@0.9.1-next.2 + +### Patch Changes + +- 8bc7dcec820: Fix dark theme Swagger's clear button font color. +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/plugin-catalog@1.9.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-apollo-explorer@0.1.9-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-app-backend@0.3.43-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-auth-backend@0.18.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.2.12-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-auth-node@0.2.12-next.2 + +### Patch Changes + +- 65454876fb2: Minor API report tweaks +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-azure-devops@0.2.7-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-azure-devops-backend@0.3.22-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-azure-sites@0.1.5-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-azure-sites-backend@0.1.5-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-badges@0.2.40-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-badges-backend@0.1.37-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-bazaar@0.2.6-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/plugin-catalog@1.9.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/cli@0.22.4-next.1 + +## @backstage/plugin-bazaar-backend@0.2.6-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.2.12-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-bitrise@0.1.43-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-catalog-backend@1.8.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/plugin-permission-node@0.7.6-next.2 + - @backstage/plugin-catalog-node@1.3.4-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + +## @backstage/plugin-catalog-backend-module-aws@0.1.17-next.2 + +### Patch Changes + +- 87f0bbec175: AwsS3UrlReader upgraded to use aws-sdk v3 +- Updated dependencies + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/plugin-catalog-backend@1.8.0-next.2 + - @backstage/plugin-catalog-node@1.3.4-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + +## @backstage/plugin-catalog-backend-module-azure@0.1.14-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/plugin-catalog-backend@1.8.0-next.2 + - @backstage/plugin-catalog-node@1.3.4-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + +## @backstage/plugin-catalog-backend-module-bitbucket@0.2.10-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/plugin-catalog-backend@1.8.0-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + +## @backstage/plugin-catalog-backend-module-bitbucket-cloud@0.1.10-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/plugin-catalog-backend@1.8.0-next.2 + - @backstage/plugin-catalog-node@1.3.4-next.2 + - @backstage/plugin-events-node@0.2.4-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + +## @backstage/plugin-catalog-backend-module-bitbucket-server@0.1.8-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/plugin-catalog-backend@1.8.0-next.2 + - @backstage/plugin-catalog-node@1.3.4-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + +## @backstage/plugin-catalog-backend-module-gerrit@0.1.11-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/plugin-catalog-backend@1.8.0-next.2 + - @backstage/plugin-catalog-node@1.3.4-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + +## @backstage/plugin-catalog-backend-module-github@0.2.6-next.2 + +### Patch Changes + +- 65454876fb2: Minor API report tweaks +- Updated dependencies + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/plugin-catalog-backend@1.8.0-next.2 + - @backstage/plugin-catalog-node@1.3.4-next.2 + - @backstage/plugin-events-node@0.2.4-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + +## @backstage/plugin-catalog-backend-module-gitlab@0.1.14-next.2 + +### Patch Changes + +- be129f8f3cd: filter gitlab groups by prefix +- Updated dependencies + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/plugin-catalog-backend@1.8.0-next.2 + - @backstage/plugin-catalog-node@1.3.4-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + +## @backstage/plugin-catalog-backend-module-incremental-ingestion@0.3.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/plugin-catalog-backend@1.8.0-next.2 + - @backstage/plugin-catalog-node@1.3.4-next.2 + - @backstage/plugin-events-node@0.2.4-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-catalog-backend-module-ldap@0.5.10-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/plugin-catalog-backend@1.8.0-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-catalog-backend-module-msgraph@0.5.2-next.2 + +### Patch Changes + +- 26eef93c547: Fixed msgraph catalog backend to use user.select option when fetching user from AzureAD +- Updated dependencies + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/plugin-catalog-backend@1.8.0-next.2 + - @backstage/plugin-catalog-node@1.3.4-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-catalog-backend-module-openapi@0.1.9-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/plugin-catalog-backend@1.8.0-next.2 + - @backstage/plugin-catalog-node@1.3.4-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + +## @backstage/plugin-catalog-graph@0.2.28-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-catalog-import@0.9.6-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/integration-react@1.1.11-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + +## @backstage/plugin-catalog-node@1.3.4-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.4.1-next.2 + +## @backstage/plugin-catalog-react@1.4.0-next.2 + +### Patch Changes + +- 65454876fb2: Minor API report tweaks +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/plugin-permission-react@0.4.11-next.2 + - @backstage/integration@1.4.3-next.0 + +## @backstage/plugin-cicd-statistics@0.1.18-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-cicd-statistics-module-gitlab@0.1.12-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/plugin-cicd-statistics@0.1.18-next.2 + +## @backstage/plugin-circleci@0.3.16-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-cloudbuild@0.3.16-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-code-climate@0.1.16-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-code-coverage@0.2.9-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-code-coverage-backend@0.2.9-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + +## @backstage/plugin-codescene@0.1.11-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-config-schema@0.1.39-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-cost-insights@0.12.5-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-dynatrace@3.0.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-entity-feedback@0.1.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-entity-feedback-backend@0.1.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.2.12-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-entity-validation@0.1.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-events-backend@0.2.4-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/plugin-events-node@0.2.4-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-events-backend-module-aws-sqs@0.1.5-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/plugin-events-node@0.2.4-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-events-backend-module-azure@0.1.5-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/plugin-events-node@0.2.4-next.2 + +## @backstage/plugin-events-backend-module-bitbucket-cloud@0.1.5-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/plugin-events-node@0.2.4-next.2 + +## @backstage/plugin-events-backend-module-gerrit@0.1.5-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/plugin-events-node@0.2.4-next.2 + +## @backstage/plugin-events-backend-module-github@0.1.5-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/plugin-events-node@0.2.4-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-events-backend-module-gitlab@0.1.5-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/plugin-events-node@0.2.4-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-events-backend-test-utils@0.1.5-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-events-node@0.2.4-next.2 + +## @backstage/plugin-events-node@0.2.4-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.4.1-next.2 + +## @backstage/plugin-explore@0.4.1-next.2 + +### Patch Changes + +- 65454876fb2: Minor API report tweaks +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/plugin-search-react@1.5.1-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/plugin-explore-react@0.0.27-next.2 + +## @backstage/plugin-explore-backend@0.0.5-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-explore-react@0.0.27-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-firehydrant@0.1.33-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-fossa@0.2.48-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-gcalendar@0.3.12-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-gcp-projects@0.3.35-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-git-release-manager@0.3.29-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/integration@1.4.3-next.0 + +## @backstage/plugin-github-actions@0.5.16-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/integration@1.4.3-next.0 + +## @backstage/plugin-github-deployments@0.1.47-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/integration-react@1.1.11-next.2 + - @backstage/integration@1.4.3-next.0 + +## @backstage/plugin-github-issues@0.2.5-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/integration@1.4.3-next.0 + +## @backstage/plugin-github-pull-requests-board@0.1.10-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/integration@1.4.3-next.0 + +## @backstage/plugin-gitops-profiles@0.3.34-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-gocd@0.1.22-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-graphiql@0.2.48-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-graphql-backend@0.1.33-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/plugin-catalog-graphql@0.3.19-next.1 + +## @backstage/plugin-graphql-voyager@0.1.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-home@0.4.32-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-ilert@0.2.5-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-jenkins@0.7.15-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-jenkins-backend@0.1.33-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.2.12-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-kafka@0.3.16-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-kafka-backend@0.2.36-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-kubernetes@0.7.9-next.2 + +### Patch Changes + +- 8adeb19b37d: GitLab can now be used as an `oidcTokenProvider` for Kubernetes clusters +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-kubernetes-backend@0.9.4-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.2.12-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-lighthouse@0.4.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-lighthouse-backend@0.1.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-linguist@0.1.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-linguist-backend@0.2.0-next.2 + +### Patch Changes + +- 8a298b47240: Added support for linguist-js options using the linguistJSOptions in the plugin, the available config can be found [here](https://www.npmjs.com/package/linguist-js#API). +- Updated dependencies + - @backstage/plugin-auth-node@0.2.12-next.2 + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-microsoft-calendar@0.1.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-newrelic@0.3.34-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-newrelic-dashboard@0.2.9-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-octopus-deploy@0.1.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-org@0.6.6-next.2 + +### Patch Changes + +- a06fcac4040: Add styling to the `MembersListCard` and `ComponentsGrid` to handle overflow text. +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-org-react@0.1.5-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-pagerduty@0.5.9-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-periskop@0.1.14-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-periskop-backend@0.1.14-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-permission-backend@0.5.18-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.2.12-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/plugin-permission-node@0.7.6-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-permission-node@0.7.6-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.2.12-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-permission-react@0.4.11-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-playlist@0.1.7-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/plugin-search-react@1.5.1-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/plugin-permission-react@0.4.11-next.2 + +## @backstage/plugin-playlist-backend@0.2.6-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.2.12-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/plugin-permission-node@0.7.6-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-proxy-backend@0.2.37-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-rollbar@0.4.16-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-rollbar-backend@0.1.40-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-scaffolder-backend@1.12.0-next.2 + +### Patch Changes + +- 860de10fa67: Make identity valid if subject of token is a backstage server-2-server auth token +- 65454876fb2: Minor API report tweaks +- 9968f455921: catalog write action should allow any shape of object +- Updated dependencies + - @backstage/plugin-auth-node@0.2.12-next.2 + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/plugin-catalog-backend@1.8.0-next.2 + - @backstage/plugin-catalog-node@1.3.4-next.2 + - @backstage/plugin-scaffolder-node@0.1.1-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + +## @backstage/plugin-scaffolder-backend-module-cookiecutter@0.2.18-next.2 + +### Patch Changes + +- 62414770ead: allow container runner to be undefined in cookiecutter plugin +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.12.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/plugin-scaffolder-node@0.1.1-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + +## @backstage/plugin-scaffolder-backend-module-rails@0.4.11-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.12.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/plugin-scaffolder-node@0.1.1-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + +## @backstage/plugin-scaffolder-backend-module-sentry@0.1.3-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.1.1-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-scaffolder-backend-module-yeoman@0.2.16-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.1.1-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-scaffolder-node@0.1.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.4.1-next.2 + +## @backstage/plugin-scaffolder-react@1.2.0-next.2 + +### Patch Changes + +- 65454876fb2: Minor API report tweaks +- 3c96e77b513: Make scaffolder adhere to page themes by using page `fontColor` consistently. If your theme overwrites template list or card headers, review those styles. +- d9893263ba9: scaffolder/next: Fix for steps without properties +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-search@1.1.1-next.2 + +### Patch Changes + +- 65454876fb2: Minor API report tweaks +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/plugin-search-react@1.5.1-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-search-backend@1.2.4-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.2.12-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/plugin-permission-node@0.7.6-next.2 + - @backstage/plugin-search-backend-node@1.1.4-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-search-backend-module-elasticsearch@1.1.4-next.2 + +### Patch Changes + +- 65454876fb2: Minor API report tweaks +- Updated dependencies + - @backstage/plugin-search-backend-node@1.1.4-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-search-backend-module-pg@0.5.4-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/plugin-search-backend-node@1.1.4-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-search-backend-node@1.1.4-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-search-react@1.5.1-next.2 + +### Patch Changes + +- 65454876fb2: Minor API report tweaks +- 553f3c95011: Correctly disable next button in `SearchPagination` on last page +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-sentry@0.5.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-shortcuts@0.3.8-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-sonarqube@0.6.5-next.2 + +### Patch Changes + +- 65454876fb2: Minor API report tweaks +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/plugin-sonarqube-react@0.1.4-next.2 + +## @backstage/plugin-sonarqube-backend@0.1.8-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-sonarqube-react@0.1.4-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-splunk-on-call@0.4.5-next.2 + +### Patch Changes + +- 65454876fb2: Minor API report tweaks +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-stack-overflow@0.1.12-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-search-react@1.5.1-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/plugin-home@0.4.32-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-stack-overflow-backend@0.1.12-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-stackstorm@0.1.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-tech-insights@0.3.8-next.2 + +### Patch Changes + +- 65454876fb2: Minor API report tweaks +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-tech-insights-backend@0.5.9-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/plugin-tech-insights-node@0.4.1-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.27-next.2 + +### Patch Changes + +- 65454876fb2: Minor API report tweaks +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/plugin-tech-insights-node@0.4.1-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-tech-insights-node@0.4.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-tech-radar@0.6.2-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-techdocs@1.6.0-next.2 + +### Patch Changes + +- 65454876fb2: Minor API report tweaks +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-techdocs-react@1.1.4-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/plugin-search-react@1.5.1-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/integration-react@1.1.11-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + +## @backstage/plugin-techdocs-addons-test-utils@1.0.11-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-techdocs-react@1.1.4-next.2 + - @backstage/plugin-search-react@1.5.1-next.2 + - @backstage/plugin-techdocs@1.6.0-next.2 + - @backstage/core-app-api@1.6.0-next.2 + - @backstage/plugin-catalog@1.9.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/integration-react@1.1.11-next.2 + - @backstage/test-utils@1.2.6-next.2 + +## @backstage/plugin-techdocs-backend@1.5.4-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-techdocs-node@1.6.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + +## @backstage/plugin-techdocs-module-addons-contrib@1.0.11-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-techdocs-react@1.1.4-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/integration-react@1.1.11-next.2 + - @backstage/integration@1.4.3-next.0 + +## @backstage/plugin-techdocs-node@1.6.0-next.2 + +### Patch Changes + +- 65454876fb2: Minor API report tweaks +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + - @backstage/integration-aws-node@0.1.2-next.0 + +## @backstage/plugin-techdocs-react@1.1.4-next.2 + +### Patch Changes + +- 65454876fb2: Minor API report tweaks +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-todo@0.2.18-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-todo-backend@0.1.40-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/plugin-catalog-node@1.3.4-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + +## @backstage/plugin-user-settings@0.7.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-app-api@1.6.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-user-settings-backend@0.1.7-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.2.12-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + +## @backstage/plugin-vault@0.1.10-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @backstage/plugin-vault-backend@0.2.10-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + +## @backstage/plugin-xcmetrics@0.2.36-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## example-app@0.2.81-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-scaffolder-react@1.2.0-next.2 + - @backstage/plugin-techdocs-react@1.1.4-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/plugin-tech-insights@0.3.8-next.2 + - @backstage/plugin-search-react@1.5.1-next.2 + - @backstage/plugin-scaffolder@1.12.0-next.2 + - @backstage/plugin-techdocs@1.6.0-next.2 + - @backstage/plugin-explore@0.4.1-next.2 + - @backstage/plugin-search@1.1.1-next.2 + - @backstage/plugin-kubernetes@0.7.9-next.2 + - @backstage/plugin-api-docs@0.9.1-next.2 + - @backstage/core-app-api@1.6.0-next.2 + - @backstage/plugin-org@0.6.6-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/app-defaults@1.2.1-next.2 + - @backstage/cli@0.22.4-next.1 + - @backstage/integration-react@1.1.11-next.2 + - @backstage/plugin-airbrake@0.3.16-next.2 + - @backstage/plugin-apache-airflow@0.2.9-next.2 + - @backstage/plugin-azure-devops@0.2.7-next.2 + - @backstage/plugin-azure-sites@0.1.5-next.2 + - @backstage/plugin-badges@0.2.40-next.2 + - @backstage/plugin-catalog-graph@0.2.28-next.2 + - @backstage/plugin-catalog-import@0.9.6-next.2 + - @backstage/plugin-circleci@0.3.16-next.2 + - @backstage/plugin-cloudbuild@0.3.16-next.2 + - @backstage/plugin-code-coverage@0.2.9-next.2 + - @backstage/plugin-cost-insights@0.12.5-next.2 + - @backstage/plugin-dynatrace@3.0.0-next.2 + - @backstage/plugin-entity-feedback@0.1.1-next.2 + - @backstage/plugin-gcalendar@0.3.12-next.2 + - @backstage/plugin-gcp-projects@0.3.35-next.2 + - @backstage/plugin-github-actions@0.5.16-next.2 + - @backstage/plugin-gocd@0.1.22-next.2 + - @backstage/plugin-graphiql@0.2.48-next.2 + - @backstage/plugin-home@0.4.32-next.2 + - @backstage/plugin-jenkins@0.7.15-next.2 + - @backstage/plugin-kafka@0.3.16-next.2 + - @backstage/plugin-lighthouse@0.4.1-next.2 + - @backstage/plugin-linguist@0.1.1-next.2 + - @backstage/plugin-microsoft-calendar@0.1.1-next.2 + - @backstage/plugin-newrelic@0.3.34-next.2 + - @backstage/plugin-newrelic-dashboard@0.2.9-next.2 + - @backstage/plugin-pagerduty@0.5.9-next.2 + - @backstage/plugin-playlist@0.1.7-next.2 + - @backstage/plugin-rollbar@0.4.16-next.2 + - @backstage/plugin-sentry@0.5.1-next.2 + - @backstage/plugin-shortcuts@0.3.8-next.2 + - @backstage/plugin-stack-overflow@0.1.12-next.2 + - @backstage/plugin-stackstorm@0.1.0-next.2 + - @backstage/plugin-tech-radar@0.6.2-next.2 + - @backstage/plugin-techdocs-module-addons-contrib@1.0.11-next.2 + - @backstage/plugin-todo@0.2.18-next.2 + - @backstage/plugin-user-settings@0.7.1-next.2 + - @internal/plugin-catalog-customized@0.0.8-next.2 + - @backstage/plugin-permission-react@0.4.11-next.2 + - @backstage/config@1.0.7-next.0 + +## example-backend@0.2.81-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.12.0-next.2 + - @backstage/plugin-search-backend-module-elasticsearch@1.1.4-next.2 + - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.27-next.2 + - @backstage/plugin-auth-node@0.2.12-next.2 + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/plugin-adr-backend@0.3.1-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/plugin-linguist-backend@0.2.0-next.2 + - @backstage/plugin-scaffolder-backend-module-rails@0.4.11-next.2 + - example-app@0.2.81-next.2 + - @backstage/plugin-techdocs-backend@1.5.4-next.2 + - @backstage/plugin-auth-backend@0.18.1-next.2 + - @backstage/plugin-entity-feedback-backend@0.1.1-next.2 + - @backstage/plugin-jenkins-backend@0.1.33-next.2 + - @backstage/plugin-kubernetes-backend@0.9.4-next.2 + - @backstage/plugin-permission-backend@0.5.18-next.2 + - @backstage/plugin-permission-node@0.7.6-next.2 + - @backstage/plugin-playlist-backend@0.2.6-next.2 + - @backstage/plugin-search-backend@1.2.4-next.2 + - @backstage/plugin-lighthouse-backend@0.1.1-next.2 + - @backstage/plugin-search-backend-node@1.1.4-next.2 + - @backstage/plugin-tech-insights-backend@0.5.9-next.2 + - @backstage/plugin-tech-insights-node@0.4.1-next.2 + - @backstage/plugin-app-backend@0.3.43-next.2 + - @backstage/plugin-azure-devops-backend@0.3.22-next.2 + - @backstage/plugin-azure-sites-backend@0.1.5-next.2 + - @backstage/plugin-badges-backend@0.1.37-next.2 + - @backstage/plugin-catalog-backend@1.8.0-next.2 + - @backstage/plugin-catalog-node@1.3.4-next.2 + - @backstage/plugin-code-coverage-backend@0.2.9-next.2 + - @backstage/plugin-events-backend@0.2.4-next.2 + - @backstage/plugin-explore-backend@0.0.5-next.2 + - @backstage/plugin-graphql-backend@0.1.33-next.2 + - @backstage/plugin-kafka-backend@0.2.36-next.2 + - @backstage/plugin-proxy-backend@0.2.37-next.2 + - @backstage/plugin-rollbar-backend@0.1.40-next.2 + - @backstage/plugin-search-backend-module-pg@0.5.4-next.2 + - @backstage/plugin-todo-backend@0.1.40-next.2 + - @backstage/plugin-events-node@0.2.4-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + +## example-backend-next@0.0.9-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.12.0-next.2 + - @backstage/backend-defaults@0.1.8-next.2 + - @backstage/plugin-app-backend@0.3.43-next.2 + - @backstage/plugin-catalog-backend@1.8.0-next.2 + - @backstage/plugin-todo-backend@0.1.40-next.2 + +## e2e-test@0.2.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/create-app@0.4.38-next.2 + +## techdocs-cli-embedded-app@0.2.80-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-techdocs-react@1.1.4-next.2 + - @backstage/plugin-techdocs@1.6.0-next.2 + - @backstage/core-app-api@1.6.0-next.2 + - @backstage/plugin-catalog@1.9.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/app-defaults@1.2.1-next.2 + - @backstage/cli@0.22.4-next.1 + - @backstage/integration-react@1.1.11-next.2 + - @backstage/test-utils@1.2.6-next.2 + - @backstage/config@1.0.7-next.0 + +## @internal/plugin-catalog-customized@0.0.8-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/plugin-catalog@1.9.0-next.2 + +## @internal/plugin-todo-list@1.0.11-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + +## @internal/plugin-todo-list-backend@1.0.11-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.2.12-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/config@1.0.7-next.0 diff --git a/package.json b/package.json index 1bdaa670c8..43a146e0a1 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "@types/react": "^17", "@types/react-dom": "^17" }, - "version": "1.12.0-next.1", + "version": "1.12.0-next.2", "dependencies": { "@backstage/errors": "workspace:^", "@manypkg/get-packages": "^1.1.3" diff --git a/packages/app-defaults/CHANGELOG.md b/packages/app-defaults/CHANGELOG.md index 648fad21b9..0b2b813d14 100644 --- a/packages/app-defaults/CHANGELOG.md +++ b/packages/app-defaults/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/app-defaults +## 1.2.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-app-api@1.6.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/plugin-permission-react@0.4.11-next.2 + ## 1.2.1-next.1 ### Patch Changes diff --git a/packages/app-defaults/package.json b/packages/app-defaults/package.json index 76af117a84..873a2fa28f 100644 --- a/packages/app-defaults/package.json +++ b/packages/app-defaults/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/app-defaults", "description": "Provides the default wiring of a Backstage App", - "version": "1.2.1-next.1", + "version": "1.2.1-next.2", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/packages/app/CHANGELOG.md b/packages/app/CHANGELOG.md index 301c3684fc..ac21cbad07 100644 --- a/packages/app/CHANGELOG.md +++ b/packages/app/CHANGELOG.md @@ -1,5 +1,69 @@ # example-app +## 0.2.81-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-scaffolder-react@1.2.0-next.2 + - @backstage/plugin-techdocs-react@1.1.4-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/plugin-tech-insights@0.3.8-next.2 + - @backstage/plugin-search-react@1.5.1-next.2 + - @backstage/plugin-scaffolder@1.12.0-next.2 + - @backstage/plugin-techdocs@1.6.0-next.2 + - @backstage/plugin-explore@0.4.1-next.2 + - @backstage/plugin-search@1.1.1-next.2 + - @backstage/plugin-kubernetes@0.7.9-next.2 + - @backstage/plugin-api-docs@0.9.1-next.2 + - @backstage/core-app-api@1.6.0-next.2 + - @backstage/plugin-org@0.6.6-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/app-defaults@1.2.1-next.2 + - @backstage/cli@0.22.4-next.1 + - @backstage/integration-react@1.1.11-next.2 + - @backstage/plugin-airbrake@0.3.16-next.2 + - @backstage/plugin-apache-airflow@0.2.9-next.2 + - @backstage/plugin-azure-devops@0.2.7-next.2 + - @backstage/plugin-azure-sites@0.1.5-next.2 + - @backstage/plugin-badges@0.2.40-next.2 + - @backstage/plugin-catalog-graph@0.2.28-next.2 + - @backstage/plugin-catalog-import@0.9.6-next.2 + - @backstage/plugin-circleci@0.3.16-next.2 + - @backstage/plugin-cloudbuild@0.3.16-next.2 + - @backstage/plugin-code-coverage@0.2.9-next.2 + - @backstage/plugin-cost-insights@0.12.5-next.2 + - @backstage/plugin-dynatrace@3.0.0-next.2 + - @backstage/plugin-entity-feedback@0.1.1-next.2 + - @backstage/plugin-gcalendar@0.3.12-next.2 + - @backstage/plugin-gcp-projects@0.3.35-next.2 + - @backstage/plugin-github-actions@0.5.16-next.2 + - @backstage/plugin-gocd@0.1.22-next.2 + - @backstage/plugin-graphiql@0.2.48-next.2 + - @backstage/plugin-home@0.4.32-next.2 + - @backstage/plugin-jenkins@0.7.15-next.2 + - @backstage/plugin-kafka@0.3.16-next.2 + - @backstage/plugin-lighthouse@0.4.1-next.2 + - @backstage/plugin-linguist@0.1.1-next.2 + - @backstage/plugin-microsoft-calendar@0.1.1-next.2 + - @backstage/plugin-newrelic@0.3.34-next.2 + - @backstage/plugin-newrelic-dashboard@0.2.9-next.2 + - @backstage/plugin-pagerduty@0.5.9-next.2 + - @backstage/plugin-playlist@0.1.7-next.2 + - @backstage/plugin-rollbar@0.4.16-next.2 + - @backstage/plugin-sentry@0.5.1-next.2 + - @backstage/plugin-shortcuts@0.3.8-next.2 + - @backstage/plugin-stack-overflow@0.1.12-next.2 + - @backstage/plugin-stackstorm@0.1.0-next.2 + - @backstage/plugin-tech-radar@0.6.2-next.2 + - @backstage/plugin-techdocs-module-addons-contrib@1.0.11-next.2 + - @backstage/plugin-todo@0.2.18-next.2 + - @backstage/plugin-user-settings@0.7.1-next.2 + - @internal/plugin-catalog-customized@0.0.8-next.2 + - @backstage/plugin-permission-react@0.4.11-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.2.81-next.1 ### Patch Changes diff --git a/packages/app/package.json b/packages/app/package.json index b74a2c7a6e..c51f8be911 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,6 +1,6 @@ { "name": "example-app", - "version": "0.2.81-next.1", + "version": "0.2.81-next.2", "private": true, "backstage": { "role": "frontend" diff --git a/packages/backend-app-api/CHANGELOG.md b/packages/backend-app-api/CHANGELOG.md index 4cbc4fa844..6ea78e983f 100644 --- a/packages/backend-app-api/CHANGELOG.md +++ b/packages/backend-app-api/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/backend-app-api +## 0.4.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.2.12-next.2 + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/plugin-permission-node@0.7.6-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.4.1-next.1 ### Patch Changes diff --git a/packages/backend-app-api/package.json b/packages/backend-app-api/package.json index dd5a404118..f59e39ef09 100644 --- a/packages/backend-app-api/package.json +++ b/packages/backend-app-api/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-app-api", "description": "Core API used by Backstage backend apps", - "version": "0.4.1-next.1", + "version": "0.4.1-next.2", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/packages/backend-common/CHANGELOG.md b/packages/backend-common/CHANGELOG.md index a3dfe498e9..06968a3c8a 100644 --- a/packages/backend-common/CHANGELOG.md +++ b/packages/backend-common/CHANGELOG.md @@ -1,5 +1,33 @@ # @backstage/backend-common +## 0.18.3-next.2 + +### Patch Changes + +- f75097868a7: Adds config option `backend.database.role` to set ownership for newly created schemas and tables in Postgres + + The example config below connects to the database as user `v-backstage-123` but sets the ownership of + the create schemas and tables to `backstage` + + ```yaml + backend: + database: + client: pg + pluginDivisionMode: schema + role: backstage + connection: + user: v-backstage-123 + ... + ``` + +- 87f0bbec175: AwsS3UrlReader upgraded to use aws-sdk v3 +- Updated dependencies + - @backstage/backend-app-api@0.4.1-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + - @backstage/integration-aws-node@0.1.2-next.0 + ## 0.18.3-next.1 ### Patch Changes diff --git a/packages/backend-common/package.json b/packages/backend-common/package.json index 665b14e2dd..beee72c860 100644 --- a/packages/backend-common/package.json +++ b/packages/backend-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-common", "description": "Common functionality library for Backstage backends", - "version": "0.18.3-next.1", + "version": "0.18.3-next.2", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/packages/backend-defaults/CHANGELOG.md b/packages/backend-defaults/CHANGELOG.md index bbf760d6e2..7283ae89e2 100644 --- a/packages/backend-defaults/CHANGELOG.md +++ b/packages/backend-defaults/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/backend-defaults +## 0.1.8-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-app-api@0.4.1-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + ## 0.1.8-next.1 ### Patch Changes diff --git a/packages/backend-defaults/package.json b/packages/backend-defaults/package.json index 468bcfd4ce..2ae0074849 100644 --- a/packages/backend-defaults/package.json +++ b/packages/backend-defaults/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-defaults", "description": "Backend defaults used by Backstage backend apps", - "version": "0.1.8-next.1", + "version": "0.1.8-next.2", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/packages/backend-next/CHANGELOG.md b/packages/backend-next/CHANGELOG.md index fdce1b2096..91ded2391f 100644 --- a/packages/backend-next/CHANGELOG.md +++ b/packages/backend-next/CHANGELOG.md @@ -1,5 +1,16 @@ # example-backend-next +## 0.0.9-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.12.0-next.2 + - @backstage/backend-defaults@0.1.8-next.2 + - @backstage/plugin-app-backend@0.3.43-next.2 + - @backstage/plugin-catalog-backend@1.8.0-next.2 + - @backstage/plugin-todo-backend@0.1.40-next.2 + ## 0.0.9-next.1 ### Patch Changes diff --git a/packages/backend-next/package.json b/packages/backend-next/package.json index 1540803b3b..9f7ec8306a 100644 --- a/packages/backend-next/package.json +++ b/packages/backend-next/package.json @@ -1,6 +1,6 @@ { "name": "example-backend-next", - "version": "0.0.9-next.1", + "version": "0.0.9-next.2", "main": "dist/index.cjs.js", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/packages/backend-plugin-api/CHANGELOG.md b/packages/backend-plugin-api/CHANGELOG.md index 8319475840..5125411eb6 100644 --- a/packages/backend-plugin-api/CHANGELOG.md +++ b/packages/backend-plugin-api/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/backend-plugin-api +## 0.4.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.2.12-next.2 + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.4.1-next.1 ### Patch Changes diff --git a/packages/backend-plugin-api/package.json b/packages/backend-plugin-api/package.json index 856f2a70e2..4d97fdcd74 100644 --- a/packages/backend-plugin-api/package.json +++ b/packages/backend-plugin-api/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-plugin-api", "description": "Core API used by Backstage backend plugins", - "version": "0.4.1-next.1", + "version": "0.4.1-next.2", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/packages/backend-tasks/CHANGELOG.md b/packages/backend-tasks/CHANGELOG.md index acce10665a..7eb43c4677 100644 --- a/packages/backend-tasks/CHANGELOG.md +++ b/packages/backend-tasks/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/backend-tasks +## 0.5.0-next.2 + +### Minor Changes + +- 1578276708a: add functionality to get descriptions from the scheduler for triggering + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.4.4-next.1 ### Patch Changes diff --git a/packages/backend-tasks/package.json b/packages/backend-tasks/package.json index 3f3c594cd4..fa826067c8 100644 --- a/packages/backend-tasks/package.json +++ b/packages/backend-tasks/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-tasks", "description": "Common distributed task management library for Backstage backends", - "version": "0.4.4-next.1", + "version": "0.5.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/packages/backend-test-utils/CHANGELOG.md b/packages/backend-test-utils/CHANGELOG.md index d1f383bf43..3b20fe92d5 100644 --- a/packages/backend-test-utils/CHANGELOG.md +++ b/packages/backend-test-utils/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/backend-test-utils +## 0.1.35-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.2.12-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-app-api@0.4.1-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.1.35-next.1 ### Patch Changes diff --git a/packages/backend-test-utils/package.json b/packages/backend-test-utils/package.json index d5ace4b8f3..e797e346ff 100644 --- a/packages/backend-test-utils/package.json +++ b/packages/backend-test-utils/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-test-utils", "description": "Test helpers library for Backstage backends", - "version": "0.1.35-next.1", + "version": "0.1.35-next.2", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/packages/backend/CHANGELOG.md b/packages/backend/CHANGELOG.md index 8430961cc5..933d9688b9 100644 --- a/packages/backend/CHANGELOG.md +++ b/packages/backend/CHANGELOG.md @@ -1,5 +1,52 @@ # example-backend +## 0.2.81-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.12.0-next.2 + - @backstage/plugin-search-backend-module-elasticsearch@1.1.4-next.2 + - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.27-next.2 + - @backstage/plugin-auth-node@0.2.12-next.2 + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/plugin-adr-backend@0.3.1-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/plugin-linguist-backend@0.2.0-next.2 + - @backstage/plugin-scaffolder-backend-module-rails@0.4.11-next.2 + - example-app@0.2.81-next.2 + - @backstage/plugin-techdocs-backend@1.5.4-next.2 + - @backstage/plugin-auth-backend@0.18.1-next.2 + - @backstage/plugin-entity-feedback-backend@0.1.1-next.2 + - @backstage/plugin-jenkins-backend@0.1.33-next.2 + - @backstage/plugin-kubernetes-backend@0.9.4-next.2 + - @backstage/plugin-permission-backend@0.5.18-next.2 + - @backstage/plugin-permission-node@0.7.6-next.2 + - @backstage/plugin-playlist-backend@0.2.6-next.2 + - @backstage/plugin-search-backend@1.2.4-next.2 + - @backstage/plugin-lighthouse-backend@0.1.1-next.2 + - @backstage/plugin-search-backend-node@1.1.4-next.2 + - @backstage/plugin-tech-insights-backend@0.5.9-next.2 + - @backstage/plugin-tech-insights-node@0.4.1-next.2 + - @backstage/plugin-app-backend@0.3.43-next.2 + - @backstage/plugin-azure-devops-backend@0.3.22-next.2 + - @backstage/plugin-azure-sites-backend@0.1.5-next.2 + - @backstage/plugin-badges-backend@0.1.37-next.2 + - @backstage/plugin-catalog-backend@1.8.0-next.2 + - @backstage/plugin-catalog-node@1.3.4-next.2 + - @backstage/plugin-code-coverage-backend@0.2.9-next.2 + - @backstage/plugin-events-backend@0.2.4-next.2 + - @backstage/plugin-explore-backend@0.0.5-next.2 + - @backstage/plugin-graphql-backend@0.1.33-next.2 + - @backstage/plugin-kafka-backend@0.2.36-next.2 + - @backstage/plugin-proxy-backend@0.2.37-next.2 + - @backstage/plugin-rollbar-backend@0.1.40-next.2 + - @backstage/plugin-search-backend-module-pg@0.5.4-next.2 + - @backstage/plugin-todo-backend@0.1.40-next.2 + - @backstage/plugin-events-node@0.2.4-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + ## 0.2.81-next.1 ### Patch Changes diff --git a/packages/backend/package.json b/packages/backend/package.json index 40b47bbc7b..107a1147f1 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -1,6 +1,6 @@ { "name": "example-backend", - "version": "0.2.81-next.1", + "version": "0.2.81-next.2", "main": "dist/index.cjs.js", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/packages/core-app-api/CHANGELOG.md b/packages/core-app-api/CHANGELOG.md index 092a43cfe0..d91fa44f05 100644 --- a/packages/core-app-api/CHANGELOG.md +++ b/packages/core-app-api/CHANGELOG.md @@ -1,5 +1,31 @@ # @backstage/core-app-api +## 1.6.0-next.2 + +### Minor Changes + +- 456eaa8cf83: `OAuth2` now gets ID tokens from a session with the `openid` scope explicitly + requested. + + This should not be considered a breaking change, because spec-compliant OIDC + providers will already be returning ID tokens if and only if the `openid` scope + is granted. + + This change makes the dependence explicit, and removes the burden on + OAuth2-based providers which require an ID token (e.g. this is done by various + default [auth + handlers](https://backstage.io/docs/auth/identity-resolver/#authhandler)) to add + `openid` to their default scopes. _That_ could carry another indirect benefit: + by removing `openid` from the default scopes for a provider, grants for + resource-specific access tokens can avoid requesting excess ID token-related + scopes. + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/config@1.0.7-next.0 + ## 1.5.1-next.1 ### Patch Changes diff --git a/packages/core-app-api/package.json b/packages/core-app-api/package.json index d17e05fdea..073a5a22b2 100644 --- a/packages/core-app-api/package.json +++ b/packages/core-app-api/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/core-app-api", "description": "Core app API used by Backstage apps", - "version": "1.5.1-next.1", + "version": "1.6.0-next.2", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/packages/core-components/CHANGELOG.md b/packages/core-components/CHANGELOG.md index 4dbeaea64c..0eac19716d 100644 --- a/packages/core-components/CHANGELOG.md +++ b/packages/core-components/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/core-components +## 0.12.5-next.2 + +### Patch Changes + +- 8bbf95b5507: Button labels in the sidebar (previously displayed in uppercase) will be displayed in the case that is provided without any transformations. + For example, a sidebar button with the label "Search" will appear as Search, "search" will appear as search, "SEARCH" will appear as SEARCH etc. + This can potentially affect any overriding styles previously applied to change the appearance of Button labels in the Sidebar. +- fa004f66871: Use media queries to change layout instead of `isMobile` prop in `BackstagePage` component +- Updated dependencies + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.12.5-next.1 ### Patch Changes diff --git a/packages/core-components/package.json b/packages/core-components/package.json index 47f882d2cc..9630d7d706 100644 --- a/packages/core-components/package.json +++ b/packages/core-components/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/core-components", "description": "Core components used by Backstage plugins and apps", - "version": "0.12.5-next.1", + "version": "0.12.5-next.2", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/packages/core-plugin-api/CHANGELOG.md b/packages/core-plugin-api/CHANGELOG.md index 278d8d6d02..1001c01e52 100644 --- a/packages/core-plugin-api/CHANGELOG.md +++ b/packages/core-plugin-api/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/core-plugin-api +## 1.5.0-next.2 + +### Minor Changes + +- ab750ddc4f2: The GitLab auth provider can now be used to get OpenID tokens. + +### Patch Changes + +- Updated dependencies + - @backstage/config@1.0.7-next.0 + ## 1.4.1-next.1 ### Patch Changes diff --git a/packages/core-plugin-api/package.json b/packages/core-plugin-api/package.json index e765762a8a..335f0f0efd 100644 --- a/packages/core-plugin-api/package.json +++ b/packages/core-plugin-api/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/core-plugin-api", "description": "Core API used by Backstage plugins", - "version": "1.4.1-next.1", + "version": "1.5.0-next.2", "publishConfig": { "access": "public" }, diff --git a/packages/create-app/CHANGELOG.md b/packages/create-app/CHANGELOG.md index 3a9a28e3ac..b17da7ba7b 100644 --- a/packages/create-app/CHANGELOG.md +++ b/packages/create-app/CHANGELOG.md @@ -1,5 +1,11 @@ # @backstage/create-app +## 0.4.38-next.2 + +### Patch Changes + +- Bumped create-app version. + ## 0.4.38-next.1 ### Patch Changes diff --git a/packages/create-app/package.json b/packages/create-app/package.json index ef569aee6b..4097e3bd57 100644 --- a/packages/create-app/package.json +++ b/packages/create-app/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/create-app", "description": "A CLI that helps you create your own Backstage app", - "version": "0.4.38-next.1", + "version": "0.4.38-next.2", "publishConfig": { "access": "public" }, diff --git a/packages/dev-utils/CHANGELOG.md b/packages/dev-utils/CHANGELOG.md index abfd8997f3..85a0c81ee7 100644 --- a/packages/dev-utils/CHANGELOG.md +++ b/packages/dev-utils/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/dev-utils +## 1.0.13-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-app-api@1.6.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/app-defaults@1.2.1-next.2 + - @backstage/integration-react@1.1.11-next.2 + - @backstage/test-utils@1.2.6-next.2 + ## 1.0.13-next.1 ### Patch Changes diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 119564ceae..d4f120b359 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/dev-utils", "description": "Utilities for developing Backstage plugins.", - "version": "1.0.13-next.1", + "version": "1.0.13-next.2", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/packages/e2e-test/CHANGELOG.md b/packages/e2e-test/CHANGELOG.md index 9829e00e7f..7c3dcdbc36 100644 --- a/packages/e2e-test/CHANGELOG.md +++ b/packages/e2e-test/CHANGELOG.md @@ -1,5 +1,12 @@ # e2e-test +## 0.2.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/create-app@0.4.38-next.2 + ## 0.2.1-next.1 ### Patch Changes diff --git a/packages/e2e-test/package.json b/packages/e2e-test/package.json index ecc377c6e2..f8c6f815e8 100644 --- a/packages/e2e-test/package.json +++ b/packages/e2e-test/package.json @@ -1,7 +1,7 @@ { "name": "e2e-test", "description": "E2E test for verifying Backstage packages", - "version": "0.2.1-next.1", + "version": "0.2.1-next.2", "private": true, "backstage": { "role": "cli" diff --git a/packages/integration-react/CHANGELOG.md b/packages/integration-react/CHANGELOG.md index b1d72eec52..028c939822 100644 --- a/packages/integration-react/CHANGELOG.md +++ b/packages/integration-react/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/integration-react +## 1.1.11-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + ## 1.1.11-next.1 ### Patch Changes diff --git a/packages/integration-react/package.json b/packages/integration-react/package.json index 62e3234439..119a8683d6 100644 --- a/packages/integration-react/package.json +++ b/packages/integration-react/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/integration-react", "description": "Frontend package for managing integrations towards external systems", - "version": "1.1.11-next.1", + "version": "1.1.11-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/packages/techdocs-cli-embedded-app/CHANGELOG.md b/packages/techdocs-cli-embedded-app/CHANGELOG.md index a350735be4..2d2b669e38 100644 --- a/packages/techdocs-cli-embedded-app/CHANGELOG.md +++ b/packages/techdocs-cli-embedded-app/CHANGELOG.md @@ -1,5 +1,22 @@ # techdocs-cli-embedded-app +## 0.2.80-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-techdocs-react@1.1.4-next.2 + - @backstage/plugin-techdocs@1.6.0-next.2 + - @backstage/core-app-api@1.6.0-next.2 + - @backstage/plugin-catalog@1.9.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/app-defaults@1.2.1-next.2 + - @backstage/cli@0.22.4-next.1 + - @backstage/integration-react@1.1.11-next.2 + - @backstage/test-utils@1.2.6-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.2.80-next.1 ### Patch Changes diff --git a/packages/techdocs-cli-embedded-app/package.json b/packages/techdocs-cli-embedded-app/package.json index cc5d64e234..2cbb1aabc8 100644 --- a/packages/techdocs-cli-embedded-app/package.json +++ b/packages/techdocs-cli-embedded-app/package.json @@ -1,6 +1,6 @@ { "name": "techdocs-cli-embedded-app", - "version": "0.2.80-next.1", + "version": "0.2.80-next.2", "private": true, "backstage": { "role": "frontend" diff --git a/packages/techdocs-cli/CHANGELOG.md b/packages/techdocs-cli/CHANGELOG.md index bddbd4a2d0..facd967e90 100644 --- a/packages/techdocs-cli/CHANGELOG.md +++ b/packages/techdocs-cli/CHANGELOG.md @@ -1,5 +1,14 @@ # @techdocs/cli +## 1.4.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-techdocs-node@1.6.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + ## 1.4.0-next.1 ### Minor Changes diff --git a/packages/techdocs-cli/package.json b/packages/techdocs-cli/package.json index 169ef04a47..e8d9277871 100644 --- a/packages/techdocs-cli/package.json +++ b/packages/techdocs-cli/package.json @@ -1,7 +1,7 @@ { "name": "@techdocs/cli", "description": "Utility CLI for managing TechDocs sites in Backstage.", - "version": "1.4.0-next.1", + "version": "1.4.0-next.2", "publishConfig": { "access": "public" }, diff --git a/packages/test-utils/CHANGELOG.md b/packages/test-utils/CHANGELOG.md index c5a30b5629..e521e9af91 100644 --- a/packages/test-utils/CHANGELOG.md +++ b/packages/test-utils/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/test-utils +## 1.2.6-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-app-api@1.6.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/plugin-permission-react@0.4.11-next.2 + - @backstage/config@1.0.7-next.0 + ## 1.2.6-next.1 ### Patch Changes diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json index e43ca2a8b3..59ec2ce989 100644 --- a/packages/test-utils/package.json +++ b/packages/test-utils/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/test-utils", "description": "Utilities to test Backstage plugins and apps.", - "version": "1.2.6-next.1", + "version": "1.2.6-next.2", "publishConfig": { "access": "public" }, diff --git a/plugins/adr-backend/CHANGELOG.md b/plugins/adr-backend/CHANGELOG.md index 6b96383f68..58b37f1731 100644 --- a/plugins/adr-backend/CHANGELOG.md +++ b/plugins/adr-backend/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-adr-backend +## 0.3.1-next.2 + +### Patch Changes + +- 2a73ded3861: Support MADR v3 format +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + ## 0.3.1-next.1 ### Patch Changes diff --git a/plugins/adr-backend/package.json b/plugins/adr-backend/package.json index 452a58f4e5..f73bf159b0 100644 --- a/plugins/adr-backend/package.json +++ b/plugins/adr-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-adr-backend", - "version": "0.3.1-next.1", + "version": "0.3.1-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/adr/CHANGELOG.md b/plugins/adr/CHANGELOG.md index 13e8ad37a2..a50f1a60d3 100644 --- a/plugins/adr/CHANGELOG.md +++ b/plugins/adr/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-adr +## 0.4.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/plugin-search-react@1.5.1-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/integration-react@1.1.11-next.2 + ## 0.4.1-next.1 ### Patch Changes diff --git a/plugins/adr/package.json b/plugins/adr/package.json index 0456e3961a..5e56c39638 100644 --- a/plugins/adr/package.json +++ b/plugins/adr/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-adr", - "version": "0.4.1-next.1", + "version": "0.4.1-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/airbrake-backend/CHANGELOG.md b/plugins/airbrake-backend/CHANGELOG.md index a88cf895d0..bcbd88a755 100644 --- a/plugins/airbrake-backend/CHANGELOG.md +++ b/plugins/airbrake-backend/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-airbrake-backend +## 0.2.16-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.2.16-next.1 ### Patch Changes diff --git a/plugins/airbrake-backend/package.json b/plugins/airbrake-backend/package.json index 0e5b160a86..52bd89e909 100644 --- a/plugins/airbrake-backend/package.json +++ b/plugins/airbrake-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-airbrake-backend", - "version": "0.2.16-next.1", + "version": "0.2.16-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/airbrake/CHANGELOG.md b/plugins/airbrake/CHANGELOG.md index 406564d8cf..088bfbdcf9 100644 --- a/plugins/airbrake/CHANGELOG.md +++ b/plugins/airbrake/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-airbrake +## 0.3.16-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/dev-utils@1.0.13-next.2 + - @backstage/test-utils@1.2.6-next.2 + ## 0.3.16-next.1 ### Patch Changes diff --git a/plugins/airbrake/package.json b/plugins/airbrake/package.json index 4c31a2b5e7..e577ee8862 100644 --- a/plugins/airbrake/package.json +++ b/plugins/airbrake/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-airbrake", - "version": "0.3.16-next.1", + "version": "0.3.16-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/allure/CHANGELOG.md b/plugins/allure/CHANGELOG.md index 48ce2bd75c..efde01c0b5 100644 --- a/plugins/allure/CHANGELOG.md +++ b/plugins/allure/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-allure +## 0.1.32-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.1.32-next.1 ### Patch Changes diff --git a/plugins/allure/package.json b/plugins/allure/package.json index f6dcdda941..18bf52feab 100644 --- a/plugins/allure/package.json +++ b/plugins/allure/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-allure", "description": "A Backstage plugin that integrates with Allure", - "version": "0.1.32-next.1", + "version": "0.1.32-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/analytics-module-ga/CHANGELOG.md b/plugins/analytics-module-ga/CHANGELOG.md index c65f20cedd..e457b76bf8 100644 --- a/plugins/analytics-module-ga/CHANGELOG.md +++ b/plugins/analytics-module-ga/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-analytics-module-ga +## 0.1.27-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.1.27-next.1 ### Patch Changes diff --git a/plugins/analytics-module-ga/package.json b/plugins/analytics-module-ga/package.json index 722c34895e..b7152b1f69 100644 --- a/plugins/analytics-module-ga/package.json +++ b/plugins/analytics-module-ga/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-analytics-module-ga", - "version": "0.1.27-next.1", + "version": "0.1.27-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/apache-airflow/CHANGELOG.md b/plugins/apache-airflow/CHANGELOG.md index 8fec434e37..acc474e6e3 100644 --- a/plugins/apache-airflow/CHANGELOG.md +++ b/plugins/apache-airflow/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-apache-airflow +## 0.2.9-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.2.9-next.1 ### Patch Changes diff --git a/plugins/apache-airflow/package.json b/plugins/apache-airflow/package.json index 87889f6c86..070cbc4136 100644 --- a/plugins/apache-airflow/package.json +++ b/plugins/apache-airflow/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-apache-airflow", - "version": "0.2.9-next.1", + "version": "0.2.9-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/api-docs/CHANGELOG.md b/plugins/api-docs/CHANGELOG.md index 3966fa5ee8..56644c2322 100644 --- a/plugins/api-docs/CHANGELOG.md +++ b/plugins/api-docs/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-api-docs +## 0.9.1-next.2 + +### Patch Changes + +- 8bc7dcec820: Fix dark theme Swagger's clear button font color. +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/plugin-catalog@1.9.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.9.1-next.1 ### Patch Changes diff --git a/plugins/api-docs/package.json b/plugins/api-docs/package.json index a3d14e7fa2..d7db6566f9 100644 --- a/plugins/api-docs/package.json +++ b/plugins/api-docs/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-api-docs", "description": "A Backstage plugin that helps represent API entities in the frontend", - "version": "0.9.1-next.1", + "version": "0.9.1-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/apollo-explorer/CHANGELOG.md b/plugins/apollo-explorer/CHANGELOG.md index 57b6934d5b..8e48be2ab8 100644 --- a/plugins/apollo-explorer/CHANGELOG.md +++ b/plugins/apollo-explorer/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-apollo-explorer +## 0.1.9-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.1.9-next.1 ### Patch Changes diff --git a/plugins/apollo-explorer/package.json b/plugins/apollo-explorer/package.json index 2aab81c0d3..0fcc315797 100644 --- a/plugins/apollo-explorer/package.json +++ b/plugins/apollo-explorer/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-apollo-explorer", - "version": "0.1.9-next.1", + "version": "0.1.9-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/app-backend/CHANGELOG.md b/plugins/app-backend/CHANGELOG.md index 784c2d23c4..79c8276eeb 100644 --- a/plugins/app-backend/CHANGELOG.md +++ b/plugins/app-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-app-backend +## 0.3.43-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.3.43-next.1 ### Patch Changes diff --git a/plugins/app-backend/package.json b/plugins/app-backend/package.json index 43152faca1..77804372d1 100644 --- a/plugins/app-backend/package.json +++ b/plugins/app-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-app-backend", "description": "A Backstage backend plugin that serves the Backstage frontend app", - "version": "0.3.43-next.1", + "version": "0.3.43-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/auth-backend/CHANGELOG.md b/plugins/auth-backend/CHANGELOG.md index 97124b3a3e..a22b2e40ee 100644 --- a/plugins/auth-backend/CHANGELOG.md +++ b/plugins/auth-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-auth-backend +## 0.18.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.2.12-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.18.1-next.1 ### Patch Changes diff --git a/plugins/auth-backend/package.json b/plugins/auth-backend/package.json index f399028594..bcc62814ed 100644 --- a/plugins/auth-backend/package.json +++ b/plugins/auth-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-auth-backend", "description": "A Backstage backend plugin that handles authentication", - "version": "0.18.1-next.1", + "version": "0.18.1-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/auth-node/CHANGELOG.md b/plugins/auth-node/CHANGELOG.md index 71e17743b4..0e7bcefae2 100644 --- a/plugins/auth-node/CHANGELOG.md +++ b/plugins/auth-node/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-auth-node +## 0.2.12-next.2 + +### Patch Changes + +- 65454876fb2: Minor API report tweaks +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.2.12-next.1 ### Patch Changes diff --git a/plugins/auth-node/package.json b/plugins/auth-node/package.json index ffecaf44ba..093b23add9 100644 --- a/plugins/auth-node/package.json +++ b/plugins/auth-node/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-auth-node", - "version": "0.2.12-next.1", + "version": "0.2.12-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/azure-devops-backend/CHANGELOG.md b/plugins/azure-devops-backend/CHANGELOG.md index bc92e8cdd4..a4a7492ffc 100644 --- a/plugins/azure-devops-backend/CHANGELOG.md +++ b/plugins/azure-devops-backend/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-azure-devops-backend +## 0.3.22-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.3.22-next.1 ### Patch Changes diff --git a/plugins/azure-devops-backend/package.json b/plugins/azure-devops-backend/package.json index dd46929944..1d921a468a 100644 --- a/plugins/azure-devops-backend/package.json +++ b/plugins/azure-devops-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-azure-devops-backend", - "version": "0.3.22-next.1", + "version": "0.3.22-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/azure-devops/CHANGELOG.md b/plugins/azure-devops/CHANGELOG.md index 3d82d3a0dd..b9fcc646b7 100644 --- a/plugins/azure-devops/CHANGELOG.md +++ b/plugins/azure-devops/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-azure-devops +## 0.2.7-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.2.7-next.1 ### Patch Changes diff --git a/plugins/azure-devops/package.json b/plugins/azure-devops/package.json index bec734c09b..f8bc46f422 100644 --- a/plugins/azure-devops/package.json +++ b/plugins/azure-devops/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-azure-devops", - "version": "0.2.7-next.1", + "version": "0.2.7-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/azure-sites-backend/CHANGELOG.md b/plugins/azure-sites-backend/CHANGELOG.md index 439163b00d..9bc9b99388 100644 --- a/plugins/azure-sites-backend/CHANGELOG.md +++ b/plugins/azure-sites-backend/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-azure-sites-backend +## 0.1.5-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.1.5-next.1 ### Patch Changes diff --git a/plugins/azure-sites-backend/package.json b/plugins/azure-sites-backend/package.json index e4a739d730..3cb7023933 100644 --- a/plugins/azure-sites-backend/package.json +++ b/plugins/azure-sites-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-azure-sites-backend", - "version": "0.1.5-next.1", + "version": "0.1.5-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/azure-sites/CHANGELOG.md b/plugins/azure-sites/CHANGELOG.md index 2bb6cfba96..1de9e7a804 100644 --- a/plugins/azure-sites/CHANGELOG.md +++ b/plugins/azure-sites/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-azure-sites +## 0.1.5-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.1.5-next.1 ### Patch Changes diff --git a/plugins/azure-sites/package.json b/plugins/azure-sites/package.json index 4c17e880ea..6daadf199a 100644 --- a/plugins/azure-sites/package.json +++ b/plugins/azure-sites/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-azure-sites", - "version": "0.1.5-next.1", + "version": "0.1.5-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/badges-backend/CHANGELOG.md b/plugins/badges-backend/CHANGELOG.md index b2e06a5a0e..837e71bcce 100644 --- a/plugins/badges-backend/CHANGELOG.md +++ b/plugins/badges-backend/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-badges-backend +## 0.1.37-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.1.37-next.1 ### Patch Changes diff --git a/plugins/badges-backend/package.json b/plugins/badges-backend/package.json index 73d4930130..f570a47874 100644 --- a/plugins/badges-backend/package.json +++ b/plugins/badges-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-badges-backend", "description": "A Backstage backend plugin that generates README badges for your entities", - "version": "0.1.37-next.1", + "version": "0.1.37-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/badges/CHANGELOG.md b/plugins/badges/CHANGELOG.md index 0d4f78a5ba..567c3e81d6 100644 --- a/plugins/badges/CHANGELOG.md +++ b/plugins/badges/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-badges +## 0.2.40-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.2.40-next.1 ### Patch Changes diff --git a/plugins/badges/package.json b/plugins/badges/package.json index ebed209962..7e817c024d 100644 --- a/plugins/badges/package.json +++ b/plugins/badges/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-badges", "description": "A Backstage plugin that generates README badges for your entities", - "version": "0.2.40-next.1", + "version": "0.2.40-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/bazaar-backend/CHANGELOG.md b/plugins/bazaar-backend/CHANGELOG.md index 4e579285b0..203c1ef67f 100644 --- a/plugins/bazaar-backend/CHANGELOG.md +++ b/plugins/bazaar-backend/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-bazaar-backend +## 0.2.6-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.2.12-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.2.6-next.1 ### Patch Changes diff --git a/plugins/bazaar-backend/package.json b/plugins/bazaar-backend/package.json index bac1f58a41..c9221e5c69 100644 --- a/plugins/bazaar-backend/package.json +++ b/plugins/bazaar-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-bazaar-backend", - "version": "0.2.6-next.1", + "version": "0.2.6-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/bazaar/CHANGELOG.md b/plugins/bazaar/CHANGELOG.md index d13b98ef23..57ba471000 100644 --- a/plugins/bazaar/CHANGELOG.md +++ b/plugins/bazaar/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-bazaar +## 0.2.6-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/plugin-catalog@1.9.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/cli@0.22.4-next.1 + ## 0.2.6-next.1 ### Patch Changes diff --git a/plugins/bazaar/package.json b/plugins/bazaar/package.json index d1a3b435cb..6a2311004b 100644 --- a/plugins/bazaar/package.json +++ b/plugins/bazaar/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-bazaar", - "version": "0.2.6-next.1", + "version": "0.2.6-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/bitrise/CHANGELOG.md b/plugins/bitrise/CHANGELOG.md index 856f77b655..1a9d86268d 100644 --- a/plugins/bitrise/CHANGELOG.md +++ b/plugins/bitrise/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-bitrise +## 0.1.43-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.1.43-next.1 ### Patch Changes diff --git a/plugins/bitrise/package.json b/plugins/bitrise/package.json index ab34c9ef88..41cb8562b5 100644 --- a/plugins/bitrise/package.json +++ b/plugins/bitrise/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-bitrise", "description": "A Backstage plugin that integrates towards Bitrise", - "version": "0.1.43-next.1", + "version": "0.1.43-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-aws/CHANGELOG.md b/plugins/catalog-backend-module-aws/CHANGELOG.md index 76cd99d3c1..f4e268aae7 100644 --- a/plugins/catalog-backend-module-aws/CHANGELOG.md +++ b/plugins/catalog-backend-module-aws/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-catalog-backend-module-aws +## 0.1.17-next.2 + +### Patch Changes + +- 87f0bbec175: AwsS3UrlReader upgraded to use aws-sdk v3 +- Updated dependencies + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/plugin-catalog-backend@1.8.0-next.2 + - @backstage/plugin-catalog-node@1.3.4-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + ## 0.1.17-next.1 ### Patch Changes diff --git a/plugins/catalog-backend-module-aws/package.json b/plugins/catalog-backend-module-aws/package.json index 18b210ae67..a61f21c8cf 100644 --- a/plugins/catalog-backend-module-aws/package.json +++ b/plugins/catalog-backend-module-aws/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-aws", "description": "A Backstage catalog backend module that helps integrate towards AWS", - "version": "0.1.17-next.1", + "version": "0.1.17-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-azure/CHANGELOG.md b/plugins/catalog-backend-module-azure/CHANGELOG.md index 1dd3f48c2d..86566d383f 100644 --- a/plugins/catalog-backend-module-azure/CHANGELOG.md +++ b/plugins/catalog-backend-module-azure/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-catalog-backend-module-azure +## 0.1.14-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/plugin-catalog-backend@1.8.0-next.2 + - @backstage/plugin-catalog-node@1.3.4-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + ## 0.1.14-next.1 ### Patch Changes diff --git a/plugins/catalog-backend-module-azure/package.json b/plugins/catalog-backend-module-azure/package.json index c9a8d4b921..ab68d31c0e 100644 --- a/plugins/catalog-backend-module-azure/package.json +++ b/plugins/catalog-backend-module-azure/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-azure", "description": "A Backstage catalog backend module that helps integrate towards Azure", - "version": "0.1.14-next.1", + "version": "0.1.14-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md b/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md index 6992b44c87..b1de810710 100644 --- a/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md +++ b/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-catalog-backend-module-bitbucket-cloud +## 0.1.10-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/plugin-catalog-backend@1.8.0-next.2 + - @backstage/plugin-catalog-node@1.3.4-next.2 + - @backstage/plugin-events-node@0.2.4-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + ## 0.1.10-next.1 ### Patch Changes diff --git a/plugins/catalog-backend-module-bitbucket-cloud/package.json b/plugins/catalog-backend-module-bitbucket-cloud/package.json index 96922c7a8c..dcee7f5811 100644 --- a/plugins/catalog-backend-module-bitbucket-cloud/package.json +++ b/plugins/catalog-backend-module-bitbucket-cloud/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-bitbucket-cloud", "description": "A Backstage catalog backend module that helps integrate towards Bitbucket Cloud", - "version": "0.1.10-next.1", + "version": "0.1.10-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md b/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md index 3dbe16771d..00341a3870 100644 --- a/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md +++ b/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-catalog-backend-module-bitbucket-server +## 0.1.8-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/plugin-catalog-backend@1.8.0-next.2 + - @backstage/plugin-catalog-node@1.3.4-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + ## 0.1.8-next.1 ### Patch Changes diff --git a/plugins/catalog-backend-module-bitbucket-server/package.json b/plugins/catalog-backend-module-bitbucket-server/package.json index 3c58377976..057153a9c3 100644 --- a/plugins/catalog-backend-module-bitbucket-server/package.json +++ b/plugins/catalog-backend-module-bitbucket-server/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-bitbucket-server", - "version": "0.1.8-next.1", + "version": "0.1.8-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-bitbucket/CHANGELOG.md b/plugins/catalog-backend-module-bitbucket/CHANGELOG.md index 3ede5969ae..eef6da4c0e 100644 --- a/plugins/catalog-backend-module-bitbucket/CHANGELOG.md +++ b/plugins/catalog-backend-module-bitbucket/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-catalog-backend-module-bitbucket +## 0.2.10-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/plugin-catalog-backend@1.8.0-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + ## 0.2.10-next.1 ### Patch Changes diff --git a/plugins/catalog-backend-module-bitbucket/package.json b/plugins/catalog-backend-module-bitbucket/package.json index 39b5399e21..b77d74c59d 100644 --- a/plugins/catalog-backend-module-bitbucket/package.json +++ b/plugins/catalog-backend-module-bitbucket/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-bitbucket", "description": "A Backstage catalog backend module that helps integrate towards Bitbucket", - "version": "0.2.10-next.1", + "version": "0.2.10-next.2", "deprecated": true, "main": "src/index.ts", "types": "src/index.ts", diff --git a/plugins/catalog-backend-module-gerrit/CHANGELOG.md b/plugins/catalog-backend-module-gerrit/CHANGELOG.md index 7cd5eb2bb5..07ab61c8c4 100644 --- a/plugins/catalog-backend-module-gerrit/CHANGELOG.md +++ b/plugins/catalog-backend-module-gerrit/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-catalog-backend-module-gerrit +## 0.1.11-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/plugin-catalog-backend@1.8.0-next.2 + - @backstage/plugin-catalog-node@1.3.4-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + ## 0.1.11-next.1 ### Patch Changes diff --git a/plugins/catalog-backend-module-gerrit/package.json b/plugins/catalog-backend-module-gerrit/package.json index 357b5416bf..3cf873aecd 100644 --- a/plugins/catalog-backend-module-gerrit/package.json +++ b/plugins/catalog-backend-module-gerrit/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-gerrit", - "version": "0.1.11-next.1", + "version": "0.1.11-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-github/CHANGELOG.md b/plugins/catalog-backend-module-github/CHANGELOG.md index c7e9e756ba..1e0c455391 100644 --- a/plugins/catalog-backend-module-github/CHANGELOG.md +++ b/plugins/catalog-backend-module-github/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-catalog-backend-module-github +## 0.2.6-next.2 + +### Patch Changes + +- 65454876fb2: Minor API report tweaks +- Updated dependencies + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/plugin-catalog-backend@1.8.0-next.2 + - @backstage/plugin-catalog-node@1.3.4-next.2 + - @backstage/plugin-events-node@0.2.4-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + ## 0.2.6-next.1 ### Patch Changes diff --git a/plugins/catalog-backend-module-github/package.json b/plugins/catalog-backend-module-github/package.json index 733c3e8dc3..fe9183917e 100644 --- a/plugins/catalog-backend-module-github/package.json +++ b/plugins/catalog-backend-module-github/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-github", "description": "A Backstage catalog backend module that helps integrate towards GitHub", - "version": "0.2.6-next.1", + "version": "0.2.6-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-gitlab/CHANGELOG.md b/plugins/catalog-backend-module-gitlab/CHANGELOG.md index c7e0a592ca..491d972754 100644 --- a/plugins/catalog-backend-module-gitlab/CHANGELOG.md +++ b/plugins/catalog-backend-module-gitlab/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-catalog-backend-module-gitlab +## 0.1.14-next.2 + +### Patch Changes + +- be129f8f3cd: filter gitlab groups by prefix +- Updated dependencies + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/plugin-catalog-backend@1.8.0-next.2 + - @backstage/plugin-catalog-node@1.3.4-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + ## 0.1.14-next.1 ### Patch Changes diff --git a/plugins/catalog-backend-module-gitlab/package.json b/plugins/catalog-backend-module-gitlab/package.json index f2042e4f8e..2535be8fea 100644 --- a/plugins/catalog-backend-module-gitlab/package.json +++ b/plugins/catalog-backend-module-gitlab/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-gitlab", "description": "A Backstage catalog backend module that helps integrate towards GitLab", - "version": "0.1.14-next.1", + "version": "0.1.14-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md b/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md index ad4649ab7f..11393c6db2 100644 --- a/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md +++ b/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-catalog-backend-module-incremental-ingestion +## 0.3.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/plugin-catalog-backend@1.8.0-next.2 + - @backstage/plugin-catalog-node@1.3.4-next.2 + - @backstage/plugin-events-node@0.2.4-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.3.0-next.1 ### Minor Changes diff --git a/plugins/catalog-backend-module-incremental-ingestion/package.json b/plugins/catalog-backend-module-incremental-ingestion/package.json index a88e3af1fa..0d0b84cd88 100644 --- a/plugins/catalog-backend-module-incremental-ingestion/package.json +++ b/plugins/catalog-backend-module-incremental-ingestion/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-incremental-ingestion", "description": "An entity provider for streaming large asset sources into the catalog", - "version": "0.3.0-next.1", + "version": "0.3.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-ldap/CHANGELOG.md b/plugins/catalog-backend-module-ldap/CHANGELOG.md index 78614a4c31..5e176f09ba 100644 --- a/plugins/catalog-backend-module-ldap/CHANGELOG.md +++ b/plugins/catalog-backend-module-ldap/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-catalog-backend-module-ldap +## 0.5.10-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/plugin-catalog-backend@1.8.0-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.5.10-next.1 ### Patch Changes diff --git a/plugins/catalog-backend-module-ldap/package.json b/plugins/catalog-backend-module-ldap/package.json index eb8bbd1f97..2cf1135693 100644 --- a/plugins/catalog-backend-module-ldap/package.json +++ b/plugins/catalog-backend-module-ldap/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-ldap", "description": "A Backstage catalog backend module that helps integrate towards LDAP", - "version": "0.5.10-next.1", + "version": "0.5.10-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-msgraph/CHANGELOG.md b/plugins/catalog-backend-module-msgraph/CHANGELOG.md index 0d1f93299f..dc1a32f25a 100644 --- a/plugins/catalog-backend-module-msgraph/CHANGELOG.md +++ b/plugins/catalog-backend-module-msgraph/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-catalog-backend-module-msgraph +## 0.5.2-next.2 + +### Patch Changes + +- 26eef93c547: Fixed msgraph catalog backend to use user.select option when fetching user from AzureAD +- Updated dependencies + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/plugin-catalog-backend@1.8.0-next.2 + - @backstage/plugin-catalog-node@1.3.4-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.5.2-next.1 ### Patch Changes diff --git a/plugins/catalog-backend-module-msgraph/package.json b/plugins/catalog-backend-module-msgraph/package.json index 369daa1c6b..22c2a422d2 100644 --- a/plugins/catalog-backend-module-msgraph/package.json +++ b/plugins/catalog-backend-module-msgraph/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-msgraph", "description": "A Backstage catalog backend module that helps integrate towards Microsoft Graph", - "version": "0.5.2-next.1", + "version": "0.5.2-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-openapi/CHANGELOG.md b/plugins/catalog-backend-module-openapi/CHANGELOG.md index 954eff2c98..8bf478947a 100644 --- a/plugins/catalog-backend-module-openapi/CHANGELOG.md +++ b/plugins/catalog-backend-module-openapi/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-catalog-backend-module-openapi +## 0.1.9-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/plugin-catalog-backend@1.8.0-next.2 + - @backstage/plugin-catalog-node@1.3.4-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + ## 0.1.9-next.1 ### Patch Changes diff --git a/plugins/catalog-backend-module-openapi/package.json b/plugins/catalog-backend-module-openapi/package.json index 691581bf77..fee080d1bf 100644 --- a/plugins/catalog-backend-module-openapi/package.json +++ b/plugins/catalog-backend-module-openapi/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-openapi", "description": "A Backstage catalog backend module that helps with OpenAPI specifications", - "version": "0.1.9-next.1", + "version": "0.1.9-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-puppetdb/CHANGELOG.md b/plugins/catalog-backend-module-puppetdb/CHANGELOG.md new file mode 100644 index 0000000000..5bc50ae148 --- /dev/null +++ b/plugins/catalog-backend-module-puppetdb/CHANGELOG.md @@ -0,0 +1,15 @@ +# @backstage/plugin-catalog-backend-module-puppetdb + +## 0.1.0-next.0 + +### Minor Changes + +- a1efcf9a658: Initial version of the plugin. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/plugin-catalog-backend@1.8.0-next.2 + - @backstage/config@1.0.7-next.0 diff --git a/plugins/catalog-backend-module-puppetdb/package.json b/plugins/catalog-backend-module-puppetdb/package.json index b6539dbbe6..861b535f4d 100644 --- a/plugins/catalog-backend-module-puppetdb/package.json +++ b/plugins/catalog-backend-module-puppetdb/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-puppetdb", "description": "A Backstage catalog backend module that helps integrate towards PuppetDB", - "version": "0.0.1", + "version": "0.1.0-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend/CHANGELOG.md b/plugins/catalog-backend/CHANGELOG.md index cbb5dd0fd4..1cc3b3620a 100644 --- a/plugins/catalog-backend/CHANGELOG.md +++ b/plugins/catalog-backend/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-catalog-backend +## 1.8.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/plugin-permission-node@0.7.6-next.2 + - @backstage/plugin-catalog-node@1.3.4-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + ## 1.8.0-next.1 ### Patch Changes diff --git a/plugins/catalog-backend/package.json b/plugins/catalog-backend/package.json index 5d221f2f41..35eac97cc1 100644 --- a/plugins/catalog-backend/package.json +++ b/plugins/catalog-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend", "description": "The Backstage backend plugin that provides the Backstage catalog", - "version": "1.8.0-next.1", + "version": "1.8.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-customized/CHANGELOG.md b/plugins/catalog-customized/CHANGELOG.md index 1b30333d89..654672a156 100644 --- a/plugins/catalog-customized/CHANGELOG.md +++ b/plugins/catalog-customized/CHANGELOG.md @@ -1,5 +1,13 @@ # @internal/plugin-catalog-customized +## 0.0.8-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/plugin-catalog@1.9.0-next.2 + ## 0.0.8-next.1 ### Patch Changes diff --git a/plugins/catalog-customized/package.json b/plugins/catalog-customized/package.json index b0b4b7aba3..20ef38355b 100644 --- a/plugins/catalog-customized/package.json +++ b/plugins/catalog-customized/package.json @@ -1,7 +1,7 @@ { "name": "@internal/plugin-catalog-customized", "description": "The internal Backstage Customizable plugin for browsing the Backstage catalog", - "version": "0.0.8-next.1", + "version": "0.0.8-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-graph/CHANGELOG.md b/plugins/catalog-graph/CHANGELOG.md index 418ae1f83a..bd0a9d7c76 100644 --- a/plugins/catalog-graph/CHANGELOG.md +++ b/plugins/catalog-graph/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-catalog-graph +## 0.2.28-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.2.28-next.1 ### Patch Changes diff --git a/plugins/catalog-graph/package.json b/plugins/catalog-graph/package.json index 2947b62b8c..ab7e7e78a9 100644 --- a/plugins/catalog-graph/package.json +++ b/plugins/catalog-graph/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-graph", - "version": "0.2.28-next.1", + "version": "0.2.28-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-import/CHANGELOG.md b/plugins/catalog-import/CHANGELOG.md index d8eac64d15..0451769b82 100644 --- a/plugins/catalog-import/CHANGELOG.md +++ b/plugins/catalog-import/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-catalog-import +## 0.9.6-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/integration-react@1.1.11-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + ## 0.9.6-next.1 ### Patch Changes diff --git a/plugins/catalog-import/package.json b/plugins/catalog-import/package.json index 6721a5bbd9..baddab4656 100644 --- a/plugins/catalog-import/package.json +++ b/plugins/catalog-import/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-import", "description": "A Backstage plugin the helps you import entities into your catalog", - "version": "0.9.6-next.1", + "version": "0.9.6-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-node/CHANGELOG.md b/plugins/catalog-node/CHANGELOG.md index d1b629247f..8ed02981ca 100644 --- a/plugins/catalog-node/CHANGELOG.md +++ b/plugins/catalog-node/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/plugin-catalog-node +## 1.3.4-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.4.1-next.2 + ## 1.3.4-next.1 ### Patch Changes diff --git a/plugins/catalog-node/package.json b/plugins/catalog-node/package.json index 677463c52b..d5ad3b86ea 100644 --- a/plugins/catalog-node/package.json +++ b/plugins/catalog-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-node", "description": "The plugin-catalog-node module for @backstage/plugin-catalog-backend", - "version": "1.3.4-next.1", + "version": "1.3.4-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-react/CHANGELOG.md b/plugins/catalog-react/CHANGELOG.md index e1b9da465e..4d8acf0936 100644 --- a/plugins/catalog-react/CHANGELOG.md +++ b/plugins/catalog-react/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-catalog-react +## 1.4.0-next.2 + +### Patch Changes + +- 65454876fb2: Minor API report tweaks +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/plugin-permission-react@0.4.11-next.2 + - @backstage/integration@1.4.3-next.0 + ## 1.4.0-next.1 ### Patch Changes diff --git a/plugins/catalog-react/package.json b/plugins/catalog-react/package.json index 81f91374e6..8f0b9627c7 100644 --- a/plugins/catalog-react/package.json +++ b/plugins/catalog-react/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-react", "description": "A frontend library that helps other Backstage plugins interact with the catalog", - "version": "1.4.0-next.1", + "version": "1.4.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog/CHANGELOG.md b/plugins/catalog/CHANGELOG.md index 0b3ade1136..873c90de07 100644 --- a/plugins/catalog/CHANGELOG.md +++ b/plugins/catalog/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-catalog +## 1.9.0-next.2 + +### Minor Changes + +- 23cc40039c0: allow entity switch to render all cases that match the condition + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/plugin-search-react@1.5.1-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/integration-react@1.1.11-next.2 + ## 1.9.0-next.1 ### Minor Changes diff --git a/plugins/catalog/package.json b/plugins/catalog/package.json index c65cfccfaa..c66ae8fb5e 100644 --- a/plugins/catalog/package.json +++ b/plugins/catalog/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog", "description": "The Backstage plugin for browsing the Backstage catalog", - "version": "1.9.0-next.1", + "version": "1.9.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/cicd-statistics-module-gitlab/CHANGELOG.md b/plugins/cicd-statistics-module-gitlab/CHANGELOG.md index dc47a327c0..55ec192258 100644 --- a/plugins/cicd-statistics-module-gitlab/CHANGELOG.md +++ b/plugins/cicd-statistics-module-gitlab/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-cicd-statistics-module-gitlab +## 0.1.12-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/plugin-cicd-statistics@0.1.18-next.2 + ## 0.1.12-next.1 ### Patch Changes diff --git a/plugins/cicd-statistics-module-gitlab/package.json b/plugins/cicd-statistics-module-gitlab/package.json index c5b999fefb..38de7c6799 100644 --- a/plugins/cicd-statistics-module-gitlab/package.json +++ b/plugins/cicd-statistics-module-gitlab/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-cicd-statistics-module-gitlab", "description": "CI/CD Statistics plugin module; Gitlab CICD", - "version": "0.1.12-next.1", + "version": "0.1.12-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/cicd-statistics/CHANGELOG.md b/plugins/cicd-statistics/CHANGELOG.md index 37deb19ea9..97434f99c7 100644 --- a/plugins/cicd-statistics/CHANGELOG.md +++ b/plugins/cicd-statistics/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-cicd-statistics +## 0.1.18-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.1.18-next.1 ### Patch Changes diff --git a/plugins/cicd-statistics/package.json b/plugins/cicd-statistics/package.json index 6078d3a641..8262235489 100644 --- a/plugins/cicd-statistics/package.json +++ b/plugins/cicd-statistics/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-cicd-statistics", "description": "A frontend plugin visualizing CI/CD pipeline statistics (build time)", - "version": "0.1.18-next.1", + "version": "0.1.18-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/circleci/CHANGELOG.md b/plugins/circleci/CHANGELOG.md index e91f34eb87..c43162fe14 100644 --- a/plugins/circleci/CHANGELOG.md +++ b/plugins/circleci/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-circleci +## 0.3.16-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.3.16-next.1 ### Patch Changes diff --git a/plugins/circleci/package.json b/plugins/circleci/package.json index 1ba2a8f7b1..55d02ce8bd 100644 --- a/plugins/circleci/package.json +++ b/plugins/circleci/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-circleci", "description": "A Backstage plugin that integrates towards Circle CI", - "version": "0.3.16-next.1", + "version": "0.3.16-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/cloudbuild/CHANGELOG.md b/plugins/cloudbuild/CHANGELOG.md index c5c915d5a4..bc5f71d8e1 100644 --- a/plugins/cloudbuild/CHANGELOG.md +++ b/plugins/cloudbuild/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-cloudbuild +## 0.3.16-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.3.16-next.1 ### Patch Changes diff --git a/plugins/cloudbuild/package.json b/plugins/cloudbuild/package.json index f5787447c8..04fa511cb6 100644 --- a/plugins/cloudbuild/package.json +++ b/plugins/cloudbuild/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-cloudbuild", "description": "A Backstage plugin that integrates towards Google Cloud Build", - "version": "0.3.16-next.1", + "version": "0.3.16-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/code-climate/CHANGELOG.md b/plugins/code-climate/CHANGELOG.md index 90a9895eac..e98be293b8 100644 --- a/plugins/code-climate/CHANGELOG.md +++ b/plugins/code-climate/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-code-climate +## 0.1.16-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.1.16-next.1 ### Patch Changes diff --git a/plugins/code-climate/package.json b/plugins/code-climate/package.json index b6c2a04942..9890f8b95e 100644 --- a/plugins/code-climate/package.json +++ b/plugins/code-climate/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-code-climate", - "version": "0.1.16-next.1", + "version": "0.1.16-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/code-coverage-backend/CHANGELOG.md b/plugins/code-coverage-backend/CHANGELOG.md index b425cc02da..74336f32c8 100644 --- a/plugins/code-coverage-backend/CHANGELOG.md +++ b/plugins/code-coverage-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-code-coverage-backend +## 0.2.9-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + ## 0.2.9-next.1 ### Patch Changes diff --git a/plugins/code-coverage-backend/package.json b/plugins/code-coverage-backend/package.json index 9a060d1f0f..fca52bdebc 100644 --- a/plugins/code-coverage-backend/package.json +++ b/plugins/code-coverage-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-code-coverage-backend", "description": "A Backstage backend plugin that helps you keep track of your code coverage", - "version": "0.2.9-next.1", + "version": "0.2.9-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/code-coverage/CHANGELOG.md b/plugins/code-coverage/CHANGELOG.md index 73cabd8ca1..914768f638 100644 --- a/plugins/code-coverage/CHANGELOG.md +++ b/plugins/code-coverage/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-code-coverage +## 0.2.9-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.2.9-next.1 ### Patch Changes diff --git a/plugins/code-coverage/package.json b/plugins/code-coverage/package.json index ae2b03416b..cfdddfc6af 100644 --- a/plugins/code-coverage/package.json +++ b/plugins/code-coverage/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-code-coverage", "description": "A Backstage plugin that helps you keep track of your code coverage", - "version": "0.2.9-next.1", + "version": "0.2.9-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/codescene/CHANGELOG.md b/plugins/codescene/CHANGELOG.md index 610487334c..7390729c48 100644 --- a/plugins/codescene/CHANGELOG.md +++ b/plugins/codescene/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-codescene +## 0.1.11-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.1.11-next.1 ### Patch Changes diff --git a/plugins/codescene/package.json b/plugins/codescene/package.json index a4b1bf6d75..49cedd3bc4 100644 --- a/plugins/codescene/package.json +++ b/plugins/codescene/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-codescene", - "version": "0.1.11-next.1", + "version": "0.1.11-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/config-schema/CHANGELOG.md b/plugins/config-schema/CHANGELOG.md index def33080f2..5e0de80621 100644 --- a/plugins/config-schema/CHANGELOG.md +++ b/plugins/config-schema/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-config-schema +## 0.1.39-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.1.39-next.1 ### Patch Changes diff --git a/plugins/config-schema/package.json b/plugins/config-schema/package.json index bb0b43729b..730265cbea 100644 --- a/plugins/config-schema/package.json +++ b/plugins/config-schema/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-config-schema", "description": "A Backstage plugin that lets you browse the configuration schema of your app", - "version": "0.1.39-next.1", + "version": "0.1.39-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/cost-insights/CHANGELOG.md b/plugins/cost-insights/CHANGELOG.md index d673749859..f108804cb6 100644 --- a/plugins/cost-insights/CHANGELOG.md +++ b/plugins/cost-insights/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-cost-insights +## 0.12.5-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.12.5-next.1 ### Patch Changes diff --git a/plugins/cost-insights/package.json b/plugins/cost-insights/package.json index f2a907dfb3..aabd4d340d 100644 --- a/plugins/cost-insights/package.json +++ b/plugins/cost-insights/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-cost-insights", "description": "A Backstage plugin that helps you keep track of your cloud spend", - "version": "0.12.5-next.1", + "version": "0.12.5-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/dynatrace/CHANGELOG.md b/plugins/dynatrace/CHANGELOG.md index 4949fd5e16..402ee43c1e 100644 --- a/plugins/dynatrace/CHANGELOG.md +++ b/plugins/dynatrace/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-dynatrace +## 3.0.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 3.0.0-next.1 ### Patch Changes diff --git a/plugins/dynatrace/package.json b/plugins/dynatrace/package.json index 49c408fff3..c66ef32c7b 100644 --- a/plugins/dynatrace/package.json +++ b/plugins/dynatrace/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-dynatrace", - "version": "3.0.0-next.1", + "version": "3.0.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/entity-feedback-backend/CHANGELOG.md b/plugins/entity-feedback-backend/CHANGELOG.md index f0acfaef30..cac724d7ef 100644 --- a/plugins/entity-feedback-backend/CHANGELOG.md +++ b/plugins/entity-feedback-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-entity-feedback-backend +## 0.1.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.2.12-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.1.1-next.1 ### Patch Changes diff --git a/plugins/entity-feedback-backend/package.json b/plugins/entity-feedback-backend/package.json index 9ac805295e..b482fdb212 100644 --- a/plugins/entity-feedback-backend/package.json +++ b/plugins/entity-feedback-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-entity-feedback-backend", - "version": "0.1.1-next.1", + "version": "0.1.1-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/entity-feedback/CHANGELOG.md b/plugins/entity-feedback/CHANGELOG.md index 23016c805f..72cb7b272a 100644 --- a/plugins/entity-feedback/CHANGELOG.md +++ b/plugins/entity-feedback/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-entity-feedback +## 0.1.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.1.1-next.1 ### Patch Changes diff --git a/plugins/entity-feedback/package.json b/plugins/entity-feedback/package.json index da0bc0b0ca..760b192440 100644 --- a/plugins/entity-feedback/package.json +++ b/plugins/entity-feedback/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-entity-feedback", - "version": "0.1.1-next.1", + "version": "0.1.1-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/entity-validation/CHANGELOG.md b/plugins/entity-validation/CHANGELOG.md index cd37ad05f9..43ecb6527d 100644 --- a/plugins/entity-validation/CHANGELOG.md +++ b/plugins/entity-validation/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-entity-validation +## 0.1.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.1.1-next.1 ### Patch Changes diff --git a/plugins/entity-validation/package.json b/plugins/entity-validation/package.json index 33f0d8fc60..81c13cc46b 100644 --- a/plugins/entity-validation/package.json +++ b/plugins/entity-validation/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-entity-validation", - "version": "0.1.1-next.1", + "version": "0.1.1-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-backend-module-aws-sqs/CHANGELOG.md b/plugins/events-backend-module-aws-sqs/CHANGELOG.md index e80ae855d6..0e5659c538 100644 --- a/plugins/events-backend-module-aws-sqs/CHANGELOG.md +++ b/plugins/events-backend-module-aws-sqs/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-events-backend-module-aws-sqs +## 0.1.5-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/plugin-events-node@0.2.4-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.1.5-next.1 ### Patch Changes diff --git a/plugins/events-backend-module-aws-sqs/package.json b/plugins/events-backend-module-aws-sqs/package.json index 050e13a15f..9278099801 100644 --- a/plugins/events-backend-module-aws-sqs/package.json +++ b/plugins/events-backend-module-aws-sqs/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-events-backend-module-aws-sqs", - "version": "0.1.5-next.1", + "version": "0.1.5-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-backend-module-azure/CHANGELOG.md b/plugins/events-backend-module-azure/CHANGELOG.md index df7cfc4aa9..159603d965 100644 --- a/plugins/events-backend-module-azure/CHANGELOG.md +++ b/plugins/events-backend-module-azure/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-events-backend-module-azure +## 0.1.5-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/plugin-events-node@0.2.4-next.2 + ## 0.1.5-next.1 ### Patch Changes diff --git a/plugins/events-backend-module-azure/package.json b/plugins/events-backend-module-azure/package.json index ca0e0e614f..ef00f0f3b9 100644 --- a/plugins/events-backend-module-azure/package.json +++ b/plugins/events-backend-module-azure/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-events-backend-module-azure", - "version": "0.1.5-next.1", + "version": "0.1.5-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-backend-module-bitbucket-cloud/CHANGELOG.md b/plugins/events-backend-module-bitbucket-cloud/CHANGELOG.md index 5f2a679c67..9cf0d0a70e 100644 --- a/plugins/events-backend-module-bitbucket-cloud/CHANGELOG.md +++ b/plugins/events-backend-module-bitbucket-cloud/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-events-backend-module-bitbucket-cloud +## 0.1.5-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/plugin-events-node@0.2.4-next.2 + ## 0.1.5-next.1 ### Patch Changes diff --git a/plugins/events-backend-module-bitbucket-cloud/package.json b/plugins/events-backend-module-bitbucket-cloud/package.json index 44849ff0fc..fa7dba892e 100644 --- a/plugins/events-backend-module-bitbucket-cloud/package.json +++ b/plugins/events-backend-module-bitbucket-cloud/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-events-backend-module-bitbucket-cloud", - "version": "0.1.5-next.1", + "version": "0.1.5-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-backend-module-gerrit/CHANGELOG.md b/plugins/events-backend-module-gerrit/CHANGELOG.md index 263fe8ac5b..accd659217 100644 --- a/plugins/events-backend-module-gerrit/CHANGELOG.md +++ b/plugins/events-backend-module-gerrit/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-events-backend-module-gerrit +## 0.1.5-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/plugin-events-node@0.2.4-next.2 + ## 0.1.5-next.1 ### Patch Changes diff --git a/plugins/events-backend-module-gerrit/package.json b/plugins/events-backend-module-gerrit/package.json index 3a407cb786..de5d104781 100644 --- a/plugins/events-backend-module-gerrit/package.json +++ b/plugins/events-backend-module-gerrit/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-events-backend-module-gerrit", - "version": "0.1.5-next.1", + "version": "0.1.5-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-backend-module-github/CHANGELOG.md b/plugins/events-backend-module-github/CHANGELOG.md index ca28508b5c..b531c5db52 100644 --- a/plugins/events-backend-module-github/CHANGELOG.md +++ b/plugins/events-backend-module-github/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-events-backend-module-github +## 0.1.5-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/plugin-events-node@0.2.4-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.1.5-next.1 ### Patch Changes diff --git a/plugins/events-backend-module-github/package.json b/plugins/events-backend-module-github/package.json index e19f5a66e1..4a010f5841 100644 --- a/plugins/events-backend-module-github/package.json +++ b/plugins/events-backend-module-github/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-events-backend-module-github", - "version": "0.1.5-next.1", + "version": "0.1.5-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-backend-module-gitlab/CHANGELOG.md b/plugins/events-backend-module-gitlab/CHANGELOG.md index ea0787ca23..f992585219 100644 --- a/plugins/events-backend-module-gitlab/CHANGELOG.md +++ b/plugins/events-backend-module-gitlab/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-events-backend-module-gitlab +## 0.1.5-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/plugin-events-node@0.2.4-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.1.5-next.1 ### Patch Changes diff --git a/plugins/events-backend-module-gitlab/package.json b/plugins/events-backend-module-gitlab/package.json index 4e9510ad80..917f9fdb89 100644 --- a/plugins/events-backend-module-gitlab/package.json +++ b/plugins/events-backend-module-gitlab/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-events-backend-module-gitlab", - "version": "0.1.5-next.1", + "version": "0.1.5-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-backend-test-utils/CHANGELOG.md b/plugins/events-backend-test-utils/CHANGELOG.md index 73b92152bd..aaf14aa68b 100644 --- a/plugins/events-backend-test-utils/CHANGELOG.md +++ b/plugins/events-backend-test-utils/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/plugin-events-backend-test-utils +## 0.1.5-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-events-node@0.2.4-next.2 + ## 0.1.5-next.1 ### Patch Changes diff --git a/plugins/events-backend-test-utils/package.json b/plugins/events-backend-test-utils/package.json index 115645436b..67d6671497 100644 --- a/plugins/events-backend-test-utils/package.json +++ b/plugins/events-backend-test-utils/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-events-backend-test-utils", "description": "The plugin-events-backend-test-utils for @backstage/plugin-events-node", - "version": "0.1.5-next.1", + "version": "0.1.5-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-backend/CHANGELOG.md b/plugins/events-backend/CHANGELOG.md index 9d78dc77c1..82fb0c6fc1 100644 --- a/plugins/events-backend/CHANGELOG.md +++ b/plugins/events-backend/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-events-backend +## 0.2.4-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/plugin-events-node@0.2.4-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.2.4-next.1 ### Patch Changes diff --git a/plugins/events-backend/package.json b/plugins/events-backend/package.json index 6e4b1684e5..4a51e56b6a 100644 --- a/plugins/events-backend/package.json +++ b/plugins/events-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-events-backend", - "version": "0.2.4-next.1", + "version": "0.2.4-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-node/CHANGELOG.md b/plugins/events-node/CHANGELOG.md index 0e1853b101..a19d9badc2 100644 --- a/plugins/events-node/CHANGELOG.md +++ b/plugins/events-node/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/plugin-events-node +## 0.2.4-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.4.1-next.2 + ## 0.2.4-next.1 ### Patch Changes diff --git a/plugins/events-node/package.json b/plugins/events-node/package.json index bd473abaa7..76eb1b2bf3 100644 --- a/plugins/events-node/package.json +++ b/plugins/events-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-events-node", "description": "The plugin-events-node module for @backstage/plugin-events-backend", - "version": "0.2.4-next.1", + "version": "0.2.4-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/example-todo-list-backend/CHANGELOG.md b/plugins/example-todo-list-backend/CHANGELOG.md index 628d6e419d..edde9b9d54 100644 --- a/plugins/example-todo-list-backend/CHANGELOG.md +++ b/plugins/example-todo-list-backend/CHANGELOG.md @@ -1,5 +1,15 @@ # @internal/plugin-todo-list-backend +## 1.0.11-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.2.12-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/config@1.0.7-next.0 + ## 1.0.11-next.1 ### Patch Changes diff --git a/plugins/example-todo-list-backend/package.json b/plugins/example-todo-list-backend/package.json index 562bbc0c7f..5579f748b2 100644 --- a/plugins/example-todo-list-backend/package.json +++ b/plugins/example-todo-list-backend/package.json @@ -1,6 +1,6 @@ { "name": "@internal/plugin-todo-list-backend", - "version": "1.0.11-next.1", + "version": "1.0.11-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/example-todo-list/CHANGELOG.md b/plugins/example-todo-list/CHANGELOG.md index 281928f88a..4739ab303e 100644 --- a/plugins/example-todo-list/CHANGELOG.md +++ b/plugins/example-todo-list/CHANGELOG.md @@ -1,5 +1,13 @@ # @internal/plugin-todo-list +## 1.0.11-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 1.0.11-next.1 ### Patch Changes diff --git a/plugins/example-todo-list/package.json b/plugins/example-todo-list/package.json index b572bfc215..a7366ce36f 100644 --- a/plugins/example-todo-list/package.json +++ b/plugins/example-todo-list/package.json @@ -1,6 +1,6 @@ { "name": "@internal/plugin-todo-list", - "version": "1.0.11-next.1", + "version": "1.0.11-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/explore-backend/CHANGELOG.md b/plugins/explore-backend/CHANGELOG.md index bb9023f693..7874062954 100644 --- a/plugins/explore-backend/CHANGELOG.md +++ b/plugins/explore-backend/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-explore-backend +## 0.0.5-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.0.5-next.1 ### Patch Changes diff --git a/plugins/explore-backend/package.json b/plugins/explore-backend/package.json index f16954ad47..dbdab19329 100644 --- a/plugins/explore-backend/package.json +++ b/plugins/explore-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-explore-backend", - "version": "0.0.5-next.1", + "version": "0.0.5-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/explore-react/CHANGELOG.md b/plugins/explore-react/CHANGELOG.md index 135369b215..1f68752e6e 100644 --- a/plugins/explore-react/CHANGELOG.md +++ b/plugins/explore-react/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/plugin-explore-react +## 0.0.27-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.0.27-next.1 ### Patch Changes diff --git a/plugins/explore-react/package.json b/plugins/explore-react/package.json index 26d5b8465c..6bb7ad5f0a 100644 --- a/plugins/explore-react/package.json +++ b/plugins/explore-react/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-explore-react", "description": "A frontend library for Backstage plugins that want to interact with the explore plugin", - "version": "0.0.27-next.1", + "version": "0.0.27-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/explore/CHANGELOG.md b/plugins/explore/CHANGELOG.md index 8942e1f286..72d93cf927 100644 --- a/plugins/explore/CHANGELOG.md +++ b/plugins/explore/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-explore +## 0.4.1-next.2 + +### Patch Changes + +- 65454876fb2: Minor API report tweaks +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/plugin-search-react@1.5.1-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/plugin-explore-react@0.0.27-next.2 + ## 0.4.1-next.1 ### Patch Changes diff --git a/plugins/explore/package.json b/plugins/explore/package.json index 15d642af77..c91671c816 100644 --- a/plugins/explore/package.json +++ b/plugins/explore/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-explore", "description": "A Backstage plugin for building an exploration page of your software ecosystem", - "version": "0.4.1-next.1", + "version": "0.4.1-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/firehydrant/CHANGELOG.md b/plugins/firehydrant/CHANGELOG.md index 81e7c9b7c7..1fbf09d8d4 100644 --- a/plugins/firehydrant/CHANGELOG.md +++ b/plugins/firehydrant/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-firehydrant +## 0.1.33-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.1.33-next.1 ### Patch Changes diff --git a/plugins/firehydrant/package.json b/plugins/firehydrant/package.json index 3f4b86a192..293679c2ea 100644 --- a/plugins/firehydrant/package.json +++ b/plugins/firehydrant/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-firehydrant", "description": "A Backstage plugin that integrates towards FireHydrant", - "version": "0.1.33-next.1", + "version": "0.1.33-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/fossa/CHANGELOG.md b/plugins/fossa/CHANGELOG.md index ec2b669edb..af439b6fd0 100644 --- a/plugins/fossa/CHANGELOG.md +++ b/plugins/fossa/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-fossa +## 0.2.48-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.2.48-next.1 ### Patch Changes diff --git a/plugins/fossa/package.json b/plugins/fossa/package.json index ff2d936880..1135c76bb1 100644 --- a/plugins/fossa/package.json +++ b/plugins/fossa/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-fossa", "description": "A Backstage plugin that integrates towards FOSSA", - "version": "0.2.48-next.1", + "version": "0.2.48-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/gcalendar/CHANGELOG.md b/plugins/gcalendar/CHANGELOG.md index 0f3c21ee25..2460deb73c 100644 --- a/plugins/gcalendar/CHANGELOG.md +++ b/plugins/gcalendar/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-gcalendar +## 0.3.12-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.3.12-next.1 ### Patch Changes diff --git a/plugins/gcalendar/package.json b/plugins/gcalendar/package.json index fc0c8961f5..83471340b8 100644 --- a/plugins/gcalendar/package.json +++ b/plugins/gcalendar/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-gcalendar", - "version": "0.3.12-next.1", + "version": "0.3.12-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/gcp-projects/CHANGELOG.md b/plugins/gcp-projects/CHANGELOG.md index 3857a37d0f..ecb3ec60fc 100644 --- a/plugins/gcp-projects/CHANGELOG.md +++ b/plugins/gcp-projects/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-gcp-projects +## 0.3.35-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.3.35-next.1 ### Patch Changes diff --git a/plugins/gcp-projects/package.json b/plugins/gcp-projects/package.json index e62870eb11..1029b37cd0 100644 --- a/plugins/gcp-projects/package.json +++ b/plugins/gcp-projects/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-gcp-projects", "description": "A Backstage plugin that helps you manage projects in GCP", - "version": "0.3.35-next.1", + "version": "0.3.35-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/git-release-manager/CHANGELOG.md b/plugins/git-release-manager/CHANGELOG.md index 52b1bfe29e..c97568b076 100644 --- a/plugins/git-release-manager/CHANGELOG.md +++ b/plugins/git-release-manager/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-git-release-manager +## 0.3.29-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/integration@1.4.3-next.0 + ## 0.3.29-next.1 ### Patch Changes diff --git a/plugins/git-release-manager/package.json b/plugins/git-release-manager/package.json index ce2577c7b9..0c9507bc24 100644 --- a/plugins/git-release-manager/package.json +++ b/plugins/git-release-manager/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-git-release-manager", "description": "A Backstage plugin that helps you manage releases in git", - "version": "0.3.29-next.1", + "version": "0.3.29-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/github-actions/CHANGELOG.md b/plugins/github-actions/CHANGELOG.md index 112d5ff49f..ffec353673 100644 --- a/plugins/github-actions/CHANGELOG.md +++ b/plugins/github-actions/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-github-actions +## 0.5.16-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/integration@1.4.3-next.0 + ## 0.5.16-next.1 ### Patch Changes diff --git a/plugins/github-actions/package.json b/plugins/github-actions/package.json index 6d8103b349..d26249218e 100644 --- a/plugins/github-actions/package.json +++ b/plugins/github-actions/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-github-actions", "description": "A Backstage plugin that integrates towards GitHub Actions", - "version": "0.5.16-next.1", + "version": "0.5.16-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/github-deployments/CHANGELOG.md b/plugins/github-deployments/CHANGELOG.md index 3aa2e656bc..cc8c6a838e 100644 --- a/plugins/github-deployments/CHANGELOG.md +++ b/plugins/github-deployments/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-github-deployments +## 0.1.47-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/integration-react@1.1.11-next.2 + - @backstage/integration@1.4.3-next.0 + ## 0.1.47-next.1 ### Patch Changes diff --git a/plugins/github-deployments/package.json b/plugins/github-deployments/package.json index 2c93cf3bc4..f9019b5029 100644 --- a/plugins/github-deployments/package.json +++ b/plugins/github-deployments/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-github-deployments", "description": "A Backstage plugin that integrates towards GitHub Deployments", - "version": "0.1.47-next.1", + "version": "0.1.47-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/github-issues/CHANGELOG.md b/plugins/github-issues/CHANGELOG.md index 6a4910e4af..5a440a28f3 100644 --- a/plugins/github-issues/CHANGELOG.md +++ b/plugins/github-issues/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-github-issues +## 0.2.5-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/integration@1.4.3-next.0 + ## 0.2.5-next.1 ### Patch Changes diff --git a/plugins/github-issues/package.json b/plugins/github-issues/package.json index 6192130475..83e457a606 100644 --- a/plugins/github-issues/package.json +++ b/plugins/github-issues/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-github-issues", - "version": "0.2.5-next.1", + "version": "0.2.5-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/github-pull-requests-board/CHANGELOG.md b/plugins/github-pull-requests-board/CHANGELOG.md index 38abb67517..ae15428eed 100644 --- a/plugins/github-pull-requests-board/CHANGELOG.md +++ b/plugins/github-pull-requests-board/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-github-pull-requests-board +## 0.1.10-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/integration@1.4.3-next.0 + ## 0.1.10-next.1 ### Patch Changes diff --git a/plugins/github-pull-requests-board/package.json b/plugins/github-pull-requests-board/package.json index 5872f0608d..ff5393988b 100644 --- a/plugins/github-pull-requests-board/package.json +++ b/plugins/github-pull-requests-board/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-github-pull-requests-board", "description": "A Backstage plugin that allows you to see all open Pull Requests for all the repositories owned by your team", - "version": "0.1.10-next.1", + "version": "0.1.10-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/gitops-profiles/CHANGELOG.md b/plugins/gitops-profiles/CHANGELOG.md index a276f24d9e..8522e1e16c 100644 --- a/plugins/gitops-profiles/CHANGELOG.md +++ b/plugins/gitops-profiles/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-gitops-profiles +## 0.3.34-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.3.34-next.1 ### Patch Changes diff --git a/plugins/gitops-profiles/package.json b/plugins/gitops-profiles/package.json index c12c487f24..291b73b308 100644 --- a/plugins/gitops-profiles/package.json +++ b/plugins/gitops-profiles/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-gitops-profiles", "description": "A Backstage plugin that helps you manage GitOps profiles", - "version": "0.3.34-next.1", + "version": "0.3.34-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/gocd/CHANGELOG.md b/plugins/gocd/CHANGELOG.md index 68cdfced64..71d7aa3af0 100644 --- a/plugins/gocd/CHANGELOG.md +++ b/plugins/gocd/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-gocd +## 0.1.22-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.1.22-next.1 ### Patch Changes diff --git a/plugins/gocd/package.json b/plugins/gocd/package.json index 9f1f299d29..f9789ffde4 100644 --- a/plugins/gocd/package.json +++ b/plugins/gocd/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-gocd", "description": "A Backstage plugin that integrates towards GoCD", - "version": "0.1.22-next.1", + "version": "0.1.22-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/graphiql/CHANGELOG.md b/plugins/graphiql/CHANGELOG.md index 85e7cf021d..f110d7b813 100644 --- a/plugins/graphiql/CHANGELOG.md +++ b/plugins/graphiql/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-graphiql +## 0.2.48-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.2.48-next.1 ### Patch Changes diff --git a/plugins/graphiql/package.json b/plugins/graphiql/package.json index 27a1ad7e07..a608ecb8db 100644 --- a/plugins/graphiql/package.json +++ b/plugins/graphiql/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-graphiql", "description": "Backstage plugin for browsing GraphQL APIs", - "version": "0.2.48-next.1", + "version": "0.2.48-next.2", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/plugins/graphql-backend/CHANGELOG.md b/plugins/graphql-backend/CHANGELOG.md index 79405f2635..0ab0918031 100644 --- a/plugins/graphql-backend/CHANGELOG.md +++ b/plugins/graphql-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-graphql-backend +## 0.1.33-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/plugin-catalog-graphql@0.3.19-next.1 + ## 0.1.33-next.1 ### Patch Changes diff --git a/plugins/graphql-backend/package.json b/plugins/graphql-backend/package.json index 5293a2dbcb..401119b052 100644 --- a/plugins/graphql-backend/package.json +++ b/plugins/graphql-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-graphql-backend", "description": "An experimental Backstage backend plugin for GraphQL", - "version": "0.1.33-next.1", + "version": "0.1.33-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/graphql-voyager/CHANGELOG.md b/plugins/graphql-voyager/CHANGELOG.md index 556bff7f8a..982dfec9dc 100644 --- a/plugins/graphql-voyager/CHANGELOG.md +++ b/plugins/graphql-voyager/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-graphql-voyager +## 0.1.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.1.1-next.1 ### Patch Changes diff --git a/plugins/graphql-voyager/package.json b/plugins/graphql-voyager/package.json index cfaf9bb449..5d2b809bb3 100644 --- a/plugins/graphql-voyager/package.json +++ b/plugins/graphql-voyager/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-graphql-voyager", "description": "Backstage plugin for GraphQL Voyager", - "version": "0.1.1-next.1", + "version": "0.1.1-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/home/CHANGELOG.md b/plugins/home/CHANGELOG.md index cbab27bfd6..51552a0135 100644 --- a/plugins/home/CHANGELOG.md +++ b/plugins/home/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-home +## 0.4.32-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.4.32-next.1 ### Patch Changes diff --git a/plugins/home/package.json b/plugins/home/package.json index 1c1d7da24d..2957625478 100644 --- a/plugins/home/package.json +++ b/plugins/home/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-home", "description": "A Backstage plugin that helps you build a home page", - "version": "0.4.32-next.1", + "version": "0.4.32-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/ilert/CHANGELOG.md b/plugins/ilert/CHANGELOG.md index 9b672bb3ab..e3d63efd71 100644 --- a/plugins/ilert/CHANGELOG.md +++ b/plugins/ilert/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-ilert +## 0.2.5-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.2.5-next.1 ### Patch Changes diff --git a/plugins/ilert/package.json b/plugins/ilert/package.json index ccfc5dbc3a..cc8183d6cb 100644 --- a/plugins/ilert/package.json +++ b/plugins/ilert/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-ilert", "description": "A Backstage plugin that integrates towards iLert", - "version": "0.2.5-next.1", + "version": "0.2.5-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/jenkins-backend/CHANGELOG.md b/plugins/jenkins-backend/CHANGELOG.md index 787e930973..f18f75d0a4 100644 --- a/plugins/jenkins-backend/CHANGELOG.md +++ b/plugins/jenkins-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-jenkins-backend +## 0.1.33-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.2.12-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.1.33-next.1 ### Patch Changes diff --git a/plugins/jenkins-backend/package.json b/plugins/jenkins-backend/package.json index 6228f6e83e..daf5073792 100644 --- a/plugins/jenkins-backend/package.json +++ b/plugins/jenkins-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-jenkins-backend", "description": "A Backstage backend plugin that integrates towards Jenkins", - "version": "0.1.33-next.1", + "version": "0.1.33-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/jenkins/CHANGELOG.md b/plugins/jenkins/CHANGELOG.md index 098d3154c4..fe8f1e2d13 100644 --- a/plugins/jenkins/CHANGELOG.md +++ b/plugins/jenkins/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-jenkins +## 0.7.15-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.7.15-next.1 ### Patch Changes diff --git a/plugins/jenkins/package.json b/plugins/jenkins/package.json index 59c3d92f6c..204d88db60 100644 --- a/plugins/jenkins/package.json +++ b/plugins/jenkins/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-jenkins", "description": "A Backstage plugin that integrates towards Jenkins", - "version": "0.7.15-next.1", + "version": "0.7.15-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/kafka-backend/CHANGELOG.md b/plugins/kafka-backend/CHANGELOG.md index 02c498e3fe..92bcf3de3f 100644 --- a/plugins/kafka-backend/CHANGELOG.md +++ b/plugins/kafka-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-kafka-backend +## 0.2.36-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.2.36-next.1 ### Patch Changes diff --git a/plugins/kafka-backend/package.json b/plugins/kafka-backend/package.json index 61e32c8177..38b1f60fcb 100644 --- a/plugins/kafka-backend/package.json +++ b/plugins/kafka-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-kafka-backend", "description": "A Backstage backend plugin that integrates towards Kafka", - "version": "0.2.36-next.1", + "version": "0.2.36-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/kafka/CHANGELOG.md b/plugins/kafka/CHANGELOG.md index d55d1f74ec..1706f206e7 100644 --- a/plugins/kafka/CHANGELOG.md +++ b/plugins/kafka/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-kafka +## 0.3.16-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.3.16-next.1 ### Patch Changes diff --git a/plugins/kafka/package.json b/plugins/kafka/package.json index 04cb3c0da0..017c14881a 100644 --- a/plugins/kafka/package.json +++ b/plugins/kafka/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-kafka", "description": "A Backstage plugin that integrates towards Kafka", - "version": "0.3.16-next.1", + "version": "0.3.16-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/kubernetes-backend/CHANGELOG.md b/plugins/kubernetes-backend/CHANGELOG.md index a502089e13..ac1287f8aa 100644 --- a/plugins/kubernetes-backend/CHANGELOG.md +++ b/plugins/kubernetes-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-kubernetes-backend +## 0.9.4-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.2.12-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.9.4-next.1 ### Patch Changes diff --git a/plugins/kubernetes-backend/package.json b/plugins/kubernetes-backend/package.json index 3e45bed285..ee7844c76e 100644 --- a/plugins/kubernetes-backend/package.json +++ b/plugins/kubernetes-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-kubernetes-backend", "description": "A Backstage backend plugin that integrates towards Kubernetes", - "version": "0.9.4-next.1", + "version": "0.9.4-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/kubernetes/CHANGELOG.md b/plugins/kubernetes/CHANGELOG.md index ea6a7f0732..05929a7d46 100644 --- a/plugins/kubernetes/CHANGELOG.md +++ b/plugins/kubernetes/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-kubernetes +## 0.7.9-next.2 + +### Patch Changes + +- 8adeb19b37d: GitLab can now be used as an `oidcTokenProvider` for Kubernetes clusters +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.7.9-next.1 ### Patch Changes diff --git a/plugins/kubernetes/package.json b/plugins/kubernetes/package.json index 39d4cfdec6..ed806ee521 100644 --- a/plugins/kubernetes/package.json +++ b/plugins/kubernetes/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-kubernetes", "description": "A Backstage plugin that integrates towards Kubernetes", - "version": "0.7.9-next.1", + "version": "0.7.9-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/lighthouse-backend/CHANGELOG.md b/plugins/lighthouse-backend/CHANGELOG.md index 9eac651564..0caf949bd6 100644 --- a/plugins/lighthouse-backend/CHANGELOG.md +++ b/plugins/lighthouse-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-lighthouse-backend +## 0.1.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.1.1-next.1 ### Patch Changes diff --git a/plugins/lighthouse-backend/package.json b/plugins/lighthouse-backend/package.json index cb70cc6746..7fa51b3446 100644 --- a/plugins/lighthouse-backend/package.json +++ b/plugins/lighthouse-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-lighthouse-backend", "description": "Backend functionalities for lighthouse", - "version": "0.1.1-next.1", + "version": "0.1.1-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/lighthouse/CHANGELOG.md b/plugins/lighthouse/CHANGELOG.md index 219a59b025..f326707dfa 100644 --- a/plugins/lighthouse/CHANGELOG.md +++ b/plugins/lighthouse/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-lighthouse +## 0.4.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.4.1-next.1 ### Patch Changes diff --git a/plugins/lighthouse/package.json b/plugins/lighthouse/package.json index 6928c32e6a..3fcb24986d 100644 --- a/plugins/lighthouse/package.json +++ b/plugins/lighthouse/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-lighthouse", "description": "A Backstage plugin that integrates towards Lighthouse", - "version": "0.4.1-next.1", + "version": "0.4.1-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/linguist-backend/CHANGELOG.md b/plugins/linguist-backend/CHANGELOG.md index c7ea736e5a..ac922c735b 100644 --- a/plugins/linguist-backend/CHANGELOG.md +++ b/plugins/linguist-backend/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-linguist-backend +## 0.2.0-next.2 + +### Patch Changes + +- 8a298b47240: Added support for linguist-js options using the linguistJSOptions in the plugin, the available config can be found [here](https://www.npmjs.com/package/linguist-js#API). +- Updated dependencies + - @backstage/plugin-auth-node@0.2.12-next.2 + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.2.0-next.1 ### Patch Changes diff --git a/plugins/linguist-backend/package.json b/plugins/linguist-backend/package.json index 15d4496bc8..01c4f12afa 100644 --- a/plugins/linguist-backend/package.json +++ b/plugins/linguist-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-linguist-backend", - "version": "0.2.0-next.1", + "version": "0.2.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/linguist/CHANGELOG.md b/plugins/linguist/CHANGELOG.md index 471fbf4042..3d83855122 100644 --- a/plugins/linguist/CHANGELOG.md +++ b/plugins/linguist/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-linguist +## 0.1.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.1.1-next.1 ### Patch Changes diff --git a/plugins/linguist/package.json b/plugins/linguist/package.json index a26813a1b4..276bb81574 100644 --- a/plugins/linguist/package.json +++ b/plugins/linguist/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-linguist", - "version": "0.1.1-next.1", + "version": "0.1.1-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/microsoft-calendar/CHANGELOG.md b/plugins/microsoft-calendar/CHANGELOG.md index 6347b1bcf7..69a93bc320 100644 --- a/plugins/microsoft-calendar/CHANGELOG.md +++ b/plugins/microsoft-calendar/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-microsoft-calendar +## 0.1.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.1.1-next.1 ### Patch Changes diff --git a/plugins/microsoft-calendar/package.json b/plugins/microsoft-calendar/package.json index 04f466598e..8d20a5de70 100644 --- a/plugins/microsoft-calendar/package.json +++ b/plugins/microsoft-calendar/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-microsoft-calendar", - "version": "0.1.1-next.1", + "version": "0.1.1-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/newrelic-dashboard/CHANGELOG.md b/plugins/newrelic-dashboard/CHANGELOG.md index 0cf1afb2f6..93b27ba385 100644 --- a/plugins/newrelic-dashboard/CHANGELOG.md +++ b/plugins/newrelic-dashboard/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-newrelic-dashboard +## 0.2.9-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.2.9-next.1 ### Patch Changes diff --git a/plugins/newrelic-dashboard/package.json b/plugins/newrelic-dashboard/package.json index 93b3af02d0..9958741b5f 100644 --- a/plugins/newrelic-dashboard/package.json +++ b/plugins/newrelic-dashboard/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-newrelic-dashboard", - "version": "0.2.9-next.1", + "version": "0.2.9-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/newrelic/CHANGELOG.md b/plugins/newrelic/CHANGELOG.md index 4c319caeed..bd0ef0d06f 100644 --- a/plugins/newrelic/CHANGELOG.md +++ b/plugins/newrelic/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-newrelic +## 0.3.34-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.3.34-next.1 ### Patch Changes diff --git a/plugins/newrelic/package.json b/plugins/newrelic/package.json index bacfc2e2f1..3ad74b3949 100644 --- a/plugins/newrelic/package.json +++ b/plugins/newrelic/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-newrelic", "description": "A Backstage plugin that integrates towards New Relic", - "version": "0.3.34-next.1", + "version": "0.3.34-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/octopus-deploy/CHANGELOG.md b/plugins/octopus-deploy/CHANGELOG.md index a9020f76c3..a3743722b8 100644 --- a/plugins/octopus-deploy/CHANGELOG.md +++ b/plugins/octopus-deploy/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-octopus-deploy +## 0.1.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.1.0-next.1 ### Patch Changes diff --git a/plugins/octopus-deploy/package.json b/plugins/octopus-deploy/package.json index c5cdf1fed4..9ba86f1587 100644 --- a/plugins/octopus-deploy/package.json +++ b/plugins/octopus-deploy/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-octopus-deploy", - "version": "0.1.0-next.1", + "version": "0.1.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/org-react/CHANGELOG.md b/plugins/org-react/CHANGELOG.md index c67228c438..cb59276110 100644 --- a/plugins/org-react/CHANGELOG.md +++ b/plugins/org-react/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-org-react +## 0.1.5-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.1.5-next.1 ### Patch Changes diff --git a/plugins/org-react/package.json b/plugins/org-react/package.json index 853ba7058d..a2e6623523 100644 --- a/plugins/org-react/package.json +++ b/plugins/org-react/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-org-react", - "version": "0.1.5-next.1", + "version": "0.1.5-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/org/CHANGELOG.md b/plugins/org/CHANGELOG.md index 15cb675035..4728f8be20 100644 --- a/plugins/org/CHANGELOG.md +++ b/plugins/org/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-org +## 0.6.6-next.2 + +### Patch Changes + +- a06fcac4040: Add styling to the `MembersListCard` and `ComponentsGrid` to handle overflow text. +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.6.6-next.1 ### Patch Changes diff --git a/plugins/org/package.json b/plugins/org/package.json index 08cadc11db..bd7ea9a344 100644 --- a/plugins/org/package.json +++ b/plugins/org/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-org", "description": "A Backstage plugin that helps you create entity pages for your organization", - "version": "0.6.6-next.1", + "version": "0.6.6-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/pagerduty/CHANGELOG.md b/plugins/pagerduty/CHANGELOG.md index e6e2519fba..37189de162 100644 --- a/plugins/pagerduty/CHANGELOG.md +++ b/plugins/pagerduty/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-pagerduty +## 0.5.9-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.5.9-next.1 ### Patch Changes diff --git a/plugins/pagerduty/package.json b/plugins/pagerduty/package.json index 9f57e8bfcd..0ae7623240 100644 --- a/plugins/pagerduty/package.json +++ b/plugins/pagerduty/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-pagerduty", "description": "A Backstage plugin that integrates towards PagerDuty", - "version": "0.5.9-next.1", + "version": "0.5.9-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/periskop-backend/CHANGELOG.md b/plugins/periskop-backend/CHANGELOG.md index 79c9e4c931..aa43870b1d 100644 --- a/plugins/periskop-backend/CHANGELOG.md +++ b/plugins/periskop-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-periskop-backend +## 0.1.14-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.1.14-next.1 ### Patch Changes diff --git a/plugins/periskop-backend/package.json b/plugins/periskop-backend/package.json index bc72277f12..11e38bcd36 100644 --- a/plugins/periskop-backend/package.json +++ b/plugins/periskop-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-periskop-backend", - "version": "0.1.14-next.1", + "version": "0.1.14-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/periskop/CHANGELOG.md b/plugins/periskop/CHANGELOG.md index 6be9142f0e..d41640b55c 100644 --- a/plugins/periskop/CHANGELOG.md +++ b/plugins/periskop/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-periskop +## 0.1.14-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.1.14-next.1 ### Patch Changes diff --git a/plugins/periskop/package.json b/plugins/periskop/package.json index 06d5827ebe..1e7ca292d1 100644 --- a/plugins/periskop/package.json +++ b/plugins/periskop/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-periskop", - "version": "0.1.14-next.1", + "version": "0.1.14-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/permission-backend/CHANGELOG.md b/plugins/permission-backend/CHANGELOG.md index d9062aa03f..a55c711386 100644 --- a/plugins/permission-backend/CHANGELOG.md +++ b/plugins/permission-backend/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-permission-backend +## 0.5.18-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.2.12-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/plugin-permission-node@0.7.6-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.5.18-next.1 ### Patch Changes diff --git a/plugins/permission-backend/package.json b/plugins/permission-backend/package.json index 734e8c63b0..a7202c9672 100644 --- a/plugins/permission-backend/package.json +++ b/plugins/permission-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-permission-backend", - "version": "0.5.18-next.1", + "version": "0.5.18-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/permission-node/CHANGELOG.md b/plugins/permission-node/CHANGELOG.md index c9c0fc5005..59052c2184 100644 --- a/plugins/permission-node/CHANGELOG.md +++ b/plugins/permission-node/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-permission-node +## 0.7.6-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.2.12-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.7.6-next.1 ### Patch Changes diff --git a/plugins/permission-node/package.json b/plugins/permission-node/package.json index 1a9dacffa0..92c0a7685a 100644 --- a/plugins/permission-node/package.json +++ b/plugins/permission-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-permission-node", "description": "Common permission and authorization utilities for backend plugins", - "version": "0.7.6-next.1", + "version": "0.7.6-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/permission-react/CHANGELOG.md b/plugins/permission-react/CHANGELOG.md index ce5346c846..31832e9a83 100644 --- a/plugins/permission-react/CHANGELOG.md +++ b/plugins/permission-react/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-permission-react +## 0.4.11-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.4.11-next.1 ### Patch Changes diff --git a/plugins/permission-react/package.json b/plugins/permission-react/package.json index f904830280..1d5d0713b7 100644 --- a/plugins/permission-react/package.json +++ b/plugins/permission-react/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-permission-react", - "version": "0.4.11-next.1", + "version": "0.4.11-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/playlist-backend/CHANGELOG.md b/plugins/playlist-backend/CHANGELOG.md index 7ababd2832..da2697188a 100644 --- a/plugins/playlist-backend/CHANGELOG.md +++ b/plugins/playlist-backend/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-playlist-backend +## 0.2.6-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.2.12-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/plugin-permission-node@0.7.6-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.2.6-next.1 ### Patch Changes diff --git a/plugins/playlist-backend/package.json b/plugins/playlist-backend/package.json index 990a651ccb..2d868b950a 100644 --- a/plugins/playlist-backend/package.json +++ b/plugins/playlist-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-playlist-backend", - "version": "0.2.6-next.1", + "version": "0.2.6-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/playlist/CHANGELOG.md b/plugins/playlist/CHANGELOG.md index 450fc880f2..bc0263fd00 100644 --- a/plugins/playlist/CHANGELOG.md +++ b/plugins/playlist/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-playlist +## 0.1.7-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/plugin-search-react@1.5.1-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/plugin-permission-react@0.4.11-next.2 + ## 0.1.7-next.1 ### Patch Changes diff --git a/plugins/playlist/package.json b/plugins/playlist/package.json index 18faa09cc8..445171f9b8 100644 --- a/plugins/playlist/package.json +++ b/plugins/playlist/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-playlist", - "version": "0.1.7-next.1", + "version": "0.1.7-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/proxy-backend/CHANGELOG.md b/plugins/proxy-backend/CHANGELOG.md index dc5562369c..8b649c44de 100644 --- a/plugins/proxy-backend/CHANGELOG.md +++ b/plugins/proxy-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-proxy-backend +## 0.2.37-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.2.37-next.1 ### Patch Changes diff --git a/plugins/proxy-backend/package.json b/plugins/proxy-backend/package.json index 72bbef0750..a7d320c37c 100644 --- a/plugins/proxy-backend/package.json +++ b/plugins/proxy-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-proxy-backend", "description": "A Backstage backend plugin that helps you set up proxy endpoints in the backend", - "version": "0.2.37-next.1", + "version": "0.2.37-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/rollbar-backend/CHANGELOG.md b/plugins/rollbar-backend/CHANGELOG.md index 2e1a515b5d..edda54dcd1 100644 --- a/plugins/rollbar-backend/CHANGELOG.md +++ b/plugins/rollbar-backend/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-rollbar-backend +## 0.1.40-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.1.40-next.1 ### Patch Changes diff --git a/plugins/rollbar-backend/package.json b/plugins/rollbar-backend/package.json index 1fcb4d288b..31d802dece 100644 --- a/plugins/rollbar-backend/package.json +++ b/plugins/rollbar-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-rollbar-backend", "description": "A Backstage backend plugin that integrates towards Rollbar", - "version": "0.1.40-next.1", + "version": "0.1.40-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/rollbar/CHANGELOG.md b/plugins/rollbar/CHANGELOG.md index df90e7f8bf..943db21cce 100644 --- a/plugins/rollbar/CHANGELOG.md +++ b/plugins/rollbar/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-rollbar +## 0.4.16-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.4.16-next.1 ### Patch Changes diff --git a/plugins/rollbar/package.json b/plugins/rollbar/package.json index ff4e1d3539..a3189c147d 100644 --- a/plugins/rollbar/package.json +++ b/plugins/rollbar/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-rollbar", "description": "A Backstage plugin that integrates towards Rollbar", - "version": "0.4.16-next.1", + "version": "0.4.16-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md b/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md index e7a96b1596..2dcb0eb279 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-scaffolder-backend-module-cookiecutter +## 0.2.18-next.2 + +### Patch Changes + +- 62414770ead: allow container runner to be undefined in cookiecutter plugin +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.12.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/plugin-scaffolder-node@0.1.1-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + ## 0.2.18-next.1 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-cookiecutter/package.json b/plugins/scaffolder-backend-module-cookiecutter/package.json index e0f2368664..373320191a 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/package.json +++ b/plugins/scaffolder-backend-module-cookiecutter/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder-backend-module-cookiecutter", "description": "A module for the scaffolder backend that lets you template projects using cookiecutter", - "version": "0.2.18-next.1", + "version": "0.2.18-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-backend-module-rails/CHANGELOG.md b/plugins/scaffolder-backend-module-rails/CHANGELOG.md index e816de1aa9..5c7fb1dc2d 100644 --- a/plugins/scaffolder-backend-module-rails/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-rails/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-scaffolder-backend-module-rails +## 0.4.11-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend@1.12.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/plugin-scaffolder-node@0.1.1-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + ## 0.4.11-next.1 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-rails/package.json b/plugins/scaffolder-backend-module-rails/package.json index 2ba80b2e32..be9d053340 100644 --- a/plugins/scaffolder-backend-module-rails/package.json +++ b/plugins/scaffolder-backend-module-rails/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder-backend-module-rails", "description": "A module for the scaffolder backend that lets you template projects using Rails", - "version": "0.4.11-next.1", + "version": "0.4.11-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-backend-module-sentry/CHANGELOG.md b/plugins/scaffolder-backend-module-sentry/CHANGELOG.md index e804b6c33b..ae6d8734c9 100644 --- a/plugins/scaffolder-backend-module-sentry/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-sentry/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-scaffolder-backend-module-sentry +## 0.1.3-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.1.1-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.1.3-next.1 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-sentry/package.json b/plugins/scaffolder-backend-module-sentry/package.json index acd7030e29..36f5139b28 100644 --- a/plugins/scaffolder-backend-module-sentry/package.json +++ b/plugins/scaffolder-backend-module-sentry/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-scaffolder-backend-module-sentry", - "version": "0.1.3-next.1", + "version": "0.1.3-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md b/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md index 786a2d1f2b..e87cf64167 100644 --- a/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-scaffolder-backend-module-yeoman +## 0.2.16-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.1.1-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.2.16-next.1 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-yeoman/package.json b/plugins/scaffolder-backend-module-yeoman/package.json index 82651cf781..01ba3f5eea 100644 --- a/plugins/scaffolder-backend-module-yeoman/package.json +++ b/plugins/scaffolder-backend-module-yeoman/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-scaffolder-backend-module-yeoman", - "version": "0.2.16-next.1", + "version": "0.2.16-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-backend/CHANGELOG.md b/plugins/scaffolder-backend/CHANGELOG.md index 2ffbda38db..65a827797f 100644 --- a/plugins/scaffolder-backend/CHANGELOG.md +++ b/plugins/scaffolder-backend/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-scaffolder-backend +## 1.12.0-next.2 + +### Patch Changes + +- 860de10fa67: Make identity valid if subject of token is a backstage server-2-server auth token +- 65454876fb2: Minor API report tweaks +- 9968f455921: catalog write action should allow any shape of object +- Updated dependencies + - @backstage/plugin-auth-node@0.2.12-next.2 + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/plugin-catalog-backend@1.8.0-next.2 + - @backstage/plugin-catalog-node@1.3.4-next.2 + - @backstage/plugin-scaffolder-node@0.1.1-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + ## 1.12.0-next.1 ### Minor Changes diff --git a/plugins/scaffolder-backend/package.json b/plugins/scaffolder-backend/package.json index bc4ecb8bf9..03f813b036 100644 --- a/plugins/scaffolder-backend/package.json +++ b/plugins/scaffolder-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder-backend", "description": "The Backstage backend plugin that helps you create new things", - "version": "1.12.0-next.1", + "version": "1.12.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-node/CHANGELOG.md b/plugins/scaffolder-node/CHANGELOG.md index 6668baa16e..37b9613524 100644 --- a/plugins/scaffolder-node/CHANGELOG.md +++ b/plugins/scaffolder-node/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/plugin-scaffolder-node +## 0.1.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.4.1-next.2 + ## 0.1.1-next.1 ### Patch Changes diff --git a/plugins/scaffolder-node/package.json b/plugins/scaffolder-node/package.json index ddb2f24083..8978c155bf 100644 --- a/plugins/scaffolder-node/package.json +++ b/plugins/scaffolder-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder-node", "description": "The plugin-scaffolder-node module for @backstage/plugin-scaffolder-backend", - "version": "0.1.1-next.1", + "version": "0.1.1-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-react/CHANGELOG.md b/plugins/scaffolder-react/CHANGELOG.md index d81194d2aa..25385e4816 100644 --- a/plugins/scaffolder-react/CHANGELOG.md +++ b/plugins/scaffolder-react/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-scaffolder-react +## 1.2.0-next.2 + +### Patch Changes + +- 65454876fb2: Minor API report tweaks +- 3c96e77b513: Make scaffolder adhere to page themes by using page `fontColor` consistently. If your theme overwrites template list or card headers, review those styles. +- d9893263ba9: scaffolder/next: Fix for steps without properties +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 1.2.0-next.1 ### Minor Changes diff --git a/plugins/scaffolder-react/package.json b/plugins/scaffolder-react/package.json index 2a22881306..4e0cb590e4 100644 --- a/plugins/scaffolder-react/package.json +++ b/plugins/scaffolder-react/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder-react", "description": "A frontend library that helps other Backstage plugins interact with the Scaffolder", - "version": "1.2.0-next.1", + "version": "1.2.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder/CHANGELOG.md b/plugins/scaffolder/CHANGELOG.md index a0a6d7b750..d3c377154e 100644 --- a/plugins/scaffolder/CHANGELOG.md +++ b/plugins/scaffolder/CHANGELOG.md @@ -1,5 +1,26 @@ # @backstage/plugin-scaffolder +## 1.12.0-next.2 + +### Minor Changes + +- 0d61fcca9c3: Update `EntityPicker` to use the fully qualified entity ref instead of the humanized version. + +### Patch Changes + +- 65454876fb2: Minor API report tweaks +- 3c96e77b513: Make scaffolder adhere to page themes by using page `fontColor` consistently. If your theme overwrites template list or card headers, review those styles. +- 0aae4596296: Fix the scaffolder validator for arrays when the item is a field in the object +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-scaffolder-react@1.2.0-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/integration-react@1.1.11-next.2 + - @backstage/plugin-permission-react@0.4.11-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + ## 1.12.0-next.1 ### Minor Changes diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json index 8258dceab9..7d939a3d1e 100644 --- a/plugins/scaffolder/package.json +++ b/plugins/scaffolder/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder", "description": "The Backstage plugin that helps you create new things", - "version": "1.12.0-next.1", + "version": "1.12.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search-backend-module-elasticsearch/CHANGELOG.md b/plugins/search-backend-module-elasticsearch/CHANGELOG.md index 5e1d423f65..8576e6602c 100644 --- a/plugins/search-backend-module-elasticsearch/CHANGELOG.md +++ b/plugins/search-backend-module-elasticsearch/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-search-backend-module-elasticsearch +## 1.1.4-next.2 + +### Patch Changes + +- 65454876fb2: Minor API report tweaks +- Updated dependencies + - @backstage/plugin-search-backend-node@1.1.4-next.2 + - @backstage/config@1.0.7-next.0 + ## 1.1.4-next.1 ### Patch Changes diff --git a/plugins/search-backend-module-elasticsearch/package.json b/plugins/search-backend-module-elasticsearch/package.json index 7dbc84251d..6520571ec6 100644 --- a/plugins/search-backend-module-elasticsearch/package.json +++ b/plugins/search-backend-module-elasticsearch/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-backend-module-elasticsearch", "description": "A module for the search backend that implements search using ElasticSearch", - "version": "1.1.4-next.1", + "version": "1.1.4-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search-backend-module-pg/CHANGELOG.md b/plugins/search-backend-module-pg/CHANGELOG.md index 2284fb17dd..db32c01817 100644 --- a/plugins/search-backend-module-pg/CHANGELOG.md +++ b/plugins/search-backend-module-pg/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-search-backend-module-pg +## 0.5.4-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/plugin-search-backend-node@1.1.4-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.5.4-next.1 ### Patch Changes diff --git a/plugins/search-backend-module-pg/package.json b/plugins/search-backend-module-pg/package.json index a9e09db620..c6513c8e27 100644 --- a/plugins/search-backend-module-pg/package.json +++ b/plugins/search-backend-module-pg/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-backend-module-pg", "description": "A module for the search backend that implements search using PostgreSQL", - "version": "0.5.4-next.1", + "version": "0.5.4-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search-backend-node/CHANGELOG.md b/plugins/search-backend-node/CHANGELOG.md index 87c8390e7c..5fcd3bd0fa 100644 --- a/plugins/search-backend-node/CHANGELOG.md +++ b/plugins/search-backend-node/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-search-backend-node +## 1.1.4-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + ## 1.1.4-next.1 ### Patch Changes diff --git a/plugins/search-backend-node/package.json b/plugins/search-backend-node/package.json index 593d459cb3..d86be92e92 100644 --- a/plugins/search-backend-node/package.json +++ b/plugins/search-backend-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-backend-node", "description": "A library for Backstage backend plugins that want to interact with the search backend plugin", - "version": "1.1.4-next.1", + "version": "1.1.4-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search-backend/CHANGELOG.md b/plugins/search-backend/CHANGELOG.md index 29bc3ea9d3..513ee4536a 100644 --- a/plugins/search-backend/CHANGELOG.md +++ b/plugins/search-backend/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-search-backend +## 1.2.4-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.2.12-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/plugin-permission-node@0.7.6-next.2 + - @backstage/plugin-search-backend-node@1.1.4-next.2 + - @backstage/config@1.0.7-next.0 + ## 1.2.4-next.1 ### Patch Changes diff --git a/plugins/search-backend/package.json b/plugins/search-backend/package.json index faadd54835..0baecca0a9 100644 --- a/plugins/search-backend/package.json +++ b/plugins/search-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-backend", "description": "The Backstage backend plugin that provides your backstage app with search", - "version": "1.2.4-next.1", + "version": "1.2.4-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search-react/CHANGELOG.md b/plugins/search-react/CHANGELOG.md index e1fb0049bf..9fc158de5d 100644 --- a/plugins/search-react/CHANGELOG.md +++ b/plugins/search-react/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-search-react +## 1.5.1-next.2 + +### Patch Changes + +- 65454876fb2: Minor API report tweaks +- 553f3c95011: Correctly disable next button in `SearchPagination` on last page +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 1.5.1-next.1 ### Patch Changes diff --git a/plugins/search-react/package.json b/plugins/search-react/package.json index edd00ca6cf..355191cb47 100644 --- a/plugins/search-react/package.json +++ b/plugins/search-react/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-search-react", - "version": "1.5.1-next.1", + "version": "1.5.1-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search/CHANGELOG.md b/plugins/search/CHANGELOG.md index e326f19ef4..3d02621576 100644 --- a/plugins/search/CHANGELOG.md +++ b/plugins/search/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-search +## 1.1.1-next.2 + +### Patch Changes + +- 65454876fb2: Minor API report tweaks +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/plugin-search-react@1.5.1-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/config@1.0.7-next.0 + ## 1.1.1-next.1 ### Patch Changes diff --git a/plugins/search/package.json b/plugins/search/package.json index e8aab6022d..353981cae1 100644 --- a/plugins/search/package.json +++ b/plugins/search/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search", "description": "The Backstage plugin that provides your backstage app with search", - "version": "1.1.1-next.1", + "version": "1.1.1-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/sentry/CHANGELOG.md b/plugins/sentry/CHANGELOG.md index abfdb54ce8..89b5d8312a 100644 --- a/plugins/sentry/CHANGELOG.md +++ b/plugins/sentry/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-sentry +## 0.5.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.5.1-next.1 ### Patch Changes diff --git a/plugins/sentry/package.json b/plugins/sentry/package.json index 9893994cf8..1139898926 100644 --- a/plugins/sentry/package.json +++ b/plugins/sentry/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-sentry", "description": "A Backstage plugin that integrates towards Sentry", - "version": "0.5.1-next.1", + "version": "0.5.1-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/shortcuts/CHANGELOG.md b/plugins/shortcuts/CHANGELOG.md index 4b00e77e28..2360461f73 100644 --- a/plugins/shortcuts/CHANGELOG.md +++ b/plugins/shortcuts/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-shortcuts +## 0.3.8-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.3.8-next.1 ### Patch Changes diff --git a/plugins/shortcuts/package.json b/plugins/shortcuts/package.json index bddd20e5b3..eb48088934 100644 --- a/plugins/shortcuts/package.json +++ b/plugins/shortcuts/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-shortcuts", "description": "A Backstage plugin that provides a shortcuts feature to the sidebar", - "version": "0.3.8-next.1", + "version": "0.3.8-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/sonarqube-backend/CHANGELOG.md b/plugins/sonarqube-backend/CHANGELOG.md index e44e90767b..f60f7bf047 100644 --- a/plugins/sonarqube-backend/CHANGELOG.md +++ b/plugins/sonarqube-backend/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-sonarqube-backend +## 0.1.8-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.1.8-next.1 ### Patch Changes diff --git a/plugins/sonarqube-backend/package.json b/plugins/sonarqube-backend/package.json index 0a25762ae4..d7de98d307 100644 --- a/plugins/sonarqube-backend/package.json +++ b/plugins/sonarqube-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-sonarqube-backend", - "version": "0.1.8-next.1", + "version": "0.1.8-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/sonarqube-react/CHANGELOG.md b/plugins/sonarqube-react/CHANGELOG.md index d3feb6b79d..6c7d5d41f2 100644 --- a/plugins/sonarqube-react/CHANGELOG.md +++ b/plugins/sonarqube-react/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/plugin-sonarqube-react +## 0.1.4-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.1.4-next.1 ### Patch Changes diff --git a/plugins/sonarqube-react/package.json b/plugins/sonarqube-react/package.json index 8700254987..d5266cd220 100644 --- a/plugins/sonarqube-react/package.json +++ b/plugins/sonarqube-react/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-sonarqube-react", - "version": "0.1.4-next.1", + "version": "0.1.4-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/sonarqube/CHANGELOG.md b/plugins/sonarqube/CHANGELOG.md index c632224252..6c6f69aaf8 100644 --- a/plugins/sonarqube/CHANGELOG.md +++ b/plugins/sonarqube/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-sonarqube +## 0.6.5-next.2 + +### Patch Changes + +- 65454876fb2: Minor API report tweaks +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/plugin-sonarqube-react@0.1.4-next.2 + ## 0.6.5-next.1 ### Patch Changes diff --git a/plugins/sonarqube/package.json b/plugins/sonarqube/package.json index 3775f6c30b..48d221e508 100644 --- a/plugins/sonarqube/package.json +++ b/plugins/sonarqube/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-sonarqube", "description": "", - "version": "0.6.5-next.1", + "version": "0.6.5-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/splunk-on-call/CHANGELOG.md b/plugins/splunk-on-call/CHANGELOG.md index 4c36b337e5..830c918ced 100644 --- a/plugins/splunk-on-call/CHANGELOG.md +++ b/plugins/splunk-on-call/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-splunk-on-call +## 0.4.5-next.2 + +### Patch Changes + +- 65454876fb2: Minor API report tweaks +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.4.5-next.1 ### Patch Changes diff --git a/plugins/splunk-on-call/package.json b/plugins/splunk-on-call/package.json index 4da3a55108..97a5357bd0 100644 --- a/plugins/splunk-on-call/package.json +++ b/plugins/splunk-on-call/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-splunk-on-call", "description": "A Backstage plugin that integrates towards Splunk On-Call", - "version": "0.4.5-next.1", + "version": "0.4.5-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/stack-overflow-backend/CHANGELOG.md b/plugins/stack-overflow-backend/CHANGELOG.md index c395fe7094..fab1416363 100644 --- a/plugins/stack-overflow-backend/CHANGELOG.md +++ b/plugins/stack-overflow-backend/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-stack-overflow-backend +## 0.1.12-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.1.12-next.1 ### Patch Changes diff --git a/plugins/stack-overflow-backend/package.json b/plugins/stack-overflow-backend/package.json index b3aa6573df..2dd405dc3b 100644 --- a/plugins/stack-overflow-backend/package.json +++ b/plugins/stack-overflow-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-stack-overflow-backend", - "version": "0.1.12-next.1", + "version": "0.1.12-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/stack-overflow/CHANGELOG.md b/plugins/stack-overflow/CHANGELOG.md index d69e9441b1..050900554d 100644 --- a/plugins/stack-overflow/CHANGELOG.md +++ b/plugins/stack-overflow/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-stack-overflow +## 0.1.12-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-search-react@1.5.1-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/plugin-home@0.4.32-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.1.12-next.1 ### Patch Changes diff --git a/plugins/stack-overflow/package.json b/plugins/stack-overflow/package.json index 3ad363962d..3675593181 100644 --- a/plugins/stack-overflow/package.json +++ b/plugins/stack-overflow/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-stack-overflow", - "version": "0.1.12-next.1", + "version": "0.1.12-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/stackstorm/CHANGELOG.md b/plugins/stackstorm/CHANGELOG.md index bbeb51a609..f68c853b7b 100644 --- a/plugins/stackstorm/CHANGELOG.md +++ b/plugins/stackstorm/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-stackstorm +## 0.1.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.1.0-next.1 ### Patch Changes diff --git a/plugins/stackstorm/package.json b/plugins/stackstorm/package.json index 61ac3da384..a1ba109d76 100644 --- a/plugins/stackstorm/package.json +++ b/plugins/stackstorm/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-stackstorm", "description": "A Backstage plugin that integrates towards StackStorm", - "version": "0.1.0-next.1", + "version": "0.1.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md b/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md index 3f8e02187c..12e6693589 100644 --- a/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md +++ b/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-tech-insights-backend-module-jsonfc +## 0.1.27-next.2 + +### Patch Changes + +- 65454876fb2: Minor API report tweaks +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/plugin-tech-insights-node@0.4.1-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.1.27-next.1 ### Patch Changes diff --git a/plugins/tech-insights-backend-module-jsonfc/package.json b/plugins/tech-insights-backend-module-jsonfc/package.json index 496cd1ec00..7d60ec0cdc 100644 --- a/plugins/tech-insights-backend-module-jsonfc/package.json +++ b/plugins/tech-insights-backend-module-jsonfc/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-tech-insights-backend-module-jsonfc", - "version": "0.1.27-next.1", + "version": "0.1.27-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/tech-insights-backend/CHANGELOG.md b/plugins/tech-insights-backend/CHANGELOG.md index 50bdd8f65d..c4e8061f05 100644 --- a/plugins/tech-insights-backend/CHANGELOG.md +++ b/plugins/tech-insights-backend/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-tech-insights-backend +## 0.5.9-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/plugin-tech-insights-node@0.4.1-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.5.9-next.1 ### Patch Changes diff --git a/plugins/tech-insights-backend/package.json b/plugins/tech-insights-backend/package.json index a7f868fbad..e11bf60e0d 100644 --- a/plugins/tech-insights-backend/package.json +++ b/plugins/tech-insights-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-tech-insights-backend", - "version": "0.5.9-next.1", + "version": "0.5.9-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/tech-insights-node/CHANGELOG.md b/plugins/tech-insights-node/CHANGELOG.md index e43a61629d..ed9f3667f0 100644 --- a/plugins/tech-insights-node/CHANGELOG.md +++ b/plugins/tech-insights-node/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-tech-insights-node +## 0.4.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.4.1-next.1 ### Patch Changes diff --git a/plugins/tech-insights-node/package.json b/plugins/tech-insights-node/package.json index 428341c54d..6a546f86c1 100644 --- a/plugins/tech-insights-node/package.json +++ b/plugins/tech-insights-node/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-tech-insights-node", - "version": "0.4.1-next.1", + "version": "0.4.1-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/tech-insights/CHANGELOG.md b/plugins/tech-insights/CHANGELOG.md index a1e75d80b7..e8d57b056f 100644 --- a/plugins/tech-insights/CHANGELOG.md +++ b/plugins/tech-insights/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-tech-insights +## 0.3.8-next.2 + +### Patch Changes + +- 65454876fb2: Minor API report tweaks +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.3.8-next.1 ### Patch Changes diff --git a/plugins/tech-insights/package.json b/plugins/tech-insights/package.json index 3eb7a5ae90..680641b1b0 100644 --- a/plugins/tech-insights/package.json +++ b/plugins/tech-insights/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-tech-insights", - "version": "0.3.8-next.1", + "version": "0.3.8-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/tech-radar/CHANGELOG.md b/plugins/tech-radar/CHANGELOG.md index 998d703860..4ad21662bd 100644 --- a/plugins/tech-radar/CHANGELOG.md +++ b/plugins/tech-radar/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-tech-radar +## 0.6.2-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.6.2-next.1 ### Patch Changes diff --git a/plugins/tech-radar/package.json b/plugins/tech-radar/package.json index 6f67def94c..273bd79255 100644 --- a/plugins/tech-radar/package.json +++ b/plugins/tech-radar/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-tech-radar", "description": "A Backstage plugin that lets you display a Tech Radar for your organization", - "version": "0.6.2-next.1", + "version": "0.6.2-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/techdocs-addons-test-utils/CHANGELOG.md b/plugins/techdocs-addons-test-utils/CHANGELOG.md index 4396148d7d..35dedb8a0b 100644 --- a/plugins/techdocs-addons-test-utils/CHANGELOG.md +++ b/plugins/techdocs-addons-test-utils/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-techdocs-addons-test-utils +## 1.0.11-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-techdocs-react@1.1.4-next.2 + - @backstage/plugin-search-react@1.5.1-next.2 + - @backstage/plugin-techdocs@1.6.0-next.2 + - @backstage/core-app-api@1.6.0-next.2 + - @backstage/plugin-catalog@1.9.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/integration-react@1.1.11-next.2 + - @backstage/test-utils@1.2.6-next.2 + ## 1.0.11-next.1 ### Patch Changes diff --git a/plugins/techdocs-addons-test-utils/package.json b/plugins/techdocs-addons-test-utils/package.json index 45aa1f6f04..8dc81b2cf7 100644 --- a/plugins/techdocs-addons-test-utils/package.json +++ b/plugins/techdocs-addons-test-utils/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-techdocs-addons-test-utils", - "version": "1.0.11-next.1", + "version": "1.0.11-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/techdocs-backend/CHANGELOG.md b/plugins/techdocs-backend/CHANGELOG.md index 0b3b0bad56..8e4be204db 100644 --- a/plugins/techdocs-backend/CHANGELOG.md +++ b/plugins/techdocs-backend/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-techdocs-backend +## 1.5.4-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-techdocs-node@1.6.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + ## 1.5.4-next.1 ### Patch Changes diff --git a/plugins/techdocs-backend/package.json b/plugins/techdocs-backend/package.json index dbc482db47..c9fff25b70 100644 --- a/plugins/techdocs-backend/package.json +++ b/plugins/techdocs-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-techdocs-backend", "description": "The Backstage backend plugin that renders technical documentation for your components", - "version": "1.5.4-next.1", + "version": "1.5.4-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/techdocs-module-addons-contrib/CHANGELOG.md b/plugins/techdocs-module-addons-contrib/CHANGELOG.md index 9c70b13dc7..69fa5d8cfd 100644 --- a/plugins/techdocs-module-addons-contrib/CHANGELOG.md +++ b/plugins/techdocs-module-addons-contrib/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-techdocs-module-addons-contrib +## 1.0.11-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-techdocs-react@1.1.4-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/integration-react@1.1.11-next.2 + - @backstage/integration@1.4.3-next.0 + ## 1.0.11-next.1 ### Patch Changes diff --git a/plugins/techdocs-module-addons-contrib/package.json b/plugins/techdocs-module-addons-contrib/package.json index 9089802b41..b5aebb262c 100644 --- a/plugins/techdocs-module-addons-contrib/package.json +++ b/plugins/techdocs-module-addons-contrib/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-techdocs-module-addons-contrib", "description": "Plugin module for contributed TechDocs Addons", - "version": "1.0.11-next.1", + "version": "1.0.11-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/techdocs-node/CHANGELOG.md b/plugins/techdocs-node/CHANGELOG.md index 5c13883594..28a11e4b57 100644 --- a/plugins/techdocs-node/CHANGELOG.md +++ b/plugins/techdocs-node/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-techdocs-node +## 1.6.0-next.2 + +### Patch Changes + +- 65454876fb2: Minor API report tweaks +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + - @backstage/integration-aws-node@0.1.2-next.0 + ## 1.6.0-next.1 ### Minor Changes diff --git a/plugins/techdocs-node/package.json b/plugins/techdocs-node/package.json index 7328927307..4c3a4a3496 100644 --- a/plugins/techdocs-node/package.json +++ b/plugins/techdocs-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-techdocs-node", "description": "Common node.js functionalities for TechDocs, to be shared between techdocs-backend plugin and techdocs-cli", - "version": "1.6.0-next.1", + "version": "1.6.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/plugins/techdocs-react/CHANGELOG.md b/plugins/techdocs-react/CHANGELOG.md index 7894f77a44..cbc52cf570 100644 --- a/plugins/techdocs-react/CHANGELOG.md +++ b/plugins/techdocs-react/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-techdocs-react +## 1.1.4-next.2 + +### Patch Changes + +- 65454876fb2: Minor API report tweaks +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/config@1.0.7-next.0 + ## 1.1.4-next.1 ### Patch Changes diff --git a/plugins/techdocs-react/package.json b/plugins/techdocs-react/package.json index 3d31cc0e17..ae8d7e21ae 100644 --- a/plugins/techdocs-react/package.json +++ b/plugins/techdocs-react/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-techdocs-react", "description": "Shared frontend utilities for TechDocs and Addons", - "version": "1.1.4-next.1", + "version": "1.1.4-next.2", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/plugins/techdocs/CHANGELOG.md b/plugins/techdocs/CHANGELOG.md index 60d826f2c4..7ce9542731 100644 --- a/plugins/techdocs/CHANGELOG.md +++ b/plugins/techdocs/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-techdocs +## 1.6.0-next.2 + +### Patch Changes + +- 65454876fb2: Minor API report tweaks +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-techdocs-react@1.1.4-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/plugin-search-react@1.5.1-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + - @backstage/integration-react@1.1.11-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + ## 1.6.0-next.1 ### Patch Changes diff --git a/plugins/techdocs/package.json b/plugins/techdocs/package.json index 8f15b11152..88ebb91c1b 100644 --- a/plugins/techdocs/package.json +++ b/plugins/techdocs/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-techdocs", "description": "The Backstage plugin that renders technical documentation for your components", - "version": "1.6.0-next.1", + "version": "1.6.0-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/todo-backend/CHANGELOG.md b/plugins/todo-backend/CHANGELOG.md index f22ef56503..6abd6c3562 100644 --- a/plugins/todo-backend/CHANGELOG.md +++ b/plugins/todo-backend/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-todo-backend +## 0.1.40-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/plugin-catalog-node@1.3.4-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + ## 0.1.40-next.1 ### Patch Changes diff --git a/plugins/todo-backend/package.json b/plugins/todo-backend/package.json index ebd874b3e6..cb37bc5eb5 100644 --- a/plugins/todo-backend/package.json +++ b/plugins/todo-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-todo-backend", "description": "A Backstage backend plugin that lets you browse TODO comments in your source code", - "version": "0.1.40-next.1", + "version": "0.1.40-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/todo/CHANGELOG.md b/plugins/todo/CHANGELOG.md index 3eb0e8a30b..3e716065a1 100644 --- a/plugins/todo/CHANGELOG.md +++ b/plugins/todo/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-todo +## 0.2.18-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.2.18-next.1 ### Patch Changes diff --git a/plugins/todo/package.json b/plugins/todo/package.json index 01a0829835..6cc2491a78 100644 --- a/plugins/todo/package.json +++ b/plugins/todo/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-todo", "description": "A Backstage plugin that lets you browse TODO comments in your source code", - "version": "0.2.18-next.1", + "version": "0.2.18-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/user-settings-backend/CHANGELOG.md b/plugins/user-settings-backend/CHANGELOG.md index 3141c9f8b1..4bcf306e42 100644 --- a/plugins/user-settings-backend/CHANGELOG.md +++ b/plugins/user-settings-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-user-settings-backend +## 0.1.7-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.2.12-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + ## 0.1.7-next.1 ### Patch Changes diff --git a/plugins/user-settings-backend/package.json b/plugins/user-settings-backend/package.json index 833241dc72..a98e0e9313 100644 --- a/plugins/user-settings-backend/package.json +++ b/plugins/user-settings-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-user-settings-backend", "description": "The Backstage backend plugin to manage user settings", - "version": "0.1.7-next.1", + "version": "0.1.7-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/user-settings/CHANGELOG.md b/plugins/user-settings/CHANGELOG.md index 1cb2322c4d..435fa2b2d4 100644 --- a/plugins/user-settings/CHANGELOG.md +++ b/plugins/user-settings/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-user-settings +## 0.7.1-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-app-api@1.6.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.7.1-next.1 ### Patch Changes diff --git a/plugins/user-settings/package.json b/plugins/user-settings/package.json index 01ae0e1134..e49c54687d 100644 --- a/plugins/user-settings/package.json +++ b/plugins/user-settings/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-user-settings", "description": "A Backstage plugin that provides a settings page", - "version": "0.7.1-next.1", + "version": "0.7.1-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/vault-backend/CHANGELOG.md b/plugins/vault-backend/CHANGELOG.md index d3717a29e1..31b822c68b 100644 --- a/plugins/vault-backend/CHANGELOG.md +++ b/plugins/vault-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-vault-backend +## 0.2.10-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/config@1.0.7-next.0 + ## 0.2.10-next.1 ### Patch Changes diff --git a/plugins/vault-backend/package.json b/plugins/vault-backend/package.json index f9966b2316..336363e9ad 100644 --- a/plugins/vault-backend/package.json +++ b/plugins/vault-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-vault-backend", "description": "A Backstage backend plugin that integrates towards Vault", - "version": "0.2.10-next.1", + "version": "0.2.10-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/vault/CHANGELOG.md b/plugins/vault/CHANGELOG.md index df3e5659d1..1f6d8446bd 100644 --- a/plugins/vault/CHANGELOG.md +++ b/plugins/vault/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-vault +## 0.1.10-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/plugin-catalog-react@1.4.0-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.1.10-next.1 ### Patch Changes diff --git a/plugins/vault/package.json b/plugins/vault/package.json index 20a8e235c0..127c9cf753 100644 --- a/plugins/vault/package.json +++ b/plugins/vault/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-vault", "description": "A Backstage plugin that integrates towards Vault", - "version": "0.1.10-next.1", + "version": "0.1.10-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/xcmetrics/CHANGELOG.md b/plugins/xcmetrics/CHANGELOG.md index 2ea83d9a11..e9a2023939 100644 --- a/plugins/xcmetrics/CHANGELOG.md +++ b/plugins/xcmetrics/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-xcmetrics +## 0.2.36-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.12.5-next.2 + - @backstage/core-plugin-api@1.5.0-next.2 + ## 0.2.36-next.1 ### Patch Changes diff --git a/plugins/xcmetrics/package.json b/plugins/xcmetrics/package.json index 5e3ffebcba..fb7695e090 100644 --- a/plugins/xcmetrics/package.json +++ b/plugins/xcmetrics/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-xcmetrics", "description": "A Backstage plugin that shows XCode build metrics for your components", - "version": "0.2.36-next.1", + "version": "0.2.36-next.2", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0",