From 1e5b7d993a22c3dccb97632a2799f605d30924d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Sat, 15 Apr 2023 16:26:09 +0200 Subject: [PATCH 001/102] Add an entityPresentationApiRef MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/heavy-experts-accept.md | 17 + .changeset/smart-dancers-watch.md | 5 + .changeset/wild-cows-watch.md | 10 + packages/core-plugin-api/api-report.md | 4 +- packages/core-plugin-api/src/icons/types.ts | 4 +- plugins/catalog-react/api-report.md | 90 ++++- .../EntityPresentationApi.ts | 93 +++++ .../defaultEntityPresentation.test.ts | 278 +++++++++++++ .../defaultEntityPresentation.ts | 201 ++++++++++ .../src/apis/EntityPresentationApi/index.ts | 24 ++ .../useEntityPresentation.ts | 86 ++++ .../useUpdatingObservable.ts | 63 +++ plugins/catalog-react/src/apis/index.ts | 1 + .../EntityDisplayName.stories.tsx | 33 ++ .../EntityDisplayName.test.tsx | 95 +++++ .../EntityDisplayName/EntityDisplayName.tsx | 98 +++++ .../src/components/EntityDisplayName/index.ts | 21 + .../EntityRefLink/EntityRefLink.test.tsx | 26 +- .../EntityRefLink/EntityRefLink.tsx | 111 +++--- .../EntityRefLink/EntityRefLinks.test.tsx | 6 +- .../EntityRefLink/EntityRefLinks.tsx | 55 +-- .../FetchedEntityRefLinks.test.tsx | 219 ---------- .../EntityRefLink/FetchedEntityRefLinks.tsx | 111 ------ plugins/catalog-react/src/components/index.ts | 1 + .../src/overridableComponents.ts | 3 + plugins/catalog/api-report.md | 47 +++ plugins/catalog/package.json | 2 + .../DefaultEntityPresentationApi.test.ts | 204 ++++++++++ .../DefaultEntityPresentationApi.ts | 374 ++++++++++++++++++ .../apis/EntityPresentationApi/defaults.tsx | 78 ++++ .../src/apis/EntityPresentationApi/index.ts | 21 + .../src/apis/EntityPresentationApi/util.ts | 38 ++ plugins/catalog/src/apis/index.ts | 1 + .../components/CatalogTable/CatalogTable.tsx | 5 + .../src/components/CatalogTable/columns.tsx | 3 +- .../src/components/CatalogTable/types.ts | 4 + .../EntityLayout/EntityLayout.test.tsx | 1 + .../components/EntityLayout/EntityLayout.tsx | 7 +- plugins/catalog/src/plugin.ts | 8 + .../UserProfileCard/UserProfileCard.test.tsx | 2 +- .../General/UserSettingsIdentityCard.test.tsx | 2 +- yarn.lock | 27 ++ 42 files changed, 2024 insertions(+), 455 deletions(-) create mode 100644 .changeset/heavy-experts-accept.md create mode 100644 .changeset/smart-dancers-watch.md create mode 100644 .changeset/wild-cows-watch.md create mode 100644 plugins/catalog-react/src/apis/EntityPresentationApi/EntityPresentationApi.ts create mode 100644 plugins/catalog-react/src/apis/EntityPresentationApi/defaultEntityPresentation.test.ts create mode 100644 plugins/catalog-react/src/apis/EntityPresentationApi/defaultEntityPresentation.ts create mode 100644 plugins/catalog-react/src/apis/EntityPresentationApi/index.ts create mode 100644 plugins/catalog-react/src/apis/EntityPresentationApi/useEntityPresentation.ts create mode 100644 plugins/catalog-react/src/apis/EntityPresentationApi/useUpdatingObservable.ts create mode 100644 plugins/catalog-react/src/components/EntityDisplayName/EntityDisplayName.stories.tsx create mode 100644 plugins/catalog-react/src/components/EntityDisplayName/EntityDisplayName.test.tsx create mode 100644 plugins/catalog-react/src/components/EntityDisplayName/EntityDisplayName.tsx create mode 100644 plugins/catalog-react/src/components/EntityDisplayName/index.ts delete mode 100644 plugins/catalog-react/src/components/EntityRefLink/FetchedEntityRefLinks.test.tsx delete mode 100644 plugins/catalog-react/src/components/EntityRefLink/FetchedEntityRefLinks.tsx create mode 100644 plugins/catalog/src/apis/EntityPresentationApi/DefaultEntityPresentationApi.test.ts create mode 100644 plugins/catalog/src/apis/EntityPresentationApi/DefaultEntityPresentationApi.ts create mode 100644 plugins/catalog/src/apis/EntityPresentationApi/defaults.tsx create mode 100644 plugins/catalog/src/apis/EntityPresentationApi/index.ts create mode 100644 plugins/catalog/src/apis/EntityPresentationApi/util.ts diff --git a/.changeset/heavy-experts-accept.md b/.changeset/heavy-experts-accept.md new file mode 100644 index 0000000000..ec232d1c4d --- /dev/null +++ b/.changeset/heavy-experts-accept.md @@ -0,0 +1,17 @@ +--- +'@backstage/plugin-catalog-react': minor +--- + +Added an `EntityPresentationApi` and associated `entityPresentationApiRef`. This +API lets you control how references to entities (e.g. in links, headings, +iconography etc) are represented in the user interface. + +Usage of this API is initially added to the `EntityRefLink` and `EntityRefLinks` +components, so that they can render richer, more correct representation of +entity refs. There's also a new `EntityName` component, which works just like +the `EntityRefLink` but without the link. + +Along with that change, the `fetchEntities` and `getTitle` props of +`EntityRefLinksProps` are deprecated and no longer used, since the same need +instead is fulfilled (and by default always enabled) by the +`entityPresentationApiRef`. diff --git a/.changeset/smart-dancers-watch.md b/.changeset/smart-dancers-watch.md new file mode 100644 index 0000000000..b47a6ae5c2 --- /dev/null +++ b/.changeset/smart-dancers-watch.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-plugin-api': minor +--- + +`IconComponent` can now have a `fontSize` of `inherit`, which is useful for in-line icons. diff --git a/.changeset/wild-cows-watch.md b/.changeset/wild-cows-watch.md new file mode 100644 index 0000000000..770fb1a692 --- /dev/null +++ b/.changeset/wild-cows-watch.md @@ -0,0 +1,10 @@ +--- +'@backstage/plugin-catalog': minor +--- + +Added the `DefaultEntityPresentationApi`, which is an implementation of the +`EntityPresentationApi` that `@backstage/plugin-catalog-react` exposes through +its `entityPresentationApiRef`. This implementation is also by default made +available automatically by the catalog plugin, unless you replace it with a +custom one. It batch fetches and caches data from the catalog as needed for +display, and is customizable by adopters to add their own rendering functions. diff --git a/packages/core-plugin-api/api-report.md b/packages/core-plugin-api/api-report.md index 7873b23f13..760cdeee28 100644 --- a/packages/core-plugin-api/api-report.md +++ b/packages/core-plugin-api/api-report.md @@ -503,10 +503,10 @@ export const googleAuthApiRef: ApiRef< // @public export type IconComponent = ComponentType< | { - fontSize?: 'large' | 'small' | 'default'; + fontSize?: 'large' | 'small' | 'default' | 'inherit'; } | { - fontSize?: 'medium' | 'large' | 'small'; + fontSize?: 'medium' | 'large' | 'small' | 'inherit'; } >; diff --git a/packages/core-plugin-api/src/icons/types.ts b/packages/core-plugin-api/src/icons/types.ts index aa264294e3..4d54629de2 100644 --- a/packages/core-plugin-api/src/icons/types.ts +++ b/packages/core-plugin-api/src/icons/types.ts @@ -36,10 +36,10 @@ import { ComponentType } from 'react'; export type IconComponent = ComponentType< /* Material UI v4 */ | { - fontSize?: 'large' | 'small' | 'default'; + fontSize?: 'large' | 'small' | 'default' | 'inherit'; } /* Material UI v5: https://mui.com/material-ui/migration/v5-component-changes/#icon */ | { - fontSize?: 'medium' | 'large' | 'small'; + fontSize?: 'medium' | 'large' | 'small' | 'inherit'; } >; diff --git a/plugins/catalog-react/api-report.md b/plugins/catalog-react/api-report.md index a72df6bb3d..c3c5d7747e 100644 --- a/plugins/catalog-react/api-report.md +++ b/plugins/catalog-react/api-report.md @@ -11,6 +11,7 @@ import { ComponentProps } from 'react'; import { CompoundEntityRef } from '@backstage/catalog-model'; import { Entity } from '@backstage/catalog-model'; import { IconButton } from '@material-ui/core'; +import { IconComponent } from '@backstage/core-plugin-api'; import { InfoCardVariants } from '@backstage/core-components'; import { LinkProps } from '@backstage/core-components'; import { Observable } from '@backstage/types'; @@ -84,6 +85,7 @@ export const CatalogFilterLayout: { // @public (undocumented) export type CatalogReactComponentsNameToClassKey = { CatalogReactUserListPicker: CatalogReactUserListPickerClassKey; + CatalogReactEntityDisplayName: CatalogReactEntityDisplayNameClassKey; CatalogReactEntityLifecyclePicker: CatalogReactEntityLifecyclePickerClassKey; CatalogReactEntitySearchBar: CatalogReactEntitySearchBarClassKey; CatalogReactEntityTagPicker: CatalogReactEntityTagPickerClassKey; @@ -91,6 +93,9 @@ export type CatalogReactComponentsNameToClassKey = { CatalogReactEntityProcessingStatusPicker: CatalogReactEntityProcessingStatusPickerClassKey; }; +// @public +export type CatalogReactEntityDisplayNameClassKey = 'root' | 'icon'; + // @public (undocumented) export type CatalogReactEntityLifecyclePickerClassKey = 'input'; @@ -174,6 +179,26 @@ export type EntityAutocompletePickerProps< initialSelectedOptions?: string[]; }; +// @public +export function defaultEntityPresentation( + entityOrRef: Entity | CompoundEntityRef | string, + context?: { + defaultKind?: string; + defaultNamespace?: string; + }, +): EntityRefPresentationSnapshot; + +// @public +export const EntityDisplayName: (props: EntityDisplayNameProps) => JSX.Element; + +// @public +export type EntityDisplayNameProps = { + entityRef: Entity | CompoundEntityRef | string; + variant?: 'simple' | string; + defaultKind?: string; + defaultNamespace?: string; +}; + // @public export class EntityErrorFilter implements EntityFilter { constructor(value: boolean); @@ -323,6 +348,20 @@ export type EntityPeekAheadPopoverProps = PropsWithChildren<{ delayTime?: number; }>; +// @public +export interface EntityPresentationApi { + forEntity( + entityOrRef: Entity | string, + context?: { + defaultKind?: string; + defaultNamespace?: string; + }, + ): EntityRefPresentation; +} + +// @public +export const entityPresentationApiRef: ApiRef; + // @public (undocumented) export const EntityProcessingStatusPicker: () => React_2.JSX.Element; @@ -346,6 +385,7 @@ export const EntityRefLink: (props: EntityRefLinkProps) => JSX.Element; export type EntityRefLinkProps = { entityRef: Entity | CompoundEntityRef | string; defaultKind?: string; + defaultNamespace?: string; title?: string; children?: React_2.ReactNode; } & Omit; @@ -358,21 +398,32 @@ export function EntityRefLinks< // @public export type EntityRefLinksProps< TRef extends string | CompoundEntityRef | Entity, -> = ( - | { - defaultKind?: string; - entityRefs: TRef[]; - fetchEntities?: false; - getTitle?(entity: TRef): string | undefined; - } - | { - defaultKind?: string; - entityRefs: TRef[]; - fetchEntities: true; - getTitle(entity: Entity): string | undefined; - } -) & - Omit; +> = { + defaultKind?: string; + entityRefs: TRef[]; + fetchEntities?: boolean; + getTitle?(entity: TRef): string | undefined; +} & Omit; + +// @public +export interface EntityRefPresentation { + snapshot: EntityRefPresentationSnapshot; + update$?: Observable; +} + +// @public +export interface EntityRefPresentationSnapshot { + // (undocumented) + entity?: Entity | undefined; + // (undocumented) + entityRef: string; + // (undocumented) + Icon?: IconComponent | undefined; + // (undocumented) + primaryTitle: string; + // (undocumented) + secondaryTitle?: string; +} // @public export function entityRouteParams(entity: Entity): { @@ -598,6 +649,15 @@ export function useEntityOwnership(): { isOwnedEntity: (entity: Entity) => boolean; }; +// @public +export function useEntityPresentation( + entityOrRef: Entity | CompoundEntityRef | string, + context?: { + defaultKind?: string; + defaultNamespace?: string; + }, +): EntityRefPresentationSnapshot; + // @public export function useEntityTypeFilter(): { loading: boolean; diff --git a/plugins/catalog-react/src/apis/EntityPresentationApi/EntityPresentationApi.ts b/plugins/catalog-react/src/apis/EntityPresentationApi/EntityPresentationApi.ts new file mode 100644 index 0000000000..8d3bcce068 --- /dev/null +++ b/plugins/catalog-react/src/apis/EntityPresentationApi/EntityPresentationApi.ts @@ -0,0 +1,93 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Entity } from '@backstage/catalog-model'; +import { + ApiRef, + IconComponent, + createApiRef, +} from '@backstage/core-plugin-api'; +import { Observable } from '@backstage/types'; + +/** + * An API that handles how to represent entities in the interface. + * + * @public + */ +export const entityPresentationApiRef: ApiRef = + createApiRef({ + id: 'catalog-react.entity-presentation', + }); + +/** + * The visual presentation of an entity reference at some point in time. + * + * @public + */ +export interface EntityRefPresentationSnapshot { + entityRef: string; + entity?: Entity | undefined; + primaryTitle: string; + secondaryTitle?: string; + Icon?: IconComponent | undefined; +} + +/** + * The visual presentation of an entity reference. + * + * @public + */ +export interface EntityRefPresentation { + /** + * The representation that's suitable to use for this entity right now. + */ + snapshot: EntityRefPresentationSnapshot; + /** + * Some presentation implementations support emitting updated snapshots over + * time, for example after retrieving additional data from the catalog or + * elsewhere. + */ + update$?: Observable; +} + +/** + * An API that decides how to visually represent entities in the interface. + * + * @remarks + * + * Most consumers will want to use the {@link useEntityPresentation} hook + * instead of this interface directly. + * + * @public + */ +export interface EntityPresentationApi { + /** + * Fetches the presentation for an entity. + * + * @param entityOrRef - Either an entity, or a string ref to it. If you pass + * in an entity, it is assumed that it is not a partial one - i.e. only pass + * in an entity if you know that it was fetched in such a way that it + * contains all of the fields that the representation renderer needs. + * @param context - Contextual information that may affect the presentation. + */ + forEntity( + entityOrRef: Entity | string, + context?: { + defaultKind?: string; + defaultNamespace?: string; + }, + ): EntityRefPresentation; +} diff --git a/plugins/catalog-react/src/apis/EntityPresentationApi/defaultEntityPresentation.test.ts b/plugins/catalog-react/src/apis/EntityPresentationApi/defaultEntityPresentation.test.ts new file mode 100644 index 0000000000..e875de6fd1 --- /dev/null +++ b/plugins/catalog-react/src/apis/EntityPresentationApi/defaultEntityPresentation.test.ts @@ -0,0 +1,278 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { CompoundEntityRef, Entity } from '@backstage/catalog-model'; +import { defaultEntityPresentation } from './defaultEntityPresentation'; + +describe('defaultEntityPresentation', () => { + describe('entity given', () => { + it('happy path', () => { + expect( + defaultEntityPresentation({ + apiVersion: 'backstage.io/v1alpha1', + kind: 'Component', + metadata: { + name: 'test', + namespace: 'default', + description: 'desc', + }, + spec: { + type: 'type', + }, + }), + ).toEqual({ + entity: expect.anything(), + entityRef: 'component:default/test', + primaryTitle: 'test', + secondaryTitle: 'component:default/test | type | desc', + Icon: expect.anything(), + }); + + expect( + defaultEntityPresentation({ + apiVersion: 'backstage.io/v1alpha1', + kind: 'Component', + metadata: { + name: 'test', + namespace: 'default', + title: 'title', + description: 'desc', + }, + spec: { + type: 'type', + }, + }), + ).toEqual({ + entity: expect.anything(), + entityRef: 'component:default/test', + primaryTitle: 'title', + secondaryTitle: 'component:default/test | type | desc', + Icon: expect.anything(), + }); + + expect( + defaultEntityPresentation({ + apiVersion: 'backstage.io/v1alpha1', + kind: 'Component', + metadata: { + name: 'test', + namespace: 'default', + title: 'title', + description: 'desc', + }, + spec: { + type: 'type', + profile: { + displayName: 'displayName', + }, + }, + }), + ).toEqual({ + entity: expect.anything(), + entityRef: 'component:default/test', + primaryTitle: 'displayName', + secondaryTitle: 'component:default/test | type | desc', + Icon: expect.anything(), + }); + }); + + it('handles the absolute minimum', () => { + expect( + defaultEntityPresentation({ + kind: 'Component', + metadata: { name: 'test' }, + } as Entity), + ).toEqual({ + entity: expect.anything(), + entityRef: 'component:default/test', + primaryTitle: 'test', + secondaryTitle: 'component:default/test', + Icon: expect.anything(), + }); + }); + + it('fails without throwing on malformed entities', () => { + expect( + defaultEntityPresentation({ metadata: 7 } as unknown as Entity), + ).toEqual({ + entity: expect.anything(), + entityRef: 'unknown:default/unknown', + primaryTitle: 'unknown', + secondaryTitle: 'unknown:default/unknown', + Icon: expect.anything(), + }); + }); + }); + + describe('string ref given', () => { + it('happy path', () => { + expect(defaultEntityPresentation('component:default/test')).toEqual({ + entity: undefined, + entityRef: 'component:default/test', + primaryTitle: 'test', + secondaryTitle: 'component:default/test', + Icon: expect.anything(), + }); + + expect( + defaultEntityPresentation('component:default/test', { + defaultKind: 'X', + }), + ).toEqual({ + entity: undefined, + entityRef: 'component:default/test', + primaryTitle: 'component:test', + secondaryTitle: 'component:default/test', + Icon: expect.anything(), + }); + + expect( + defaultEntityPresentation('component:default/test', { + defaultNamespace: 'X', + }), + ).toEqual({ + entity: undefined, + entityRef: 'component:default/test', + primaryTitle: 'default/test', + secondaryTitle: 'component:default/test', + Icon: expect.anything(), + }); + }); + + it('works without throwing on malformed and shortened refs', () => { + expect(defaultEntityPresentation('')).toEqual({ + entity: undefined, + entityRef: 'unknown:default/unknown', + primaryTitle: 'unknown', + secondaryTitle: 'unknown:default/unknown', + Icon: expect.anything(), + }); + + expect(defaultEntityPresentation('name')).toEqual({ + entity: undefined, + entityRef: 'unknown:default/name', + primaryTitle: 'name', + secondaryTitle: 'unknown:default/name', + Icon: expect.anything(), + }); + }); + }); + + describe('compound ref given', () => { + it('happy path', () => { + expect( + defaultEntityPresentation({ + kind: 'Component', + namespace: 'default', + name: 'test', + }), + ).toEqual({ + entity: undefined, + entityRef: 'component:default/test', + primaryTitle: 'test', + secondaryTitle: 'component:default/test', + Icon: expect.anything(), + }); + + expect( + defaultEntityPresentation( + { kind: 'component', namespace: 'default', name: 'test' }, + { + defaultKind: 'X', + }, + ), + ).toEqual({ + entity: undefined, + entityRef: 'component:default/test', + primaryTitle: 'component:test', + secondaryTitle: 'component:default/test', + Icon: expect.anything(), + }); + + expect( + defaultEntityPresentation( + { kind: 'component', namespace: 'default', name: 'test' }, + { + defaultNamespace: 'X', + }, + ), + ).toEqual({ + entity: undefined, + entityRef: 'component:default/test', + primaryTitle: 'default/test', + secondaryTitle: 'component:default/test', + Icon: expect.anything(), + }); + }); + + it('works without throwing on malformed refs', () => { + expect( + defaultEntityPresentation( + { kind: 'component', name: 'test' } as CompoundEntityRef, + { + defaultNamespace: 'X', + }, + ), + ).toEqual({ + entity: undefined, + entityRef: 'component:default/test', + primaryTitle: 'default/test', + secondaryTitle: 'component:default/test', + Icon: expect.anything(), + }); + + expect(defaultEntityPresentation('')).toEqual({ + entity: undefined, + entityRef: 'unknown:default/unknown', + primaryTitle: 'unknown', + secondaryTitle: 'unknown:default/unknown', + Icon: expect.anything(), + }); + }); + }); + + describe('entirely invalid input type given', () => { + it('sad path', () => { + expect(defaultEntityPresentation(null as unknown as Entity)).toEqual({ + entity: undefined, + entityRef: 'unknown:default/unknown', + primaryTitle: 'unknown', + secondaryTitle: 'unknown:default/unknown', + Icon: expect.anything(), + }); + + expect(defaultEntityPresentation(undefined as unknown as Entity)).toEqual( + { + entity: undefined, + entityRef: 'unknown:default/unknown', + primaryTitle: 'unknown', + secondaryTitle: 'unknown:default/unknown', + Icon: expect.anything(), + }, + ); + + expect( + defaultEntityPresentation(Symbol.for('Prince') as unknown as Entity), + ).toEqual({ + entity: undefined, + entityRef: 'unknown:default/unknown', + primaryTitle: 'unknown', + secondaryTitle: 'unknown:default/unknown', + Icon: expect.anything(), + }); + }); + }); +}); diff --git a/plugins/catalog-react/src/apis/EntityPresentationApi/defaultEntityPresentation.ts b/plugins/catalog-react/src/apis/EntityPresentationApi/defaultEntityPresentation.ts new file mode 100644 index 0000000000..31ed742a8d --- /dev/null +++ b/plugins/catalog-react/src/apis/EntityPresentationApi/defaultEntityPresentation.ts @@ -0,0 +1,201 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { + CompoundEntityRef, + DEFAULT_NAMESPACE, + Entity, + stringifyEntityRef, +} from '@backstage/catalog-model'; +import { IconComponent } from '@backstage/core-plugin-api'; +import ApartmentIcon from '@material-ui/icons/Apartment'; +import BusinessIcon from '@material-ui/icons/Business'; +import ExtensionIcon from '@material-ui/icons/Extension'; +import HelpIcon from '@material-ui/icons/Help'; +import LibraryAddIcon from '@material-ui/icons/LibraryAdd'; +import LocationOnIcon from '@material-ui/icons/LocationOn'; +import MemoryIcon from '@material-ui/icons/Memory'; +import PeopleIcon from '@material-ui/icons/People'; +import PersonIcon from '@material-ui/icons/Person'; +import get from 'lodash/get'; +import { EntityRefPresentationSnapshot } from './EntityPresentationApi'; + +const UNKNOWN_KIND_ICON: IconComponent = HelpIcon; + +const DEFAULT_ICONS: Record = { + api: ExtensionIcon, + component: MemoryIcon, + system: BusinessIcon, + domain: ApartmentIcon, + location: LocationOnIcon, + user: PersonIcon, + group: PeopleIcon, + template: LibraryAddIcon, +}; + +/** + * This returns the default representation of an entity. + * + * @public + * @param entityOrRef - Either an entity, or a ref to it. + * @param context - Contextual information that may affect the presentation. + */ +export function defaultEntityPresentation( + entityOrRef: Entity | CompoundEntityRef | string, + context?: { + defaultKind?: string; + defaultNamespace?: string; + }, +): EntityRefPresentationSnapshot { + // NOTE(freben): This code may look convoluted, but it tries its very best to + // be defensive and handling any type of malformed input and still producing + // some form of result without crashing. + const { kind, namespace, name, title, description, displayName, type } = + getParts(entityOrRef); + + const Icon = + (kind && DEFAULT_ICONS[kind.toLocaleLowerCase('en-US')]) || + UNKNOWN_KIND_ICON; + + const entity: Entity | undefined = + typeof entityOrRef === 'object' && + entityOrRef !== null && + 'metadata' in entityOrRef + ? entityOrRef + : undefined; + + const entityRef: string = stringifyEntityRef({ + kind: kind || 'unknown', + namespace: namespace || DEFAULT_NAMESPACE, + name: name || 'unknown', + }); + + const shortRef = getShortRef({ kind, namespace, name, context }); + + const primary = [displayName, title, shortRef].filter( + candidate => candidate && typeof candidate === 'string', + )[0]!; + + const secondary = [ + primary !== entityRef ? entityRef : undefined, + type, + description, + ] + .filter(candidate => candidate && typeof candidate === 'string') + .join(' | '); + + return { + entity, + entityRef, + primaryTitle: primary, + secondaryTitle: secondary || undefined, + Icon, + }; +} + +// Try to extract display-worthy parts of an entity or ref as best we can, without throwing +function getParts(entityOrRef: Entity | CompoundEntityRef | string): { + kind?: string; + namespace?: string; + name?: string; + title?: string; + description?: string; + displayName?: string; + type?: string; +} { + if (typeof entityOrRef === 'string') { + let colonI = entityOrRef.indexOf(':'); + const slashI = entityOrRef.indexOf('/'); + + // If the / is ahead of the :, treat the rest as the name + if (slashI !== -1 && slashI < colonI) { + colonI = -1; + } + + const kind = colonI === -1 ? undefined : entityOrRef.slice(0, colonI); + const namespace = + slashI === -1 ? undefined : entityOrRef.slice(colonI + 1, slashI); + const name = entityOrRef.slice(Math.max(colonI + 1, slashI + 1)); + + return { kind, namespace, name }; + } + + if (typeof entityOrRef === 'object' && entityOrRef !== null) { + const kind = [get(entityOrRef, 'kind')].filter( + candidate => candidate && typeof candidate === 'string', + )[0]; + + const namespace = [ + get(entityOrRef, 'metadata.namespace'), + get(entityOrRef, 'namespace'), + ].filter(candidate => candidate && typeof candidate === 'string')[0]; + + const name = [ + get(entityOrRef, 'metadata.name'), + get(entityOrRef, 'name'), + ].filter(candidate => candidate && typeof candidate === 'string')[0]; + + const title = [get(entityOrRef, 'metadata.title')].filter( + candidate => candidate && typeof candidate === 'string', + )[0]; + + const description = [get(entityOrRef, 'metadata.description')].filter( + candidate => candidate && typeof candidate === 'string', + )[0]; + + const displayName = [get(entityOrRef, 'spec.profile.displayName')].filter( + candidate => candidate && typeof candidate === 'string', + )[0]; + + const type = [get(entityOrRef, 'spec.type')].filter( + candidate => candidate && typeof candidate === 'string', + )[0]; + + return { kind, namespace, name, title, description, displayName, type }; + } + + return {}; +} + +function getShortRef(options: { + kind?: string; + namespace?: string; + name?: string; + context?: { defaultKind?: string; defaultNamespace?: string }; +}): string { + const kind = options.kind?.toLocaleLowerCase('en-US') || 'unknown'; + const namespace = + options.namespace?.toLocaleLowerCase('en-US') || DEFAULT_NAMESPACE; + const name = options.name?.toLocaleLowerCase('en-US') || 'unknown'; + const defaultKind = options.context?.defaultKind?.toLocaleLowerCase('en-US'); + const defaultNamespace = + options.context?.defaultNamespace?.toLocaleLowerCase('en-US'); + + let result = name; + + if ( + (defaultNamespace && namespace !== defaultNamespace) || + namespace !== DEFAULT_NAMESPACE + ) { + result = `${namespace}/${result}`; + } + + if (defaultKind && kind !== defaultKind) { + result = `${kind}:${result}`; + } + + return result; +} diff --git a/plugins/catalog-react/src/apis/EntityPresentationApi/index.ts b/plugins/catalog-react/src/apis/EntityPresentationApi/index.ts new file mode 100644 index 0000000000..405afe23f6 --- /dev/null +++ b/plugins/catalog-react/src/apis/EntityPresentationApi/index.ts @@ -0,0 +1,24 @@ +/* + * Copyright 2021 The 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 { + entityPresentationApiRef, + type EntityPresentationApi, + type EntityRefPresentation, + type EntityRefPresentationSnapshot, +} from './EntityPresentationApi'; +export { defaultEntityPresentation } from './defaultEntityPresentation'; +export { useEntityPresentation } from './useEntityPresentation'; diff --git a/plugins/catalog-react/src/apis/EntityPresentationApi/useEntityPresentation.ts b/plugins/catalog-react/src/apis/EntityPresentationApi/useEntityPresentation.ts new file mode 100644 index 0000000000..bae3936cc8 --- /dev/null +++ b/plugins/catalog-react/src/apis/EntityPresentationApi/useEntityPresentation.ts @@ -0,0 +1,86 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { + CompoundEntityRef, + Entity, + stringifyEntityRef, +} from '@backstage/catalog-model'; +import { useApiHolder } from '@backstage/core-plugin-api'; +import { useMemo } from 'react'; +import { + EntityRefPresentation, + EntityRefPresentationSnapshot, + entityPresentationApiRef, +} from './EntityPresentationApi'; +import { defaultEntityPresentation } from './defaultEntityPresentation'; +import { useUpdatingObservable } from './useUpdatingObservable'; + +/** + * Returns information about how to represent an entity in the interface. + * + * @public + * @param entityOrRef - The entity to represent, or an entity ref to it. If you + * pass in an entity, it is assumed that it is NOT a partial one - i.e. only + * pass in an entity if you know that it was fetched in such a way that it + * contains all of the fields that the representation renderer needs. + * @param context - Optional context that control details of the presentation. + * @returns A snapshot of the entity presentation, which may change over time + */ +export function useEntityPresentation( + entityOrRef: Entity | CompoundEntityRef | string, + context?: { + defaultKind?: string; + defaultNamespace?: string; + }, +): EntityRefPresentationSnapshot { + // Defensively allow for a missing presentation API, which makes this hook + // safe to use in tests. + const apis = useApiHolder(); + const entityPresentationApi = apis.get(entityPresentationApiRef); + + const deps = [ + entityPresentationApi, + JSON.stringify(entityOrRef), + JSON.stringify(context || null), + ]; + + const presentation = useMemo( + () => { + if (!entityPresentationApi) { + return { snapshot: defaultEntityPresentation(entityOrRef, context) }; + } + + return entityPresentationApi.forEntity( + typeof entityOrRef === 'string' || 'metadata' in entityOrRef + ? entityOrRef + : stringifyEntityRef(entityOrRef), + context, + ); + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + deps, + ); + + // NOTE(freben): We intentionally do not use the plain useObservable from the + // react-use library here. That hook does not support a dependencies array, + // and also it only subscribes once to the initially passed in observable and + // won't properly react when either initial value or the actual observable + // changes. + return useUpdatingObservable(presentation.snapshot, presentation.update$, [ + presentation, + ]); +} diff --git a/plugins/catalog-react/src/apis/EntityPresentationApi/useUpdatingObservable.ts b/plugins/catalog-react/src/apis/EntityPresentationApi/useUpdatingObservable.ts new file mode 100644 index 0000000000..37972a5432 --- /dev/null +++ b/plugins/catalog-react/src/apis/EntityPresentationApi/useUpdatingObservable.ts @@ -0,0 +1,63 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Observable } from '@backstage/types'; +import { DependencyList, useEffect, useRef, useState } from 'react'; + +/** + * Subscribe to an observable and return the latest value from it. + * + * @remarks + * + * This implementation differs in a few important ways from the plain + * useObservable from the react-use library. That hook does not support a + * dependencies array, and also it only subscribes once to the initially passed + * in observable and won't properly react when either initial value or the + * actual observable changes. + * + * This hook will ensure to resubscribe and reconsider the initial value, + * whenever the dependencies change. + */ +export function useUpdatingObservable( + value: T, + observable: Observable | undefined, + deps: DependencyList, +): T { + const snapshot = useRef(value); + const [, setCounter] = useState(0); + + useEffect(() => { + snapshot.current = value; + setCounter(counter => counter + 1); + + const subscription = observable?.subscribe({ + next: updatedValue => { + snapshot.current = updatedValue; + setCounter(counter => counter + 1); + }, + complete: () => { + subscription?.unsubscribe(); + }, + }); + + return () => { + subscription?.unsubscribe(); + }; + // eslint-disable-next-line react-hooks/exhaustive-deps + }, deps); + + return snapshot.current; +} diff --git a/plugins/catalog-react/src/apis/index.ts b/plugins/catalog-react/src/apis/index.ts index 5c7e980890..271d749afc 100644 --- a/plugins/catalog-react/src/apis/index.ts +++ b/plugins/catalog-react/src/apis/index.ts @@ -14,4 +14,5 @@ * limitations under the License. */ +export * from './EntityPresentationApi'; export * from './StarredEntitiesApi'; diff --git a/plugins/catalog-react/src/components/EntityDisplayName/EntityDisplayName.stories.tsx b/plugins/catalog-react/src/components/EntityDisplayName/EntityDisplayName.stories.tsx new file mode 100644 index 0000000000..d68618b07c --- /dev/null +++ b/plugins/catalog-react/src/components/EntityDisplayName/EntityDisplayName.stories.tsx @@ -0,0 +1,33 @@ +/* + * 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 React, { ComponentType } from 'react'; +import { EntityDisplayName, EntityDisplayNameProps } from './EntityDisplayName'; +import { wrapInTestApp } from '@backstage/test-utils'; + +const defaultArgs = { + entityRef: 'component:default/playback', +}; + +export default { + title: 'Catalog /EntityDisplayName', + decorators: [(Story: ComponentType<{}>) => wrapInTestApp()], +}; + +export const Default = (args: EntityDisplayNameProps) => ( + +); +Default.args = defaultArgs; diff --git a/plugins/catalog-react/src/components/EntityDisplayName/EntityDisplayName.test.tsx b/plugins/catalog-react/src/components/EntityDisplayName/EntityDisplayName.test.tsx new file mode 100644 index 0000000000..573cfa9011 --- /dev/null +++ b/plugins/catalog-react/src/components/EntityDisplayName/EntityDisplayName.test.tsx @@ -0,0 +1,95 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { TestApiProvider, renderInTestApp } from '@backstage/test-utils'; +import { screen } from '@testing-library/react'; +import React from 'react'; +import ObservableImpl from 'zen-observable'; +import { + EntityRefPresentation, + EntityRefPresentationSnapshot, + entityPresentationApiRef, +} from '../../apis'; +import { EntityDisplayName } from './EntityDisplayName'; + +function defer() { + let resolve = (_value: T) => {}; + const promise = new Promise(_resolve => { + resolve = _resolve; + }); + return { promise, resolve }; +} + +describe('', () => { + const entityPresentationApi = { + forEntity: jest.fn(), + }; + + afterEach(() => { + jest.clearAllMocks(); + }); + + it('works with the sync the happy path', async () => { + entityPresentationApi.forEntity.mockReturnValue({ + snapshot: { + entityRef: 'component:default/foo', + primaryTitle: 'foo', + }, + update$: undefined, + } as EntityRefPresentation); + + await renderInTestApp( + + + , + ); + + expect(screen.getByText('foo')).toBeInTheDocument(); + }); + + it('works with the async the happy path', async () => { + const { promise, resolve } = defer(); + + entityPresentationApi.forEntity.mockReturnValue({ + snapshot: { + entityRef: 'component:default/foo', + primaryTitle: 'foo', + }, + update$: new ObservableImpl(subscriber => { + promise.then(value => subscriber.next(value)); + }), + } as EntityRefPresentation); + + await renderInTestApp( + + + , + ); + + expect(screen.getByText('foo')).toBeInTheDocument(); + + resolve({ + entityRef: 'component:default/foo', + primaryTitle: 'bar', + }); + + await expect(screen.findByText('bar')).resolves.toBeInTheDocument(); + }); +}); diff --git a/plugins/catalog-react/src/components/EntityDisplayName/EntityDisplayName.tsx b/plugins/catalog-react/src/components/EntityDisplayName/EntityDisplayName.tsx new file mode 100644 index 0000000000..735828b18f --- /dev/null +++ b/plugins/catalog-react/src/components/EntityDisplayName/EntityDisplayName.tsx @@ -0,0 +1,98 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { CompoundEntityRef, Entity } from '@backstage/catalog-model'; +import { Box, Theme, Tooltip, makeStyles } from '@material-ui/core'; +import React from 'react'; +import { useEntityPresentation } from '../../apis'; + +/** + * The available style class keys for {@link EntityDisplayName}, under the name + * "CatalogReactEntityDisplayName". + * + * @public + */ +export type CatalogReactEntityDisplayNameClassKey = 'root' | 'icon'; + +const useStyles = makeStyles( + (theme: Theme) => ({ + root: { + display: 'inline-flex', + alignItems: 'center', + }, + icon: { + marginLeft: theme.spacing(0.5), + color: theme.palette.text.secondary, + lineHeight: 0, + }, + }), + { name: 'CatalogReactEntityDisplayName' }, +); + +/** + * Props for {@link EntityDisplayName}. + * + * @public + */ +export type EntityDisplayNameProps = { + entityRef: Entity | CompoundEntityRef | string; + variant?: 'simple' | string; + defaultKind?: string; + defaultNamespace?: string; +}; + +/** + * Shows a nice representation of a reference to an entity. + * + * @public + */ +export const EntityDisplayName = ( + props: EntityDisplayNameProps, +): JSX.Element => { + const { entityRef, variant, defaultKind, defaultNamespace } = props; + + const classes = useStyles(); + const { primaryTitle, secondaryTitle, Icon } = useEntityPresentation( + entityRef, + { defaultKind, defaultNamespace }, + ); + + // The innermost "body" content + let content = <>{primaryTitle}; + + // Optionally an icon, and wrapper around them both + content = ( + + {content} + {Icon && variant !== 'simple' ? ( + + + + ) : null} + + ); + + // Optionally, a tooltip as the outermost layer + if (secondaryTitle) { + content = ( + + {content} + + ); + } + + return content; +}; diff --git a/plugins/catalog-react/src/components/EntityDisplayName/index.ts b/plugins/catalog-react/src/components/EntityDisplayName/index.ts new file mode 100644 index 0000000000..0a9faa6f41 --- /dev/null +++ b/plugins/catalog-react/src/components/EntityDisplayName/index.ts @@ -0,0 +1,21 @@ +/* + * 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 { + EntityDisplayName, + type CatalogReactEntityDisplayNameClassKey, + type EntityDisplayNameProps, +} from './EntityDisplayName'; diff --git a/plugins/catalog-react/src/components/EntityRefLink/EntityRefLink.test.tsx b/plugins/catalog-react/src/components/EntityRefLink/EntityRefLink.test.tsx index cecf27be24..65d9be2190 100644 --- a/plugins/catalog-react/src/components/EntityRefLink/EntityRefLink.test.tsx +++ b/plugins/catalog-react/src/components/EntityRefLink/EntityRefLink.test.tsx @@ -27,6 +27,7 @@ describe('', () => { kind: 'Component', metadata: { name: 'software', + namespace: 'default', }, spec: { owner: 'guest', @@ -39,8 +40,7 @@ describe('', () => { '/catalog/:namespace/:kind/:name/*': entityRouteRef, }, }); - - expect(screen.getByText('component:software')).toHaveAttribute( + expect(screen.getByText('component:software').closest('a')).toHaveAttribute( 'href', '/catalog/default/component/software', ); @@ -65,10 +65,9 @@ describe('', () => { '/catalog/:namespace/:kind/:name/*': entityRouteRef, }, }); - expect(screen.getByText('component:test/software')).toHaveAttribute( - 'href', - '/catalog/test/component/software', - ); + expect( + screen.getByText('component:test/software').closest('a'), + ).toHaveAttribute('href', '/catalog/test/component/software'); }); it('renders link for entity and hides default kind', async () => { @@ -93,7 +92,7 @@ describe('', () => { }, }, ); - expect(screen.getByText('test/software')).toHaveAttribute( + expect(screen.getByText('test/software').closest('a')).toHaveAttribute( 'href', '/catalog/test/component/software', ); @@ -110,7 +109,7 @@ describe('', () => { '/catalog/:namespace/:kind/:name/*': entityRouteRef, }, }); - expect(screen.getByText('component:software')).toHaveAttribute( + expect(screen.getByText('component:software').closest('a')).toHaveAttribute( 'href', '/catalog/default/component/software', ); @@ -127,10 +126,9 @@ describe('', () => { '/catalog/:namespace/:kind/:name/*': entityRouteRef, }, }); - expect(screen.getByText('component:test/software')).toHaveAttribute( - 'href', - '/catalog/test/component/software', - ); + expect( + screen.getByText('component:test/software').closest('a'), + ).toHaveAttribute('href', '/catalog/test/component/software'); }); it('renders link for entity name and hides default kind', async () => { @@ -147,7 +145,7 @@ describe('', () => { }, }, ); - expect(screen.getByText('test/software')).toHaveAttribute( + expect(screen.getByText('test/software').closest('a')).toHaveAttribute( 'href', '/catalog/test/component/software', ); @@ -169,7 +167,7 @@ describe('', () => { }, }, ); - expect(screen.getByText('Custom Children')).toHaveAttribute( + expect(screen.getByText('Custom Children').closest('a')).toHaveAttribute( 'href', '/catalog/test/component/software', ); diff --git a/plugins/catalog-react/src/components/EntityRefLink/EntityRefLink.tsx b/plugins/catalog-react/src/components/EntityRefLink/EntityRefLink.tsx index d682abdc2b..32627fccb2 100644 --- a/plugins/catalog-react/src/components/EntityRefLink/EntityRefLink.tsx +++ b/plugins/catalog-react/src/components/EntityRefLink/EntityRefLink.tsx @@ -15,17 +15,16 @@ */ import { - Entity, CompoundEntityRef, DEFAULT_NAMESPACE, + Entity, parseEntityRef, } from '@backstage/catalog-model'; -import React, { forwardRef } from 'react'; -import { entityRouteRef } from '../../routes'; -import { humanizeEntityRef } from './humanize'; import { Link, LinkProps } from '@backstage/core-components'; import { useRouteRef } from '@backstage/core-plugin-api'; -import { Tooltip } from '@material-ui/core'; +import React, { forwardRef } from 'react'; +import { entityRouteRef } from '../../routes'; +import { EntityDisplayName } from '../EntityDisplayName'; /** * Props for {@link EntityRefLink}. @@ -35,6 +34,8 @@ import { Tooltip } from '@material-ui/core'; export type EntityRefLinkProps = { entityRef: Entity | CompoundEntityRef | string; defaultKind?: string; + defaultNamespace?: string; + /** @deprecated This option should no longer be used; presentation is requested through the {@link entityPresentationApiRef} instead */ title?: string; children?: React.ReactNode; } & Omit; @@ -46,52 +47,68 @@ export type EntityRefLinkProps = { */ export const EntityRefLink = forwardRef( (props, ref) => { - const { entityRef, defaultKind, title, children, ...linkProps } = props; - const entityRoute = useRouteRef(entityRouteRef); + const { + entityRef, + defaultKind, + defaultNamespace, + title, + children, + ...linkProps + } = props; + const entityRoute = useEntityRoute(props.entityRef); - let kind; - let namespace; - let name; - - if (typeof entityRef === 'string') { - const parsed = parseEntityRef(entityRef); - kind = parsed.kind; - namespace = parsed.namespace; - name = parsed.name; - } else if ('metadata' in entityRef) { - kind = entityRef.kind; - namespace = entityRef.metadata.namespace; - name = entityRef.metadata.name; - } else { - kind = entityRef.kind; - namespace = entityRef.namespace; - name = entityRef.name; - } - - kind = kind.toLocaleLowerCase('en-US'); - namespace = namespace?.toLocaleLowerCase('en-US') ?? DEFAULT_NAMESPACE; - - const routeParams = { - kind: encodeURIComponent(kind), - namespace: encodeURIComponent(namespace), - name: encodeURIComponent(name), - }; - const formattedEntityRefTitle = humanizeEntityRef( - { kind, namespace, name }, - { defaultKind }, + const content = children ?? title ?? ( + ); - const link = ( - - {children} - {!children && (title ?? formattedEntityRefTitle)} + return ( + + {content} ); - - return title ? ( - {link} - ) : ( - link - ); }, ) as (props: EntityRefLinkProps) => JSX.Element; + +// Hook that computes the route to a given entity / ref. This is a bit +// contrived, because it tries to retain the casing of the entity name if +// present, but not of other parts. This is in an attempt to make slightly more +// nice-looking URLs. +function useEntityRoute( + entityRef: Entity | CompoundEntityRef | string, +): string { + const entityRoute = useRouteRef(entityRouteRef); + + let kind; + let namespace; + let name; + + if (typeof entityRef === 'string') { + const parsed = parseEntityRef(entityRef); + kind = parsed.kind; + namespace = parsed.namespace; + name = parsed.name; + } else if ('metadata' in entityRef) { + kind = entityRef.kind; + namespace = entityRef.metadata.namespace; + name = entityRef.metadata.name; + } else { + kind = entityRef.kind; + namespace = entityRef.namespace; + name = entityRef.name; + } + + kind = kind.toLocaleLowerCase('en-US'); + namespace = namespace?.toLocaleLowerCase('en-US') ?? DEFAULT_NAMESPACE; + + const routeParams = { + kind: encodeURIComponent(kind), + namespace: encodeURIComponent(namespace), + name: encodeURIComponent(name), + }; + + return entityRoute(routeParams); +} diff --git a/plugins/catalog-react/src/components/EntityRefLink/EntityRefLinks.test.tsx b/plugins/catalog-react/src/components/EntityRefLink/EntityRefLinks.test.tsx index 4e0d52ef4e..31a5be33d0 100644 --- a/plugins/catalog-react/src/components/EntityRefLink/EntityRefLinks.test.tsx +++ b/plugins/catalog-react/src/components/EntityRefLink/EntityRefLinks.test.tsx @@ -34,7 +34,7 @@ describe('', () => { '/catalog/:namespace/:kind/:name/*': entityRouteRef, }, }); - expect(screen.getByText('component:software')).toHaveAttribute( + expect(screen.getByText('software').closest('a')).toHaveAttribute( 'href', '/catalog/default/component/software', ); @@ -59,11 +59,11 @@ describe('', () => { }, }); expect(screen.getByText(',')).toBeInTheDocument(); - expect(screen.getByText('component:software')).toHaveAttribute( + expect(screen.getByText('software').closest('a')).toHaveAttribute( 'href', '/catalog/default/component/software', ); - expect(screen.getByText('api:interface')).toHaveAttribute( + expect(screen.getByText('interface').closest('a')).toHaveAttribute( 'href', '/catalog/default/api/interface', ); diff --git a/plugins/catalog-react/src/components/EntityRefLink/EntityRefLinks.tsx b/plugins/catalog-react/src/components/EntityRefLink/EntityRefLinks.tsx index 2502fbbb6e..929b3f9376 100644 --- a/plugins/catalog-react/src/components/EntityRefLink/EntityRefLinks.tsx +++ b/plugins/catalog-react/src/components/EntityRefLink/EntityRefLinks.tsx @@ -13,11 +13,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { Entity, CompoundEntityRef } from '@backstage/catalog-model'; +import { + Entity, + CompoundEntityRef, + stringifyEntityRef, +} from '@backstage/catalog-model'; import React from 'react'; import { EntityRefLink } from './EntityRefLink'; import { LinkProps } from '@backstage/core-components'; -import { FetchedEntityRefLinks } from './FetchedEntityRefLinks'; /** * Props for {@link EntityRefLink}. @@ -26,21 +29,14 @@ import { FetchedEntityRefLinks } from './FetchedEntityRefLinks'; */ export type EntityRefLinksProps< TRef extends string | CompoundEntityRef | Entity, -> = ( - | { - defaultKind?: string; - entityRefs: TRef[]; - fetchEntities?: false; - getTitle?(entity: TRef): string | undefined; - } - | { - defaultKind?: string; - entityRefs: TRef[]; - fetchEntities: true; - getTitle(entity: Entity): string | undefined; - } -) & - Omit; +> = { + defaultKind?: string; + entityRefs: TRef[]; + /** @deprecated This option is no longer used; presentation is handled by entityPresentationApiRef instead */ + fetchEntities?: boolean; + /** @deprecated This option is no longer used; presentation is handled by entityPresentationApiRef instead */ + getTitle?(entity: TRef): string | undefined; +} & Omit; /** * Shows a list of clickable links to entities. @@ -50,32 +46,17 @@ export type EntityRefLinksProps< export function EntityRefLinks< TRef extends string | CompoundEntityRef | Entity, >(props: EntityRefLinksProps) { - const { entityRefs, defaultKind, fetchEntities, getTitle, ...linkProps } = - props; - - if (fetchEntities) { - return ( - - ); - } + const { entityRefs, ...linkProps } = props; return ( <> {entityRefs.map((r: TRef, i: number) => { + const entityRefString = + typeof r === 'string' ? r : stringifyEntityRef(r); return ( - + {i > 0 && ', '} - + ); })} diff --git a/plugins/catalog-react/src/components/EntityRefLink/FetchedEntityRefLinks.test.tsx b/plugins/catalog-react/src/components/EntityRefLink/FetchedEntityRefLinks.test.tsx deleted file mode 100644 index 9db6511662..0000000000 --- a/plugins/catalog-react/src/components/EntityRefLink/FetchedEntityRefLinks.test.tsx +++ /dev/null @@ -1,219 +0,0 @@ -/* - * 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 { FetchedEntityRefLinks } from './FetchedEntityRefLinks'; -import { entityRouteRef } from '../../routes'; -import { renderInTestApp, TestApiProvider } from '@backstage/test-utils'; -import { screen } from '@testing-library/react'; -import { Entity } from '@backstage/catalog-model'; -import React from 'react'; -import { JsonObject } from '@backstage/types'; -import { catalogApiRef } from '../../api'; -import { CatalogApi } from '@backstage/catalog-client'; - -describe('', () => { - const getTitle = (e: Entity): string => - (e.spec?.profile!! as JsonObject).displayName!!.toString()!!; - - it('should fetch entities and render the custom display text', async () => { - const entityRefs = [ - { - kind: 'Component', - namespace: 'default', - name: 'software', - }, - { - kind: 'API', - namespace: 'default', - name: 'interface', - }, - ]; - - const catalogApi: Partial = { - getEntities: () => - Promise.resolve({ - items: entityRefs.map(ref => ({ - apiVersion: 'backstage.io/v1alpha1', - kind: ref.kind, - metadata: { - name: ref.name, - namespace: ref.namespace, - }, - spec: { - profile: { - displayName: ref.name.toLocaleUpperCase('en-US'), - }, - type: 'organization', - }, - })), - }), - }; - - await renderInTestApp( - - - , - { - mountedRoutes: { - '/catalog/:namespace/:kind/:name/*': entityRouteRef, - }, - }, - ); - - expect(screen.getByText('SOFTWARE')).toHaveAttribute( - 'href', - '/catalog/default/component/software', - ); - - expect(screen.getByText('INTERFACE')).toHaveAttribute( - 'href', - '/catalog/default/api/interface', - ); - }); - - it('should use entities as they are provided and render the custom display text', async () => { - const entityRefs = [ - { - kind: 'Component', - namespace: 'default', - name: 'tool', - }, - { - kind: 'API', - namespace: 'default', - name: 'implementation', - }, - ].map(ref => ({ - apiVersion: 'backstage.io/v1alpha1', - kind: ref.kind, - metadata: { - name: ref.name, - namespace: ref.namespace, - }, - spec: { - profile: { - displayName: ref.name.toLocaleUpperCase('en-US'), - }, - type: 'organization', - }, - })); - - const catalogApi: Partial = {}; - - await renderInTestApp( - - - , - { - mountedRoutes: { - '/catalog/:namespace/:kind/:name/*': entityRouteRef, - }, - }, - ); - - expect(screen.getByText('TOOL')).toHaveAttribute( - 'href', - '/catalog/default/component/tool', - ); - - expect(screen.getByText('IMPLEMENTATION')).toHaveAttribute( - 'href', - '/catalog/default/api/implementation', - ); - }); - - it('should handle heterogeneous array of values to render the custom display text', async () => { - const entityRefs = [ - ...[ - { - kind: 'Component', - namespace: 'default', - name: 'tool', - }, - { - kind: 'API', - namespace: 'default', - name: 'implementation', - }, - ].map(ref => ({ - apiVersion: 'backstage.io/v1alpha1', - kind: ref.kind, - metadata: { - name: ref.name, - namespace: ref.namespace, - }, - spec: { - profile: { - displayName: ref.name.toLocaleUpperCase('en-US'), - }, - type: 'organization', - }, - })), - { - kind: 'Component', - namespace: 'default', - name: 'interface', - }, - ]; - - const catalogApi: Partial = { - getEntities: () => - Promise.resolve({ - items: [ - { - apiVersion: 'backstage.io/v1alpha1', - kind: 'Component', - metadata: { - name: 'interface', - namespace: 'default', - }, - spec: { - profile: { - displayName: 'INTERFACE', - }, - type: 'organization', - }, - }, - ], - }), - }; - - await renderInTestApp( - - - , - { - mountedRoutes: { - '/catalog/:namespace/:kind/:name/*': entityRouteRef, - }, - }, - ); - - expect(screen.getByText('TOOL')).toHaveAttribute( - 'href', - '/catalog/default/component/tool', - ); - - expect(screen.getByText('IMPLEMENTATION')).toHaveAttribute( - 'href', - '/catalog/default/api/implementation', - ); - - expect(screen.getByText('INTERFACE')).toHaveAttribute( - 'href', - '/catalog/default/component/interface', - ); - }); -}); diff --git a/plugins/catalog-react/src/components/EntityRefLink/FetchedEntityRefLinks.tsx b/plugins/catalog-react/src/components/EntityRefLink/FetchedEntityRefLinks.tsx deleted file mode 100644 index d8f013d50c..0000000000 --- a/plugins/catalog-react/src/components/EntityRefLink/FetchedEntityRefLinks.tsx +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright 2022 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { - Entity, - CompoundEntityRef, - parseEntityRef, -} from '@backstage/catalog-model'; -import React from 'react'; -import { EntityRefLink } from './EntityRefLink'; -import { ErrorPanel, LinkProps, Progress } from '@backstage/core-components'; -import useAsync from 'react-use/lib/useAsync'; -import { catalogApiRef } from '../../api'; -import { useApi } from '@backstage/core-plugin-api'; - -/** - * Props for {@link FetchedEntityRefLinks}. - * - * @public - */ -export type FetchedEntityRefLinksProps< - TRef extends string | CompoundEntityRef | Entity, -> = { - defaultKind?: string; - entityRefs: TRef[]; - getTitle(entity: Entity): string | undefined; -} & Omit; - -/** - * Shows a list of clickable links to entities with auto-fetching of entities - * for customising a displayed text via title attribute. - * - * @public - */ -export function FetchedEntityRefLinks< - TRef extends string | CompoundEntityRef | Entity, ->(props: FetchedEntityRefLinksProps) { - const { entityRefs, defaultKind, getTitle, ...linkProps } = props; - - const catalogApi = useApi(catalogApiRef); - - const { - value: entities = new Array(), - loading, - error, - } = useAsync(async () => { - const refs = entityRefs.reduce((acc, current) => { - if (typeof current === 'object' && 'metadata' in current) { - return acc; - } - return [...acc, parseEntityRef(current)]; - }, new Array()); - - const pureEntities = entityRefs.filter( - ref => typeof ref === 'object' && 'metadata' in ref, - ) as Array; - - return refs.length > 0 - ? [ - ...( - await catalogApi.getEntities({ - filter: refs.map(ref => ({ - kind: ref.kind, - 'metadata.namespace': ref.namespace, - 'metadata.name': ref.name, - })), - }) - ).items, - ...pureEntities, - ] - : pureEntities; - }, [entityRefs]); - - if (loading) { - return ; - } - - if (error) { - return ; - } - - return ( - <> - {entities.map((r: Entity, i) => { - return ( - - {i > 0 && ', '} - - - ); - })} - - ); -} diff --git a/plugins/catalog-react/src/components/index.ts b/plugins/catalog-react/src/components/index.ts index f77d13d2d3..5b7247cdbd 100644 --- a/plugins/catalog-react/src/components/index.ts +++ b/plugins/catalog-react/src/components/index.ts @@ -18,6 +18,7 @@ export * from './CatalogFilterLayout'; export * from './EntityKindPicker'; export * from './EntityLifecyclePicker'; export * from './EntityOwnerPicker'; +export * from './EntityDisplayName'; export * from './EntityRefLink'; export * from './EntityPeekAheadPopover'; export * from './EntitySearchBar'; diff --git a/plugins/catalog-react/src/overridableComponents.ts b/plugins/catalog-react/src/overridableComponents.ts index c3b392fcfe..e94af1c4fb 100644 --- a/plugins/catalog-react/src/overridableComponents.ts +++ b/plugins/catalog-react/src/overridableComponents.ts @@ -13,11 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import { Overrides } from '@material-ui/core/styles/overrides'; import { StyleRules } from '@material-ui/core/styles/withStyles'; import { CatalogReactUserListPickerClassKey, + CatalogReactEntityDisplayNameClassKey, CatalogReactEntityLifecyclePickerClassKey, CatalogReactEntitySearchBarClassKey, CatalogReactEntityTagPickerClassKey, @@ -28,6 +30,7 @@ import { /** @public */ export type CatalogReactComponentsNameToClassKey = { CatalogReactUserListPicker: CatalogReactUserListPickerClassKey; + CatalogReactEntityDisplayName: CatalogReactEntityDisplayNameClassKey; CatalogReactEntityLifecyclePicker: CatalogReactEntityLifecyclePickerClassKey; CatalogReactEntitySearchBar: CatalogReactEntitySearchBarClassKey; CatalogReactEntityTagPicker: CatalogReactEntityTagPickerClassKey; diff --git a/plugins/catalog/api-report.md b/plugins/catalog/api-report.md index 8173c395ba..7ed2879367 100644 --- a/plugins/catalog/api-report.md +++ b/plugins/catalog/api-report.md @@ -7,11 +7,16 @@ import { ApiHolder } from '@backstage/core-plugin-api'; import { BackstagePlugin } from '@backstage/core-plugin-api'; +import { CatalogApi } from '@backstage/plugin-catalog-react'; import { ComponentEntity } from '@backstage/catalog-model'; import { CompoundEntityRef } from '@backstage/catalog-model'; import { Entity } from '@backstage/catalog-model'; import { EntityOwnerPickerProps } from '@backstage/plugin-catalog-react'; +import { EntityPresentationApi } from '@backstage/plugin-catalog-react'; +import { EntityRefPresentation } from '@backstage/plugin-catalog-react'; +import { EntityRefPresentationSnapshot } from '@backstage/plugin-catalog-react'; import { ExternalRouteRef } from '@backstage/core-plugin-api'; +import { HumanDuration } from '@backstage/types'; import { IconComponent } from '@backstage/core-plugin-api'; import { IndexableDocument } from '@backstage/plugin-search-common'; import { InfoCardVariants } from '@backstage/core-components'; @@ -196,6 +201,7 @@ export interface CatalogTableRow { // (undocumented) resolved: { name: string; + entityRef: string; partOfSystemRelationTitle?: string; partOfSystemRelations: CompoundEntityRef[]; ownedByRelationsTitle?: string; @@ -224,6 +230,47 @@ export interface DefaultCatalogPageProps { tableOptions?: TableProps['options']; } +// @public +export class DefaultEntityPresentationApi implements EntityPresentationApi { + static create( + options: DefaultEntityPresentationApiOptions, + ): EntityPresentationApi; + static createLocal(): EntityPresentationApi; + // (undocumented) + forEntity( + entityOrRef: Entity | string, + context?: { + defaultKind?: string; + defaultNamespace?: string; + }, + ): EntityRefPresentation; +} + +// @public +export interface DefaultEntityPresentationApiOptions { + batchDelay?: HumanDuration; + cacheTtl?: HumanDuration; + catalogApi?: CatalogApi; + renderer?: DefaultEntityPresentationApiRenderer; +} + +// @public +export interface DefaultEntityPresentationApiRenderer { + async?: boolean; + extraFields?: string[]; + render: (options: { + entityRef: string; + loading: boolean; + entity: Entity | undefined; + context: { + defaultKind?: string; + defaultNamespace?: string; + }; + }) => { + snapshot: Omit; + }; +} + // @public export class DefaultStarredEntitiesApi implements StarredEntitiesApi { constructor(opts: { storageApi: StorageApi }); diff --git a/plugins/catalog/package.json b/plugins/catalog/package.json index dc03fb7b86..42d26b4b02 100644 --- a/plugins/catalog/package.json +++ b/plugins/catalog/package.json @@ -63,6 +63,8 @@ "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", "@types/react": "^16.13.1 || ^17.0.0", + "dataloader": "^2.0.0", + "expiry-map": "^2.0.0", "history": "^5.0.0", "lodash": "^4.17.21", "pluralize": "^8.0.0", diff --git a/plugins/catalog/src/apis/EntityPresentationApi/DefaultEntityPresentationApi.test.ts b/plugins/catalog/src/apis/EntityPresentationApi/DefaultEntityPresentationApi.test.ts new file mode 100644 index 0000000000..eb20b20f9f --- /dev/null +++ b/plugins/catalog/src/apis/EntityPresentationApi/DefaultEntityPresentationApi.test.ts @@ -0,0 +1,204 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { CatalogApi } from '@backstage/catalog-client'; +import { Entity } from '@backstage/catalog-model'; +import { + EntityRefPresentation, + EntityRefPresentationSnapshot, +} from '@backstage/plugin-catalog-react'; +import { DefaultEntityPresentationApi } from './DefaultEntityPresentationApi'; + +describe('DefaultEntityPresentationApi', () => { + it('works in local mode', () => { + const api = DefaultEntityPresentationApi.createLocal(); + + expect(api.forEntity('component:default/test')).toEqual({ + snapshot: { + entityRef: 'component:default/test', + entity: undefined, + primaryTitle: 'test', + secondaryTitle: 'component:default/test', + Icon: expect.anything(), + }, + update$: undefined, + }); + + expect( + api.forEntity('component:default/test', { defaultKind: 'Other' }), + ).toEqual({ + snapshot: { + entityRef: 'component:default/test', + entity: undefined, + primaryTitle: 'component:test', + secondaryTitle: 'component:default/test', + Icon: expect.anything(), + }, + update$: undefined, + }); + + expect( + api.forEntity('component:default/test', { + defaultNamespace: 'other', + }), + ).toEqual({ + snapshot: { + entityRef: 'component:default/test', + entity: undefined, + primaryTitle: 'default/test', + secondaryTitle: 'component:default/test', + Icon: expect.anything(), + }, + update$: undefined, + }); + + const entity: Entity = { + apiVersion: 'backstage.io/v1alpha1', + kind: 'Component', + metadata: { + name: 'test', + namespace: 'default', + }, + spec: { + type: 'service', + }, + }; + + expect(api.forEntity(entity)).toEqual({ + snapshot: { + entityRef: 'component:default/test', + entity: entity, + primaryTitle: 'test', + secondaryTitle: 'component:default/test | service', + Icon: expect.anything(), + }, + update$: undefined, + }); + }); + + it('works in catalog mode', async () => { + const catalogApi = { + getEntitiesByRefs: jest.fn(), + }; + const api = DefaultEntityPresentationApi.create({ + catalogApi: catalogApi as Partial as any, + }); + + catalogApi.getEntitiesByRefs.mockResolvedValueOnce({ + items: [ + { + apiVersion: 'backstage.io/v1alpha1', + kind: 'Component', + metadata: { + name: 'test', + namespace: 'default', + etag: 'something', + }, + spec: { + type: 'service', + }, + }, + ], + }); + + // return simple presentation, call catalog, return full presentation + await expect( + consumePresentation(api.forEntity('component:default/test')), + ).resolves.toEqual([ + { + entityRef: 'component:default/test', + entity: undefined, + primaryTitle: 'test', + secondaryTitle: 'component:default/test', + Icon: expect.anything(), + }, + { + entityRef: 'component:default/test', + entity: { + apiVersion: 'backstage.io/v1alpha1', + kind: 'Component', + metadata: { + etag: 'something', + name: 'test', + namespace: 'default', + }, + spec: { + type: 'service', + }, + }, + primaryTitle: 'test', + secondaryTitle: 'component:default/test | service', + Icon: expect.anything(), + }, + ]); + + // use cached entity, immediately return full presentation + await expect( + consumePresentation(api.forEntity('component:default/test')), + ).resolves.toEqual([ + { + entityRef: 'component:default/test', + entity: { + apiVersion: 'backstage.io/v1alpha1', + kind: 'Component', + metadata: { + etag: 'something', + name: 'test', + namespace: 'default', + }, + spec: { + type: 'service', + }, + }, + primaryTitle: 'test', + secondaryTitle: 'component:default/test | service', + Icon: expect.anything(), + }, + ]); + + expect(catalogApi.getEntitiesByRefs).toHaveBeenCalledTimes(1); + expect(catalogApi.getEntitiesByRefs).toHaveBeenCalledWith( + expect.objectContaining({ + entityRefs: ['component:default/test'], + }), + ); + }); +}); + +async function consumePresentation( + presentation: EntityRefPresentation, +): Promise { + const result: EntityRefPresentationSnapshot[] = []; + const { snapshot, update$ } = presentation; + + result.push(snapshot); + + if (update$) { + await new Promise(resolve => { + const sub = update$.subscribe({ + next: newSnapshot => { + result.push(newSnapshot); + }, + complete: () => { + sub.unsubscribe(); + resolve(); + }, + }); + }); + } + + return result; +} diff --git a/plugins/catalog/src/apis/EntityPresentationApi/DefaultEntityPresentationApi.ts b/plugins/catalog/src/apis/EntityPresentationApi/DefaultEntityPresentationApi.ts new file mode 100644 index 0000000000..9ec8af7760 --- /dev/null +++ b/plugins/catalog/src/apis/EntityPresentationApi/DefaultEntityPresentationApi.ts @@ -0,0 +1,374 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Entity, stringifyEntityRef } from '@backstage/catalog-model'; +import { + CatalogApi, + EntityPresentationApi, + EntityRefPresentation, + EntityRefPresentationSnapshot, +} from '@backstage/plugin-catalog-react'; +import { HumanDuration } from '@backstage/types'; +import DataLoader from 'dataloader'; +import ExpiryMap from 'expiry-map'; +import uniq from 'lodash/uniq'; +import ObservableImpl from 'zen-observable'; +import { + DEFAULT_BATCH_DELAY, + DEFAULT_CACHE_TTL, + DEFAULT_ENTITY_FIELDS, + createDefaultRenderer, +} from './defaults'; +import { durationToMs } from './util'; + +/** + * A custom renderer for the {@link DefaultEntityPresentationApi}. + * + * @public + */ +export interface DefaultEntityPresentationApiRenderer { + /** + * An extra set of fields to request for entities from the catalog API. + * + * @remarks + * + * You may want to specify this to get additional entity fields. The smaller + * the set of fields, the more efficient requests will be to the catalog + * backend. + * + * The default set of fields is: apiVersion, kind, the scalar metadata fields + * (uid, etag, name, namespace, title, description), spec.type, and + * spec.profile. + * + * This field is ignored if async is set to false. + */ + extraFields?: string[]; + + /** + * Whether to request the entity from the catalog API asynchronously. + * + * @remarks + * + * If this is set to true, entity data will be streamed in from the catalog + * whenever needed, and the render function may be called more than once: + * first when no entity data existed (or with old cached data), and then again + * at a later point when data is loaded from the catalog that proved to be + * different from the old one. + * + * @defaultValue true + */ + async?: boolean; + + /** + * The actual render function. + * + * @remarks + * + * This function may be called multiple times. + * + * The loading flag signals that the framework MAY be trying to load more + * entity data from the catalog and call the render function again, if it + * succeeds. In some cases you may want to render a loading state in that + * case. + * + * The entity may or may not be given. If the caller of the presentation API + * did present an entity upfront, then that's what will be passed in here. + * Otherwise, it may be a server-side entity that either comes from a local + * cache or directly from the server. + * + * In either case, the renderer should return a presentation that is the most + * useful possible for the end user, given the data that is available. + */ + render: (options: { + entityRef: string; + loading: boolean; + entity: Entity | undefined; + context: { + defaultKind?: string; + defaultNamespace?: string; + }; + }) => { + snapshot: Omit; + }; +} + +/** + * Options for the {@link DefaultEntityPresentationApi}. + * + * @public + */ +export interface DefaultEntityPresentationApiOptions { + /** + * The catalog API to use. If you want to use any asynchronous features, you + * must supply one. + */ + catalogApi?: CatalogApi; + + /** + * When to expire entities that have been loaded from the catalog API and + * cached for a while. + * + * @defaultValue 30 seconds + * @remarks + * + * The higher this value, the lower the load on the catalog API, but also the + * higher the risk of users seeing stale data. + */ + cacheTtl?: HumanDuration; + + /** + * For how long to wait before sending a batch of entity references to the + * catalog API. + * + * @defaultValue 50 milliseconds + * @remarks + * + * The higher this value, the greater the chance of batching up requests from + * across a page, but also the longer the lag time before displaying accurate + * information. + */ + batchDelay?: HumanDuration; + + /** + * A custom renderer, if any. + */ + renderer?: DefaultEntityPresentationApiRenderer; +} + +interface CacheEntry { + updatedAt: number; + entity: Entity | undefined; +} + +/** + * Default implementation of the {@link @backstage/plugin-catalog-react#EntityPresentationApi}. + * + * @public + */ +export class DefaultEntityPresentationApi implements EntityPresentationApi { + /** + * Creates a new presentation API that does not reach out to the catalog. + */ + static createLocal(): EntityPresentationApi { + return new DefaultEntityPresentationApi({ + renderer: createDefaultRenderer({ async: false }), + }); + } + + /** + * Creates a new presentation API that calls out to the catalog as needed to + * get additional information about entities. + */ + static create( + options: DefaultEntityPresentationApiOptions, + ): EntityPresentationApi { + return new DefaultEntityPresentationApi(options); + } + + // This cache holds on to all entity data ever loaded, no matter how old. Each + // entry is tagged with a timestamp of when it was inserted. We use this map + // to be able to always render SOME data even though the information is old. + // Entities change very rarely, so it's likely that the rendered information + // was perfectly fine in the first place. + readonly #cache: Map; + readonly #cacheTtlMs: number; + readonly #loader: DataLoader | undefined; + readonly #renderer: DefaultEntityPresentationApiRenderer; + + private constructor(options: DefaultEntityPresentationApiOptions) { + const cacheTtl = options.cacheTtl ?? DEFAULT_CACHE_TTL; + const batchDelay = options.batchDelay ?? DEFAULT_BATCH_DELAY; + const renderer = options.renderer ?? createDefaultRenderer({ async: true }); + + if (renderer.async) { + if (!options.catalogApi) { + throw new TypeError(`Asynchronous rendering requires a catalog API`); + } + this.#loader = this.#createLoader({ + cacheTtl, + batchDelay, + renderer, + catalogApi: options.catalogApi, + }); + } + + this.#cacheTtlMs = durationToMs(cacheTtl); + this.#cache = new Map(); + this.#renderer = renderer; + } + + /** {@inheritdoc @backstage/plugin-catalog-react#EntityPresentationApi.forEntity} */ + forEntity( + entityOrRef: Entity | string, + context?: { + defaultKind?: string; + defaultNamespace?: string; + }, + ): EntityRefPresentation { + const { entityRef, entity, needsLoad } = + this.#getEntityForInitialRender(entityOrRef); + + let rendered: Omit; + try { + const output = this.#renderer.render({ + entityRef: entityRef, + loading: needsLoad, + entity: entity, + context: context || {}, + }); + rendered = output.snapshot; + } catch { + // This is what gets presented if the renderer throws an error + rendered = { + primaryTitle: entityRef, + }; + } + + const observable = !needsLoad + ? undefined + : new ObservableImpl(subscriber => { + let aborted = false; + + Promise.resolve() + .then(() => this.#loader?.load(entityRef)) + .then(newEntity => { + if ( + !aborted && + newEntity && + newEntity.metadata.etag !== entity?.metadata.etag + ) { + const output = this.#renderer.render({ + entityRef: entityRef, + loading: false, + entity: newEntity, + context: context || {}, + }); + subscriber.next({ + ...output.snapshot, + entityRef: entityRef, + entity: newEntity, + }); + } + }) + .catch(() => { + // Intentionally ignored - we do not propagate errors to the + // observable here. The presentation API should be error free and + // always return SOMETHING that makes sense to render, and we have + // already ensured above that the initial snapshot was that. + }) + .finally(() => { + if (!aborted) { + subscriber.complete(); + } + }); + + return () => { + aborted = true; + }; + }); + + return { + snapshot: { + ...rendered, + entityRef: entityRef, + entity: entity, + }, + update$: observable, + }; + } + + #getEntityForInitialRender(entityOrRef: Entity | string): { + entity: Entity | undefined; + entityRef: string; + needsLoad: boolean; + } { + // If we were given an entity in the first place, we use it for a single + // pass of rendering and assume that it's up to date and not partial (i.e. + // we expect that it wasn't fetched in such a way that the required fields + // of the renderer were excluded) + if (typeof entityOrRef !== 'string') { + return { + entity: entityOrRef, + entityRef: stringifyEntityRef(entityOrRef), + needsLoad: false, + }; + } + + const cached = this.#cache.get(entityOrRef); + const cachedEntity: Entity | undefined = cached?.entity; + const cacheNeedsUpdate = + !cached || Date.now() - cached.updatedAt > this.#cacheTtlMs; + const needsLoad = + cacheNeedsUpdate && + this.#renderer.async !== false && + this.#loader !== undefined; + + return { + entity: cachedEntity, + entityRef: entityOrRef, + needsLoad, + }; + } + + #createLoader(options: { + catalogApi: CatalogApi; + cacheTtl: HumanDuration; + batchDelay: HumanDuration; + renderer: DefaultEntityPresentationApiRenderer; + }): DataLoader { + const cacheTtlMs = durationToMs(options.cacheTtl); + const batchDelayMs = durationToMs(options.batchDelay); + + const entityFields = uniq( + [DEFAULT_ENTITY_FIELDS, options.renderer?.extraFields ?? []].flat(), + ); + + return new DataLoader( + async (entityRefs: readonly string[]) => { + const { items } = await options.catalogApi!.getEntitiesByRefs({ + entityRefs: entityRefs as string[], + fields: [...entityFields], + }); + + const now = Date.now(); + entityRefs.forEach((entityRef, index) => { + this.#cache.set(entityRef, { + updatedAt: now, + entity: items[index], + }); + }); + + return items; + }, + { + name: DefaultEntityPresentationApi.name, + // This cache is the one that the data loader uses internally for + // memoizing requests; essentially what it achieves is that multiple + // requests for the same entity ref will be batched up into a single + // request and then the resulting promises are held on to. We put an + // expiring map here, which makes it so that it re-fetches data with the + // expiry cadence of that map. Otherwise it would only fetch a given ref + // once and then never try again. This cache does therefore not fulfill + // the same purpose as the one that is in the root of the class. + cacheMap: new ExpiryMap(cacheTtlMs), + maxBatchSize: 100, + batchScheduleFn: batchDelayMs + ? cb => setTimeout(cb, batchDelayMs) + : undefined, + }, + ); + } +} diff --git a/plugins/catalog/src/apis/EntityPresentationApi/defaults.tsx b/plugins/catalog/src/apis/EntityPresentationApi/defaults.tsx new file mode 100644 index 0000000000..b3f4c5ec3c --- /dev/null +++ b/plugins/catalog/src/apis/EntityPresentationApi/defaults.tsx @@ -0,0 +1,78 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { IconComponent } from '@backstage/core-plugin-api'; +import { defaultEntityPresentation } from '@backstage/plugin-catalog-react'; +import { HumanDuration } from '@backstage/types'; +import ApartmentIcon from '@material-ui/icons/Apartment'; +import BusinessIcon from '@material-ui/icons/Business'; +import ExtensionIcon from '@material-ui/icons/Extension'; +import HelpIcon from '@material-ui/icons/Help'; +import LibraryAddIcon from '@material-ui/icons/LibraryAdd'; +import LocationOnIcon from '@material-ui/icons/LocationOn'; +import MemoryIcon from '@material-ui/icons/Memory'; +import PeopleIcon from '@material-ui/icons/People'; +import PersonIcon from '@material-ui/icons/Person'; +import { DefaultEntityPresentationApiRenderer } from './DefaultEntityPresentationApi'; + +export const DEFAULT_CACHE_TTL: HumanDuration = { seconds: 30 }; + +export const DEFAULT_BATCH_DELAY: HumanDuration = { milliseconds: 50 }; + +export const DEFAULT_ENTITY_FIELDS: string[] = [ + 'apiVersion', + 'kind', + 'metadata.uid', + 'metadata.etag', + 'metadata.name', + 'metadata.namespace', + 'metadata.title', + 'metadata.description', + 'spec.type', + 'spec.profile', +]; + +export const UNKNOWN_KIND_ICON: IconComponent = HelpIcon; + +export const DEFAULT_ICONS: Record = { + api: ExtensionIcon, + component: MemoryIcon, + system: BusinessIcon, + domain: ApartmentIcon, + location: LocationOnIcon, + user: PersonIcon, + group: PeopleIcon, + template: LibraryAddIcon, +}; + +export function createDefaultRenderer(options: { + async: boolean; +}): DefaultEntityPresentationApiRenderer { + return { + async: options.async, + + render: ({ entityRef, entity, context }) => { + const presentation = defaultEntityPresentation( + entity || entityRef, + context, + ); + return { + snapshot: presentation, + loadEntity: options.async, + }; + }, + }; +} diff --git a/plugins/catalog/src/apis/EntityPresentationApi/index.ts b/plugins/catalog/src/apis/EntityPresentationApi/index.ts new file mode 100644 index 0000000000..c1c6426ea0 --- /dev/null +++ b/plugins/catalog/src/apis/EntityPresentationApi/index.ts @@ -0,0 +1,21 @@ +/* + * Copyright 2021 The 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 { + DefaultEntityPresentationApi, + type DefaultEntityPresentationApiOptions, + type DefaultEntityPresentationApiRenderer, +} from './DefaultEntityPresentationApi'; diff --git a/plugins/catalog/src/apis/EntityPresentationApi/util.ts b/plugins/catalog/src/apis/EntityPresentationApi/util.ts new file mode 100644 index 0000000000..e5dfe6bd7b --- /dev/null +++ b/plugins/catalog/src/apis/EntityPresentationApi/util.ts @@ -0,0 +1,38 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { HumanDuration } from '@backstage/types'; + +export function durationToMs(duration: HumanDuration): number { + const { + years = 0, + months = 0, + weeks = 0, + days = 0, + hours = 0, + minutes = 0, + seconds = 0, + milliseconds = 0, + } = duration; + + const totalDays = years * 365 + months * 30 + weeks * 7 + days; + const totalHours = totalDays * 24 + hours; + const totalMinutes = totalHours * 60 + minutes; + const totalSeconds = totalMinutes * 60 + seconds; + const totalMilliseconds = totalSeconds * 1000 + milliseconds; + + return totalMilliseconds; +} diff --git a/plugins/catalog/src/apis/index.ts b/plugins/catalog/src/apis/index.ts index 5c7e980890..271d749afc 100644 --- a/plugins/catalog/src/apis/index.ts +++ b/plugins/catalog/src/apis/index.ts @@ -14,4 +14,5 @@ * limitations under the License. */ +export * from './EntityPresentationApi'; export * from './StarredEntitiesApi'; diff --git a/plugins/catalog/src/components/CatalogTable/CatalogTable.tsx b/plugins/catalog/src/components/CatalogTable/CatalogTable.tsx index 67579d5273..24ccb22908 100644 --- a/plugins/catalog/src/components/CatalogTable/CatalogTable.tsx +++ b/plugins/catalog/src/components/CatalogTable/CatalogTable.tsx @@ -19,6 +19,7 @@ import { Entity, RELATION_OWNED_BY, RELATION_PART_OF, + stringifyEntityRef, } from '@backstage/catalog-model'; import { CodeSnippet, @@ -203,9 +204,13 @@ export const CatalogTable = (props: CatalogTableProps) => { return { entity, resolved: { + // This name is here for backwards compatibility mostly; the + // presentation of refs in the table should in general be handled with + // EntityRefLink / EntityName components name: humanizeEntityRef(entity, { defaultKind: 'Component', }), + entityRef: stringifyEntityRef(entity), ownedByRelationsTitle: ownedByRelations .map(r => humanizeEntityRef(r, { defaultKind: 'group' })) .join(', '), diff --git a/plugins/catalog/src/components/CatalogTable/columns.tsx b/plugins/catalog/src/components/CatalogTable/columns.tsx index fc6e1aaf6b..3c31fcadf1 100644 --- a/plugins/catalog/src/components/CatalogTable/columns.tsx +++ b/plugins/catalog/src/components/CatalogTable/columns.tsx @@ -43,7 +43,7 @@ export const columnFactories = Object.freeze({ return { title: 'Name', - field: 'resolved.name', + field: 'resolved.entityRef', highlight: true, customSort({ entity: entity1 }, { entity: entity2 }) { // TODO: We could implement this more efficiently by comparing field by field. @@ -54,7 +54,6 @@ export const columnFactories = Object.freeze({ ), }; diff --git a/plugins/catalog/src/components/CatalogTable/types.ts b/plugins/catalog/src/components/CatalogTable/types.ts index 5bbb3af122..f2b3324169 100644 --- a/plugins/catalog/src/components/CatalogTable/types.ts +++ b/plugins/catalog/src/components/CatalogTable/types.ts @@ -20,7 +20,11 @@ import { Entity, CompoundEntityRef } from '@backstage/catalog-model'; export interface CatalogTableRow { entity: Entity; resolved: { + // This name is here for backwards compatibility mostly; the presentation of + // refs in the table should in general be handled with EntityRefLink / + // EntityName components name: string; + entityRef: string; partOfSystemRelationTitle?: string; partOfSystemRelations: CompoundEntityRef[]; ownedByRelationsTitle?: string; diff --git a/plugins/catalog/src/components/EntityLayout/EntityLayout.test.tsx b/plugins/catalog/src/components/EntityLayout/EntityLayout.test.tsx index 08c751c6c6..33414152be 100644 --- a/plugins/catalog/src/components/EntityLayout/EntityLayout.test.tsx +++ b/plugins/catalog/src/components/EntityLayout/EntityLayout.test.tsx @@ -79,6 +79,7 @@ describe('EntityLayout', () => { kind: 'MyKind', metadata: { name: 'my-entity', + namespace: 'default', title: 'My Entity', }, } as Entity; diff --git a/plugins/catalog/src/components/EntityLayout/EntityLayout.tsx b/plugins/catalog/src/components/EntityLayout/EntityLayout.tsx index a190984ffe..71c6bcc860 100644 --- a/plugins/catalog/src/components/EntityLayout/EntityLayout.tsx +++ b/plugins/catalog/src/components/EntityLayout/EntityLayout.tsx @@ -36,6 +36,7 @@ import { useRouteRefParams, } from '@backstage/core-plugin-api'; import { + EntityDisplayName, EntityRefLinks, entityRouteRef, FavoriteEntity, @@ -78,7 +79,11 @@ function EntityLayoutTitle(props: { whiteSpace="nowrap" overflow="hidden" > - {title} + {entity ? ( + + ) : ( + title + )} {entity && } diff --git a/plugins/catalog/src/plugin.ts b/plugins/catalog/src/plugin.ts index 3410984ec3..d310639fb1 100644 --- a/plugins/catalog/src/plugin.ts +++ b/plugins/catalog/src/plugin.ts @@ -18,6 +18,7 @@ import { CatalogClient } from '@backstage/catalog-client'; import { Entity } from '@backstage/catalog-model'; import { catalogApiRef, + entityPresentationApiRef, entityRouteRef, starredEntitiesApiRef, } from '@backstage/plugin-catalog-react'; @@ -52,6 +53,7 @@ import { HasSystemsCardProps } from './components/HasSystemsCard'; import { RelatedEntitiesCardProps } from './components/RelatedEntitiesCard'; import { CatalogSearchResultListItemProps } from './components/CatalogSearchResultListItem'; import { rootRouteRef } from './routes'; +import { DefaultEntityPresentationApi } from './apis/EntityPresentationApi'; /** @public */ export const catalogPlugin = createPlugin({ @@ -72,6 +74,12 @@ export const catalogPlugin = createPlugin({ factory: ({ storageApi }) => new DefaultStarredEntitiesApi({ storageApi }), }), + createApiFactory({ + api: entityPresentationApiRef, + deps: { catalogApi: catalogApiRef }, + factory: ({ catalogApi }) => + DefaultEntityPresentationApi.create({ catalogApi }), + }), ], routes: { catalogIndex: rootRouteRef, diff --git a/plugins/org/src/components/Cards/User/UserProfileCard/UserProfileCard.test.tsx b/plugins/org/src/components/Cards/User/UserProfileCard/UserProfileCard.test.tsx index 555815c2de..a18e9980e9 100644 --- a/plugins/org/src/components/Cards/User/UserProfileCard/UserProfileCard.test.tsx +++ b/plugins/org/src/components/Cards/User/UserProfileCard/UserProfileCard.test.tsx @@ -65,7 +65,7 @@ describe('UserSummary Test', () => { 'src', 'https://example.com/staff/calum.jpeg', ); - expect(screen.getByText('examplegroup')).toHaveAttribute( + expect(screen.getByText('examplegroup').closest('a')).toHaveAttribute( 'href', '/catalog/default/group/examplegroup', ); diff --git a/plugins/user-settings/src/components/General/UserSettingsIdentityCard.test.tsx b/plugins/user-settings/src/components/General/UserSettingsIdentityCard.test.tsx index df1fabab0a..0129542b03 100644 --- a/plugins/user-settings/src/components/General/UserSettingsIdentityCard.test.tsx +++ b/plugins/user-settings/src/components/General/UserSettingsIdentityCard.test.tsx @@ -45,7 +45,7 @@ describe('', () => { }, ); - expect(screen.getByText('user:default/test-ownership')).toBeInTheDocument(); + expect(screen.getByText('user:test-ownership')).toBeInTheDocument(); expect(screen.getByText('foo:bar/foobar')).toBeInTheDocument(); }); }); diff --git a/yarn.lock b/yarn.lock index fad4640b35..8bd773cf70 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5872,6 +5872,8 @@ __metadata: "@testing-library/react": ^12.1.3 "@testing-library/user-event": ^14.0.0 "@types/react": ^16.13.1 || ^17.0.0 + dataloader: ^2.0.0 + expiry-map: ^2.0.0 history: ^5.0.0 lodash: ^4.17.21 pluralize: ^8.0.0 @@ -25825,6 +25827,15 @@ __metadata: languageName: node linkType: hard +"expiry-map@npm:^2.0.0": + version: 2.0.0 + resolution: "expiry-map@npm:2.0.0" + dependencies: + map-age-cleaner: ^0.2.0 + checksum: 9be8662e1a5c1084fb6d0ddc5402658dd06101c330454062b2f5efbf1477259d272e54ec16663d7d12a93d08ed510535781c36acb214696c5bc3a690a02a7a9d + languageName: node + linkType: hard + "exponential-backoff@npm:^3.1.1": version: 3.1.1 resolution: "exponential-backoff@npm:3.1.1" @@ -32078,6 +32089,15 @@ __metadata: languageName: node linkType: hard +"map-age-cleaner@npm:^0.2.0": + version: 0.2.0 + resolution: "map-age-cleaner@npm:0.2.0" + dependencies: + p-defer: ^1.0.0 + checksum: 13a6810b76b0067efa7f4b0f3dc58b58b4a4b5faa4cae5a0e8d5d59eda04d7074724eee426c9b5890a1d7e14d1e2902a090587acc8e2430198e79ab1556a2dad + languageName: node + linkType: hard + "map-cache@npm:^0.2.0": version: 0.2.2 resolution: "map-cache@npm:0.2.2" @@ -34515,6 +34535,13 @@ __metadata: languageName: node linkType: hard +"p-defer@npm:^1.0.0": + version: 1.0.0 + resolution: "p-defer@npm:1.0.0" + checksum: 4271b935c27987e7b6f229e5de4cdd335d808465604644cb7b4c4c95bef266735859a93b16415af8a41fd663ee9e3b97a1a2023ca9def613dba1bad2a0da0c7b + languageName: node + linkType: hard + "p-filter@npm:^2.1.0": version: 2.1.0 resolution: "p-filter@npm:2.1.0" From e5ce16aa44a81acb373ab39570349f94d62c378e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 18 Aug 2023 13:25:19 +0200 Subject: [PATCH 002/102] address comments MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/heavy-experts-accept.md | 2 +- .../defaultEntityPresentation.ts | 46 ++++++++++--------- .../EntityRefLink/EntityRefLink.test.tsx | 18 ++++---- .../UnregisterEntityDialog.test.tsx | 8 ++-- .../TemplateCard/TemplateCard.test.tsx | 13 +++--- .../General/UserSettingsIdentityCard.test.tsx | 4 +- 6 files changed, 49 insertions(+), 42 deletions(-) diff --git a/.changeset/heavy-experts-accept.md b/.changeset/heavy-experts-accept.md index ec232d1c4d..e6f2f435b8 100644 --- a/.changeset/heavy-experts-accept.md +++ b/.changeset/heavy-experts-accept.md @@ -8,7 +8,7 @@ iconography etc) are represented in the user interface. Usage of this API is initially added to the `EntityRefLink` and `EntityRefLinks` components, so that they can render richer, more correct representation of -entity refs. There's also a new `EntityName` component, which works just like +entity refs. There's also a new `EntityDisplayName` component, which works just like the `EntityRefLink` but without the link. Along with that change, the `fetchEntities` and `getTitle` props of diff --git a/plugins/catalog-react/src/apis/EntityPresentationApi/defaultEntityPresentation.ts b/plugins/catalog-react/src/apis/EntityPresentationApi/defaultEntityPresentation.ts index 31ed742a8d..ab9ea68060 100644 --- a/plugins/catalog-react/src/apis/EntityPresentationApi/defaultEntityPresentation.ts +++ b/plugins/catalog-react/src/apis/EntityPresentationApi/defaultEntityPresentation.ts @@ -85,9 +85,9 @@ export function defaultEntityPresentation( const shortRef = getShortRef({ kind, namespace, name, context }); - const primary = [displayName, title, shortRef].filter( + const primary = [displayName, title, shortRef].find( candidate => candidate && typeof candidate === 'string', - )[0]!; + )!; const secondary = [ primary !== entityRef ? entityRef : undefined, @@ -134,35 +134,35 @@ function getParts(entityOrRef: Entity | CompoundEntityRef | string): { } if (typeof entityOrRef === 'object' && entityOrRef !== null) { - const kind = [get(entityOrRef, 'kind')].filter( + const kind = [get(entityOrRef, 'kind')].find( candidate => candidate && typeof candidate === 'string', - )[0]; + ); const namespace = [ get(entityOrRef, 'metadata.namespace'), get(entityOrRef, 'namespace'), - ].filter(candidate => candidate && typeof candidate === 'string')[0]; + ].find(candidate => candidate && typeof candidate === 'string'); const name = [ get(entityOrRef, 'metadata.name'), get(entityOrRef, 'name'), - ].filter(candidate => candidate && typeof candidate === 'string')[0]; + ].find(candidate => candidate && typeof candidate === 'string'); - const title = [get(entityOrRef, 'metadata.title')].filter( + const title = [get(entityOrRef, 'metadata.title')].find( candidate => candidate && typeof candidate === 'string', - )[0]; + ); - const description = [get(entityOrRef, 'metadata.description')].filter( + const description = [get(entityOrRef, 'metadata.description')].find( candidate => candidate && typeof candidate === 'string', - )[0]; + ); - const displayName = [get(entityOrRef, 'spec.profile.displayName')].filter( + const displayName = [get(entityOrRef, 'spec.profile.displayName')].find( candidate => candidate && typeof candidate === 'string', - )[0]; + ); - const type = [get(entityOrRef, 'spec.type')].filter( + const type = [get(entityOrRef, 'spec.type')].find( candidate => candidate && typeof candidate === 'string', - )[0]; + ); return { kind, namespace, name, title, description, displayName, type }; } @@ -177,23 +177,27 @@ function getShortRef(options: { context?: { defaultKind?: string; defaultNamespace?: string }; }): string { const kind = options.kind?.toLocaleLowerCase('en-US') || 'unknown'; - const namespace = - options.namespace?.toLocaleLowerCase('en-US') || DEFAULT_NAMESPACE; - const name = options.name?.toLocaleLowerCase('en-US') || 'unknown'; - const defaultKind = options.context?.defaultKind?.toLocaleLowerCase('en-US'); - const defaultNamespace = + const namespace = options.namespace || DEFAULT_NAMESPACE; + const name = options.name || 'unknown'; + const defaultKindLower = + options.context?.defaultKind?.toLocaleLowerCase('en-US'); + const defaultNamespaceLower = options.context?.defaultNamespace?.toLocaleLowerCase('en-US'); let result = name; if ( - (defaultNamespace && namespace !== defaultNamespace) || + (defaultNamespaceLower && + namespace.toLocaleLowerCase('en-US') !== defaultNamespaceLower) || namespace !== DEFAULT_NAMESPACE ) { result = `${namespace}/${result}`; } - if (defaultKind && kind !== defaultKind) { + if ( + defaultKindLower && + kind.toLocaleLowerCase('en-US') !== defaultKindLower + ) { result = `${kind}:${result}`; } diff --git a/plugins/catalog-react/src/components/EntityRefLink/EntityRefLink.test.tsx b/plugins/catalog-react/src/components/EntityRefLink/EntityRefLink.test.tsx index 65d9be2190..c1a37b9682 100644 --- a/plugins/catalog-react/src/components/EntityRefLink/EntityRefLink.test.tsx +++ b/plugins/catalog-react/src/components/EntityRefLink/EntityRefLink.test.tsx @@ -40,7 +40,7 @@ describe('', () => { '/catalog/:namespace/:kind/:name/*': entityRouteRef, }, }); - expect(screen.getByText('component:software').closest('a')).toHaveAttribute( + expect(screen.getByText('software').closest('a')).toHaveAttribute( 'href', '/catalog/default/component/software', ); @@ -65,9 +65,10 @@ describe('', () => { '/catalog/:namespace/:kind/:name/*': entityRouteRef, }, }); - expect( - screen.getByText('component:test/software').closest('a'), - ).toHaveAttribute('href', '/catalog/test/component/software'); + expect(screen.getByText('test/software').closest('a')).toHaveAttribute( + 'href', + '/catalog/test/component/software', + ); }); it('renders link for entity and hides default kind', async () => { @@ -109,7 +110,7 @@ describe('', () => { '/catalog/:namespace/:kind/:name/*': entityRouteRef, }, }); - expect(screen.getByText('component:software').closest('a')).toHaveAttribute( + expect(screen.getByText('software').closest('a')).toHaveAttribute( 'href', '/catalog/default/component/software', ); @@ -126,9 +127,10 @@ describe('', () => { '/catalog/:namespace/:kind/:name/*': entityRouteRef, }, }); - expect( - screen.getByText('component:test/software').closest('a'), - ).toHaveAttribute('href', '/catalog/test/component/software'); + expect(screen.getByText('test/software').closest('a')).toHaveAttribute( + 'href', + '/catalog/test/component/software', + ); }); it('renders link for entity name and hides default kind', async () => { diff --git a/plugins/catalog-react/src/components/UnregisterEntityDialog/UnregisterEntityDialog.test.tsx b/plugins/catalog-react/src/components/UnregisterEntityDialog/UnregisterEntityDialog.test.tsx index 7f139854f6..7c8ddb3afb 100644 --- a/plugins/catalog-react/src/components/UnregisterEntityDialog/UnregisterEntityDialog.test.tsx +++ b/plugins/catalog-react/src/components/UnregisterEntityDialog/UnregisterEntityDialog.test.tsx @@ -285,8 +285,8 @@ describe('UnregisterEntityDialog', () => { expect( screen.getByText(/will unregister the following entities/), ).toBeInTheDocument(); - expect(screen.getByText(/k1:ns1\/n1/)).toBeInTheDocument(); - expect(screen.getByText(/k2:ns2\/n2/)).toBeInTheDocument(); + expect(screen.getByText(/ns1\/n1/)).toBeInTheDocument(); + expect(screen.getByText(/ns2\/n2/)).toBeInTheDocument(); }); await userEvent.click(screen.getByText('Unregister Location')); @@ -333,8 +333,8 @@ describe('UnregisterEntityDialog', () => { expect( screen.getByText(/will unregister the following entities/), ).toBeInTheDocument(); - expect(screen.getByText(/k1:ns1\/n1/)).toBeInTheDocument(); - expect(screen.getByText(/k2:ns2\/n2/)).toBeInTheDocument(); + expect(screen.getByText(/ns1\/n1/)).toBeInTheDocument(); + expect(screen.getByText(/ns2\/n2/)).toBeInTheDocument(); }); await userEvent.click(screen.getByText('Advanced Options')); diff --git a/plugins/scaffolder-react/src/next/components/TemplateCard/TemplateCard.test.tsx b/plugins/scaffolder-react/src/next/components/TemplateCard/TemplateCard.test.tsx index 2d5b203cfb..5c373411fa 100644 --- a/plugins/scaffolder-react/src/next/components/TemplateCard/TemplateCard.test.tsx +++ b/plugins/scaffolder-react/src/next/components/TemplateCard/TemplateCard.test.tsx @@ -89,7 +89,7 @@ describe('TemplateCard', () => { expect(description.querySelector('strong')).toBeInTheDocument(); }); - it('should render no descroption if none is provided through the template', async () => { + it('should render no description if none is provided through the template', async () => { const mockTemplate: TemplateEntityV1beta3 = { apiVersion: 'scaffolder.backstage.io/v1beta3', kind: 'Template', @@ -186,11 +186,12 @@ describe('TemplateCard', () => { }, ); - expect(getByRole('link', { name: 'my-test-user' })).toBeInTheDocument(); - expect(getByRole('link', { name: 'my-test-user' })).toHaveAttribute( - 'href', - '/catalog/group/default/my-test-user', - ); + expect( + getByRole('link', { name: 'group:default/my-test-user' }), + ).toBeInTheDocument(); + expect( + getByRole('link', { name: 'group:default/my-test-user' }), + ).toHaveAttribute('href', '/catalog/group/default/my-test-user'); }); it('should call the onSelected handler when clicking the choose button', async () => { diff --git a/plugins/user-settings/src/components/General/UserSettingsIdentityCard.test.tsx b/plugins/user-settings/src/components/General/UserSettingsIdentityCard.test.tsx index 0129542b03..1be797980b 100644 --- a/plugins/user-settings/src/components/General/UserSettingsIdentityCard.test.tsx +++ b/plugins/user-settings/src/components/General/UserSettingsIdentityCard.test.tsx @@ -45,7 +45,7 @@ describe('', () => { }, ); - expect(screen.getByText('user:test-ownership')).toBeInTheDocument(); - expect(screen.getByText('foo:bar/foobar')).toBeInTheDocument(); + expect(screen.getByText('test-ownership')).toBeInTheDocument(); + expect(screen.getByText('bar/foobar')).toBeInTheDocument(); }); }); From e83ca583aebe6b42620c1fce8beddeaad0d9e402 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 18 Aug 2023 16:40:16 +0200 Subject: [PATCH 003/102] simplify useUpdatingObservable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .../EntityPresentationApi/useUpdatingObservable.ts | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/plugins/catalog-react/src/apis/EntityPresentationApi/useUpdatingObservable.ts b/plugins/catalog-react/src/apis/EntityPresentationApi/useUpdatingObservable.ts index 37972a5432..a15119d177 100644 --- a/plugins/catalog-react/src/apis/EntityPresentationApi/useUpdatingObservable.ts +++ b/plugins/catalog-react/src/apis/EntityPresentationApi/useUpdatingObservable.ts @@ -15,7 +15,7 @@ */ import { Observable } from '@backstage/types'; -import { DependencyList, useEffect, useRef, useState } from 'react'; +import { DependencyList, useEffect, useState } from 'react'; /** * Subscribe to an observable and return the latest value from it. @@ -36,17 +36,14 @@ export function useUpdatingObservable( observable: Observable | undefined, deps: DependencyList, ): T { - const snapshot = useRef(value); - const [, setCounter] = useState(0); + const [snapshot, setSnapshot] = useState(value); useEffect(() => { - snapshot.current = value; - setCounter(counter => counter + 1); + setSnapshot(value); const subscription = observable?.subscribe({ next: updatedValue => { - snapshot.current = updatedValue; - setCounter(counter => counter + 1); + setSnapshot(updatedValue); }, complete: () => { subscription?.unsubscribe(); @@ -59,5 +56,5 @@ export function useUpdatingObservable( // eslint-disable-next-line react-hooks/exhaustive-deps }, deps); - return snapshot.current; + return snapshot; } From c1ed76a2b1d07b4943e802ceb7049692844dbfe0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Fri, 18 Aug 2023 17:01:00 +0200 Subject: [PATCH 004/102] clarifying type comments MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .../EntityPresentationApi.ts | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/plugins/catalog-react/src/apis/EntityPresentationApi/EntityPresentationApi.ts b/plugins/catalog-react/src/apis/EntityPresentationApi/EntityPresentationApi.ts index 8d3bcce068..68ccacf29a 100644 --- a/plugins/catalog-react/src/apis/EntityPresentationApi/EntityPresentationApi.ts +++ b/plugins/catalog-react/src/apis/EntityPresentationApi/EntityPresentationApi.ts @@ -38,10 +38,64 @@ export const entityPresentationApiRef: ApiRef = * @public */ export interface EntityRefPresentationSnapshot { + /** + * The ref to the entity that this snapshot represents. + * + * @remarks + * + * Note that when the input data was broken or had missing vital pieces of + * information, this string may contain placeholders such as "unknown". You + * can therefore not necessarily assume that the ref is completely valid and + * usable for example for forming a clickable link to the entity. + */ entityRef: string; + /** + * The entity that this snapshot represents. + * + * @remarks + * + * Note that this may be a partial entity, i.e. it may not contain all of the + * fields that the kind at hand normally contains, since the input to the + * representation renderer might have been a partial entity. So be careful + * when accessing fields on this. + */ entity?: Entity | undefined; + /** + * A string that can be used as a plain representation of the entity, for + * example in a header or a link. + * + * @remarks + * + * The title may be short and not contain all of the information that the + * entity holds. When rendering the primary title, you may also want to + * make sure to add more contextual information nearby such as the icon or + * secondary title, since the primary could for example just be the + * `metadata.name` of tne entity which might be ambiguous to the reader. + */ primaryTitle: string; + /** + * Optionally, some additional textual information about the entity, to be + * used as a clarification on top of the primary title. + * + * @remarks + * + * This text can for example be rendered in a tooltip or be used as a + * subtitle. It may not be sufficient to display on its own; it should + * typically be used in conjunction with the primary title. It can contain + * such information as the entity ref and/or a `spec.type` etc. + */ secondaryTitle?: string; + /** + * Optionally, an icon that represents the kind/type of entity. + * + * @remarks + * + * This icon should ideally be easily recognizable as the kind of entity, and + * be used consistently throughout the Backstage interface. It can be rendered + * both in larger formats such as in a header, or in smaller formats such as + * inline with regular text, so bear in mind that the legibility should be + * high in both cases. + */ Icon?: IconComponent | undefined; } From 11fef2dca17a8d3acbd4c0d700f2e181a0c6491e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Tue, 22 Aug 2023 08:50:10 +0200 Subject: [PATCH 005/102] api report MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/catalog-react/api-report.md | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/plugins/catalog-react/api-report.md b/plugins/catalog-react/api-report.md index c3c5d7747e..96f9a68082 100644 --- a/plugins/catalog-react/api-report.md +++ b/plugins/catalog-react/api-report.md @@ -3,6 +3,8 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts +/// + import { ApiRef } from '@backstage/core-plugin-api'; import { CATALOG_FILTER_EXISTS } from '@backstage/catalog-client'; import { CatalogApi } from '@backstage/catalog-client'; @@ -413,15 +415,10 @@ export interface EntityRefPresentation { // @public export interface EntityRefPresentationSnapshot { - // (undocumented) entity?: Entity | undefined; - // (undocumented) entityRef: string; - // (undocumented) Icon?: IconComponent | undefined; - // (undocumented) primaryTitle: string; - // (undocumented) secondaryTitle?: string; } From 1286ff185af7b4dd32708641924ec98c5e1ae3d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Thu, 14 Sep 2023 15:19:15 +0200 Subject: [PATCH 006/102] updated ref MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/catalog-react/api-report.md | 18 +++++++++--------- .../EntityPresentationApi.ts | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/plugins/catalog-react/api-report.md b/plugins/catalog-react/api-report.md index 96f9a68082..0d41f0ca58 100644 --- a/plugins/catalog-react/api-report.md +++ b/plugins/catalog-react/api-report.md @@ -159,6 +159,15 @@ export type DefaultEntityFilters = { namespace?: EntityNamespaceFilter; }; +// @public +export function defaultEntityPresentation( + entityOrRef: Entity | CompoundEntityRef | string, + context?: { + defaultKind?: string; + defaultNamespace?: string; + }, +): EntityRefPresentationSnapshot; + // @public (undocumented) export function EntityAutocompletePicker< T extends DefaultEntityFilters = DefaultEntityFilters, @@ -181,15 +190,6 @@ export type EntityAutocompletePickerProps< initialSelectedOptions?: string[]; }; -// @public -export function defaultEntityPresentation( - entityOrRef: Entity | CompoundEntityRef | string, - context?: { - defaultKind?: string; - defaultNamespace?: string; - }, -): EntityRefPresentationSnapshot; - // @public export const EntityDisplayName: (props: EntityDisplayNameProps) => JSX.Element; diff --git a/plugins/catalog-react/src/apis/EntityPresentationApi/EntityPresentationApi.ts b/plugins/catalog-react/src/apis/EntityPresentationApi/EntityPresentationApi.ts index 68ccacf29a..17f16d69a4 100644 --- a/plugins/catalog-react/src/apis/EntityPresentationApi/EntityPresentationApi.ts +++ b/plugins/catalog-react/src/apis/EntityPresentationApi/EntityPresentationApi.ts @@ -29,7 +29,7 @@ import { Observable } from '@backstage/types'; */ export const entityPresentationApiRef: ApiRef = createApiRef({ - id: 'catalog-react.entity-presentation', + id: 'plugin.catalog.entity-presentation', }); /** From 8d756968f9c8676c391868a5a9aae931994c877b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Thu, 25 May 2023 14:40:12 +0200 Subject: [PATCH 007/102] implement the deferred stitching mode MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/loud-ghosts-deny.md | 16 ++ plugins/catalog-backend/config.d.ts | 13 ++ .../migrations/20230525141717_stitch_queue.js | 85 +++++++++ .../getDeferredStitchableEntities.test.ts | 114 ++++++++++++ .../stitcher/getDeferredStitchableEntities.ts | 105 +++++++++++ .../markDeferredStitchCompleted.test.ts | 75 ++++++++ .../stitcher/markDeferredStitchCompleted.ts | 46 +++++ .../stitcher/markForStitching.test.ts | 176 ++++++++++++++++++ .../operations/stitcher/markForStitching.ts | 95 ++++++---- .../stitcher/performStitching.test.ts | 21 ++- .../operations/stitcher/performStitching.ts | 9 + .../util/deleteOrphanedEntities.test.ts | 117 +++++++++++- .../catalog-backend/src/database/tables.ts | 41 ++++ .../DefaultCatalogProcessingEngine.ts | 6 +- .../src/stitching/DefaultStitcher.ts | 77 +++++++- .../src/stitching/progressTracker.ts | 28 ++- .../catalog-backend/src/stitching/types.ts | 48 ++++- .../src/tests/integration.test.ts | 5 + .../src/tests/migrations.test.ts | 71 +++++++ .../performance/stitchingPerformance.test.ts | 92 +++++++-- 20 files changed, 1167 insertions(+), 73 deletions(-) create mode 100644 .changeset/loud-ghosts-deny.md create mode 100644 plugins/catalog-backend/migrations/20230525141717_stitch_queue.js create mode 100644 plugins/catalog-backend/src/database/operations/stitcher/getDeferredStitchableEntities.test.ts create mode 100644 plugins/catalog-backend/src/database/operations/stitcher/getDeferredStitchableEntities.ts create mode 100644 plugins/catalog-backend/src/database/operations/stitcher/markDeferredStitchCompleted.test.ts create mode 100644 plugins/catalog-backend/src/database/operations/stitcher/markDeferredStitchCompleted.ts diff --git a/.changeset/loud-ghosts-deny.md b/.changeset/loud-ghosts-deny.md new file mode 100644 index 0000000000..e66b052c4e --- /dev/null +++ b/.changeset/loud-ghosts-deny.md @@ -0,0 +1,16 @@ +--- +'@backstage/plugin-catalog-backend': minor +--- + +Introduce a new optional config parameter `catalog.stitchingStrategy.mode`, +which can have the values `'immediate'` (default) and `'deferred'`. The default +is for stitching to work as it did before this change, which means that it +happens "in-band" (blocking) immediately when each processing task finishes. +When set to `'deferred'`, stitching is instead deferred to happen on a separate +asynchronous worker queue just like processing. + +Deferred stitching should make performance smoother when ingesting large amounts +of entities, and reduce p99 processing times and repeated over-stitching of +hot spot entities when fan-out/fan-in in terms of relations is very large. It +does however also come with some performance cost due to the queuing with how +much wall-clock time some types of task take. diff --git a/plugins/catalog-backend/config.d.ts b/plugins/catalog-backend/config.d.ts index 4b9f606043..265d78b496 100644 --- a/plugins/catalog-backend/config.d.ts +++ b/plugins/catalog-backend/config.d.ts @@ -145,6 +145,19 @@ export interface Config { */ orphanStrategy?: 'keep' | 'delete'; + /** + * The strategy to use when stitching together the final entities. + */ + stitchingStrategy?: + | { + /** Perform stitching in-band immediately when needed */ + mode: 'immediate'; + } + | { + /** Defer stitching to be performed asynchronously */ + mode: 'deferred'; + }; + /** * The interval at which the catalog should process its entities. * diff --git a/plugins/catalog-backend/migrations/20230525141717_stitch_queue.js b/plugins/catalog-backend/migrations/20230525141717_stitch_queue.js new file mode 100644 index 0000000000..f4344a290d --- /dev/null +++ b/plugins/catalog-backend/migrations/20230525141717_stitch_queue.js @@ -0,0 +1,85 @@ +/* + * 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. + */ + +// @ts-check + +/** + * @param { import("knex").Knex } knex + */ +exports.up = async function up(knex) { + await knex.schema.alterTable('refresh_state', table => { + table + .dateTime('next_stitch_at') + .nullable() + .comment('Timestamp of when entity should be stitched'); + table + .string('next_stitch_ticket') + .nullable() + .comment('Random value distinguishing stitch requests'); + table.index('next_stitch_at', 'refresh_state_next_stitch_at_idx', { + predicate: knex.whereNotNull('next_stitch_at'), + }); + }); + + // Look for things that are due for stitching, and move them over to the new + // system. An explanation on the length based ones: Before adding the new + // system, stitching was triggered by setting hashes to various hard coded + // strings - and we leverage the fact that those strings were always shorter + // than a real hash would be. There's also the case where we have not yet + // created the final_entities row corresponding to the refresh_state one. This + // is split into two statements because MySQL doesn't allow you to write to + // tables you're reading from. + const candidates = await knex + .select({ entityId: 'refresh_state.entity_id' }) + .from('refresh_state') + .leftOuterJoin( + 'final_entities', + 'final_entities.entity_id', + 'refresh_state.entity_id', + ) + // no final entities at all + .orWhereNull('final_entities.entity_id') + // the final entity hash was forcibly set to something short + .orWhere(knex.raw('LENGTH(??) < 15', ['final_entities.hash'])) + // there used to be an ongoing stitch (possibly unfinished and aborted) + .orWhere(knex.raw('LENGTH(??) > 0', ['final_entities.stitch_ticket'])) + // the processing output entity hash was forcibly set to something short + .orWhere(knex.raw('LENGTH(??) < 15', ['refresh_state.result_hash'])); + if (candidates.length) { + for (let i = 0; i < candidates.length; i += 1000) { + await knex('refresh_state') + .update({ + next_stitch_at: knex.fn.now(), + next_stitch_ticket: 'initial', + }) + .whereIn( + 'entity_id', + candidates.slice(i, i + 1000).map(c => c.entityId), + ); + } + } +}; + +/** + * @param { import("knex").Knex } knex + */ +exports.down = async function down(knex) { + await knex.schema.alterTable('refresh_state', table => { + table.dropIndex([], 'refresh_state_next_stitch_at_idx'); + table.dropColumn('next_stitch_at'); + table.dropColumn('next_stitch_ticket'); + }); +}; diff --git a/plugins/catalog-backend/src/database/operations/stitcher/getDeferredStitchableEntities.test.ts b/plugins/catalog-backend/src/database/operations/stitcher/getDeferredStitchableEntities.test.ts new file mode 100644 index 0000000000..a909515f14 --- /dev/null +++ b/plugins/catalog-backend/src/database/operations/stitcher/getDeferredStitchableEntities.test.ts @@ -0,0 +1,114 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { TestDatabases } from '@backstage/backend-test-utils'; +import { applyDatabaseMigrations } from '../../migrations'; +import { getDeferredStitchableEntities } from './getDeferredStitchableEntities'; + +jest.setTimeout(60_000); + +describe('getDeferredStitchableEntities', () => { + const databases = TestDatabases.create({ + ids: ['MYSQL_8', 'POSTGRES_13', 'POSTGRES_9', 'SQLITE_3'], + }); + + it.each(databases.eachSupportedId())( + 'selects the right rows %p', + async databaseId => { + const knex = await databases.init(databaseId); + await applyDatabaseMigrations(knex); + + await knex + .insert([ + { + entity_id: '1', + entity_ref: 'k:ns/no_stitch_time', + unprocessed_entity: '{}', + processed_entity: '{}', + errors: '[]', + next_update_at: knex.fn.now(), + last_discovery_at: knex.fn.now(), + next_stitch_at: null, + next_stitch_ticket: null, + }, + { + entity_id: '2', + entity_ref: 'k:ns/future_stitch_time', + unprocessed_entity: '{}', + processed_entity: '{}', + errors: '[]', + next_update_at: knex.fn.now(), + last_discovery_at: knex.fn.now(), + next_stitch_at: '2037-01-01T00:00:00.000', + next_stitch_ticket: 't1', + }, + { + entity_id: '3', + entity_ref: 'k:ns/past_stitch_time', + unprocessed_entity: '{}', + processed_entity: '{}', + errors: '[]', + next_update_at: knex.fn.now(), + last_discovery_at: knex.fn.now(), + next_stitch_at: '1971-01-01T00:00:00.000', + next_stitch_ticket: 't3', + }, + { + entity_id: '4', + entity_ref: 'k:ns/past_stitch_time_again', + unprocessed_entity: '{}', + processed_entity: '{}', + errors: '[]', + next_update_at: knex.fn.now(), + last_discovery_at: knex.fn.now(), + next_stitch_at: '1972-01-01T00:00:00.000', + next_stitch_ticket: 't4', + }, + ]) + .into('refresh_state'); + + const rowsBefore = await knex('refresh_state'); + + const items = await getDeferredStitchableEntities({ + knex, + batchSize: 1, + stitchTimeout: { seconds: 2 }, + }); + + const rowsAfter = await knex('refresh_state'); + + expect(items).toEqual([ + { + entityRef: 'k:ns/past_stitch_time', + stitchTicket: 't3', + stitchRequestedAt: expect.anything(), + }, + ]); + + const hitRowBefore = rowsBefore.filter(r => r.entity_id === '3')[0] + .next_stitch_at; + const hitRowAfter = rowsAfter.filter(r => r.entity_id === '3')[0] + .next_stitch_at; + const missRowBefore = rowsBefore.filter(r => r.entity_id === '4')[0] + .next_stitch_at; + const missRowAfter = rowsAfter.filter(r => r.entity_id === '4')[0] + .next_stitch_at; + + expect(+new Date(hitRowAfter)).toBeGreaterThan(+new Date(hitRowBefore)); + expect(+new Date(missRowAfter)).toEqual(+new Date(missRowBefore)); + }, + ); +}); diff --git a/plugins/catalog-backend/src/database/operations/stitcher/getDeferredStitchableEntities.ts b/plugins/catalog-backend/src/database/operations/stitcher/getDeferredStitchableEntities.ts new file mode 100644 index 0000000000..05c3f4d2eb --- /dev/null +++ b/plugins/catalog-backend/src/database/operations/stitcher/getDeferredStitchableEntities.ts @@ -0,0 +1,105 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { durationToMilliseconds, HumanDuration } from '@backstage/types'; +import { Knex } from 'knex'; +import { DateTime } from 'luxon'; +import { timestampToDateTime } from '../../conversion'; +import { DbRefreshStateRow } from '../../tables'; + +// TODO(freben): There is no retry counter or similar. If items start +// perpetually crashing during stitching, they'll just get silently retried over +// and over again, for better or worse. This will be visible in metrics though. + +/** + * Finds entities that are marked for deferred stitching. + * + * @remarks + * + * This assumes that the stitching strategy is set to deferred. + * + * They are expected to already have the next_stitch_ticket set (by + * markForStitching) so that their tickets can be returned with each item. + * + * All returned items have their next_stitch_at updated to be moved forward by + * the given timeout duration. This has the effect that they will be picked up + * for stitching again in the future, if it hasn't completed by that point for + * some reason (restarts, crashes, etc). + */ +export async function getDeferredStitchableEntities(options: { + knex: Knex | Knex.Transaction; + batchSize: number; + stitchTimeout: HumanDuration; +}): Promise< + Array<{ + entityRef: string; + stitchTicket: string; + stitchRequestedAt: DateTime; // the time BEFORE moving it forward by the timeout + }> +> { + const { knex, batchSize, stitchTimeout } = options; + + let itemsQuery = knex('refresh_state').select( + 'entity_ref', + 'next_stitch_at', + 'next_stitch_ticket', + ); + + // This avoids duplication of work because of race conditions and is + // also fast because locked rows are ignored rather than blocking. + // It's only available in MySQL and PostgreSQL + if (['mysql', 'mysql2', 'pg'].includes(knex.client.config.client)) { + itemsQuery = itemsQuery.forUpdate().skipLocked(); + } + + const items = await itemsQuery + .whereNotNull('next_stitch_at') + .whereNotNull('next_stitch_ticket') + .where('next_stitch_at', '<=', knex.fn.now()) + .orderBy('next_stitch_at', 'asc') + .limit(batchSize); + + if (!items.length) { + return []; + } + + await knex('refresh_state') + .whereIn( + 'entity_ref', + items.map(i => i.entity_ref), + ) + // avoid race condition where someone completes a stitch right between these statements + .whereNotNull('next_stitch_ticket') + .update({ + next_stitch_at: nowPlus(knex, stitchTimeout), + }); + + return items.map(i => ({ + entityRef: i.entity_ref, + stitchTicket: i.next_stitch_ticket!, + stitchRequestedAt: timestampToDateTime(i.next_stitch_at!), + })); +} + +function nowPlus(knex: Knex, duration: HumanDuration): Knex.Raw { + const seconds = durationToMilliseconds(duration) / 1000; + if (knex.client.config.client.includes('sqlite3')) { + return knex.raw(`datetime('now', ?)`, [`${seconds} seconds`]); + } else if (knex.client.config.client.includes('mysql')) { + return knex.raw(`now() + interval ${seconds} second`); + } + return knex.raw(`now() + interval '${seconds} seconds'`); +} diff --git a/plugins/catalog-backend/src/database/operations/stitcher/markDeferredStitchCompleted.test.ts b/plugins/catalog-backend/src/database/operations/stitcher/markDeferredStitchCompleted.test.ts new file mode 100644 index 0000000000..76a6169cf4 --- /dev/null +++ b/plugins/catalog-backend/src/database/operations/stitcher/markDeferredStitchCompleted.test.ts @@ -0,0 +1,75 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { TestDatabases } from '@backstage/backend-test-utils'; +import { applyDatabaseMigrations } from '../../migrations'; +import { markDeferredStitchCompleted } from './markDeferredStitchCompleted'; +import { DbRefreshStateRow } from '../../tables'; + +jest.setTimeout(60_000); + +describe('markDeferredStitchCompleted', () => { + const databases = TestDatabases.create({ + ids: ['MYSQL_8', 'POSTGRES_13', 'POSTGRES_9', 'SQLITE_3'], + }); + + it.each(databases.eachSupportedId())( + 'completes only if unchanged %p', + async databaseId => { + const knex = await databases.init(databaseId); + await applyDatabaseMigrations(knex); + + await knex('refresh_state').insert([ + { + entity_id: '1', + entity_ref: 'k:ns/n', + unprocessed_entity: '{}', + processed_entity: '{}', + errors: '[]', + next_update_at: knex.fn.now(), + last_discovery_at: knex.fn.now(), + next_stitch_at: '1971-01-01T00:00:00.000', + next_stitch_ticket: 'the-ticket', + }, + ]); + + async function result() { + return knex('refresh_state').select( + 'next_stitch_at', + 'next_stitch_ticket', + ); + } + + await markDeferredStitchCompleted({ + knex, + entityRef: 'k:ns/n', + stitchTicket: 'the-wrong-ticket', + }); + await expect(result()).resolves.toEqual([ + { next_stitch_at: expect.anything(), next_stitch_ticket: 'the-ticket' }, + ]); + + await markDeferredStitchCompleted({ + knex, + entityRef: 'k:ns/n', + stitchTicket: 'the-ticket', + }); + await expect(result()).resolves.toEqual([ + { next_stitch_at: null, next_stitch_ticket: null }, + ]); + }, + ); +}); diff --git a/plugins/catalog-backend/src/database/operations/stitcher/markDeferredStitchCompleted.ts b/plugins/catalog-backend/src/database/operations/stitcher/markDeferredStitchCompleted.ts new file mode 100644 index 0000000000..d1c7c3a6b8 --- /dev/null +++ b/plugins/catalog-backend/src/database/operations/stitcher/markDeferredStitchCompleted.ts @@ -0,0 +1,46 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Knex } from 'knex'; +import { DbRefreshStateRow } from '../../tables'; + +/** + * Marks a single entity as having been stitched. + * + * @remarks + * + * This assumes that the stitching strategy is set to deferred. + * + * The timestamp and ticket are only reset if the ticket hasn't changed. If it + * has, it means that a new stitch request has been made, and the entity should + * be stitched once more some time in the future - or is indeed already being + * stitched concurrently with ourselves. + */ +export async function markDeferredStitchCompleted(option: { + knex: Knex | Knex.Transaction; + entityRef: string; + stitchTicket: string; +}): Promise { + const { knex, entityRef, stitchTicket } = option; + + await knex('refresh_state') + .update({ + next_stitch_at: null, + next_stitch_ticket: null, + }) + .where('entity_ref', '=', entityRef) + .andWhere('next_stitch_ticket', '=', stitchTicket); +} diff --git a/plugins/catalog-backend/src/database/operations/stitcher/markForStitching.test.ts b/plugins/catalog-backend/src/database/operations/stitcher/markForStitching.test.ts index ce44fe15d8..2cae76040b 100644 --- a/plugins/catalog-backend/src/database/operations/stitcher/markForStitching.test.ts +++ b/plugins/catalog-backend/src/database/operations/stitcher/markForStitching.test.ts @@ -26,6 +26,182 @@ describe('markForStitching', () => { ids: ['MYSQL_8', 'POSTGRES_13', 'POSTGRES_9', 'SQLITE_3'], }); + it.each(databases.eachSupportedId())( + 'marks the right rows in deferred mode %p', + async databaseId => { + const knex = await databases.init(databaseId); + await applyDatabaseMigrations(knex); + + await knex('refresh_state').insert([ + { + entity_id: '1', + entity_ref: 'k:ns/one', + unprocessed_entity: '{}', + processed_entity: '{}', + errors: '[]', + next_update_at: knex.fn.now(), + last_discovery_at: knex.fn.now(), + next_stitch_at: null, + next_stitch_ticket: null, + }, + { + entity_id: '2', + entity_ref: 'k:ns/two', + unprocessed_entity: '{}', + processed_entity: '{}', + errors: '[]', + next_update_at: knex.fn.now(), + last_discovery_at: knex.fn.now(), + next_stitch_at: null, + next_stitch_ticket: null, + }, + { + entity_id: '3', + entity_ref: 'k:ns/three', + unprocessed_entity: '{}', + processed_entity: '{}', + errors: '[]', + next_update_at: knex.fn.now(), + last_discovery_at: knex.fn.now(), + next_stitch_at: null, + next_stitch_ticket: null, + }, + { + entity_id: '4', + entity_ref: 'k:ns/four', + unprocessed_entity: '{}', + processed_entity: '{}', + errors: '[]', + next_update_at: knex.fn.now(), + last_discovery_at: knex.fn.now(), + next_stitch_at: '1971-01-01T00:00:00.000', + next_stitch_ticket: 'old', + }, + ]); + + async function result() { + return knex('refresh_state') + .select('entity_id', 'next_stitch_at', 'next_stitch_ticket') + .orderBy('entity_id', 'asc'); + } + + const original = await result(); + + await markForStitching({ + knex, + strategy: { + mode: 'deferred', + pollingInterval: { seconds: 1 }, + stitchTimeout: { seconds: 1 }, + }, + entityRefs: new Set(), + }); + await expect(result()).resolves.toEqual([ + { entity_id: '1', next_stitch_at: null, next_stitch_ticket: null }, + { entity_id: '2', next_stitch_at: null, next_stitch_ticket: null }, + { entity_id: '3', next_stitch_at: null, next_stitch_ticket: null }, + { + entity_id: '4', + next_stitch_at: expect.anything(), + next_stitch_ticket: 'old', + }, + ]); + + await markForStitching({ + knex, + strategy: { + mode: 'deferred', + pollingInterval: { seconds: 1 }, + stitchTimeout: { seconds: 1 }, + }, + entityRefs: new Set(['k:ns/one']), + }); + await expect(result()).resolves.toEqual([ + { + entity_id: '1', + next_stitch_at: expect.anything(), + next_stitch_ticket: expect.anything(), + }, + { entity_id: '2', next_stitch_at: null, next_stitch_ticket: null }, + { entity_id: '3', next_stitch_at: null, next_stitch_ticket: null }, + { + entity_id: '4', + next_stitch_at: expect.anything(), + next_stitch_ticket: 'old', + }, + ]); + + await markForStitching({ + knex, + strategy: { + mode: 'deferred', + pollingInterval: { seconds: 1 }, + stitchTimeout: { seconds: 1 }, + }, + entityRefs: ['k:ns/two'], + }); + await expect(result()).resolves.toEqual([ + { + entity_id: '1', + next_stitch_at: expect.anything(), + next_stitch_ticket: expect.anything(), + }, + { + entity_id: '2', + next_stitch_at: expect.anything(), + next_stitch_ticket: expect.anything(), + }, + { entity_id: '3', next_stitch_at: null, next_stitch_ticket: null }, + { + entity_id: '4', + next_stitch_at: expect.anything(), + next_stitch_ticket: 'old', + }, + ]); + + await markForStitching({ + knex, + strategy: { + mode: 'deferred', + pollingInterval: { seconds: 1 }, + stitchTimeout: { seconds: 1 }, + }, + entityIds: ['3', '4'], + }); + await expect(result()).resolves.toEqual([ + { + entity_id: '1', + next_stitch_at: expect.anything(), + next_stitch_ticket: expect.anything(), + }, + { + entity_id: '2', + next_stitch_at: expect.anything(), + next_stitch_ticket: expect.anything(), + }, + { + entity_id: '3', + next_stitch_at: expect.anything(), + next_stitch_ticket: expect.anything(), + }, + { + entity_id: '4', + next_stitch_at: expect.anything(), + next_stitch_ticket: expect.anything(), + }, + ]); + + // It overwrites timers and tickets if they existed before + const final = await result(); + for (let i = 0; i < final.length; ++i) { + expect(original[i].next_stitch_at).not.toEqual(final[i].next_stitch_at); + expect(original[i].next_stitch_ticket).not.toEqual( + final[i].next_stitch_ticket, + ); + } + }, + ); + it.each(databases.eachSupportedId())( 'marks the right rows in immediate mode %p', async databaseId => { diff --git a/plugins/catalog-backend/src/database/operations/stitcher/markForStitching.ts b/plugins/catalog-backend/src/database/operations/stitcher/markForStitching.ts index 7ab9bda1c0..9f4bcc49e7 100644 --- a/plugins/catalog-backend/src/database/operations/stitcher/markForStitching.ts +++ b/plugins/catalog-backend/src/database/operations/stitcher/markForStitching.ts @@ -16,11 +16,12 @@ import { Knex } from 'knex'; import splitToChunks from 'lodash/chunk'; +import { v4 as uuid } from 'uuid'; import { StitchingStrategy } from '../../../stitching/types'; import { DbFinalEntitiesRow, DbRefreshStateRow } from '../../tables'; /** - * Marks a number of entities for deferred stitching some time in the near + * Marks a number of entities for stitching some time in the near * future. * * @remarks @@ -36,41 +37,65 @@ export async function markForStitching(options: { const entityIds = split(options.entityIds); const knex = options.knex; - for (const chunk of entityRefs) { - await knex - .table('final_entities') - .update({ - hash: 'force-stitching', - }) - .whereIn( - 'entity_id', - knex('refresh_state') - .select('entity_id') - .whereIn('entity_ref', chunk), - ); - await knex - .table('refresh_state') - .update({ - result_hash: 'force-stitching', - next_update_at: knex.fn.now(), - }) - .whereIn('entity_ref', chunk); - } + if (options.strategy.mode === 'immediate') { + for (const chunk of entityRefs) { + await knex + .table('final_entities') + .update({ + hash: 'force-stitching', + }) + .whereIn( + 'entity_id', + knex('refresh_state') + .select('entity_id') + .whereIn('entity_ref', chunk), + ); + await knex + .table('refresh_state') + .update({ + result_hash: 'force-stitching', + next_update_at: knex.fn.now(), + }) + .whereIn('entity_ref', chunk); + } - for (const chunk of entityIds) { - await knex - .table('final_entities') - .update({ - hash: 'force-stitching', - }) - .whereIn('entity_id', chunk); - await knex - .table('refresh_state') - .update({ - result_hash: 'force-stitching', - next_update_at: knex.fn.now(), - }) - .whereIn('entity_id', chunk); + for (const chunk of entityIds) { + await knex + .table('final_entities') + .update({ + hash: 'force-stitching', + }) + .whereIn('entity_id', chunk); + await knex + .table('refresh_state') + .update({ + result_hash: 'force-stitching', + next_update_at: knex.fn.now(), + }) + .whereIn('entity_id', chunk); + } + } else { + // It's OK that this is shared across refresh state rows; it just needs to + // be uniquely generated for every new stitch request. + const ticket = uuid(); + + for (const chunk of entityRefs) { + await knex('refresh_state') + .update({ + next_stitch_at: knex.fn.now(), + next_stitch_ticket: ticket, + }) + .whereIn('entity_ref', chunk); + } + + for (const chunk of entityIds) { + await knex('refresh_state') + .update({ + next_stitch_at: knex.fn.now(), + next_stitch_ticket: ticket, + }) + .whereIn('entity_id', chunk); + } } } diff --git a/plugins/catalog-backend/src/database/operations/stitcher/performStitching.test.ts b/plugins/catalog-backend/src/database/operations/stitcher/performStitching.test.ts index a864cbdef4..a471f1dce2 100644 --- a/plugins/catalog-backend/src/database/operations/stitcher/performStitching.test.ts +++ b/plugins/catalog-backend/src/database/operations/stitcher/performStitching.test.ts @@ -35,8 +35,9 @@ describe('performStitching', () => { }); const logger = getVoidLogger(); + // NOTE(freben): Testing the deferred path since it's a superset of the immediate one it.each(databases.eachSupportedId())( - 'runs the happy path in immediate mode for %p', + 'runs the happy path in deferred mode for %p', async databaseId => { const knex = await databases.init(databaseId); await applyDatabaseMigrations(knex); @@ -87,7 +88,11 @@ describe('performStitching', () => { await performStitching({ knex, logger, - strategy: { mode: 'immediate' }, + strategy: { + mode: 'deferred', + pollingInterval: { seconds: 1 }, + stitchTimeout: { seconds: 1 }, + }, entityRef: 'k:ns/n', }); @@ -172,7 +177,11 @@ describe('performStitching', () => { await performStitching({ knex, logger, - strategy: { mode: 'immediate' }, + strategy: { + mode: 'deferred', + pollingInterval: { seconds: 1 }, + stitchTimeout: { seconds: 1 }, + }, entityRef: 'k:ns/n', }); @@ -195,7 +204,11 @@ describe('performStitching', () => { await performStitching({ knex, logger, - strategy: { mode: 'immediate' }, + strategy: { + mode: 'deferred', + pollingInterval: { seconds: 1 }, + stitchTimeout: { seconds: 1 }, + }, entityRef: 'k:ns/n', }); diff --git a/plugins/catalog-backend/src/database/operations/stitcher/performStitching.ts b/plugins/catalog-backend/src/database/operations/stitcher/performStitching.ts index bcb112690c..e4388813e8 100644 --- a/plugins/catalog-backend/src/database/operations/stitcher/performStitching.ts +++ b/plugins/catalog-backend/src/database/operations/stitcher/performStitching.ts @@ -32,6 +32,7 @@ import { DbSearchRow, } from '../../tables'; import { buildEntitySearch } from './buildEntitySearch'; +import { markDeferredStitchCompleted } from './markDeferredStitchCompleted'; import { BATCH_SIZE, generateStableHash } from './util'; // See https://github.com/facebook/react/blob/f0cf832e1d0c8544c36aa8b310960885a11a847c/packages/react-dom-bindings/src/shared/sanitizeURL.js @@ -217,6 +218,14 @@ export async function performStitching(options: { .onConflict('entity_id') .merge(['final_entity', 'hash', 'last_updated_at']); + if (options.strategy.mode === 'deferred') { + await markDeferredStitchCompleted({ + knex: knex, + entityRef, + stitchTicket, + }); + } + if (amountOfRowsChanged === 0) { logger.debug(`Entity ${entityRef} is already stitched, skipping write.`); return 'abandoned'; diff --git a/plugins/catalog-backend/src/database/operations/util/deleteOrphanedEntities.test.ts b/plugins/catalog-backend/src/database/operations/util/deleteOrphanedEntities.test.ts index 07ade1c4af..3dacc8f09b 100644 --- a/plugins/catalog-backend/src/database/operations/util/deleteOrphanedEntities.test.ts +++ b/plugins/catalog-backend/src/database/operations/util/deleteOrphanedEntities.test.ts @@ -101,7 +101,7 @@ describe('deleteOrphanedEntities', () => { async function refreshState(knex: Knex) { return await knex('refresh_state') .orderBy('entity_ref') - .select('entity_ref', 'result_hash'); + .select('entity_ref', 'result_hash', 'next_stitch_at'); } async function finalEntities(knex: Knex) { @@ -115,6 +115,7 @@ describe('deleteOrphanedEntities', () => { .select({ entity_ref: 'refresh_state.entity_ref', hash: 'final_entities.hash', + next_stitch_at: 'refresh_state.next_stitch_at', }); } @@ -178,30 +179,132 @@ describe('deleteOrphanedEntities', () => { await insertRelation(knex, 'E7', 'E6'); await expect(run(knex, { mode: 'immediate' })).resolves.toEqual(5); await expect(refreshState(knex)).resolves.toEqual([ - { entity_ref: 'E1', result_hash: 'original' }, + { entity_ref: 'E1', result_hash: 'original', next_stitch_at: null }, { entity_ref: 'E2', result_hash: 'force-stitching', + next_stitch_at: null, }, { entity_ref: 'E7', result_hash: 'force-stitching', + next_stitch_at: null, }, - { entity_ref: 'E8', result_hash: 'original' }, - { entity_ref: 'E9', result_hash: 'original' }, + { entity_ref: 'E8', result_hash: 'original', next_stitch_at: null }, + { entity_ref: 'E9', result_hash: 'original', next_stitch_at: null }, ]); await expect(finalEntities(knex)).resolves.toEqual([ - { entity_ref: 'E1', hash: 'original' }, + { entity_ref: 'E1', hash: 'original', next_stitch_at: null }, { entity_ref: 'E2', hash: 'force-stitching', + next_stitch_at: null, }, { entity_ref: 'E7', hash: 'force-stitching', + next_stitch_at: null, }, - { entity_ref: 'E8', hash: 'original' }, - { entity_ref: 'E9', hash: 'original' }, + { entity_ref: 'E8', hash: 'original', next_stitch_at: null }, + { entity_ref: 'E9', hash: 'original', next_stitch_at: null }, + ]); + }, + ); + + it.each(databases.eachSupportedId())( + 'works for some mixed paths in deferred mode, %p', + async databaseId => { + /* + In this graph, edges represent refresh state references, not entity relations: + + P1 - E1 -- E2 + / + E3 + / + E4 + \ + E5 + / + E6 + \ + E7 + / + P2 - E8 + + P3 - E9 + + E10 + + Result: E3, E4, E5, E6, and E10 deleted; others remain + Entities that had relations pointing at orphans are marked for reprocessing + */ + const knex = await createDatabase(databaseId); + await insertEntity( + knex, + 'E1', + 'E2', + 'E3', + 'E4', + 'E5', + 'E6', + 'E7', + 'E8', + 'E9', + 'E10', + ); + await insertReference( + knex, + { source_key: 'P1', target_entity_ref: 'E1' }, + { source_entity_ref: 'E1', target_entity_ref: 'E2' }, + { source_entity_ref: 'E3', target_entity_ref: 'E2' }, + { source_entity_ref: 'E4', target_entity_ref: 'E3' }, + { source_entity_ref: 'E4', target_entity_ref: 'E5' }, + { source_entity_ref: 'E6', target_entity_ref: 'E5' }, + { source_entity_ref: 'E6', target_entity_ref: 'E7' }, + { source_key: 'P2', target_entity_ref: 'E8' }, + { source_entity_ref: 'E8', target_entity_ref: 'E7' }, + { source_key: 'P3', target_entity_ref: 'E9' }, + ); + await insertRelation(knex, 'E1', 'E2'); + await insertRelation(knex, 'E2', 'E3'); + await insertRelation(knex, 'E10', 'E6'); + await insertRelation(knex, 'E7', 'E6'); + await expect( + run(knex, { + mode: 'deferred', + pollingInterval: { seconds: 1 }, + stitchTimeout: { seconds: 1 }, + }), + ).resolves.toEqual(5); + await expect(refreshState(knex)).resolves.toEqual([ + { entity_ref: 'E1', result_hash: 'original', next_stitch_at: null }, + { + entity_ref: 'E2', + result_hash: 'original', + next_stitch_at: expect.anything(), + }, + { + entity_ref: 'E7', + result_hash: 'original', + next_stitch_at: expect.anything(), + }, + { entity_ref: 'E8', result_hash: 'original', next_stitch_at: null }, + { entity_ref: 'E9', result_hash: 'original', next_stitch_at: null }, + ]); + await expect(finalEntities(knex)).resolves.toEqual([ + { entity_ref: 'E1', hash: 'original', next_stitch_at: null }, + { + entity_ref: 'E2', + hash: 'original', + next_stitch_at: expect.anything(), + }, + { + entity_ref: 'E7', + hash: 'original', + next_stitch_at: expect.anything(), + }, + { entity_ref: 'E8', hash: 'original', next_stitch_at: null }, + { entity_ref: 'E9', hash: 'original', next_stitch_at: null }, ]); }, ); diff --git a/plugins/catalog-backend/src/database/tables.ts b/plugins/catalog-backend/src/database/tables.ts index a429dcde8d..57731e3d27 100644 --- a/plugins/catalog-backend/src/database/tables.ts +++ b/plugins/catalog-backend/src/database/tables.ts @@ -81,6 +81,47 @@ export type DbRefreshStateRow = { * continuously gets moved forward as items are picked up for processing. */ next_update_at: string | Date; + /** + * If a stitch has been requested, this is the point in time that that last + * happened. + * + * @remarks + * + * Each time that a request is made, this timestamp is updated to the current + * time, overwriting the previous value if applicable. + * + * When the stitch loop runs and picks up an entity, this timestamp is not + * immediately reset. It's instead moved forward in time by a certain amount, + * which means that if the stitcher for some reason fails (eg if the process + * crashes or gets shut down), the entity will be picked up again in the + * future. + * + * Only when a stitch run is completed successfully, AND it's found that the + * stitch ticket has not changed since the start (which means that no new + * request has been made behind our backs), does the timestamp (and the + * ticket) get reset. + */ + next_stitch_at?: string | Date | null; + /** + * If a stitch has been requested, this is the unique ticket that was chosen + * to mark the last request. + * + * @remarks + * + * Each time that a request is made, a new random ticket is chosen, + * overwriting the previous value if applicable. + * + * When the stitch loop runs and picks up an entity, this column is left + * unchanged. This means that if the stitcher for some reason fails (eg if the + * process crashes or gets shut down), the entity will be picked up again in + * the future. + * + * Only when a stitch run is completed successfully, AND it's found that the + * stitch ticket has not changed since the start (which means that no new + * request has been made behind our backs), does the ticket (and the + * timestamp) get reset. + */ + next_stitch_ticket?: string | null; /** * The last time that this entity was emitted by somebody (the entity provider * or a parent entity). diff --git a/plugins/catalog-backend/src/processing/DefaultCatalogProcessingEngine.ts b/plugins/catalog-backend/src/processing/DefaultCatalogProcessingEngine.ts index 72f92b9b40..3acf811559 100644 --- a/plugins/catalog-backend/src/processing/DefaultCatalogProcessingEngine.ts +++ b/plugins/catalog-backend/src/processing/DefaultCatalogProcessingEngine.ts @@ -28,7 +28,7 @@ import { metrics, trace } from '@opentelemetry/api'; import { ProcessingDatabase, RefreshStateItem } from '../database/types'; import { createCounterMetric, createSummaryMetric } from '../util/metrics'; import { CatalogProcessingOrchestrator, EntityProcessingResult } from './types'; -import { Stitcher } from '../stitching/types'; +import { Stitcher, stitchingStrategyFromConfig } from '../stitching/types'; import { startTaskPipeline } from './TaskPipeline'; import { PluginTaskScheduler } from '@backstage/backend-tasks'; import { Config } from '@backstage/config'; @@ -335,11 +335,13 @@ export class DefaultCatalogProcessingEngine { return () => {}; } + const stitchingStrategy = stitchingStrategyFromConfig(this.config); + const runOnce = async () => { try { const n = await deleteOrphanedEntities({ knex: this.knex, - strategy: { mode: 'immediate' }, + strategy: stitchingStrategy, }); if (n > 0) { this.logger.info(`Deleted ${n} orphaned entities`); diff --git a/plugins/catalog-backend/src/stitching/DefaultStitcher.ts b/plugins/catalog-backend/src/stitching/DefaultStitcher.ts index 095d80ad83..990c5efd3b 100644 --- a/plugins/catalog-backend/src/stitching/DefaultStitcher.ts +++ b/plugins/catalog-backend/src/stitching/DefaultStitcher.ts @@ -15,14 +15,26 @@ */ import { Config } from '@backstage/config'; +import { durationToMilliseconds, HumanDuration } from '@backstage/types'; import { Knex } from 'knex'; import splitToChunks from 'lodash/chunk'; import { DateTime } from 'luxon'; import { Logger } from 'winston'; +import { getDeferredStitchableEntities } from '../database/operations/stitcher/getDeferredStitchableEntities'; +import { markForStitching } from '../database/operations/stitcher/markForStitching'; import { performStitching } from '../database/operations/stitcher/performStitching'; import { DbRefreshStateRow } from '../database/tables'; +import { startTaskPipeline } from '../processing/TaskPipeline'; import { progressTracker } from './progressTracker'; -import { Stitcher, StitchingStrategy } from './types'; +import { + Stitcher, + StitchingStrategy, + stitchingStrategyFromConfig, +} from './types'; + +type DeferredStitchItem = Awaited< + ReturnType +>[0]; type StitchProgressTracker = ReturnType; @@ -36,9 +48,10 @@ export class DefaultStitcher implements Stitcher { private readonly logger: Logger; private readonly strategy: StitchingStrategy; private readonly tracker: StitchProgressTracker; + private stopFunc?: () => void; static fromConfig( - _config: Config, + config: Config, options: { knex: Knex; logger: Logger; @@ -47,7 +60,7 @@ export class DefaultStitcher implements Stitcher { return new DefaultStitcher({ knex: options.knex, logger: options.logger, - strategy: { mode: 'immediate' }, + strategy: stitchingStrategyFromConfig(config), }); } @@ -68,6 +81,16 @@ export class DefaultStitcher implements Stitcher { }) { const { entityRefs, entityIds } = options; + if (this.strategy.mode === 'deferred') { + await markForStitching({ + knex: this.knex, + strategy: this.strategy, + entityRefs, + entityIds, + }); + return; + } + if (entityRefs) { for (const entityRef of entityRefs) { await this.#stitchOne({ entityRef }); @@ -91,11 +114,55 @@ export class DefaultStitcher implements Stitcher { } async start() { - // Only called immediately for now + if (this.strategy.mode === 'deferred') { + if (this.stopFunc) { + throw new Error('Processing engine is already started'); + } + + const { pollingInterval, stitchTimeout } = this.strategy; + + const stopPipeline = startTaskPipeline({ + lowWatermark: 2, + highWatermark: 5, + pollingIntervalMs: durationToMilliseconds(pollingInterval), + loadTasks: async count => { + return await this.#getStitchableEntities(count, stitchTimeout); + }, + processTask: async item => { + return await this.#stitchOne({ + entityRef: item.entityRef, + stitchTicket: item.stitchTicket, + stitchRequestedAt: item.stitchRequestedAt, + }); + }, + }); + + this.stopFunc = () => { + stopPipeline(); + }; + } } async stop() { - // Only called immediately for now + if (this.strategy.mode === 'deferred') { + if (this.stopFunc) { + this.stopFunc(); + this.stopFunc = undefined; + } + } + } + + async #getStitchableEntities(count: number, stitchTimeout: HumanDuration) { + try { + return await getDeferredStitchableEntities({ + knex: this.knex, + batchSize: count, + stitchTimeout: stitchTimeout, + }); + } catch (error) { + this.logger.warn('Failed to load stitchable entities', error); + return []; + } } async #stitchOne(options: { diff --git a/plugins/catalog-backend/src/stitching/progressTracker.ts b/plugins/catalog-backend/src/stitching/progressTracker.ts index e8e08dbc54..f82dbe378e 100644 --- a/plugins/catalog-backend/src/stitching/progressTracker.ts +++ b/plugins/catalog-backend/src/stitching/progressTracker.ts @@ -19,10 +19,11 @@ import { metrics } from '@opentelemetry/api'; import { Knex } from 'knex'; import { DateTime } from 'luxon'; import { Logger } from 'winston'; +import { DbRefreshStateRow } from '../database/tables'; import { createCounterMetric } from '../util/metrics'; // Helps wrap the timing and logging behaviors -export function progressTracker(_knex: Knex, logger: Logger) { +export function progressTracker(knex: Knex, logger: Logger) { // prom-client metrics are deprecated in favour of OpenTelemetry metrics. const promStitchedEntities = createCounterMetric({ name: 'catalog_stitched_entities_count', @@ -46,6 +47,26 @@ export function progressTracker(_knex: Knex, logger: Logger) { }, ); + const stitchingQueueCount = meter.createObservableGauge( + 'catalog.stitching.queue.length', + { description: 'Number of entities currently in the stitching queue' }, + ); + stitchingQueueCount.addCallback(async result => { + const total = await knex('refresh_state') + .count({ count: '*' }) + .whereNotNull('next_stitch_at'); + result.observe(Number(total[0].count)); + }); + + const stitchingQueueDelay = meter.createHistogram( + 'catalog.stitching.queue.delay', + { + description: + 'The amount of delay between being scheduled for stitching, and the start of actually being stitched', + unit: 'seconds', + }, + ); + function stitchStart(item: { entityRef: string; stitchRequestedAt?: DateTime; @@ -53,6 +74,11 @@ export function progressTracker(_knex: Knex, logger: Logger) { logger.debug(`Stitching ${item.entityRef}`); const startTime = process.hrtime(); + if (item.stitchRequestedAt) { + stitchingQueueDelay.record( + -item.stitchRequestedAt.diffNow().as('seconds'), + ); + } function endTime() { const delta = process.hrtime(startTime); diff --git a/plugins/catalog-backend/src/stitching/types.ts b/plugins/catalog-backend/src/stitching/types.ts index 5f32a85b1f..9f7a5652dd 100644 --- a/plugins/catalog-backend/src/stitching/types.ts +++ b/plugins/catalog-backend/src/stitching/types.ts @@ -14,6 +14,9 @@ * limitations under the License. */ +import { Config } from '@backstage/config'; +import { HumanDuration } from '@backstage/types'; + /** * Performs the act of stitching - to take all of the various outputs from the * ingestion process, and stitching them together into the final entity JSON @@ -33,8 +36,45 @@ export interface Stitcher { * @remarks * * In immediate mode, stitching happens "in-band" (blocking) immediately when - * each processing task finishes. + * each processing task finishes. When set to `'deferred'`, stitching is instead + * deferred to happen on a separate asynchronous worker queue just like + * processing. + * + * Deferred stitching should make performance smoother when ingesting large + * amounts of entities, and reduce p99 processing times and repeated + * over-stitching of hot spot entities when fan-out/fan-in in terms of relations + * is very large. It does however also come with some performance cost due to + * the queuing with how much wall-clock time some types of task take. */ -export type StitchingStrategy = { - mode: 'immediate'; -}; +export type StitchingStrategy = + | { + mode: 'immediate'; + } + | { + mode: 'deferred'; + pollingInterval: HumanDuration; + stitchTimeout: HumanDuration; + }; + +export function stitchingStrategyFromConfig(config: Config): StitchingStrategy { + const strategyMode = config.getOptionalString( + 'catalog.stitchingStrategy.mode', + ); + + if (strategyMode === undefined || strategyMode === 'immediate') { + return { + mode: 'immediate', + }; + } else if (strategyMode === 'deferred') { + // TODO(freben): Make parameters configurable + return { + mode: 'deferred', + pollingInterval: { seconds: 1 }, + stitchTimeout: { seconds: 60 }, + }; + } + + throw new Error( + `Invalid stitching strategy mode '${strategyMode}', expected one of 'immediate' or 'deferred'`, + ); +} diff --git a/plugins/catalog-backend/src/tests/integration.test.ts b/plugins/catalog-backend/src/tests/integration.test.ts index 8aeb95f49b..5511677851 100644 --- a/plugins/catalog-backend/src/tests/integration.test.ts +++ b/plugins/catalog-backend/src/tests/integration.test.ts @@ -215,6 +215,11 @@ class TestHarness { connection: ':memory:', }, }, + catalog: { + stitchingStrategy: { + mode: 'immediate', + }, + }, }, ); const logger = options?.logger ?? getVoidLogger(); diff --git a/plugins/catalog-backend/src/tests/migrations.test.ts b/plugins/catalog-backend/src/tests/migrations.test.ts index d2c00e31c0..aa305598aa 100644 --- a/plugins/catalog-backend/src/tests/migrations.test.ts +++ b/plugins/catalog-backend/src/tests/migrations.test.ts @@ -239,4 +239,75 @@ describe('migrations', () => { await knex.destroy(); }, ); + + it.each(databases.eachSupportedId())( + '20230525141717_stitch_queue.js, %p', + async databaseId => { + const knex = await databases.init(databaseId); + + await migrateUntilBefore(knex, '20230525141717_stitch_queue.js'); + + await knex + .insert([ + { + entity_id: 'my-id', + entity_ref: 'k:ns/n', + unprocessed_entity: '{}', + processed_entity: '{}', + errors: '[]', + next_update_at: knex.fn.now(), + last_discovery_at: knex.fn.now(), + }, + ]) + .into('refresh_state'); + await knex + .insert({ + entity_id: 'my-id', + hash: 'd1c0c56d5fea4238e4c091d9dde4cb42d05a6b7e', + stitch_ticket: '', + final_entity: '{}', + }) + .into('final_entities'); + + await migrateUpOnce(knex); + + await expect(knex('refresh_state')).resolves.toEqual([ + { + entity_id: 'my-id', + entity_ref: 'k:ns/n', + location_key: null, + unprocessed_entity: '{}', + processed_entity: '{}', + errors: '[]', + cache: null, + unprocessed_hash: null, + result_hash: null, + next_update_at: expect.anything(), + next_stitch_at: null, + next_stitch_ticket: null, + last_discovery_at: expect.anything(), + }, + ]); + + await migrateDownOnce(knex); + + await expect(knex('refresh_state')).resolves.toEqual([ + { + entity_id: 'my-id', + entity_ref: 'k:ns/n', + location_key: null, + unprocessed_entity: '{}', + processed_entity: '{}', + errors: '[]', + cache: null, + unprocessed_hash: null, + result_hash: null, + next_update_at: expect.anything(), + last_discovery_at: expect.anything(), + }, + ]); + + await knex.destroy(); + }, + ); }); diff --git a/plugins/catalog-backend/src/tests/performance/stitchingPerformance.test.ts b/plugins/catalog-backend/src/tests/performance/stitchingPerformance.test.ts index c1a869f9ad..ad659ce845 100644 --- a/plugins/catalog-backend/src/tests/performance/stitchingPerformance.test.ts +++ b/plugins/catalog-backend/src/tests/performance/stitchingPerformance.test.ts @@ -19,18 +19,24 @@ import { createBackendModule, createServiceFactory, } from '@backstage/backend-plugin-api'; -import { TestDatabases, startTestBackend } from '@backstage/backend-test-utils'; +import { + mockServices, + startTestBackend, + TestDatabases, +} from '@backstage/backend-test-utils'; import { catalogProcessingExtensionPoint } from '@backstage/plugin-catalog-node/alpha'; import { Knex } from 'knex'; import { applyDatabaseMigrations } from '../../database/migrations'; import { + SyntheticLoadEntitiesProcessor, + SyntheticLoadEntitiesProvider, SyntheticLoadEvents, SyntheticLoadOptions, - SyntheticLoadEntitiesProvider, - SyntheticLoadEntitiesProcessor, } from './lib/catalogModuleSyntheticLoadEntities'; import { describePerformanceTest, performanceTraceEnabled } from './lib/env'; +jest.setTimeout(600_000); + function defer() { let resolve: (value: T | PromiseLike) => void; let reject: (error?: unknown) => void; @@ -147,17 +153,6 @@ class Tracker { } } -function staticDatabase(knex: Knex) { - return createServiceFactory({ - service: coreServices.database, - deps: {}, - createRootContext: () => undefined, - factory: () => ({ getClient: async () => knex }), - }); -} - -jest.setTimeout(600_000); - describePerformanceTest('stitchingPerformance', () => { const databases = TestDatabases.create({ ids: [/* 'MYSQL_8', */ 'POSTGRES_13', 'POSTGRES_9', 'SQLITE_3'], @@ -176,12 +171,79 @@ describePerformanceTest('stitchingPerformance', () => { childrenCount: 3, }; + const config = { + backend: { baseUrl: 'http://localhost:7007' }, + catalog: { stitchingStrategy: { mode: 'immediate' } }, + }; + const tracker = new Tracker(knex, load); const backend = await startTestBackend({ features: [ import('@backstage/plugin-catalog-backend/alpha'), - staticDatabase(knex), + mockServices.rootConfig.factory({ data: config }), + createServiceFactory({ + service: coreServices.database, + deps: {}, + factory: () => ({ getClient: async () => knex }), + }), + createBackendModule({ + moduleId: 'syntheticLoadEntities', + pluginId: 'catalog', + register(reg) { + reg.registerInit({ + deps: { + catalog: catalogProcessingExtensionPoint, + }, + async init({ catalog }) { + catalog.addEntityProvider( + new SyntheticLoadEntitiesProvider(load, tracker.events()), + ); + catalog.addProcessor( + new SyntheticLoadEntitiesProcessor(load), + ); + }, + }); + }, + }), + ], + }); + + await expect(tracker.completion()).resolves.toBeUndefined(); + await backend.stop(); + await knex.destroy(); + }, + ); + + it.each(databases.eachSupportedId())( + 'runs stitching in deferred mode, %p', + async databaseId => { + const knex = await databases.init(databaseId); + await applyDatabaseMigrations(knex); + + const load: SyntheticLoadOptions = { + baseEntitiesCount: 1000, + baseRelationsCount: 3, + baseRelationsSkew: 0.3, + childrenCount: 3, + }; + + const config = { + backend: { baseUrl: 'http://localhost:7007' }, + catalog: { stitchingStrategy: { mode: 'deferred' } }, + }; + + const tracker = new Tracker(knex, load); + + const backend = await startTestBackend({ + features: [ + import('@backstage/plugin-catalog-backend/alpha'), + mockServices.rootConfig.factory({ data: config }), + createServiceFactory({ + service: coreServices.database, + deps: {}, + factory: () => ({ getClient: async () => knex }), + }), createBackendModule({ moduleId: 'syntheticLoadEntities', pluginId: 'catalog', From 785fb1ea758f06558099be74894ae6d2277af646 Mon Sep 17 00:00:00 2001 From: Aramis Sennyey Date: Tue, 25 Apr 2023 16:52:49 -0400 Subject: [PATCH 008/102] Add the ability to view the catalog's spec from the Backstage interface. Signed-off-by: Aramis Signed-off-by: Aramis Sennyey --- .changeset/gentle-pears-camp.md | 5 + .changeset/thirty-stingrays-grin.md | 5 + app-config.yaml | 7 + packages/backend-next/package.json | 2 + packages/backend-next/src/index.ts | 1 + packages/backend-openapi-utils/api-report.md | 6 + packages/backend-openapi-utils/package.json | 3 + .../backend-openapi-utils/src/constants.ts | 21 ++ packages/backend-openapi-utils/src/index.ts | 3 +- .../backend-openapi-utils/src/stub.test.ts | 75 +++++- packages/backend-openapi-utils/src/stub.ts | 41 ++- .../.eslintrc.js | 1 + .../README.md | 30 +++ .../api-report.md | 20 ++ .../package.json | 54 ++++ .../InternalOpenApiDocumentationProvider.ts | 244 ++++++++++++++++++ .../src/index.ts | 62 +++++ .../src/setupTests.ts | 16 ++ yarn.lock | 66 ++++- 19 files changed, 644 insertions(+), 18 deletions(-) create mode 100644 .changeset/gentle-pears-camp.md create mode 100644 .changeset/thirty-stingrays-grin.md create mode 100644 packages/backend-openapi-utils/src/constants.ts create mode 100644 plugins/catalog-backend-module-openapi-spec/.eslintrc.js create mode 100644 plugins/catalog-backend-module-openapi-spec/README.md create mode 100644 plugins/catalog-backend-module-openapi-spec/api-report.md create mode 100644 plugins/catalog-backend-module-openapi-spec/package.json create mode 100644 plugins/catalog-backend-module-openapi-spec/src/InternalOpenApiDocumentationProvider.ts create mode 100644 plugins/catalog-backend-module-openapi-spec/src/index.ts create mode 100644 plugins/catalog-backend-module-openapi-spec/src/setupTests.ts diff --git a/.changeset/gentle-pears-camp.md b/.changeset/gentle-pears-camp.md new file mode 100644 index 0000000000..1a9f8768f8 --- /dev/null +++ b/.changeset/gentle-pears-camp.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-openapi-spec': patch +--- + +Adds a new catalog module for ingesting Backstage plugin OpenAPI specs into the catalog for display as an API entity. diff --git a/.changeset/thirty-stingrays-grin.md b/.changeset/thirty-stingrays-grin.md new file mode 100644 index 0000000000..43aaf2c606 --- /dev/null +++ b/.changeset/thirty-stingrays-grin.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-openapi-utils': patch +--- + +Adds a new route, `/openapi.json` to validated routers for displaying their full OpenAPI spec in a standard endpoint. diff --git a/app-config.yaml b/app-config.yaml index a2ee232516..e7b0a07483 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -50,6 +50,7 @@ backend: allow: - host: example.com - host: '*.mozilla.org' + - host: localhost:7007 # workingDirectory: /tmp # Use this to configure a working directory for the scaffolder, defaults to the OS temp-dir # See README.md in the proxy-backend plugin for information on the configuration format @@ -464,3 +465,9 @@ stackstorm: permission: enabled: true + +openapi: + plugins: + - catalog + - search + - todo diff --git a/packages/backend-next/package.json b/packages/backend-next/package.json index 3e5b4f8057..38245de00e 100644 --- a/packages/backend-next/package.json +++ b/packages/backend-next/package.json @@ -34,6 +34,8 @@ "@backstage/plugin-azure-devops-backend": "workspace:^", "@backstage/plugin-badges-backend": "workspace:^", "@backstage/plugin-catalog-backend": "workspace:^", + "@backstage/plugin-catalog-backend-module-openapi": "workspace:^", + "@backstage/plugin-catalog-backend-module-openapi-spec": "workspace:^", "@backstage/plugin-catalog-backend-module-scaffolder-entity-model": "workspace:^", "@backstage/plugin-catalog-backend-module-unprocessed": "workspace:^", "@backstage/plugin-devtools-backend": "workspace:^", diff --git a/packages/backend-next/src/index.ts b/packages/backend-next/src/index.ts index 1b4867c05e..d5793dc0fb 100644 --- a/packages/backend-next/src/index.ts +++ b/packages/backend-next/src/index.ts @@ -43,6 +43,7 @@ backend.add(import('@backstage/plugin-scaffolder-backend/alpha')); backend.add(import('@backstage/plugin-search-backend-module-catalog/alpha')); backend.add(import('@backstage/plugin-search-backend-module-explore/alpha')); backend.add(import('@backstage/plugin-search-backend-module-techdocs/alpha')); +backend.add(import('@backstage/plugin-catalog-backend-module-openapi-spec')); backend.add(import('@backstage/plugin-search-backend/alpha')); backend.add(import('@backstage/plugin-techdocs-backend/alpha')); backend.add(import('@backstage/plugin-todo-backend')); diff --git a/packages/backend-openapi-utils/api-report.md b/packages/backend-openapi-utils/api-report.md index 97ea0224d1..cc6d31ac71 100644 --- a/packages/backend-openapi-utils/api-report.md +++ b/packages/backend-openapi-utils/api-report.md @@ -248,6 +248,9 @@ type FullMap< }, > = RequiredMap & OptionalMap; +// @public +export function getOpenApiSpecRoute(baseUrl: string): string; + // @public (undocumented) interface HeaderObject extends ParameterObject { // (undocumented) @@ -442,6 +445,9 @@ type ObjectWithContentSchema< ? SchemaRef : never; +// @public +export const OPENAPI_SPEC_ROUTE = '/openapi.json'; + // @public (undocumented) type OptionalMap< T extends { diff --git a/packages/backend-openapi-utils/package.json b/packages/backend-openapi-utils/package.json index 8fa83bd584..15957dd4ac 100644 --- a/packages/backend-openapi-utils/package.json +++ b/packages/backend-openapi-utils/package.json @@ -37,6 +37,8 @@ "dist" ], "dependencies": { + "@backstage/backend-plugin-api": "workspace:^", + "@backstage/config": "workspace:^", "@backstage/errors": "workspace:^", "@types/express": "^4.17.6", "@types/express-serve-static-core": "^4.17.5", @@ -45,6 +47,7 @@ "express-promise-router": "^4.1.0", "json-schema-to-ts": "^2.6.2", "lodash": "^4.17.21", + "openapi-merge": "^1.3.2", "openapi3-ts": "^3.1.2" } } diff --git a/packages/backend-openapi-utils/src/constants.ts b/packages/backend-openapi-utils/src/constants.ts new file mode 100644 index 0000000000..b55279f6b2 --- /dev/null +++ b/packages/backend-openapi-utils/src/constants.ts @@ -0,0 +1,21 @@ +/* + * 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. + */ + +/** + * The route that all OpenAPI specs should be served from. + * @public + */ +export const OPENAPI_SPEC_ROUTE = '/openapi.json'; diff --git a/packages/backend-openapi-utils/src/index.ts b/packages/backend-openapi-utils/src/index.ts index 2b612fd617..528358132c 100644 --- a/packages/backend-openapi-utils/src/index.ts +++ b/packages/backend-openapi-utils/src/index.ts @@ -31,4 +31,5 @@ export type { PathParameters, } from './utility'; export type { ApiRouter } from './router'; -export { createValidatedOpenApiRouter } from './stub'; +export { createValidatedOpenApiRouter, getOpenApiSpecRoute } from './stub'; +export * from './constants'; diff --git a/packages/backend-openapi-utils/src/stub.test.ts b/packages/backend-openapi-utils/src/stub.test.ts index c9ec955e95..d4a1c19153 100644 --- a/packages/backend-openapi-utils/src/stub.test.ts +++ b/packages/backend-openapi-utils/src/stub.test.ts @@ -14,11 +14,12 @@ * limitations under the License. */ -import { createValidatedOpenApiRouter } from './stub'; +import { createValidatedOpenApiRouter, getOpenApiSpecRoute } from './stub'; import express from 'express'; import request from 'supertest'; import singlePathSpec from './___fixtures__/single-path'; import { Response } from './utility'; +import { OPENAPI_SPEC_ROUTE } from './constants'; describe('createRouter', () => { const pet: Response = { @@ -28,6 +29,33 @@ describe('createRouter', () => { photoUrls: [], }; + const specs = [singlePathSpec]; + const ONCE_NESTED_ROUTER_PREFIX = '/pet-store'; + const TWICE_NESTED_ROUTER_PREFIX = `/api`; + + const routers = specs.flatMap(spec => { + const router = createValidatedOpenApiRouter(spec); + const unnestedApp = express(); + unnestedApp.use('/', router); + + const onceNestedRouter = express.Router(); + onceNestedRouter.use(`${ONCE_NESTED_ROUTER_PREFIX}`, router); + const onceNestedApp = express(); + onceNestedApp.use(`/`, onceNestedRouter); + + const twiceNestedApp = express(); + twiceNestedApp.use(`${TWICE_NESTED_ROUTER_PREFIX}`, onceNestedRouter); + return [ + ['', unnestedApp, router], + [ONCE_NESTED_ROUTER_PREFIX, onceNestedApp, router], + [ + `${TWICE_NESTED_ROUTER_PREFIX}${ONCE_NESTED_ROUTER_PREFIX}`, + twiceNestedApp, + router, + ], + ] as const; + }); + it('does NOT override originalUrl and basePath after execution', async () => { expect.assertions(2); const router = createValidatedOpenApiRouter(singlePathSpec); @@ -61,19 +89,40 @@ describe('createRouter', () => { expect(routerGetFn).toHaveBeenCalledTimes(1); }); - it('handles coercing parameters correctly', async () => { - expect.assertions(1); - const router = createValidatedOpenApiRouter(singlePathSpec); - router.get('/pet/:petId', (req, res) => { - expect(typeof req.params.petId).toBe('integer'); - res.json(pet); - }); + it.each(routers)( + '%s handles coercing parameters correctly', + async (prefix, app, router) => { + expect.assertions(1); + router.get('/pet/:petId', (req, res) => { + expect(typeof req.params.petId).toBe('integer'); + res.send(pet); + }); - const apiRouter = express.Router(); - apiRouter.use('/pet-store', router); - const appRouter = express(); - appRouter.use('/api', apiRouter); + await request(app).get(`${prefix}/pet/1`); + }, + ); - await request(appRouter).get('/api/pet-store/pet/1'); + it.each(routers)( + '%s adds the openapi spec to the router', + async (prefix, app) => { + const response = await request(app) + .get(`${prefix}${OPENAPI_SPEC_ROUTE}`) + .expect(200); + expect(response.body).toHaveProperty('paths'); + Object.keys(response.body.paths).forEach(key => { + const specKey = key.replace(prefix, ''); + expect(singlePathSpec.paths).toHaveProperty(specKey); + expect(response.body.paths[key]).toEqual( + (singlePathSpec.paths as any)[specKey], + ); + }); + }, + ); +}); + +describe('getOpenApiSpecRoute', () => { + it('handles expected values', () => { + expect(getOpenApiSpecRoute('/api/test')).toEqual('/api/test/openapi.json'); + expect(getOpenApiSpecRoute('api/test')).toEqual('api/test/openapi.json'); }); }); diff --git a/packages/backend-openapi-utils/src/stub.ts b/packages/backend-openapi-utils/src/stub.ts index 6ec0e1db3c..0f62bf348c 100644 --- a/packages/backend-openapi-utils/src/stub.ts +++ b/packages/backend-openapi-utils/src/stub.ts @@ -27,6 +27,8 @@ import { } from 'express'; import { InputError } from '@backstage/errors'; import { middleware as OpenApiValidator } from 'express-openapi-validator'; +import { OPENAPI_SPEC_ROUTE } from './constants'; +import { isErrorResult, merge } from 'openapi-merge'; type PropertyOverrideRequest = Request & { [key: symbol]: string; @@ -45,6 +47,16 @@ export function getDefaultRouterMiddleware() { return [json()]; } +/** + * Given a base url for a plugin, find the given OpenAPI spec for that plugin. + * @param baseUrl - Plugin base url. + * @returns OpenAPI spec route for the base url. + * @public + */ +export function getOpenApiSpecRoute(baseUrl: string) { + return `${baseUrl}${OPENAPI_SPEC_ROUTE}`; +} + /** * Create a new OpenAPI router with some default middleware. * @param spec - Your OpenAPI spec imported as a JSON object. @@ -59,7 +71,7 @@ export function createValidatedOpenApiRouter( middleware?: RequestHandler[]; }, ) { - const router = PromiseRouter() as ApiRouter; + const router = PromiseRouter(); router.use(options?.middleware || getDefaultRouterMiddleware()); /** @@ -116,5 +128,30 @@ export function createValidatedOpenApiRouter( // Any errors from the middleware get through here. router.use(validatorErrorTransformer()); - return router; + router.get(OPENAPI_SPEC_ROUTE, async (req, res) => { + const mergeOutput = merge([ + { + oas: spec as any, + pathModification: { + /** + * Get the route that this OpenAPI spec is hosted on. The other + * approach of using the discovery API increases the router constructor + * significantly and since we're just looking for path and not full URL, + * this works. + * + * If we wanted to add a list of servers, there may be a case for adding + * discovery API to get an exhaustive list of upstream servers, but that's + * also not currently supported. + */ + prepend: req.originalUrl.replace(OPENAPI_SPEC_ROUTE, ''), + }, + }, + ]); + if (isErrorResult(mergeOutput)) { + throw new InputError('Invalid spec defined'); + } + res.json(mergeOutput.output); + }); + + return router as ApiRouter; } diff --git a/plugins/catalog-backend-module-openapi-spec/.eslintrc.js b/plugins/catalog-backend-module-openapi-spec/.eslintrc.js new file mode 100644 index 0000000000..e2a53a6ad2 --- /dev/null +++ b/plugins/catalog-backend-module-openapi-spec/.eslintrc.js @@ -0,0 +1 @@ +module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/plugins/catalog-backend-module-openapi-spec/README.md b/plugins/catalog-backend-module-openapi-spec/README.md new file mode 100644 index 0000000000..6aebb037f2 --- /dev/null +++ b/plugins/catalog-backend-module-openapi-spec/README.md @@ -0,0 +1,30 @@ +# catalog-backend-module-openapi-spec + +## Summary + +This module installs an entity provider that exports a single entity, your Backstage instance documentation, which merges as many backend plugins as you have defined in the config value `openapi.plugins`. + +## Notes + +- This only works with the new backend system. +- This requires populating a new config value `openapi.plugins` with an array of plugin IDs. The entity processor expo + +## Installation + +To your new backend file, add + +```ts title="packages/backend/src/index.ts" +backend.add(import('@backstage/plugin-catalog-backend-module-openapi-spec')); +``` + +Add a list of plugins to your config like, + +```yaml title="app-config.yaml" +openapi: + plugins: + - catalog + - todo + - search +``` + +We will attempt to load each plugin's OpenAPI spec hosted at `${pluginRoute}/openapi.json`. These are automatically added if you are using `@backstage/backend-openapi-utils`'s `createValidatedOpenApiRouter`. diff --git a/plugins/catalog-backend-module-openapi-spec/api-report.md b/plugins/catalog-backend-module-openapi-spec/api-report.md new file mode 100644 index 0000000000..a3d1933b78 --- /dev/null +++ b/plugins/catalog-backend-module-openapi-spec/api-report.md @@ -0,0 +1,20 @@ +## API Report File for "@backstage/plugin-catalog-backend-module-openapi-spec" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts +import { BackendFeature } from '@backstage/backend-plugin-api'; + +// @public (undocumented) +export const catalogModuleInternalOpenApiSpec: () => BackendFeature; + +// @public (undocumented) +export type MetaApiDocsPluginOptions = { + exampleOption: boolean; +}; + +// @public (undocumented) +export const metaOpenApiDocsPluginId = 'meta-api-docs'; + +// (No @packageDocumentation comment for this package) +``` diff --git a/plugins/catalog-backend-module-openapi-spec/package.json b/plugins/catalog-backend-module-openapi-spec/package.json new file mode 100644 index 0000000000..ce6bbec95f --- /dev/null +++ b/plugins/catalog-backend-module-openapi-spec/package.json @@ -0,0 +1,54 @@ +{ + "name": "@backstage/plugin-catalog-backend-module-openapi-spec", + "version": "0.0.0", + "main": "src/index.ts", + "types": "src/index.ts", + "license": "Apache-2.0", + "private": true, + "publishConfig": { + "access": "public", + "main": "dist/index.cjs.js", + "types": "dist/index.d.ts" + }, + "backstage": { + "role": "backend-plugin-module" + }, + "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/backend-openapi-utils": "workspace:^", + "@backstage/backend-plugin-api": "workspace:^", + "@backstage/backend-tasks": "workspace:^", + "@backstage/config": "workspace:^", + "@backstage/errors": "workspace:^", + "@backstage/plugin-catalog-node": "workspace:^", + "@types/express": "*", + "cross-fetch": "^3.1.5", + "express": "^4.17.1", + "express-promise-router": "^4.1.0", + "lodash": "^4.17.21", + "openapi-merge": "^1.3.2", + "uuid": "^9.0.0", + "yn": "^4.0.0" + }, + "devDependencies": { + "@backstage/catalog-model": "workspace:^", + "@backstage/cli": "workspace:^", + "@backstage/test-utils": "workspace:^", + "@types/supertest": "^2.0.8", + "msw": "^1.0.0", + "openapi3-ts": "^3.1.2", + "supertest": "^6.2.4" + }, + "files": [ + "dist" + ] +} diff --git a/plugins/catalog-backend-module-openapi-spec/src/InternalOpenApiDocumentationProvider.ts b/plugins/catalog-backend-module-openapi-spec/src/InternalOpenApiDocumentationProvider.ts new file mode 100644 index 0000000000..c5b989dbc7 --- /dev/null +++ b/plugins/catalog-backend-module-openapi-spec/src/InternalOpenApiDocumentationProvider.ts @@ -0,0 +1,244 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import type { ApiEntity } from '@backstage/catalog-model'; +import { Config } from '@backstage/config'; +import { ForwardedError } from '@backstage/errors'; +import { + EntityProvider, + EntityProviderConnection, +} from '@backstage/plugin-catalog-node'; +import { merge, isErrorResult } from 'openapi-merge'; +import { getOpenApiSpecRoute } from '@backstage/backend-openapi-utils'; +import type { + OpenAPIObject, + OperationObject, + PathItemObject, +} from 'openapi3-ts'; +import fetch from 'cross-fetch'; +import { DiscoveryService, LoggerService } from '@backstage/backend-plugin-api'; +import * as uuid from 'uuid'; +import { PluginTaskScheduler, TaskRunner } from '@backstage/backend-tasks'; + +const HTTP_VERBS: (keyof PathItemObject)[] = [ + 'get', + 'post', + 'put', + 'delete', + 'patch', + 'trace', + 'options', + 'head', +]; + +const addTagsToSpec = (spec: OpenAPIObject, tag: string) => { + Object.values(spec?.paths).forEach((path: PathItemObject) => { + HTTP_VERBS.forEach(verb => { + if (verb in path) { + if (!('tags' in path[verb])) { + (path[verb] as OperationObject).tags = []; + } + if (!(path[verb] as OperationObject).tags?.includes(tag)) { + (path[verb] as OperationObject).tags?.push(tag); + } + } + }); + }); +}; + +const mergeSpecs = async ({ + baseUrl, + specs, +}: { + baseUrl: string; + specs: OpenAPIObject[]; +}) => { + const mergeResult = merge([ + // Add the full API information as the first item for other items to merge against it with. + { + oas: { + openapi: '3.0.3', + info: { + title: 'Backstage API', + version: '1', + }, + servers: [{ url: baseUrl }], + paths: {}, + }, + }, + // For each plugin, load its spec and the known endpoint that it sits under. + ...specs.map( + spec => + ({ + oas: spec, + // Weird typing differences between this package and the client package's openapi 3. + } as any), + ), + ]); + + if (isErrorResult(mergeResult)) { + throw new ForwardedError( + `${mergeResult.message} (${mergeResult.type})`, + mergeResult, + ); + } else { + return mergeResult.output; + } +}; + +const loadSpecs = async ({ + baseUrl, + discovery, + plugins, + logger, +}: { + baseUrl: string; + plugins: string[]; + discovery: DiscoveryService; + logger: LoggerService; +}) => { + const specs: OpenAPIObject[] = []; + for (const pluginId of plugins) { + const url = await discovery.getExternalBaseUrl(pluginId); + const openApiUrl = getOpenApiSpecRoute(url); + const response = await fetch(openApiUrl); + if (response.ok) { + const spec = await response.json(); + addTagsToSpec(spec, pluginId); + specs.push(spec); + } else if (response.status === 404) { + logger.error( + `Plugin=${pluginId} does not have an OpenAPI spec at '${openApiUrl}'.`, + ); + } else { + logger.error( + `Failed to load spec for plugin=${pluginId} at ${openApiUrl}. Error (${ + response.status + }): ${response.body ? await response.text() : response.statusText}`, + ); + } + } + return mergeSpecs({ baseUrl, specs }); +}; + +export class InternalOpenApiDocumentationProvider implements EntityProvider { + private connection?: EntityProviderConnection; + private readonly scheduleFn: () => Promise; + constructor( + public readonly config: Config, + public readonly discovery: DiscoveryService, + public readonly logger: LoggerService, + taskRunner: TaskRunner, + ) { + this.scheduleFn = this.createScheduleFn(taskRunner); + } + + static fromConfig( + config: Config, + options: { + discovery: DiscoveryService; + logger: LoggerService; + schedule: PluginTaskScheduler; + }, + ) { + const taskRunner = options.schedule.createScheduledTaskRunner({ + frequency: { + minutes: 1, + }, + timeout: { + minutes: 1, + }, + }); + return new InternalOpenApiDocumentationProvider( + config, + options.discovery, + options.logger, + taskRunner, + ); + } + /** {@inheritdoc @backstage/plugin-catalog-backend#EntityProvider.getProviderName} */ + getProviderName() { + return `InternalOpenApiDocumentationProvider`; + } + + /** {@inheritdoc @backstage/plugin-catalog-backend#EntityProvider.connect} */ + async connect(connection: EntityProviderConnection) { + this.connection = connection; + return await this.scheduleFn(); + } + + 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: + InternalOpenApiDocumentationProvider.prototype.constructor.name, + taskId, + taskInstanceId: uuid.v4(), + }); + try { + await this.refresh(logger); + } catch (error) { + logger.error(`${this.getProviderName()} refresh failed`, error); + } + }, + }); + }; + } + + async refresh(logger: LoggerService) { + const pluginsToMerge = this.config.getStringArray('openapi.plugins'); + logger.info(`Loading specs from from ${pluginsToMerge}.`); + const documentationEntity: ApiEntity = { + apiVersion: 'backstage.io/v1beta1', + kind: 'API', + metadata: { + name: 'INTERNAL_instance_openapi_doc', + title: 'Your Backstage Instance documentation', + annotations: { + 'backstage.io/managed-by-location': + 'internal-package:@backstage/plugin-catalog-backend-module-openapi-spec', + 'backstage.io/managed-by-origin-location': + 'internal-package:@backstage/plugin-catalog-backend-module-openapi-spec', + }, + }, + spec: { + type: 'openapi', + lifecycle: 'production', + owner: 'backstage', + definition: JSON.stringify( + await loadSpecs({ + baseUrl: this.config.getString('backend.baseUrl'), + discovery: this.discovery, + plugins: pluginsToMerge, + logger, + }), + ), + }, + }; + await this.connection?.applyMutation({ + type: 'full', + entities: [ + { + entity: documentationEntity, + locationKey: 'internal-api-doc', + }, + ], + }); + } +} diff --git a/plugins/catalog-backend-module-openapi-spec/src/index.ts b/plugins/catalog-backend-module-openapi-spec/src/index.ts new file mode 100644 index 0000000000..9cc0cab6d3 --- /dev/null +++ b/plugins/catalog-backend-module-openapi-spec/src/index.ts @@ -0,0 +1,62 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + coreServices, + createBackendModule, +} from '@backstage/backend-plugin-api'; +import { catalogProcessingExtensionPoint } from '@backstage/plugin-catalog-node/alpha'; +import { InternalOpenApiDocumentationProvider } from './InternalOpenApiDocumentationProvider'; + +/** + * @public + */ +export type MetaApiDocsPluginOptions = { exampleOption: boolean }; + +/** + * @public + */ +export const metaOpenApiDocsPluginId = 'meta-api-docs'; + +/** + * @public + */ +export const catalogModuleInternalOpenApiSpec = createBackendModule({ + moduleId: metaOpenApiDocsPluginId, + pluginId: 'catalog', + register(env) { + env.registerInit({ + deps: { + catalog: catalogProcessingExtensionPoint, + config: coreServices.rootConfig, + discovery: coreServices.discovery, + scheduler: coreServices.scheduler, + logger: coreServices.logger, + }, + async init({ catalog, config, discovery, scheduler, logger }) { + console.log('testing'); + catalog.addEntityProvider( + InternalOpenApiDocumentationProvider.fromConfig(config, { + discovery, + schedule: scheduler, + logger, + }), + ); + }, + }); + }, +}); + +export default catalogModuleInternalOpenApiSpec; diff --git a/plugins/catalog-backend-module-openapi-spec/src/setupTests.ts b/plugins/catalog-backend-module-openapi-spec/src/setupTests.ts new file mode 100644 index 0000000000..4b9026cde5 --- /dev/null +++ b/plugins/catalog-backend-module-openapi-spec/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 013950f540..11ab2b969f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3544,7 +3544,9 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/backend-openapi-utils@workspace:packages/backend-openapi-utils" dependencies: + "@backstage/backend-plugin-api": "workspace:^" "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" "@backstage/errors": "workspace:^" "@types/express": ^4.17.6 "@types/express-serve-static-core": ^4.17.5 @@ -3553,6 +3555,7 @@ __metadata: express-promise-router: ^4.1.0 json-schema-to-ts: ^2.6.2 lodash: ^4.17.21 + openapi-merge: ^1.3.2 openapi3-ts: ^3.1.2 supertest: ^6.1.3 languageName: unknown @@ -5633,7 +5636,36 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-catalog-backend-module-openapi@workspace:plugins/catalog-backend-module-openapi": +"@backstage/plugin-catalog-backend-module-openapi-spec@workspace:^, @backstage/plugin-catalog-backend-module-openapi-spec@workspace:plugins/catalog-backend-module-openapi-spec": + version: 0.0.0-use.local + resolution: "@backstage/plugin-catalog-backend-module-openapi-spec@workspace:plugins/catalog-backend-module-openapi-spec" + dependencies: + "@backstage/backend-common": "workspace:^" + "@backstage/backend-openapi-utils": "workspace:^" + "@backstage/backend-plugin-api": "workspace:^" + "@backstage/backend-tasks": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/plugin-catalog-node": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@types/express": "*" + "@types/supertest": ^2.0.8 + cross-fetch: ^3.1.5 + express: ^4.17.1 + express-promise-router: ^4.1.0 + lodash: ^4.17.21 + msw: ^1.0.0 + openapi-merge: ^1.3.2 + openapi3-ts: ^3.1.2 + supertest: ^6.2.4 + uuid: ^9.0.0 + yn: ^4.0.0 + languageName: unknown + linkType: soft + +"@backstage/plugin-catalog-backend-module-openapi@workspace:^, @backstage/plugin-catalog-backend-module-openapi@workspace:plugins/catalog-backend-module-openapi": version: 0.0.0-use.local resolution: "@backstage/plugin-catalog-backend-module-openapi@workspace:plugins/catalog-backend-module-openapi" dependencies: @@ -20154,6 +20186,16 @@ __metadata: languageName: node linkType: hard +"atlassian-openapi@npm:^1.0.8": + version: 1.0.17 + resolution: "atlassian-openapi@npm:1.0.17" + dependencies: + jsonpointer: ^5.0.0 + urijs: ^1.19.10 + checksum: 372a454e8f5e000e016e261b2151019f0b3dabfad908593c71aae23ebd5b9998c374ae3c0bf0d85dd55dbcca94d5d93e38edf02346d0bd2cb34d3fd20968ddaf + languageName: node + linkType: hard + "atomic-sleep@npm:^1.0.0": version: 1.0.0 resolution: "atomic-sleep@npm:1.0.0" @@ -25645,6 +25687,8 @@ __metadata: "@backstage/plugin-azure-devops-backend": "workspace:^" "@backstage/plugin-badges-backend": "workspace:^" "@backstage/plugin-catalog-backend": "workspace:^" + "@backstage/plugin-catalog-backend-module-openapi": "workspace:^" + "@backstage/plugin-catalog-backend-module-openapi-spec": "workspace:^" "@backstage/plugin-catalog-backend-module-scaffolder-entity-model": "workspace:^" "@backstage/plugin-catalog-backend-module-unprocessed": "workspace:^" "@backstage/plugin-devtools-backend": "workspace:^" @@ -34240,6 +34284,17 @@ __metadata: languageName: node linkType: hard +"openapi-merge@npm:^1.3.2": + version: 1.3.2 + resolution: "openapi-merge@npm:1.3.2" + dependencies: + atlassian-openapi: ^1.0.8 + lodash: ^4.17.15 + ts-is-present: ^1.1.1 + checksum: 53284a563270177422db8c7536544913c133dfc5cc7058a1043f3092b5aa997b8224a83c59569d18620f94ccf0a014fcb735e22941a9259b2c60861002f01638 + languageName: node + linkType: hard + "openapi-sampler@npm:^1.2.1": version: 1.2.1 resolution: "openapi-sampler@npm:1.2.1" @@ -40922,6 +40977,13 @@ __metadata: languageName: node linkType: hard +"ts-is-present@npm:^1.1.1": + version: 1.2.2 + resolution: "ts-is-present@npm:1.2.2" + checksum: 3620ecf48219d0dd108e493260a207f4733d8e39a18dffec23c7ed2b1ef2aba7158d0dfafe36f3f27d0092472535a5e474ce04ade54e972e64b2b6329d20ab0b + languageName: node + linkType: hard + "ts-log@npm:^2.2.3": version: 2.2.5 resolution: "ts-log@npm:2.2.5" @@ -41674,7 +41736,7 @@ __metadata: languageName: node linkType: hard -"urijs@npm:^1.19.11": +"urijs@npm:^1.19.10, urijs@npm:^1.19.11": version: 1.19.11 resolution: "urijs@npm:1.19.11" checksum: f9b95004560754d30fd7dbee44b47414d662dc9863f1cf5632a7c7983648df11d23c0be73b9b4f9554463b61d5b0a520b70df9e1ee963ebb4af02e6da2cc80f3 From 51bd64ee5e5fbbee635a5eb4bb98c82f0cb0fc21 Mon Sep 17 00:00:00 2001 From: Aramis Sennyey Date: Mon, 11 Sep 2023 11:42:15 -0400 Subject: [PATCH 009/102] fix api report Signed-off-by: Aramis Sennyey --- packages/backend-openapi-utils/config.d.ts | 23 +++++++++++++++++++ packages/backend-openapi-utils/package.json | 4 +++- .../api-report.md | 4 +++- 3 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 packages/backend-openapi-utils/config.d.ts diff --git a/packages/backend-openapi-utils/config.d.ts b/packages/backend-openapi-utils/config.d.ts new file mode 100644 index 0000000000..7256dc55e0 --- /dev/null +++ b/packages/backend-openapi-utils/config.d.ts @@ -0,0 +1,23 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export interface Config { + openapi?: { + /** + * A list of plugins, whose OpenAPI specs you want to collate in `InternalOpenApiDocumentationProvider`. + */ + plugins: string[]; + }; +} diff --git a/packages/backend-openapi-utils/package.json b/packages/backend-openapi-utils/package.json index 15957dd4ac..b7be1acf3c 100644 --- a/packages/backend-openapi-utils/package.json +++ b/packages/backend-openapi-utils/package.json @@ -34,8 +34,10 @@ "supertest": "^6.1.3" }, "files": [ - "dist" + "dist", + "config.d.ts" ], + "configSchema": "config.d.ts", "dependencies": { "@backstage/backend-plugin-api": "workspace:^", "@backstage/config": "workspace:^", diff --git a/plugins/catalog-backend-module-openapi-spec/api-report.md b/plugins/catalog-backend-module-openapi-spec/api-report.md index a3d1933b78..62b4c7194e 100644 --- a/plugins/catalog-backend-module-openapi-spec/api-report.md +++ b/plugins/catalog-backend-module-openapi-spec/api-report.md @@ -6,7 +6,9 @@ import { BackendFeature } from '@backstage/backend-plugin-api'; // @public (undocumented) -export const catalogModuleInternalOpenApiSpec: () => BackendFeature; +const catalogModuleInternalOpenApiSpec: () => BackendFeature; +export { catalogModuleInternalOpenApiSpec }; +export default catalogModuleInternalOpenApiSpec; // @public (undocumented) export type MetaApiDocsPluginOptions = { From d7f87cd15cd10d373b074ba5a9fdda6d59f879d1 Mon Sep 17 00:00:00 2001 From: Aramis Sennyey Date: Mon, 18 Sep 2023 19:19:54 -0400 Subject: [PATCH 010/102] add a catalog-info file for the new module Signed-off-by: Aramis Sennyey --- app-config.yaml | 1 - .../catalog-info.yaml | 9 +++++++++ plugins/catalog-backend-module-openapi-spec/src/index.ts | 1 - 3 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 plugins/catalog-backend-module-openapi-spec/catalog-info.yaml diff --git a/app-config.yaml b/app-config.yaml index e7b0a07483..0ae2a4aa6e 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -50,7 +50,6 @@ backend: allow: - host: example.com - host: '*.mozilla.org' - - host: localhost:7007 # workingDirectory: /tmp # Use this to configure a working directory for the scaffolder, defaults to the OS temp-dir # See README.md in the proxy-backend plugin for information on the configuration format diff --git a/plugins/catalog-backend-module-openapi-spec/catalog-info.yaml b/plugins/catalog-backend-module-openapi-spec/catalog-info.yaml new file mode 100644 index 0000000000..6aa1223aa0 --- /dev/null +++ b/plugins/catalog-backend-module-openapi-spec/catalog-info.yaml @@ -0,0 +1,9 @@ +apiVersion: backstage.io/v1alpha1 +kind: Component +metadata: + name: backstage-plugin-catalog-backend-module-openapi-spec + title: '@backstage/plugin-catalog-backend-module-openapi-spec' +spec: + lifecycle: experimental + type: backstage-backend-plugin-module + owner: maintainers diff --git a/plugins/catalog-backend-module-openapi-spec/src/index.ts b/plugins/catalog-backend-module-openapi-spec/src/index.ts index 9cc0cab6d3..226442666c 100644 --- a/plugins/catalog-backend-module-openapi-spec/src/index.ts +++ b/plugins/catalog-backend-module-openapi-spec/src/index.ts @@ -46,7 +46,6 @@ export const catalogModuleInternalOpenApiSpec = createBackendModule({ logger: coreServices.logger, }, async init({ catalog, config, discovery, scheduler, logger }) { - console.log('testing'); catalog.addEntityProvider( InternalOpenApiDocumentationProvider.fromConfig(config, { discovery, From 63b8e90cb6475fc1c1eab6dcb1f1216243dcefdd Mon Sep 17 00:00:00 2001 From: Aramis Sennyey Date: Thu, 5 Oct 2023 16:58:56 -0400 Subject: [PATCH 011/102] update notes Signed-off-by: Aramis Sennyey --- plugins/catalog-backend-module-openapi-spec/README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/plugins/catalog-backend-module-openapi-spec/README.md b/plugins/catalog-backend-module-openapi-spec/README.md index 6aebb037f2..aa0503229f 100644 --- a/plugins/catalog-backend-module-openapi-spec/README.md +++ b/plugins/catalog-backend-module-openapi-spec/README.md @@ -6,8 +6,7 @@ This module installs an entity provider that exports a single entity, your Backs ## Notes -- This only works with the new backend system. -- This requires populating a new config value `openapi.plugins` with an array of plugin IDs. The entity processor expo +- **This only works with the new backend system.** ## Installation From 1a8c9c732b6bb2d6f00442e9bf8e9b1d7cdeb870 Mon Sep 17 00:00:00 2001 From: Aramis Sennyey Date: Fri, 6 Oct 2023 09:28:14 -0400 Subject: [PATCH 012/102] adjust ownership of the new package Signed-off-by: Aramis Sennyey --- .github/CODEOWNERS | 1 + plugins/catalog-backend-module-openapi-spec/catalog-info.yaml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index e788a6fe95..b5df047e8a 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -29,6 +29,7 @@ yarn.lock @backstage/maintainers @backst /plugins/catalog-* @backstage/maintainers @backstage/reviewers @backstage/catalog-maintainers /plugins/catalog-backend-module-aws @backstage/maintainers @backstage/reviewers @backstage/catalog-maintainers @pjungermann /plugins/catalog-backend-module-bitbucket-cloud @backstage/maintainers @backstage/reviewers @backstage/catalog-maintainers @pjungermann +/plugins/catalog-backend-module-openapi-spec @backstage/maintainers @backstage/openapi-tooling-maintainers /plugins/catalog-backend-module-msgraph @backstage/maintainers @backstage/reviewers @backstage/catalog-maintainers @pjungermann /plugins/catalog-backend-module-puppetdb @backstage/maintainers @backstage/reviewers @backstage/catalog-maintainers /plugins/catalog-graph @backstage/maintainers @backstage/reviewers @backstage/catalog-maintainers @backstage/sda-se-reviewers diff --git a/plugins/catalog-backend-module-openapi-spec/catalog-info.yaml b/plugins/catalog-backend-module-openapi-spec/catalog-info.yaml index 6aa1223aa0..53a136a5f9 100644 --- a/plugins/catalog-backend-module-openapi-spec/catalog-info.yaml +++ b/plugins/catalog-backend-module-openapi-spec/catalog-info.yaml @@ -6,4 +6,4 @@ metadata: spec: lifecycle: experimental type: backstage-backend-plugin-module - owner: maintainers + owner: openapi-tooling-maintainers From b0562a18b45466e41a1369867d86da973e017a63 Mon Sep 17 00:00:00 2001 From: Aramis Sennyey Date: Fri, 6 Oct 2023 14:53:22 -0400 Subject: [PATCH 013/102] add backstage/reviewers to codeowners Signed-off-by: Aramis Sennyey --- .github/CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index b5df047e8a..8807862a20 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -29,7 +29,7 @@ yarn.lock @backstage/maintainers @backst /plugins/catalog-* @backstage/maintainers @backstage/reviewers @backstage/catalog-maintainers /plugins/catalog-backend-module-aws @backstage/maintainers @backstage/reviewers @backstage/catalog-maintainers @pjungermann /plugins/catalog-backend-module-bitbucket-cloud @backstage/maintainers @backstage/reviewers @backstage/catalog-maintainers @pjungermann -/plugins/catalog-backend-module-openapi-spec @backstage/maintainers @backstage/openapi-tooling-maintainers +/plugins/catalog-backend-module-openapi-spec @backstage/maintainers @backstage/reviewers @backstage/openapi-tooling-maintainers /plugins/catalog-backend-module-msgraph @backstage/maintainers @backstage/reviewers @backstage/catalog-maintainers @pjungermann /plugins/catalog-backend-module-puppetdb @backstage/maintainers @backstage/reviewers @backstage/catalog-maintainers /plugins/catalog-graph @backstage/maintainers @backstage/reviewers @backstage/catalog-maintainers @backstage/sda-se-reviewers From 2bc82320e2cead47905f027b3fc3d1782d0958be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Sat, 7 Oct 2023 17:13:55 +0200 Subject: [PATCH 014/102] strict mode check MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .../src/database/operations/stitcher/markForStitching.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/plugins/catalog-backend/src/database/operations/stitcher/markForStitching.ts b/plugins/catalog-backend/src/database/operations/stitcher/markForStitching.ts index 9f4bcc49e7..ecc364a9cc 100644 --- a/plugins/catalog-backend/src/database/operations/stitcher/markForStitching.ts +++ b/plugins/catalog-backend/src/database/operations/stitcher/markForStitching.ts @@ -36,8 +36,9 @@ export async function markForStitching(options: { const entityRefs = split(options.entityRefs); const entityIds = split(options.entityIds); const knex = options.knex; + const mode = options.strategy.mode; - if (options.strategy.mode === 'immediate') { + if (mode === 'immediate') { for (const chunk of entityRefs) { await knex .table('final_entities') @@ -74,7 +75,7 @@ export async function markForStitching(options: { }) .whereIn('entity_id', chunk); } - } else { + } else if (mode === 'deferred') { // It's OK that this is shared across refresh state rows; it just needs to // be uniquely generated for every new stitch request. const ticket = uuid(); @@ -96,6 +97,8 @@ export async function markForStitching(options: { }) .whereIn('entity_id', chunk); } + } else { + throw new Error(`Unknown stitching strategy mode ${mode}`); } } From c8f6d17da964cef4ce4e607b5e7c90c603b3eb7e Mon Sep 17 00:00:00 2001 From: Aramis Sennyey Date: Mon, 9 Oct 2023 12:21:18 -0400 Subject: [PATCH 015/102] fix prettier Signed-off-by: Aramis Sennyey --- plugins/catalog-backend-module-openapi-spec/catalog-info.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/catalog-backend-module-openapi-spec/catalog-info.yaml b/plugins/catalog-backend-module-openapi-spec/catalog-info.yaml index 53a136a5f9..89bb18d2c3 100644 --- a/plugins/catalog-backend-module-openapi-spec/catalog-info.yaml +++ b/plugins/catalog-backend-module-openapi-spec/catalog-info.yaml @@ -6,4 +6,4 @@ metadata: spec: lifecycle: experimental type: backstage-backend-plugin-module - owner: openapi-tooling-maintainers + owner: openapi-tooling-maintainers From 7a41bcf2af9bdad78a398597079fa10089d6561a Mon Sep 17 00:00:00 2001 From: ivgo Date: Mon, 2 Oct 2023 13:55:21 +0200 Subject: [PATCH 016/102] Create vault-node package. Initial step for fully supporting the new backend system Signed-off-by: ivgo --- .changeset/four-pears-swim.md | 6 +++ plugins/vault-node/.eslintrc.js | 1 + plugins/vault-node/README.md | 3 ++ plugins/vault-node/api-report.md | 38 +++++++++++++++++++ plugins/vault-node/catalog-info.yaml | 10 +++++ plugins/vault-node/package.json | 33 +++++++++++++++++ plugins/vault-node/src/api/index.ts | 16 ++++++++ plugins/vault-node/src/api/types.ts | 55 ++++++++++++++++++++++++++++ plugins/vault-node/src/extensions.ts | 36 ++++++++++++++++++ plugins/vault-node/src/index.ts | 17 +++++++++ plugins/vault-node/src/setupTests.ts | 16 ++++++++ yarn.lock | 10 +++++ 12 files changed, 241 insertions(+) create mode 100644 .changeset/four-pears-swim.md create mode 100644 plugins/vault-node/.eslintrc.js create mode 100644 plugins/vault-node/README.md create mode 100644 plugins/vault-node/api-report.md create mode 100644 plugins/vault-node/catalog-info.yaml create mode 100644 plugins/vault-node/package.json create mode 100644 plugins/vault-node/src/api/index.ts create mode 100644 plugins/vault-node/src/api/types.ts create mode 100644 plugins/vault-node/src/extensions.ts create mode 100644 plugins/vault-node/src/index.ts create mode 100644 plugins/vault-node/src/setupTests.ts diff --git a/.changeset/four-pears-swim.md b/.changeset/four-pears-swim.md new file mode 100644 index 0000000000..b091dad598 --- /dev/null +++ b/.changeset/four-pears-swim.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-vault-node': minor +--- + +Initial version of the `plugin-vault-node`` package. It contains the extension point definitions +for the vault backend, as well as some types that will be deprecated in the backend plugin. diff --git a/plugins/vault-node/.eslintrc.js b/plugins/vault-node/.eslintrc.js new file mode 100644 index 0000000000..e2a53a6ad2 --- /dev/null +++ b/plugins/vault-node/.eslintrc.js @@ -0,0 +1 @@ +module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/plugins/vault-node/README.md b/plugins/vault-node/README.md new file mode 100644 index 0000000000..5f777e792b --- /dev/null +++ b/plugins/vault-node/README.md @@ -0,0 +1,3 @@ +# @backstage/plugin-vault-node + +Houses types and utilities for building the vault modules diff --git a/plugins/vault-node/api-report.md b/plugins/vault-node/api-report.md new file mode 100644 index 0000000000..d0e0a29f8f --- /dev/null +++ b/plugins/vault-node/api-report.md @@ -0,0 +1,38 @@ +## API Report File for "@backstage/plugin-vault-node" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts +import { ExtensionPoint } from '@backstage/backend-plugin-api'; + +// @public +export interface VaultApi { + getFrontendSecretsUrl(): string; + listSecrets( + secretPath: string, + options?: { + secretEngine?: string; + }, + ): Promise; + renewToken?(): Promise; +} + +// @public +export interface VaultExtensionPoint { + // (undocumented) + setClient(vaultClient: VaultApi): void; +} + +// @public +export const vaultExtensionPoint: ExtensionPoint; + +// @public +export type VaultSecret = { + name: string; + path: string; + showUrl: string; + editUrl: string; +}; + +// (No @packageDocumentation comment for this package) +``` diff --git a/plugins/vault-node/catalog-info.yaml b/plugins/vault-node/catalog-info.yaml new file mode 100644 index 0000000000..6b6c8b84ad --- /dev/null +++ b/plugins/vault-node/catalog-info.yaml @@ -0,0 +1,10 @@ +apiVersion: backstage.io/v1alpha1 +kind: Component +metadata: + name: backstage-plugin-vault-node + title: '@backstage/plugin-vault-node' + description: Node.js library for the vault plugin +spec: + lifecycle: experimental + type: backstage-node-library + owner: maintainers diff --git a/plugins/vault-node/package.json b/plugins/vault-node/package.json new file mode 100644 index 0000000000..a0a821680c --- /dev/null +++ b/plugins/vault-node/package.json @@ -0,0 +1,33 @@ +{ + "name": "@backstage/plugin-vault-node", + "description": "Node.js library for the vault plugin", + "version": "0.0.0", + "main": "src/index.ts", + "types": "src/index.ts", + "license": "Apache-2.0", + "publishConfig": { + "access": "public", + "main": "dist/index.cjs.js", + "types": "dist/index.d.ts" + }, + "backstage": { + "role": "node-library" + }, + "scripts": { + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "clean": "backstage-cli package clean", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack" + }, + "dependencies": { + "@backstage/backend-plugin-api": "workspace:^" + }, + "devDependencies": { + "@backstage/cli": "workspace:^" + }, + "files": [ + "dist" + ] +} diff --git a/plugins/vault-node/src/api/index.ts b/plugins/vault-node/src/api/index.ts new file mode 100644 index 0000000000..92cb965d75 --- /dev/null +++ b/plugins/vault-node/src/api/index.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 * from './types'; diff --git a/plugins/vault-node/src/api/types.ts b/plugins/vault-node/src/api/types.ts new file mode 100644 index 0000000000..9969fb001b --- /dev/null +++ b/plugins/vault-node/src/api/types.ts @@ -0,0 +1,55 @@ +/* + * 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. + */ + +/** + * Object containing the secret name and some links + * @public + */ +export type VaultSecret = { + name: string; + path: string; + showUrl: string; + editUrl: string; +}; + +/** + * Interface for the Vault API + * @public + */ +export interface VaultApi { + /** + * Returns the URL to access the Vault UI with the defined config. + */ + getFrontendSecretsUrl(): string; + + /** + * Returns a list of secrets used to show in a table. + * @param secretPath - The path where the secrets are stored in Vault + * @param options - Additional options to be passed to the Vault API, allows to override vault default settings in app config file + */ + listSecrets( + secretPath: string, + options?: { + secretEngine?: string; + }, + ): Promise; + + /** + * Optional, to renew the token used to list the secrets. Throws an + * error if the token renewal went wrong. + */ + renewToken?(): Promise; +} diff --git a/plugins/vault-node/src/extensions.ts b/plugins/vault-node/src/extensions.ts new file mode 100644 index 0000000000..efe4ba6223 --- /dev/null +++ b/plugins/vault-node/src/extensions.ts @@ -0,0 +1,36 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { createExtensionPoint } from '@backstage/backend-plugin-api'; +import { VaultApi } from './api'; + +/** + * Extension point for vault. + * + * @public + */ +export interface VaultExtensionPoint { + setClient(vaultClient: VaultApi): void; +} + +/** + * Extension point for vault. + * + * @public + */ +export const vaultExtensionPoint = createExtensionPoint({ + id: 'vault.configuration', +}); diff --git a/plugins/vault-node/src/index.ts b/plugins/vault-node/src/index.ts new file mode 100644 index 0000000000..070f2cf64d --- /dev/null +++ b/plugins/vault-node/src/index.ts @@ -0,0 +1,17 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { type VaultExtensionPoint, vaultExtensionPoint } from './extensions'; +export type { VaultApi, VaultSecret } from './api'; diff --git a/plugins/vault-node/src/setupTests.ts b/plugins/vault-node/src/setupTests.ts new file mode 100644 index 0000000000..4b9026cde5 --- /dev/null +++ b/plugins/vault-node/src/setupTests.ts @@ -0,0 +1,16 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export {}; diff --git a/yarn.lock b/yarn.lock index b029e6280f..0ac22cafa6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9909,6 +9909,7 @@ __metadata: "@backstage/cli": "workspace:^" "@backstage/config": "workspace:^" "@backstage/errors": "workspace:^" + "@backstage/plugin-vault-node": "workspace:^" "@types/compression": ^1.7.2 "@types/express": "*" "@types/supertest": ^2.0.8 @@ -9926,6 +9927,15 @@ __metadata: languageName: unknown linkType: soft +"@backstage/plugin-vault-node@workspace:^, @backstage/plugin-vault-node@workspace:plugins/vault-node": + version: 0.0.0-use.local + resolution: "@backstage/plugin-vault-node@workspace:plugins/vault-node" + dependencies: + "@backstage/backend-plugin-api": "workspace:^" + "@backstage/cli": "workspace:^" + languageName: unknown + linkType: soft + "@backstage/plugin-vault@workspace:plugins/vault": version: 0.0.0-use.local resolution: "@backstage/plugin-vault@workspace:plugins/vault" From a873a32a1f9a4fd4e6d701212552cb7ebb7816ad Mon Sep 17 00:00:00 2001 From: ivgo Date: Mon, 2 Oct 2023 15:46:54 +0200 Subject: [PATCH 017/102] Add support to the new backend system, including customization Signed-off-by: ivgo --- .changeset/great-baboons-allow.md | 33 +++++++++ plugins/vault-backend/README.md | 25 ++++++- plugins/vault-backend/api-report.md | 10 ++- plugins/vault-backend/config.d.ts | 7 ++ plugins/vault-backend/package.json | 2 + plugins/vault-backend/src/index.ts | 1 + .../vault-backend/src/service/VaultBuilder.ts | 40 +++++++--- .../vault-backend/src/service/plugin.test.tsx | 22 ++++++ plugins/vault-backend/src/service/plugin.ts | 74 +++++++++++++++++++ plugins/vault-backend/src/service/vaultApi.ts | 2 + yarn.lock | 1 + 11 files changed, 205 insertions(+), 12 deletions(-) create mode 100644 .changeset/great-baboons-allow.md create mode 100644 plugins/vault-backend/src/service/plugin.test.tsx create mode 100644 plugins/vault-backend/src/service/plugin.ts diff --git a/.changeset/great-baboons-allow.md b/.changeset/great-baboons-allow.md new file mode 100644 index 0000000000..47e410d8a4 --- /dev/null +++ b/.changeset/great-baboons-allow.md @@ -0,0 +1,33 @@ +--- +'@backstage/plugin-vault-backend': minor +--- + +Added support for the [new backend system](https://backstage.io/docs/backend-system/). + +In your `packages/backend/src/index.ts` make the following changes: + +```diff + import { createBackend } from '@backstage/backend-defaults'; + const backend = createBackend(); + // ... other feature additions ++ backend.add(import('@backstage/plugin-vault-backend'); + backend.start(); +``` + +If you use the new backend system, the token renewal task can be defined via configuration file: + +```diff +vault: + baseUrl: + token: + schedule: ++ frequency: ... ++ timeout: ... ++ # Other schedule options, such as scope or initialDelay +``` + +If the `schedule` is omitted or set to `false` no token renewal task will be scheduled. +If the value of `schedule` is set to `true` the renew will be scheduled hourly (the default). +In other cases (like in the diff above), the defined schedule will be used. + +**DEPRECATIONS**: The interface `VaultApi` and the type `VaultSecret` are now deprecated. Import them from `@backstage/plugin-vault-node`. diff --git a/plugins/vault-backend/README.md b/plugins/vault-backend/README.md index 8c70cfd24a..117bcaacbb 100644 --- a/plugins/vault-backend/README.md +++ b/plugins/vault-backend/README.md @@ -68,6 +68,9 @@ To get started, first you need a running instance of Vault. You can follow [this token: secretEngine: 'customSecretEngine' # Optional. By default it uses 'secrets'. Can be overwritten by the annotation of the entity kvVersion: # Optional. The K/V version that your instance is using. The available options are '1' or '2' + schedule: # Optional. If the token renewal is enabled this schedule will be used instead of the hourly one + frequency: { hours: 1 } + timeout: { hours: 1 } ``` 4. Get a `VAULT_TOKEN` with **LIST** permissions, as it's enough for the plugin. You can check [this tutorial](https://learn.hashicorp.com/tutorials/vault/tokens) for more info. @@ -80,6 +83,24 @@ To get started, first you need a running instance of Vault. You can follow [this } ``` +## New Backend System + +The Vault backend plugin has support for the [new backend system](https://backstage.io/docs/backend-system/), here's how you can set that up: + +In your `packages/backend/src/index.ts` make the following changes: + +```diff + import { createBackend } from '@backstage/backend-defaults'; + const backend = createBackend(); + // ... other feature additions ++ backend.add(import('@backstage/plugin-vault-backend'); + backend.start(); +``` + +The token renewal is enabled automatically in the new backend system depending on the `app-config.yaml`. If the `schedule` is not defined there, no +task will be executed. If you want to use the default renewal scheduler (which runs hourly), set `schedule: true`. In case you want a custom schedule +just use a configuration like the one set above. + ## Integration with the Catalog The plugin can be integrated into each Component in the catalog. To allow listing the available secrets a new annotation must be added to the `catalog-info.yaml`: @@ -122,7 +143,7 @@ That will overwrite the default secret engine from the configuration. ## Renew token -In a secure Vault instance, it's usual that the tokens are refreshed after some time. In order to always have a valid token to fetch the secrets, it might be necessary to execute a renew action after some time. By default this is deactivated, but it can be easily activated and configured to be executed periodically (hourly by default, but customizable by the user). In order to do that, modify your `src/plugins/vault.ts` file to look like this one: +In a secure Vault instance, it's usual that the tokens are refreshed after some time. In order to always have a valid token to fetch the secrets, it might be necessary to execute a renew action after some time. By default this is deactivated, but it can be easily activated and configured to be executed periodically (hourly by default, but customizable by the user within the app-config.yaml file). In order to do that, modify your `src/plugins/vault.ts` file to look like this one: ```typescript import { VaultBuilder } from '@backstage/plugin-vault-backend'; @@ -149,6 +170,8 @@ export default async function createPlugin( } ``` +If the `taskRunner` is not set when calling the `enableTokenRenew`, the plugin will automatically check what is set in the `app-config.yaml` file. Refer to [the new backend system setup](#new-backend-system) for more information about it. + ## Features - List the secrets present in a certain path diff --git a/plugins/vault-backend/api-report.md b/plugins/vault-backend/api-report.md index ebf9057b98..4002db5084 100644 --- a/plugins/vault-backend/api-report.md +++ b/plugins/vault-backend/api-report.md @@ -3,9 +3,11 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts +import { BackendFeature } from '@backstage/backend-plugin-api'; import { Config } from '@backstage/config'; import express from 'express'; import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; import { PluginTaskScheduler } from '@backstage/backend-tasks'; import { TaskRunner } from '@backstage/backend-tasks'; @@ -22,7 +24,7 @@ export interface RouterOptions { scheduler: PluginTaskScheduler; } -// @public +// @public @deprecated export interface VaultApi { getFrontendSecretsUrl(): string; listSecrets( @@ -69,12 +71,16 @@ export interface VaultEnvironment { // (undocumented) config: Config; // (undocumented) - logger: Logger; + logger: LoggerService; // (undocumented) scheduler: PluginTaskScheduler; } // @public +const vaultPlugin: () => BackendFeature; +export default vaultPlugin; + +// @public @deprecated export type VaultSecret = { name: string; path: string; diff --git a/plugins/vault-backend/config.d.ts b/plugins/vault-backend/config.d.ts index a30999b0cb..58369e638d 100644 --- a/plugins/vault-backend/config.d.ts +++ b/plugins/vault-backend/config.d.ts @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import { TaskScheduleDefinitionConfig } from '@backstage/backend-tasks'; /** Configuration for the Vault plugin */ export interface Config { @@ -44,5 +45,11 @@ export interface Config { * The version of the K/V API. Defaults to `2`. */ kvVersion?: 1 | 2; + + /** + * If set to true, the default schedule (hourly) will be used. If a + * different schedule is set, this will be used instead. + * */ + schedule?: TaskScheduleDefinitionConfig | boolean; }; } diff --git a/plugins/vault-backend/package.json b/plugins/vault-backend/package.json index 6906b8124d..2159ff7bfc 100644 --- a/plugins/vault-backend/package.json +++ b/plugins/vault-backend/package.json @@ -34,9 +34,11 @@ }, "dependencies": { "@backstage/backend-common": "workspace:^", + "@backstage/backend-plugin-api": "workspace:^", "@backstage/backend-tasks": "workspace:^", "@backstage/config": "workspace:^", "@backstage/errors": "workspace:^", + "@backstage/plugin-vault-node": "workspace:^", "@types/express": "*", "compression": "^1.7.4", "cors": "^2.8.5", diff --git a/plugins/vault-backend/src/index.ts b/plugins/vault-backend/src/index.ts index 4c74fd051f..c5fea00642 100644 --- a/plugins/vault-backend/src/index.ts +++ b/plugins/vault-backend/src/index.ts @@ -17,3 +17,4 @@ export * from './service/router'; export * from './service/VaultBuilder'; export * from './service/vaultApi'; +export { vaultPlugin as default } from './service/plugin'; diff --git a/plugins/vault-backend/src/service/VaultBuilder.ts b/plugins/vault-backend/src/service/VaultBuilder.ts index 9856476c20..471064392f 100644 --- a/plugins/vault-backend/src/service/VaultBuilder.ts +++ b/plugins/vault-backend/src/service/VaultBuilder.ts @@ -16,11 +16,17 @@ import { Config } from '@backstage/config'; import { InputError } from '@backstage/errors'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; import express from 'express'; import Router from 'express-promise-router'; import { VaultApi, VaultClient } from './vaultApi'; -import { TaskRunner, PluginTaskScheduler } from '@backstage/backend-tasks'; +import { + PluginTaskScheduler, + TaskRunner, + TaskScheduleDefinition, + TaskScheduleDefinitionConfig, + readTaskScheduleDefinitionFromConfig, +} from '@backstage/backend-tasks'; import { errorHandler } from '@backstage/backend-common'; /** @@ -28,7 +34,7 @@ import { errorHandler } from '@backstage/backend-common'; * @public */ export interface VaultEnvironment { - logger: Logger; + logger: LoggerService; config: Config; scheduler: PluginTaskScheduler; } @@ -101,18 +107,16 @@ export class VaultBuilder { } /** - * Enables the token renewal for Vault. + * Enables the token renewal for Vault. The schedule if configured in the app-config.yaml file. + * If not set, the renewal is executed hourly * - * @param schedule - The TaskRunner used to schedule the renewal, if not set, renewing hourly * @returns */ public async enableTokenRenew(schedule?: TaskRunner) { const taskRunner = schedule ? schedule - : this.env.scheduler.createScheduledTaskRunner({ - frequency: { hours: 1 }, - timeout: { hours: 1 }, - }); + : this.env.scheduler.createScheduledTaskRunner(this.getConfigSchedule()); + await taskRunner.run({ id: 'refresh-vault-token', fn: async () => { @@ -124,6 +128,24 @@ export class VaultBuilder { return this; } + private getConfigSchedule(): TaskScheduleDefinition { + const schedule = this.env.config.getOptional< + TaskScheduleDefinitionConfig | boolean + >('vault.schedule'); + + const scheduleCfg = + schedule !== undefined && schedule !== false + ? { + frequency: { hours: 1 }, + timeout: { hours: 1 }, + } + : readTaskScheduleDefinitionFromConfig( + this.env.config.getConfig('vault.schedule'), + ); + + return scheduleCfg; + } + /** * Builds the backend routes for Vault. * diff --git a/plugins/vault-backend/src/service/plugin.test.tsx b/plugins/vault-backend/src/service/plugin.test.tsx new file mode 100644 index 0000000000..cc9fdaa0a7 --- /dev/null +++ b/plugins/vault-backend/src/service/plugin.test.tsx @@ -0,0 +1,22 @@ +/* + * Copyright 2021 The 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 { vaultPlugin } from './plugin'; + +describe('vault', () => { + it('should export the vault plugin', () => { + expect(vaultPlugin).toBeDefined(); + }); +}); diff --git a/plugins/vault-backend/src/service/plugin.ts b/plugins/vault-backend/src/service/plugin.ts new file mode 100644 index 0000000000..cf9d2cf87b --- /dev/null +++ b/plugins/vault-backend/src/service/plugin.ts @@ -0,0 +1,74 @@ +/* + * Copyright 2020 The 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 { + coreServices, + createBackendPlugin, +} from '@backstage/backend-plugin-api'; +import { VaultApi, vaultExtensionPoint } from '@backstage/plugin-vault-node'; +import { VaultBuilder } from './VaultBuilder'; +import { TaskScheduleDefinitionConfig } from '@backstage/backend-tasks'; + +/** + * Vault backend plugin + * + * @public + */ +export const vaultPlugin = createBackendPlugin({ + pluginId: 'vault', + register(env) { + let client: VaultApi | undefined; + + env.registerExtensionPoint(vaultExtensionPoint, { + setClient(vaultClient) { + if (client) { + throw new Error('The vault client has been already set'); + } + client = vaultClient; + }, + }); + + env.registerInit({ + deps: { + logger: coreServices.logger, + config: coreServices.rootConfig, + scheduler: coreServices.scheduler, + httpRouter: coreServices.httpRouter, + }, + async init({ logger, config, scheduler, httpRouter }) { + let builder = VaultBuilder.createBuilder({ + logger, + config, + scheduler, + }); + + if (client) { + builder = builder.setVaultClient(client); + } + + const scheduleCfg = config.getOptional< + boolean | TaskScheduleDefinitionConfig + >('vault.schedule'); + if (scheduleCfg !== undefined && scheduleCfg !== false) { + builder = await builder.enableTokenRenew(); + } + + const { router } = builder.build(); + httpRouter.use(router); + }, + }); + }, +}); diff --git a/plugins/vault-backend/src/service/vaultApi.ts b/plugins/vault-backend/src/service/vaultApi.ts index 7c3ccc1d00..789cdeeda5 100644 --- a/plugins/vault-backend/src/service/vaultApi.ts +++ b/plugins/vault-backend/src/service/vaultApi.ts @@ -33,6 +33,7 @@ export type VaultSecretList = { /** * Object containing the secret name and some links * @public + * @deprecated Use the interface from `@backstage/plugin-vault-node` */ export type VaultSecret = { name: string; @@ -53,6 +54,7 @@ type RenewTokenResponse = { /** * Interface for the Vault API * @public + * @deprecated Use the interface from `@backstage/plugin-vault-node` */ export interface VaultApi { /** diff --git a/yarn.lock b/yarn.lock index 0ac22cafa6..c56c608a47 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9904,6 +9904,7 @@ __metadata: resolution: "@backstage/plugin-vault-backend@workspace:plugins/vault-backend" dependencies: "@backstage/backend-common": "workspace:^" + "@backstage/backend-plugin-api": "workspace:^" "@backstage/backend-tasks": "workspace:^" "@backstage/backend-test-utils": "workspace:^" "@backstage/cli": "workspace:^" From c296e9b17e6137ce0e69d6d04242df9dedccb270 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 11 Oct 2023 15:10:29 +0000 Subject: [PATCH 018/102] chore(deps): update dependency @tsconfig/docusaurus to v2 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- microsite/package.json | 2 +- microsite/yarn.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/microsite/package.json b/microsite/package.json index 3f266c189e..61bfcbd04a 100644 --- a/microsite/package.json +++ b/microsite/package.json @@ -19,7 +19,7 @@ "devDependencies": { "@docusaurus/module-type-aliases": "0.0.0-5703", "@spotify/prettier-config": "^14.0.0", - "@tsconfig/docusaurus": "^1.0.6", + "@tsconfig/docusaurus": "^2.0.0", "@types/luxon": "^3.0.0", "@types/webpack-env": "^1.18.0", "js-yaml": "^4.1.0", diff --git a/microsite/yarn.lock b/microsite/yarn.lock index 9edcca323c..75aad049e9 100644 --- a/microsite/yarn.lock +++ b/microsite/yarn.lock @@ -2854,10 +2854,10 @@ __metadata: languageName: node linkType: hard -"@tsconfig/docusaurus@npm:^1.0.6": - version: 1.0.7 - resolution: "@tsconfig/docusaurus@npm:1.0.7" - checksum: 8f5b14005d90b2008f10daf03a5edec86d2a7603e5641c579ea936a5c2d165a8c3007a72254fc4c2adb0554d73062f52bb97b30ff818f01c9215957822f3c4db +"@tsconfig/docusaurus@npm:^2.0.0": + version: 2.0.1 + resolution: "@tsconfig/docusaurus@npm:2.0.1" + checksum: 63bebda70d83c56f95a90176d2e188e1ea9c08c23b499e5e7b292ebfae0ce7117f712809828ed21ae3b8440daf22191d6bf71bf2575f9bd474a51b1770ca30cc languageName: node linkType: hard @@ -3894,7 +3894,7 @@ __metadata: "@docusaurus/preset-classic": 0.0.0-5703 "@spotify/prettier-config": ^14.0.0 "@swc/core": ^1.3.46 - "@tsconfig/docusaurus": ^1.0.6 + "@tsconfig/docusaurus": ^2.0.0 "@types/luxon": ^3.0.0 "@types/webpack-env": ^1.18.0 clsx: ^1.1.1 From 99af3023c28e4e275256b5fce50174b6297e5b9c Mon Sep 17 00:00:00 2001 From: Aramis Sennyey Date: Wed, 11 Oct 2023 16:05:08 -0400 Subject: [PATCH 019/102] update changeset to minor Signed-off-by: Aramis Sennyey --- .changeset/thirty-stingrays-grin.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/thirty-stingrays-grin.md b/.changeset/thirty-stingrays-grin.md index 43aaf2c606..6dcb4bbd50 100644 --- a/.changeset/thirty-stingrays-grin.md +++ b/.changeset/thirty-stingrays-grin.md @@ -1,5 +1,5 @@ --- -'@backstage/backend-openapi-utils': patch +'@backstage/backend-openapi-utils': minor --- Adds a new route, `/openapi.json` to validated routers for displaying their full OpenAPI spec in a standard endpoint. From d373db2adffe750277ac6fca426a8e6b4c0486e5 Mon Sep 17 00:00:00 2001 From: Aramis Sennyey Date: Wed, 11 Oct 2023 16:19:33 -0400 Subject: [PATCH 020/102] adjust to minor as well Signed-off-by: Aramis Sennyey --- .changeset/gentle-pears-camp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/gentle-pears-camp.md b/.changeset/gentle-pears-camp.md index 1a9f8768f8..6455d1e7fb 100644 --- a/.changeset/gentle-pears-camp.md +++ b/.changeset/gentle-pears-camp.md @@ -1,5 +1,5 @@ --- -'@backstage/plugin-catalog-backend-module-openapi-spec': patch +'@backstage/plugin-catalog-backend-module-openapi-spec': minor --- Adds a new catalog module for ingesting Backstage plugin OpenAPI specs into the catalog for display as an API entity. From 67cff7b06feda44d8d67ac98f5bd52ad43597678 Mon Sep 17 00:00:00 2001 From: Phil Kuang Date: Thu, 12 Oct 2023 18:56:45 -0400 Subject: [PATCH 021/102] feat(techdocs): add extension for setting build strategy Signed-off-by: Phil Kuang --- .changeset/two-jars-melt.md | 6 ++++ plugins/techdocs-backend/api-report.md | 14 +++----- plugins/techdocs-backend/src/index.ts | 8 +++-- plugins/techdocs-backend/src/plugin.ts | 13 +++++++ ...st.ts => DefaultDocsBuildStrategy.test.ts} | 2 +- ...trategy.ts => DefaultDocsBuildStrategy.ts} | 25 +++---------- plugins/techdocs-backend/src/service/index.ts | 4 --- .../src/service/router.test.ts | 2 +- .../techdocs-backend/src/service/router.ts | 6 ++-- plugins/techdocs-node/api-report.md | 21 +++++++++++ plugins/techdocs-node/package.json | 1 + plugins/techdocs-node/src/extensions.ts | 36 +++++++++++++++++++ plugins/techdocs-node/src/index.ts | 4 +++ plugins/techdocs-node/src/techdocsTypes.ts | 19 ++++++++++ yarn.lock | 1 + 15 files changed, 119 insertions(+), 43 deletions(-) create mode 100644 .changeset/two-jars-melt.md rename plugins/techdocs-backend/src/service/{DocsBuildStrategy.test.ts => DefaultDocsBuildStrategy.test.ts} (96%) rename plugins/techdocs-backend/src/service/{DocsBuildStrategy.ts => DefaultDocsBuildStrategy.ts} (66%) create mode 100644 plugins/techdocs-node/src/extensions.ts diff --git a/.changeset/two-jars-melt.md b/.changeset/two-jars-melt.md new file mode 100644 index 0000000000..d6f0166885 --- /dev/null +++ b/.changeset/two-jars-melt.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-techdocs-backend': minor +'@backstage/plugin-techdocs-node': minor +--- + +Expose an extension point to set a custom build strategy and move `DocsBuildStrategy` and `ShouldBuildParameters` types to `@backstage/plugin-techdocs-node` diff --git a/plugins/techdocs-backend/api-report.md b/plugins/techdocs-backend/api-report.md index b8974e6d4f..6e2fbc4c53 100644 --- a/plugins/techdocs-backend/api-report.md +++ b/plugins/techdocs-backend/api-report.md @@ -7,7 +7,7 @@ import { CatalogApi } from '@backstage/catalog-client'; import { CatalogClient } from '@backstage/catalog-client'; import { Config } from '@backstage/config'; import { DefaultTechDocsCollatorFactory as DefaultTechDocsCollatorFactory_2 } from '@backstage/plugin-search-backend-module-techdocs'; -import { Entity } from '@backstage/catalog-model'; +import { DocsBuildStrategy } from '@backstage/plugin-techdocs-node'; import express from 'express'; import { GeneratorBuilder } from '@backstage/plugin-techdocs-node'; import { Knex } from 'knex'; @@ -17,6 +17,7 @@ import { PluginCacheManager } from '@backstage/backend-common'; import { PluginEndpointDiscovery } from '@backstage/backend-common'; import { PreparerBuilder } from '@backstage/plugin-techdocs-node'; import { PublisherBase } from '@backstage/plugin-techdocs-node'; +import { ShouldBuildParameters } from '@backstage/plugin-techdocs-node'; import type { TechDocsCollatorFactoryOptions as TechDocsCollatorFactoryOptions_2 } from '@backstage/plugin-search-backend-module-techdocs'; import { TechDocsDocument } from '@backstage/plugin-techdocs-node'; import { TokenManager } from '@backstage/backend-common'; @@ -48,11 +49,7 @@ export class DefaultTechDocsCollator { // @public @deprecated (undocumented) export const DefaultTechDocsCollatorFactory: typeof DefaultTechDocsCollatorFactory_2; -// @public -export interface DocsBuildStrategy { - // (undocumented) - shouldBuild(params: ShouldBuildParameters): Promise; -} +export { DocsBuildStrategy }; // @public export type OutOfTheBoxDeploymentOptions = { @@ -86,10 +83,7 @@ export type RouterOptions = | RecommendedDeploymentOptions | OutOfTheBoxDeploymentOptions; -// @public -export type ShouldBuildParameters = { - entity: Entity; -}; +export { ShouldBuildParameters }; // @public @deprecated (undocumented) export type TechDocsCollatorFactoryOptions = TechDocsCollatorFactoryOptions_2; diff --git a/plugins/techdocs-backend/src/index.ts b/plugins/techdocs-backend/src/index.ts index dc5d87d1b3..cf70db39e8 100644 --- a/plugins/techdocs-backend/src/index.ts +++ b/plugins/techdocs-backend/src/index.ts @@ -25,8 +25,6 @@ export type { RouterOptions, RecommendedDeploymentOptions, OutOfTheBoxDeploymentOptions, - DocsBuildStrategy, - ShouldBuildParameters, } from './service'; export { @@ -41,6 +39,10 @@ export type { /** * @deprecated Use directly from @backstage/plugin-techdocs-node */ -export type { TechDocsDocument } from '@backstage/plugin-techdocs-node'; +export type { + DocsBuildStrategy, + ShouldBuildParameters, + TechDocsDocument, +} from '@backstage/plugin-techdocs-node'; export * from '@backstage/plugin-techdocs-node'; diff --git a/plugins/techdocs-backend/src/plugin.ts b/plugins/techdocs-backend/src/plugin.ts index 745370b67a..2dcde1a975 100644 --- a/plugins/techdocs-backend/src/plugin.ts +++ b/plugins/techdocs-backend/src/plugin.ts @@ -25,9 +25,11 @@ import { } from '@backstage/backend-plugin-api'; import { + DocsBuildStrategy, Preparers, Generators, Publisher, + techdocsBuildStrategyExtensionPoint, } from '@backstage/plugin-techdocs-node'; import Docker from 'dockerode'; import { createRouter } from '@backstage/plugin-techdocs-backend'; @@ -39,6 +41,16 @@ import { createRouter } from '@backstage/plugin-techdocs-backend'; export const techdocsPlugin = createBackendPlugin({ pluginId: 'techdocs', register(env) { + let docsBuildStrategy: DocsBuildStrategy | undefined; + env.registerExtensionPoint(techdocsBuildStrategyExtensionPoint, { + setBuildStrategy(buildStrategy: DocsBuildStrategy) { + if (docsBuildStrategy) { + throw new Error('DocsBuildStrategy may only be set once'); + } + docsBuildStrategy = buildStrategy; + }, + }); + env.registerInit({ deps: { config: coreServices.rootConfig, @@ -82,6 +94,7 @@ export const techdocsPlugin = createBackendPlugin({ await createRouter({ logger: winstonLogger, cache: cacheManager, + docsBuildStrategy, preparers, generators, publisher, diff --git a/plugins/techdocs-backend/src/service/DocsBuildStrategy.test.ts b/plugins/techdocs-backend/src/service/DefaultDocsBuildStrategy.test.ts similarity index 96% rename from plugins/techdocs-backend/src/service/DocsBuildStrategy.test.ts rename to plugins/techdocs-backend/src/service/DefaultDocsBuildStrategy.test.ts index 84bd960f8f..7868135b08 100644 --- a/plugins/techdocs-backend/src/service/DocsBuildStrategy.test.ts +++ b/plugins/techdocs-backend/src/service/DefaultDocsBuildStrategy.test.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { DefaultDocsBuildStrategy } from './DocsBuildStrategy'; +import { DefaultDocsBuildStrategy } from './DefaultDocsBuildStrategy'; import { ConfigReader } from '@backstage/config'; const MockedConfigReader = ConfigReader as jest.MockedClass< diff --git a/plugins/techdocs-backend/src/service/DocsBuildStrategy.ts b/plugins/techdocs-backend/src/service/DefaultDocsBuildStrategy.ts similarity index 66% rename from plugins/techdocs-backend/src/service/DocsBuildStrategy.ts rename to plugins/techdocs-backend/src/service/DefaultDocsBuildStrategy.ts index 42a16234f9..fe0f5206ba 100644 --- a/plugins/techdocs-backend/src/service/DocsBuildStrategy.ts +++ b/plugins/techdocs-backend/src/service/DefaultDocsBuildStrategy.ts @@ -13,28 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { Entity } from '@backstage/catalog-model'; import { Config } from '@backstage/config'; +import { + DocsBuildStrategy, + ShouldBuildParameters, +} from '@backstage/plugin-techdocs-node'; -/** - * Parameters passed to the shouldBuild method on the DocsBuildStrategy interface - * - * @public - */ -export type ShouldBuildParameters = { - entity: Entity; -}; - -/** - * A strategy for when to build TechDocs locally, and when to skip building TechDocs (allowing for an external build) - * - * @public - */ -export interface DocsBuildStrategy { - shouldBuild(params: ShouldBuildParameters): Promise; -} - -export class DefaultDocsBuildStrategy { +export class DefaultDocsBuildStrategy implements DocsBuildStrategy { private readonly config: Config; private constructor(config: Config) { diff --git a/plugins/techdocs-backend/src/service/index.ts b/plugins/techdocs-backend/src/service/index.ts index 7355a34e32..0065e33a2a 100644 --- a/plugins/techdocs-backend/src/service/index.ts +++ b/plugins/techdocs-backend/src/service/index.ts @@ -20,7 +20,3 @@ export type { RecommendedDeploymentOptions, OutOfTheBoxDeploymentOptions, } from './router'; -export type { - DocsBuildStrategy, - ShouldBuildParameters, -} from './DocsBuildStrategy'; diff --git a/plugins/techdocs-backend/src/service/router.test.ts b/plugins/techdocs-backend/src/service/router.test.ts index 0c049c00f2..224a87cb43 100644 --- a/plugins/techdocs-backend/src/service/router.test.ts +++ b/plugins/techdocs-backend/src/service/router.test.ts @@ -22,6 +22,7 @@ import { } from '@backstage/backend-common'; import { ConfigReader } from '@backstage/config'; import { + DocsBuildStrategy, GeneratorBuilder, PreparerBuilder, PublisherBase, @@ -32,7 +33,6 @@ import { DocsSynchronizer, DocsSynchronizerSyncOpts } from './DocsSynchronizer'; import { CachedEntityLoader } from './CachedEntityLoader'; import { createEventStream, createRouter, RouterOptions } from './router'; import { TechDocsCache } from '../cache'; -import { DocsBuildStrategy } from './DocsBuildStrategy'; jest.mock('@backstage/catalog-client'); jest.mock('@backstage/config'); diff --git a/plugins/techdocs-backend/src/service/router.ts b/plugins/techdocs-backend/src/service/router.ts index 855d8b02f4..734c1f40de 100644 --- a/plugins/techdocs-backend/src/service/router.ts +++ b/plugins/techdocs-backend/src/service/router.ts @@ -22,6 +22,7 @@ import { stringifyEntityRef } from '@backstage/catalog-model'; import { Config } from '@backstage/config'; import { NotFoundError } from '@backstage/errors'; import { + DocsBuildStrategy, GeneratorBuilder, getLocationForEntity, PreparerBuilder, @@ -34,10 +35,7 @@ import { ScmIntegrations } from '@backstage/integration'; import { DocsSynchronizer, DocsSynchronizerSyncOpts } from './DocsSynchronizer'; import { createCacheMiddleware, TechDocsCache } from '../cache'; import { CachedEntityLoader } from './CachedEntityLoader'; -import { - DefaultDocsBuildStrategy, - DocsBuildStrategy, -} from './DocsBuildStrategy'; +import { DefaultDocsBuildStrategy } from './DefaultDocsBuildStrategy'; import * as winston from 'winston'; import { PassThrough } from 'stream'; diff --git a/plugins/techdocs-node/api-report.md b/plugins/techdocs-node/api-report.md index 656db6ae36..843190ceb8 100644 --- a/plugins/techdocs-node/api-report.md +++ b/plugins/techdocs-node/api-report.md @@ -10,6 +10,7 @@ import { Config } from '@backstage/config'; import { ContainerRunner } from '@backstage/backend-common'; import { Entity } from '@backstage/catalog-model'; import express from 'express'; +import { ExtensionPoint } from '@backstage/backend-plugin-api'; import { IndexableDocument } from '@backstage/plugin-search-common'; import { Logger } from 'winston'; import { PluginEndpointDiscovery } from '@backstage/backend-common'; @@ -24,6 +25,12 @@ export class DirectoryPreparer implements PreparerBase { shouldCleanPreparedDirectory(): boolean; } +// @public +export interface DocsBuildStrategy { + // (undocumented) + shouldBuild(params: ShouldBuildParameters): Promise; +} + // @public export type ETag = string; @@ -226,9 +233,23 @@ export type ReadinessResponse = { // @public export type RemoteProtocol = 'url' | 'dir'; +// @public +export type ShouldBuildParameters = { + entity: Entity; +}; + // @public export type SupportedGeneratorKey = 'techdocs' | string; +// @public +export interface TechdocsBuildStrategyExtensionPoint { + // (undocumented) + setBuildStrategy(buildStrategy: DocsBuildStrategy): void; +} + +// @public +export const techdocsBuildStrategyExtensionPoint: ExtensionPoint; + // @public export interface TechDocsDocument extends IndexableDocument { kind: string; diff --git a/plugins/techdocs-node/package.json b/plugins/techdocs-node/package.json index 4ec11fde71..6258e7b9a3 100644 --- a/plugins/techdocs-node/package.json +++ b/plugins/techdocs-node/package.json @@ -47,6 +47,7 @@ "@azure/identity": "^3.2.1", "@azure/storage-blob": "^12.5.0", "@backstage/backend-common": "workspace:^", + "@backstage/backend-plugin-api": "workspace:^", "@backstage/catalog-model": "workspace:^", "@backstage/config": "workspace:^", "@backstage/errors": "workspace:^", diff --git a/plugins/techdocs-node/src/extensions.ts b/plugins/techdocs-node/src/extensions.ts new file mode 100644 index 0000000000..0de6fa1e27 --- /dev/null +++ b/plugins/techdocs-node/src/extensions.ts @@ -0,0 +1,36 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { createExtensionPoint } from '@backstage/backend-plugin-api'; +import { DocsBuildStrategy } from './techdocsTypes'; + +/** + * Extension point type for setting a custom build strategy. + * + * @public + */ +export interface TechdocsBuildStrategyExtensionPoint { + setBuildStrategy(buildStrategy: DocsBuildStrategy): void; +} + +/** + * Extension point for setting a custom build strategy. + * + * @public + */ +export const techdocsBuildStrategyExtensionPoint = + createExtensionPoint({ + id: 'techdocs.buildStrategy', + }); diff --git a/plugins/techdocs-node/src/index.ts b/plugins/techdocs-node/src/index.ts index a2acf84611..0c4b5bb67f 100644 --- a/plugins/techdocs-node/src/index.ts +++ b/plugins/techdocs-node/src/index.ts @@ -23,3 +23,7 @@ export * from './stages'; export * from './helpers'; export * from './techdocsTypes'; +export { + techdocsBuildStrategyExtensionPoint, + type TechdocsBuildStrategyExtensionPoint, +} from './extensions'; diff --git a/plugins/techdocs-node/src/techdocsTypes.ts b/plugins/techdocs-node/src/techdocsTypes.ts index 77436b35d5..6fc3ffc65f 100644 --- a/plugins/techdocs-node/src/techdocsTypes.ts +++ b/plugins/techdocs-node/src/techdocsTypes.ts @@ -14,6 +14,7 @@ * limitations under the License. */ +import { Entity } from '@backstage/catalog-model'; import { IndexableDocument } from '@backstage/plugin-search-common'; /** @@ -46,3 +47,21 @@ export interface TechDocsDocument extends IndexableDocument { */ path: string; } + +/** + * Parameters passed to the shouldBuild method on the DocsBuildStrategy interface + * + * @public + */ +export type ShouldBuildParameters = { + entity: Entity; +}; + +/** + * A strategy for when to build TechDocs locally, and when to skip building TechDocs (allowing for an external build) + * + * @public + */ +export interface DocsBuildStrategy { + shouldBuild(params: ShouldBuildParameters): Promise; +} diff --git a/yarn.lock b/yarn.lock index fd3b9da734..68ae329efc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9770,6 +9770,7 @@ __metadata: "@azure/identity": ^3.2.1 "@azure/storage-blob": ^12.5.0 "@backstage/backend-common": "workspace:^" + "@backstage/backend-plugin-api": "workspace:^" "@backstage/backend-test-utils": "workspace:^" "@backstage/catalog-model": "workspace:^" "@backstage/cli": "workspace:^" From b3acba9091e55b92ff9e54728f8e073c0c7f0f16 Mon Sep 17 00:00:00 2001 From: AmbrishRamachandiran Date: Mon, 16 Oct 2023 13:02:34 +0530 Subject: [PATCH 022/102] Added alert popup in the bazaar plugin Signed-off-by: AmbrishRamachandiran --- .changeset/orange-planes-crash.md | 5 +++++ .../AddProjectDialog/AddProjectDialog.tsx | 8 +++++++- .../EditProjectDialog/EditProjectDialog.tsx | 13 ++++++++++++- 3 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 .changeset/orange-planes-crash.md diff --git a/.changeset/orange-planes-crash.md b/.changeset/orange-planes-crash.md new file mode 100644 index 0000000000..a8e828e912 --- /dev/null +++ b/.changeset/orange-planes-crash.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-bazaar': patch +--- + +Added alert popup in the bazaar plugin diff --git a/plugins/bazaar/src/components/AddProjectDialog/AddProjectDialog.tsx b/plugins/bazaar/src/components/AddProjectDialog/AddProjectDialog.tsx index c07ae0cfd1..e2029f7d9f 100644 --- a/plugins/bazaar/src/components/AddProjectDialog/AddProjectDialog.tsx +++ b/plugins/bazaar/src/components/AddProjectDialog/AddProjectDialog.tsx @@ -17,7 +17,7 @@ import React, { useState } from 'react'; import { Entity, stringifyEntityRef } from '@backstage/catalog-model'; import { UseFormReset, UseFormGetValues } from 'react-hook-form'; -import { useApi } from '@backstage/core-plugin-api'; +import { useApi, alertApiRef } from '@backstage/core-plugin-api'; import { ProjectDialog } from '../ProjectDialog'; import { ProjectSelector } from '../ProjectSelector'; import { BazaarProject, FormValues, Size, Status } from '../../types'; @@ -39,6 +39,7 @@ export const AddProjectDialog = ({ fetchCatalogEntities, }: Props) => { const bazaarApi = useApi(bazaarApiRef); + const alertApi = useApi(alertApiRef); const [selectedEntity, setSelectedEntity] = useState(null); const defaultValues = { @@ -76,6 +77,11 @@ export const AddProjectDialog = ({ if (response.status === 'ok') { fetchBazaarProjects(); fetchCatalogEntities(); + alertApi.post({ + message: `Added project '${formValues.title}' to the Bazaar list`, + severity: 'success', + display: 'transient', + }); } handleClose(); diff --git a/plugins/bazaar/src/components/EditProjectDialog/EditProjectDialog.tsx b/plugins/bazaar/src/components/EditProjectDialog/EditProjectDialog.tsx index 0c6fb97096..2c5539b988 100644 --- a/plugins/bazaar/src/components/EditProjectDialog/EditProjectDialog.tsx +++ b/plugins/bazaar/src/components/EditProjectDialog/EditProjectDialog.tsx @@ -15,7 +15,7 @@ */ import React, { useState, useEffect } from 'react'; -import { useApi } from '@backstage/core-plugin-api'; +import { useApi, alertApiRef } from '@backstage/core-plugin-api'; import { ProjectDialog } from '../ProjectDialog'; import { BazaarProject, FormValues } from '../../types'; import { bazaarApiRef } from '../../api'; @@ -52,6 +52,7 @@ export const EditProjectDialog = ({ }: Props) => { const classes = useStyles(); const bazaarApi = useApi(bazaarApiRef); + const alertApi = useApi(alertApiRef); const [openDelete, setOpenDelete] = useState(false); const [defaultValues, setDefaultValues] = useState({ ...bazaarProject, @@ -71,6 +72,11 @@ export const EditProjectDialog = ({ handleDeleteClose(); fetchBazaarProject(); + alertApi.post({ + message: `Deleted project '${bazaarProject.title}' from the Bazaar list`, + severity: 'success', + display: 'transient', + }); }; useEffect(() => { @@ -97,6 +103,11 @@ export const EditProjectDialog = ({ if (updateResponse.status === 'ok') fetchBazaarProject(); handleEditClose(); + alertApi.post({ + message: `Updated project '${formValues.title}' in the Bazaar list`, + severity: 'success', + display: 'transient', + }); }; return ( From bdf08ad04a48c1d0a35ca50a0faeb08fc46b8d6c Mon Sep 17 00:00:00 2001 From: rtriesscheijn Date: Mon, 16 Oct 2023 10:48:48 +0200 Subject: [PATCH 023/102] feat: add static token issuer Signed-off-by: rtriesscheijn --- .changeset/tender-lies-wonder.md | 5 + .github/vale/Vocab/Backstage/accept.txt | 1 + docs/auth/index.md | 47 +++++ plugins/auth-backend/README.md | 4 + plugins/auth-backend/config.d.ts | 17 +- .../auth-backend/src/identity/KeyStores.ts | 11 +- .../src/identity/StaticKeyStore.test.ts | 115 ++++++++++++ .../src/identity/StaticKeyStore.ts | 166 ++++++++++++++++++ .../src/identity/StaticTokenIssuer.test.ts | 116 ++++++++++++ .../src/identity/StaticTokenIssuer.ts | 105 +++++++++++ plugins/auth-backend/src/service/router.ts | 37 ++-- 11 files changed, 611 insertions(+), 13 deletions(-) create mode 100644 .changeset/tender-lies-wonder.md create mode 100644 plugins/auth-backend/src/identity/StaticKeyStore.test.ts create mode 100644 plugins/auth-backend/src/identity/StaticKeyStore.ts create mode 100644 plugins/auth-backend/src/identity/StaticTokenIssuer.test.ts create mode 100644 plugins/auth-backend/src/identity/StaticTokenIssuer.ts diff --git a/.changeset/tender-lies-wonder.md b/.changeset/tender-lies-wonder.md new file mode 100644 index 0000000000..43124bb41c --- /dev/null +++ b/.changeset/tender-lies-wonder.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-auth-backend': minor +--- + +Adds the StaticTokenIssuer and StaticKeyStore, an alternative token issuer that can be used to sign the Authorization header using a predefined public/private key pair. diff --git a/.github/vale/Vocab/Backstage/accept.txt b/.github/vale/Vocab/Backstage/accept.txt index e6c0aa9632..8e7cb7d124 100644 --- a/.github/vale/Vocab/Backstage/accept.txt +++ b/.github/vale/Vocab/Backstage/accept.txt @@ -258,6 +258,7 @@ onboarding Onboarding OpenSearch OpenShift +openssl orgs padding paddings diff --git a/docs/auth/index.md b/docs/auth/index.md index a670e69baa..74433d157f 100644 --- a/docs/auth/index.md +++ b/docs/auth/index.md @@ -406,3 +406,50 @@ providerFactories: { ghe: providers.github.create(), }, ``` + +## Configuring token issuers + +By default, the Backstage authentication backend generates and manages its own signing keys automatically for any issued +Backstage tokens. However, these keys have a short lifetime and do not persist after instance restarts. + +Alternatively, users can provide their own public and private key files to sign issued tokens. This is beneficial in +scenarios where the token verification implementation aggressively caches the list of keys, and doesn't attempt to fetch +new ones even if they encounter an unknown key id. To enable this feature add the following configuration to your config +file: + +```yaml +auth: + keyStore: + provider: 'static' + static: + keys: + # Must be declared at least once and the first one will be used for signing */ + - keyId: 'primary' + publicKeyFile: /path/to/public.key + privateKeyFile: /path/to/private.key + algorithm: # Optional, algorithm used to generate the keys, defaults to ES256 + # More keys can be added so with future key rotations caches already know about it + - keyId: ... +``` + +The private key should be stored in the PKCS#8 format. The public key should be stored in the SPKI format. +You can generate the public/private key pair, using openssl and the ES256 algorithm by performing the following +steps: + +Generate a private key using the ES256 algorithm + +```sh +openssl ecparam -name prime256v1 -genkey -out private.ec.key +``` + +Convert it to PKCS#8 format + +```sh +openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in private.ec.key -out private.key +``` + +Extract the public key + +```sh +openssl ec -inform PEM -outform PEM -pubout -in private.key -out public.key +``` diff --git a/plugins/auth-backend/README.md b/plugins/auth-backend/README.md index ba0042c6f9..ce7525fb6b 100644 --- a/plugins/auth-backend/README.md +++ b/plugins/auth-backend/README.md @@ -158,6 +158,10 @@ To try out SAML, you can use the mock identity provider: [How to add an auth provider](https://github.com/backstage/backstage/blob/master/docs/auth/add-auth-provider.md) +## Token issuers + +[Configuring token issuers](https://github.com/backstage/backstage/blob/master/docs/auth/index.md) + ## Links - [The Backstage homepage](https://backstage.io) diff --git a/plugins/auth-backend/config.d.ts b/plugins/auth-backend/config.d.ts index f8953e1588..77e2c7357e 100644 --- a/plugins/auth-backend/config.d.ts +++ b/plugins/auth-backend/config.d.ts @@ -43,7 +43,7 @@ export interface Config { /** To control how to store JWK data in auth-backend */ keyStore?: { - provider?: 'database' | 'memory' | 'firestore'; + provider?: 'database' | 'memory' | 'firestore' | 'static'; firestore?: { /** The host to connect to */ host?: string; @@ -65,6 +65,21 @@ export interface Config { /** Timeout used for database operations. Defaults to 10000ms */ timeout?: number; }; + static?: { + /** Must be declared at least once and the first one will be used for signing */ + keys: Array<{ + /** Path to the public key file in the SPKI format */ + publicKeyFile: string; + /** Path to the matching private key file in the PKCS#8 format */ + privateKeyFile: string; + /** id to uniquely identify this key within the JWK set */ + keyId: string; + /** JWS "alg" (Algorithm) Header Parameter value. Defaults to ES256. + * Must match the algorithm used to generate the keys in the provided files + */ + algorithm?: string; + }>; + }; }; /** diff --git a/plugins/auth-backend/src/identity/KeyStores.ts b/plugins/auth-backend/src/identity/KeyStores.ts index cc35c0d84e..a19606c9a3 100644 --- a/plugins/auth-backend/src/identity/KeyStores.ts +++ b/plugins/auth-backend/src/identity/KeyStores.ts @@ -18,12 +18,12 @@ import { pickBy } from 'lodash'; import { LoggerService } from '@backstage/backend-plugin-api'; import { Config } from '@backstage/config'; - import { AuthDatabase } from '../database/AuthDatabase'; import { DatabaseKeyStore } from './DatabaseKeyStore'; import { FirestoreKeyStore } from './FirestoreKeyStore'; import { MemoryKeyStore } from './MemoryKeyStore'; import { KeyStore } from './types'; +import { StaticKeyStore, StaticKeyStoreConfig } from './StaticKeyStore'; type Options = { logger: LoggerService; @@ -75,6 +75,15 @@ export class KeyStores { return keyStore; } + if (provider === 'static') { + const settings = ks?.getOptional('static'); + if (settings === undefined) { + throw new Error(`Missing configuration for static keyStore provider`); + } + + await StaticKeyStore.create(settings); + } + throw new Error(`Unknown KeyStore provider: ${provider}`); } } diff --git a/plugins/auth-backend/src/identity/StaticKeyStore.test.ts b/plugins/auth-backend/src/identity/StaticKeyStore.test.ts new file mode 100644 index 0000000000..e0882efa31 --- /dev/null +++ b/plugins/auth-backend/src/identity/StaticKeyStore.test.ts @@ -0,0 +1,115 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { promises as fs } from 'fs'; +import { StaticKeyStore, StaticKeyStoreConfig } from './StaticKeyStore'; +import { AnyJWK } from './types'; + +const publicKeyPath = '/mnt/public.pem'; +const privateKeyPath = 'mnt/private.pem'; +const privateKey = ` +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgR8Ja2ppMEgOm1KeY +Kpje00U1luybndt6yC263vcgeKqhRANCAAS+slUrS9JXgtHB1RcDnmlveuu4H3Zm +hQRjvYdO+Mg/3FJss6FaExESTzhPSr3X+be/exarkTMchbDXNEdCKwpn +-----END PRIVATE KEY----- +`.trim(); + +const publicKey = ` +-----BEGIN PUBLIC KEY----- +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvrJVK0vSV4LRwdUXA55pb3rruB92 +ZoUEY72HTvjIP9xSbLOhWhMREk84T0q91/m3v3sWq5EzHIWw1zRHQisKZw== +-----END PUBLIC KEY----- +`.trim(); + +jest.mock('fs/promises'); + +describe('StaticKeyStore', () => { + beforeEach(() => { + jest.resetAllMocks(); + }); + + it('should provide keys from disk', async () => { + fs.readFile = jest.fn().mockImplementation(async (path: string, _: any) => { + if (path === publicKeyPath) { + return Promise.resolve(publicKey); + } + if (path === privateKeyPath) { + return Promise.resolve(privateKey); + } + + throw new Error('Unexpected path'); + }); + + const staticKeyStoreConfig: StaticKeyStoreConfig = { + keys: [ + { + publicKeyFile: publicKeyPath, + privateKeyFile: privateKeyPath, + keyId: '1', + algorithm: 'ES256', + }, + { + publicKeyFile: publicKeyPath, + privateKeyFile: privateKeyPath, + keyId: '2', + algorithm: 'ES256', + }, + ], + }; + const staticKeyStore = await StaticKeyStore.create(staticKeyStoreConfig); + + const keys = await staticKeyStore.listKeys(); + expect(keys.items.length).toEqual(2); + expect(keys.items[0].key).toMatchObject({ + kid: '1', + alg: 'ES256', + }); + expect(keys.items[1].key).toMatchObject({ + kid: '2', + alg: 'ES256', + }); + + const pk = staticKeyStore.getPrivateKey('1'); + expect(pk).toMatchObject({ + kid: '1', + alg: 'ES256', + }); + expect(pk.d).toBeDefined(); + }); + + it('should not allow users to add keys', async () => { + const staticKeyStoreConfig: StaticKeyStoreConfig = { keys: [] }; + const staticKeyStore = await StaticKeyStore.create(staticKeyStoreConfig); + + const key: AnyJWK = { + use: 'sig', + alg: 'ES256', + kid: '1', + kty: '1', + }; + expect(() => staticKeyStore.addKey(key)).toThrow( + 'Cannot add keys to the static key store', + ); + }); + + it('should not allow users to remove keys', async () => { + const staticKeyStoreConfig: StaticKeyStoreConfig = { keys: [] }; + const staticKeyStore = await StaticKeyStore.create(staticKeyStoreConfig); + expect(() => staticKeyStore.removeKeys(['1'])).toThrow( + 'Cannot remove keys from the static key store', + ); + }); +}); diff --git a/plugins/auth-backend/src/identity/StaticKeyStore.ts b/plugins/auth-backend/src/identity/StaticKeyStore.ts new file mode 100644 index 0000000000..6859d1f445 --- /dev/null +++ b/plugins/auth-backend/src/identity/StaticKeyStore.ts @@ -0,0 +1,166 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { AnyJWK, KeyStore, StoredKey } from './types'; +import { exportJWK, importPKCS8, importSPKI, JWK } from 'jose'; +import { KeyLike } from 'jose/dist/types/types'; +import { promises as fs } from 'fs'; + +export type KeyPair = { + publicKey: JWK; + privateKey: JWK; +}; + +export type StaticKeyConfig = { + publicKeyFile: string; + privateKeyFile: string; + keyId: string; + algorithm?: string; +}; + +export type StaticKeyStoreConfig = { + keys: StaticKeyConfig[]; +}; + +const DEFAULT_ALGORITHM = 'ES256'; + +/** + * Key store that loads predefined public/private key pairs from disk + * + * The private key should be represented using the PKCS#8 format, + * while the public key should be in the SPKI format. + * + * @remarks + * + * You can generate a public and private key pair, using + * openssl: + * + * Generate a private key using the ES256 algorithm + * ```sh + * openssl ecparam -name prime256v1 -genkey -out private.ec.key + * ``` + * Convert it to PKCS#8 format + * ```sh + * openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in private.ec.key -out private.key + * ``` + * Extract the public key + * ```sh + * openssl ec -inform PEM -outform PEM -pubout -in private.key -out public.key + * ``` + * + * Provide the paths to private.key and public.key as the respective + * private and public key paths in the StaticKeyStore.create(...) method. + */ +export class StaticKeyStore implements KeyStore { + private readonly keyPairs: KeyPair[]; + private readonly createdAt: Date; + + private constructor(keyPairs: KeyPair[]) { + this.keyPairs = keyPairs; + this.createdAt = new Date(); + } + + public static async create( + config: StaticKeyStoreConfig, + ): Promise { + const keyPairs = await Promise.all( + config.keys.map(async k => await this.loadKeyPair(k)), + ); + + return new StaticKeyStore(keyPairs); + } + + addKey(_key: AnyJWK): Promise { + throw new Error('Cannot add keys to the static key store'); + } + + listKeys(): Promise<{ items: StoredKey[] }> { + const keys = this.keyPairs.map(k => this.keyPairToStoredKey(k)); + return Promise.resolve({ items: keys }); + } + + getPrivateKey(keyId: string): JWK { + const keyPair = this.keyPairs.find(k => k.publicKey.kid === keyId); + if (keyPair === undefined) { + throw new Error(`Could not find key with keyId: ${keyId}`); + } + + return keyPair.privateKey; + } + + removeKeys(_kids: string[]): Promise { + throw new Error('Cannot remove keys from the static key store'); + } + + private keyPairToStoredKey(keyPair: KeyPair): StoredKey { + const publicKey = { + ...keyPair.publicKey, + use: 'sig', + }; + + return { + key: publicKey as AnyJWK, + createdAt: this.createdAt, + }; + } + + private static async loadKeyPair(options: StaticKeyConfig): Promise { + const algorithm = options.algorithm ?? DEFAULT_ALGORITHM; + const keyId = options.keyId; + const publicKey = await this.loadPublicKeyFromFile( + options.publicKeyFile, + keyId, + algorithm, + ); + const privateKey = await this.loadPrivateKeyFromFile( + options.privateKeyFile, + keyId, + algorithm, + ); + + return { publicKey, privateKey }; + } + + private static async loadPublicKeyFromFile( + path: string, + keyId: string, + algorithm: string, + ): Promise { + return this.loadKeyFromFile(path, keyId, algorithm, importSPKI); + } + + private static async loadPrivateKeyFromFile( + path: string, + keyId: string, + algorithm: string, + ): Promise { + return this.loadKeyFromFile(path, keyId, algorithm, importPKCS8); + } + + private static async loadKeyFromFile( + path: string, + keyId: string, + algorithm: string, + importer: (content: string, algorithm: string) => Promise, + ): Promise { + const content = await fs.readFile(path, { encoding: 'utf8', flag: 'r' }); + const key = await importer(content, algorithm); + const jwk = await exportJWK(key); + jwk.kid = keyId; + jwk.alg = algorithm; + + return jwk; + } +} diff --git a/plugins/auth-backend/src/identity/StaticTokenIssuer.test.ts b/plugins/auth-backend/src/identity/StaticTokenIssuer.test.ts new file mode 100644 index 0000000000..df792f3e58 --- /dev/null +++ b/plugins/auth-backend/src/identity/StaticTokenIssuer.test.ts @@ -0,0 +1,116 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { getVoidLogger } from '@backstage/backend-common'; +import { StaticTokenIssuer } from './StaticTokenIssuer'; +import { createLocalJWKSet, jwtVerify } from 'jose'; +import { stringifyEntityRef } from '@backstage/catalog-model'; +import { StaticKeyStore } from './StaticKeyStore'; + +const logger = getVoidLogger(); +const entityRef = stringifyEntityRef({ + kind: 'User', + namespace: 'default', + name: 'name', +}); + +jest.mock('fs/promises'); +describe('StaticTokenIssuer', () => { + it('should issue valid tokens signed by the first listed key', async () => { + const staticKeyStore = { + listKeys: () => { + return Promise.resolve({ + items: [ + { + createdAt: new Date(), + key: { + kty: 'EC', + x: 'vrJVK0vSV4LRwdUXA55pb3rruB92ZoUEY72HTvjIP9w', + y: 'UmyzoVoTERJPOE9Kvdf5t797FquRMxyFsNc0R0IrCmc', + crv: 'P-256', + kid: '1', + alg: 'ES256', + use: 'sig', + }, + }, + { + createdAt: new Date(), + key: { + kty: 'EC', + x: 'vrJVK0vSV4LRwdUXA55pb3rruB92ZoUEY72HTvjIP9w', + y: 'UmyzoVoTERJPOE9Kvdf5t797FquRMxyFsNc0R0IrCmc', + crv: 'P-256', + kid: '2', + alg: 'ES256', + use: 'sig', + }, + }, + ], + }); + }, + getPrivateKey: (kid: string) => { + expect(kid).toEqual('1'); + return { + kty: 'EC', + x: 'vrJVK0vSV4LRwdUXA55pb3rruB92ZoUEY72HTvjIP9w', + y: 'UmyzoVoTERJPOE9Kvdf5t797FquRMxyFsNc0R0IrCmc', + crv: 'P-256', + d: 'R8Ja2ppMEgOm1KeYKpje00U1luybndt6yC263vcgeKo', + kid: '1', + alg: 'ES256', + }; + }, + }; + + const keyDurationSeconds = 86400; + const options = { + logger, + issuer: 'my-issuer', + sessionExpirationSeconds: keyDurationSeconds, + }; + const issuer = new StaticTokenIssuer( + options, + staticKeyStore as unknown as StaticKeyStore, + ); + const token = await issuer.issueToken({ + claims: { + sub: entityRef, + ent: [entityRef], + 'x-fancy-claim': 'my special claim', + aud: 'this value will be overridden', + }, + }); + + const { keys } = await issuer.listPublicKeys(); + const keyStore = createLocalJWKSet({ keys: keys }); + const verifyResult = await jwtVerify(token, keyStore); + expect(verifyResult.protectedHeader).toEqual({ + kid: '1', + alg: 'ES256', + }); + expect(verifyResult.payload).toEqual({ + iss: 'my-issuer', + aud: 'backstage', + sub: entityRef, + ent: [entityRef], + 'x-fancy-claim': 'my special claim', + iat: expect.any(Number), + exp: expect.any(Number), + }); + expect(verifyResult.payload.exp).toBe( + verifyResult.payload.iat! + keyDurationSeconds, + ); + }); +}); diff --git a/plugins/auth-backend/src/identity/StaticTokenIssuer.ts b/plugins/auth-backend/src/identity/StaticTokenIssuer.ts new file mode 100644 index 0000000000..77c13c7c33 --- /dev/null +++ b/plugins/auth-backend/src/identity/StaticTokenIssuer.ts @@ -0,0 +1,105 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { AnyJWK, TokenIssuer, TokenParams } from './types'; +import { SignJWT, importJWK, JWK } from 'jose'; +import { parseEntityRef } from '@backstage/catalog-model'; +import { AuthenticationError } from '@backstage/errors'; +import { LoggerService } from '@backstage/backend-plugin-api'; +import { StaticKeyStore } from './StaticKeyStore'; + +const MS_IN_S = 1000; + +export type Config = { + publicKeyFile: string; + privateKeyFile: string; + keyId: string; + algorithm?: string; +}; + +export type Options = { + logger: LoggerService; + /** Value of the issuer claim in issued tokens */ + issuer: string; + /** Expiration time of the JWT in seconds */ + sessionExpirationSeconds: number; + /** id to uniquely identify this key within the JWK set, defaults to '1' */ +}; + +/** + * A token issuer that issues tokens from predefined + * public/private key pair stored in the static key store. + */ +export class StaticTokenIssuer implements TokenIssuer { + private readonly issuer: string; + private readonly logger: LoggerService; + private readonly keyStore: StaticKeyStore; + private readonly sessionExpirationSeconds: number; + + public constructor(options: Options, keyStore: StaticKeyStore) { + this.issuer = options.issuer; + this.logger = options.logger; + this.sessionExpirationSeconds = options.sessionExpirationSeconds; + this.keyStore = keyStore; + } + + public async issueToken(params: TokenParams): Promise { + const key = await this.getSigningKey(); + + // TODO: code shared with TokenFactory.ts + const iss = this.issuer; + const { sub, ent, ...additionalClaims } = params.claims; + const aud = 'backstage'; + const iat = Math.floor(Date.now() / MS_IN_S); + const exp = iat + this.sessionExpirationSeconds; + + // Validate that the subject claim is a valid EntityRef + try { + parseEntityRef(sub); + } catch (error) { + throw new Error( + '"sub" claim provided by the auth resolver is not a valid EntityRef.', + ); + } + + this.logger.info(`Issuing token for ${sub}, with entities ${ent ?? []}`); + + if (!key.alg) { + throw new AuthenticationError('No algorithm was provided in the key'); + } + + return new SignJWT({ ...additionalClaims, iss, sub, ent, aud, iat, exp }) + .setProtectedHeader({ alg: key.alg, kid: key.kid }) + .setIssuer(iss) + .setAudience(aud) + .setSubject(sub) + .setIssuedAt(iat) + .setExpirationTime(exp) + .sign(await importJWK(key)); + } + + private async getSigningKey(): Promise { + const { items: keys } = await this.keyStore.listKeys(); + if (keys.length >= 1) { + return this.keyStore.getPrivateKey(keys[0].key.kid); + } + throw new Error('Keystore should hold at least 1 key'); + } + + public async listPublicKeys(): Promise<{ keys: AnyJWK[] }> { + const { items: keys } = await this.keyStore.listKeys(); + return { keys: keys.map(({ key }) => key) }; + } +} diff --git a/plugins/auth-backend/src/service/router.ts b/plugins/auth-backend/src/service/router.ts index e3bfc1c3f2..320870b3ee 100644 --- a/plugins/auth-backend/src/service/router.ts +++ b/plugins/auth-backend/src/service/router.ts @@ -38,6 +38,9 @@ import { Minimatch } from 'minimatch'; import { CatalogAuthResolverContext } from '../lib/resolvers'; import { AuthDatabase } from '../database/AuthDatabase'; import { BACKSTAGE_SESSION_EXPIRATION } from '../lib/session'; +import { TokenIssuer } from '../identity/types'; +import { StaticTokenIssuer } from '../identity/StaticTokenIssuer'; +import { StaticKeyStore } from '../identity/StaticKeyStore'; /** @public */ export type ProviderFactories = { [s: string]: AuthProviderFactory }; @@ -75,22 +78,34 @@ export async function createRouter( const authUrl = await discovery.getExternalBaseUrl('auth'); const authDb = AuthDatabase.create(database); + const sessionExpirationSeconds = BACKSTAGE_SESSION_EXPIRATION; + const keyStore = await KeyStores.fromConfig(config, { logger, database: authDb, }); - const keyDurationSeconds = BACKSTAGE_SESSION_EXPIRATION; - - const tokenIssuer = new TokenFactory({ - issuer: authUrl, - keyStore, - keyDurationSeconds, - logger: logger.child({ component: 'token-factory' }), - algorithm: - tokenFactoryAlgorithm ?? - config.getOptionalString('auth.identityTokenAlgorithm'), - }); + let tokenIssuer: TokenIssuer; + if (keyStore instanceof StaticKeyStore) { + tokenIssuer = new StaticTokenIssuer( + { + logger: logger.child({ component: 'token-factory' }), + issuer: authUrl, + sessionExpirationSeconds: sessionExpirationSeconds, + }, + keyStore as StaticKeyStore, + ); + } else { + tokenIssuer = new TokenFactory({ + issuer: authUrl, + keyStore, + keyDurationSeconds: sessionExpirationSeconds, + logger: logger.child({ component: 'token-factory' }), + algorithm: + tokenFactoryAlgorithm ?? + config.getOptionalString('auth.identityTokenAlgorithm'), + }); + } const secret = config.getOptionalString('auth.session.secret'); if (secret) { router.use(cookieParser(secret)); From d120af630cce059a243d32a46d291b0ff77c343b Mon Sep 17 00:00:00 2001 From: rtriesscheijn Date: Mon, 16 Oct 2023 13:25:34 +0200 Subject: [PATCH 024/102] feat: read static key store config safely Signed-off-by: rtriesscheijn --- plugins/auth-backend/package.json | 1 + .../auth-backend/src/identity/KeyStores.ts | 8 +-- .../src/identity/StaticKeyStore.test.ts | 52 +++++++++---------- .../src/identity/StaticKeyStore.ts | 30 +++++++---- yarn.lock | 1 + 5 files changed, 51 insertions(+), 41 deletions(-) diff --git a/plugins/auth-backend/package.json b/plugins/auth-backend/package.json index 355c8eb554..32c3e86cf3 100644 --- a/plugins/auth-backend/package.json +++ b/plugins/auth-backend/package.json @@ -88,6 +88,7 @@ "@backstage/backend-defaults": "workspace:^", "@backstage/backend-test-utils": "workspace:^", "@backstage/cli": "workspace:^", + "@backstage/core-app-api": "workspace:^", "@types/body-parser": "^1.19.0", "@types/cookie-parser": "^1.4.2", "@types/express-session": "^1.17.2", diff --git a/plugins/auth-backend/src/identity/KeyStores.ts b/plugins/auth-backend/src/identity/KeyStores.ts index a19606c9a3..eecf94edc5 100644 --- a/plugins/auth-backend/src/identity/KeyStores.ts +++ b/plugins/auth-backend/src/identity/KeyStores.ts @@ -23,7 +23,7 @@ import { DatabaseKeyStore } from './DatabaseKeyStore'; import { FirestoreKeyStore } from './FirestoreKeyStore'; import { MemoryKeyStore } from './MemoryKeyStore'; import { KeyStore } from './types'; -import { StaticKeyStore, StaticKeyStoreConfig } from './StaticKeyStore'; +import { StaticKeyStore } from './StaticKeyStore'; type Options = { logger: LoggerService; @@ -76,12 +76,12 @@ export class KeyStores { } if (provider === 'static') { - const settings = ks?.getOptional('static'); + const settings = ks?.getConfig(provider); if (settings === undefined) { - throw new Error(`Missing configuration for static keyStore provider`); + throw new Error(`Missing configuration for static key store provider`); } - await StaticKeyStore.create(settings); + await StaticKeyStore.fromConfig(settings); } throw new Error(`Unknown KeyStore provider: ${provider}`); diff --git a/plugins/auth-backend/src/identity/StaticKeyStore.test.ts b/plugins/auth-backend/src/identity/StaticKeyStore.test.ts index e0882efa31..d56698189e 100644 --- a/plugins/auth-backend/src/identity/StaticKeyStore.test.ts +++ b/plugins/auth-backend/src/identity/StaticKeyStore.test.ts @@ -14,11 +14,12 @@ * limitations under the License. */ import { promises as fs } from 'fs'; -import { StaticKeyStore, StaticKeyStoreConfig } from './StaticKeyStore'; +import { StaticKeyStore } from './StaticKeyStore'; import { AnyJWK } from './types'; +import { ConfigReader } from '@backstage/core-app-api'; const publicKeyPath = '/mnt/public.pem'; -const privateKeyPath = 'mnt/private.pem'; +const privateKeyPath = '/mnt/private.pem'; const privateKey = ` -----BEGIN PRIVATE KEY----- MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgR8Ja2ppMEgOm1KeY @@ -34,14 +35,28 @@ ZoUEY72HTvjIP9xSbLOhWhMREk84T0q91/m3v3sWq5EzHIWw1zRHQisKZw== -----END PUBLIC KEY----- `.trim(); +const config = new ConfigReader({ + keys: [ + { + publicKeyFile: publicKeyPath, + privateKeyFile: privateKeyPath, + keyId: '1', + algorithm: 'ES256', + }, + { + publicKeyFile: publicKeyPath, + privateKeyFile: privateKeyPath, + keyId: '2', + algorithm: 'ES256', + }, + ], +}); + jest.mock('fs/promises'); describe('StaticKeyStore', () => { beforeEach(() => { jest.resetAllMocks(); - }); - - it('should provide keys from disk', async () => { fs.readFile = jest.fn().mockImplementation(async (path: string, _: any) => { if (path === publicKeyPath) { return Promise.resolve(publicKey); @@ -52,25 +67,10 @@ describe('StaticKeyStore', () => { throw new Error('Unexpected path'); }); + }); - const staticKeyStoreConfig: StaticKeyStoreConfig = { - keys: [ - { - publicKeyFile: publicKeyPath, - privateKeyFile: privateKeyPath, - keyId: '1', - algorithm: 'ES256', - }, - { - publicKeyFile: publicKeyPath, - privateKeyFile: privateKeyPath, - keyId: '2', - algorithm: 'ES256', - }, - ], - }; - const staticKeyStore = await StaticKeyStore.create(staticKeyStoreConfig); - + it('should provide keys from disk', async () => { + const staticKeyStore = await StaticKeyStore.fromConfig(config); const keys = await staticKeyStore.listKeys(); expect(keys.items.length).toEqual(2); expect(keys.items[0].key).toMatchObject({ @@ -91,8 +91,7 @@ describe('StaticKeyStore', () => { }); it('should not allow users to add keys', async () => { - const staticKeyStoreConfig: StaticKeyStoreConfig = { keys: [] }; - const staticKeyStore = await StaticKeyStore.create(staticKeyStoreConfig); + const staticKeyStore = await StaticKeyStore.fromConfig(config); const key: AnyJWK = { use: 'sig', @@ -106,8 +105,7 @@ describe('StaticKeyStore', () => { }); it('should not allow users to remove keys', async () => { - const staticKeyStoreConfig: StaticKeyStoreConfig = { keys: [] }; - const staticKeyStore = await StaticKeyStore.create(staticKeyStoreConfig); + const staticKeyStore = await StaticKeyStore.fromConfig(config); expect(() => staticKeyStore.removeKeys(['1'])).toThrow( 'Cannot remove keys from the static key store', ); diff --git a/plugins/auth-backend/src/identity/StaticKeyStore.ts b/plugins/auth-backend/src/identity/StaticKeyStore.ts index 6859d1f445..11ec1585d2 100644 --- a/plugins/auth-backend/src/identity/StaticKeyStore.ts +++ b/plugins/auth-backend/src/identity/StaticKeyStore.ts @@ -17,6 +17,7 @@ import { AnyJWK, KeyStore, StoredKey } from './types'; import { exportJWK, importPKCS8, importSPKI, JWK } from 'jose'; import { KeyLike } from 'jose/dist/types/types'; import { promises as fs } from 'fs'; +import { Config } from '@backstage/config'; export type KeyPair = { publicKey: JWK; @@ -27,11 +28,7 @@ export type StaticKeyConfig = { publicKeyFile: string; privateKeyFile: string; keyId: string; - algorithm?: string; -}; - -export type StaticKeyStoreConfig = { - keys: StaticKeyConfig[]; + algorithm: string; }; const DEFAULT_ALGORITHM = 'ES256'; @@ -68,15 +65,28 @@ export class StaticKeyStore implements KeyStore { private readonly createdAt: Date; private constructor(keyPairs: KeyPair[]) { + if (keyPairs.length === 0) { + throw new Error('Should provide at least one key pair'); + } + this.keyPairs = keyPairs; this.createdAt = new Date(); } - public static async create( - config: StaticKeyStoreConfig, - ): Promise { + public static async fromConfig(config: Config): Promise { + const keyConfigs = config.getConfigArray('keys').map(c => { + const staticKeyConfig: StaticKeyConfig = { + publicKeyFile: c.getString('publicKeyFile'), + privateKeyFile: c.getString('privateKeyFile'), + keyId: c.getString('keyId'), + algorithm: c.getOptionalString('algorithm') ?? DEFAULT_ALGORITHM, + }; + + return staticKeyConfig; + }); + const keyPairs = await Promise.all( - config.keys.map(async k => await this.loadKeyPair(k)), + keyConfigs.map(async k => await this.loadKeyPair(k)), ); return new StaticKeyStore(keyPairs); @@ -117,7 +127,7 @@ export class StaticKeyStore implements KeyStore { } private static async loadKeyPair(options: StaticKeyConfig): Promise { - const algorithm = options.algorithm ?? DEFAULT_ALGORITHM; + const algorithm = options.algorithm; const keyId = options.keyId; const publicKey = await this.loadPublicKeyFromFile( options.publicKeyFile, diff --git a/yarn.lock b/yarn.lock index 2533a51f32..c4aa235464 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5006,6 +5006,7 @@ __metadata: "@backstage/catalog-model": "workspace:^" "@backstage/cli": "workspace:^" "@backstage/config": "workspace:^" + "@backstage/core-app-api": "workspace:^" "@backstage/errors": "workspace:^" "@backstage/plugin-auth-backend-module-gcp-iap-provider": "workspace:^" "@backstage/plugin-auth-backend-module-github-provider": "workspace:^" From 31458f5b639062bd6fad4588116c25ae6d572dd2 Mon Sep 17 00:00:00 2001 From: Phil Kuang Date: Mon, 16 Oct 2023 19:10:46 -0400 Subject: [PATCH 025/102] feat(techdocs): rename extension point Signed-off-by: Phil Kuang --- plugins/techdocs-backend/api-report.md | 21 ++++++++++++--------- plugins/techdocs-backend/src/index.ts | 25 +++++++++++++++++++------ plugins/techdocs-backend/src/plugin.ts | 4 ++-- plugins/techdocs-node/api-report.md | 4 ++-- plugins/techdocs-node/src/extensions.ts | 12 ++++++------ plugins/techdocs-node/src/index.ts | 4 ++-- 6 files changed, 43 insertions(+), 27 deletions(-) diff --git a/plugins/techdocs-backend/api-report.md b/plugins/techdocs-backend/api-report.md index 6e2fbc4c53..e449ddc459 100644 --- a/plugins/techdocs-backend/api-report.md +++ b/plugins/techdocs-backend/api-report.md @@ -7,7 +7,7 @@ import { CatalogApi } from '@backstage/catalog-client'; import { CatalogClient } from '@backstage/catalog-client'; import { Config } from '@backstage/config'; import { DefaultTechDocsCollatorFactory as DefaultTechDocsCollatorFactory_2 } from '@backstage/plugin-search-backend-module-techdocs'; -import { DocsBuildStrategy } from '@backstage/plugin-techdocs-node'; +import { DocsBuildStrategy as DocsBuildStrategy_2 } from '@backstage/plugin-techdocs-node'; import express from 'express'; import { GeneratorBuilder } from '@backstage/plugin-techdocs-node'; import { Knex } from 'knex'; @@ -17,9 +17,9 @@ import { PluginCacheManager } from '@backstage/backend-common'; import { PluginEndpointDiscovery } from '@backstage/backend-common'; import { PreparerBuilder } from '@backstage/plugin-techdocs-node'; import { PublisherBase } from '@backstage/plugin-techdocs-node'; -import { ShouldBuildParameters } from '@backstage/plugin-techdocs-node'; +import { ShouldBuildParameters as ShouldBuildParameters_2 } from '@backstage/plugin-techdocs-node'; import type { TechDocsCollatorFactoryOptions as TechDocsCollatorFactoryOptions_2 } from '@backstage/plugin-search-backend-module-techdocs'; -import { TechDocsDocument } from '@backstage/plugin-techdocs-node'; +import { TechDocsDocument as TechDocsDocument_2 } from '@backstage/plugin-techdocs-node'; import { TokenManager } from '@backstage/backend-common'; import * as winston from 'winston'; @@ -34,7 +34,7 @@ export class DefaultTechDocsCollator { args: Record, ): string; // (undocumented) - execute(): Promise; + execute(): Promise; // (undocumented) static fromConfig( config: Config, @@ -49,7 +49,8 @@ export class DefaultTechDocsCollator { // @public @deprecated (undocumented) export const DefaultTechDocsCollatorFactory: typeof DefaultTechDocsCollatorFactory_2; -export { DocsBuildStrategy }; +// @public @deprecated (undocumented) +export type DocsBuildStrategy = DocsBuildStrategy_2; // @public export type OutOfTheBoxDeploymentOptions = { @@ -61,7 +62,7 @@ export type OutOfTheBoxDeploymentOptions = { database?: Knex; config: Config; cache: PluginCacheManager; - docsBuildStrategy?: DocsBuildStrategy; + docsBuildStrategy?: DocsBuildStrategy_2; buildLogTransport?: winston.transport; catalogClient?: CatalogClient; }; @@ -73,7 +74,7 @@ export type RecommendedDeploymentOptions = { discovery: PluginEndpointDiscovery; config: Config; cache: PluginCacheManager; - docsBuildStrategy?: DocsBuildStrategy; + docsBuildStrategy?: DocsBuildStrategy_2; buildLogTransport?: winston.transport; catalogClient?: CatalogClient; }; @@ -83,7 +84,8 @@ export type RouterOptions = | RecommendedDeploymentOptions | OutOfTheBoxDeploymentOptions; -export { ShouldBuildParameters }; +// @public @deprecated (undocumented) +export type ShouldBuildParameters = ShouldBuildParameters_2; // @public @deprecated (undocumented) export type TechDocsCollatorFactoryOptions = TechDocsCollatorFactoryOptions_2; @@ -99,7 +101,8 @@ export type TechDocsCollatorOptions = { legacyPathCasing?: boolean; }; -export { TechDocsDocument }; +// @public @deprecated (undocumented) +export type TechDocsDocument = TechDocsDocument_2; export * from '@backstage/plugin-techdocs-node'; ``` diff --git a/plugins/techdocs-backend/src/index.ts b/plugins/techdocs-backend/src/index.ts index cf70db39e8..f9634528f9 100644 --- a/plugins/techdocs-backend/src/index.ts +++ b/plugins/techdocs-backend/src/index.ts @@ -20,6 +20,12 @@ * @packageDocumentation */ +import { + DocsBuildStrategy as _DocsBuildStrategy, + ShouldBuildParameters as _ShouldBuildParameters, + TechDocsDocument as _TechDocsDocument, +} from '@backstage/plugin-techdocs-node'; + export { createRouter } from './service'; export type { RouterOptions, @@ -37,12 +43,19 @@ export type { } from './search'; /** - * @deprecated Use directly from @backstage/plugin-techdocs-node + * @public + * @deprecated import from `@backstage/plugin-techdocs-node` instead */ -export type { - DocsBuildStrategy, - ShouldBuildParameters, - TechDocsDocument, -} from '@backstage/plugin-techdocs-node'; +export type DocsBuildStrategy = _DocsBuildStrategy; +/** + * @public + * @deprecated import from `@backstage/plugin-techdocs-node` instead + */ +export type ShouldBuildParameters = _ShouldBuildParameters; +/** + * @public + * @deprecated import from `@backstage/plugin-techdocs-node` instead + */ +export type TechDocsDocument = _TechDocsDocument; export * from '@backstage/plugin-techdocs-node'; diff --git a/plugins/techdocs-backend/src/plugin.ts b/plugins/techdocs-backend/src/plugin.ts index 2dcde1a975..f139cf3c3a 100644 --- a/plugins/techdocs-backend/src/plugin.ts +++ b/plugins/techdocs-backend/src/plugin.ts @@ -29,7 +29,7 @@ import { Preparers, Generators, Publisher, - techdocsBuildStrategyExtensionPoint, + techdocsBuildsExtensionPoint, } from '@backstage/plugin-techdocs-node'; import Docker from 'dockerode'; import { createRouter } from '@backstage/plugin-techdocs-backend'; @@ -42,7 +42,7 @@ export const techdocsPlugin = createBackendPlugin({ pluginId: 'techdocs', register(env) { let docsBuildStrategy: DocsBuildStrategy | undefined; - env.registerExtensionPoint(techdocsBuildStrategyExtensionPoint, { + env.registerExtensionPoint(techdocsBuildsExtensionPoint, { setBuildStrategy(buildStrategy: DocsBuildStrategy) { if (docsBuildStrategy) { throw new Error('DocsBuildStrategy may only be set once'); diff --git a/plugins/techdocs-node/api-report.md b/plugins/techdocs-node/api-report.md index 843190ceb8..3ce422cbc5 100644 --- a/plugins/techdocs-node/api-report.md +++ b/plugins/techdocs-node/api-report.md @@ -242,13 +242,13 @@ export type ShouldBuildParameters = { export type SupportedGeneratorKey = 'techdocs' | string; // @public -export interface TechdocsBuildStrategyExtensionPoint { +export interface TechdocsBuildsExtensionPoint { // (undocumented) setBuildStrategy(buildStrategy: DocsBuildStrategy): void; } // @public -export const techdocsBuildStrategyExtensionPoint: ExtensionPoint; +export const techdocsBuildsExtensionPoint: ExtensionPoint; // @public export interface TechDocsDocument extends IndexableDocument { diff --git a/plugins/techdocs-node/src/extensions.ts b/plugins/techdocs-node/src/extensions.ts index 0de6fa1e27..c3a048b4e2 100644 --- a/plugins/techdocs-node/src/extensions.ts +++ b/plugins/techdocs-node/src/extensions.ts @@ -17,20 +17,20 @@ import { createExtensionPoint } from '@backstage/backend-plugin-api'; import { DocsBuildStrategy } from './techdocsTypes'; /** - * Extension point type for setting a custom build strategy. + * Extension point type for configuring Techdocs builds. * * @public */ -export interface TechdocsBuildStrategyExtensionPoint { +export interface TechdocsBuildsExtensionPoint { setBuildStrategy(buildStrategy: DocsBuildStrategy): void; } /** - * Extension point for setting a custom build strategy. + * Extension point for configuring Techdocs builds. * * @public */ -export const techdocsBuildStrategyExtensionPoint = - createExtensionPoint({ - id: 'techdocs.buildStrategy', +export const techdocsBuildsExtensionPoint = + createExtensionPoint({ + id: 'techdocs.builds', }); diff --git a/plugins/techdocs-node/src/index.ts b/plugins/techdocs-node/src/index.ts index 0c4b5bb67f..640bd09ce0 100644 --- a/plugins/techdocs-node/src/index.ts +++ b/plugins/techdocs-node/src/index.ts @@ -24,6 +24,6 @@ export * from './stages'; export * from './helpers'; export * from './techdocsTypes'; export { - techdocsBuildStrategyExtensionPoint, - type TechdocsBuildStrategyExtensionPoint, + techdocsBuildsExtensionPoint, + type TechdocsBuildsExtensionPoint, } from './extensions'; From c5aad900e30371caad4bfe38449440d68fc151b5 Mon Sep 17 00:00:00 2001 From: AmbrishRamachandiran Date: Tue, 17 Oct 2023 11:13:16 +0530 Subject: [PATCH 026/102] Adding decending sort in a bazaar plugin Signed-off-by: AmbrishRamachandiran --- .changeset/heavy-rings-play.md | 5 +++++ .../SortMethodSelector/SortMethodSelector.tsx | 3 ++- .../bazaar/src/components/SortView/SortView.tsx | 14 ++++++++++++-- plugins/bazaar/src/util/sortMethods.ts | 9 +++++++++ 4 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 .changeset/heavy-rings-play.md diff --git a/.changeset/heavy-rings-play.md b/.changeset/heavy-rings-play.md new file mode 100644 index 0000000000..fc647f2491 --- /dev/null +++ b/.changeset/heavy-rings-play.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-bazaar': patch +--- + +Adding decending sort in a bazaar plugin diff --git a/plugins/bazaar/src/components/SortMethodSelector/SortMethodSelector.tsx b/plugins/bazaar/src/components/SortMethodSelector/SortMethodSelector.tsx index d29211dc44..2ce7f623d1 100644 --- a/plugins/bazaar/src/components/SortMethodSelector/SortMethodSelector.tsx +++ b/plugins/bazaar/src/components/SortMethodSelector/SortMethodSelector.tsx @@ -50,7 +50,8 @@ export const SortMethodSelector = ({ > Latest updated A-Z - Most members + Z-A + Most members ); diff --git a/plugins/bazaar/src/components/SortView/SortView.tsx b/plugins/bazaar/src/components/SortView/SortView.tsx index 46f4c64c42..e0b591732e 100644 --- a/plugins/bazaar/src/components/SortView/SortView.tsx +++ b/plugins/bazaar/src/components/SortView/SortView.tsx @@ -27,7 +27,12 @@ import { BazaarProject } from '../../types'; import { bazaarApiRef } from '../../api'; import { Alert } from '@material-ui/lab'; import SearchBar from 'material-ui-search-bar'; -import { sortByDate, sortByMembers, sortByTitle } from '../../util/sortMethods'; +import { + sortByDate, + sortByMembers, + sortByTitle, + sortByDecendingTitle, +} from '../../util/sortMethods'; import { SortMethodSelector } from '../SortMethodSelector'; import { fetchCatalogItems } from '../../util/fetchMethods'; import { parseBazaarProject } from '../../util/parseMethods'; @@ -78,7 +83,12 @@ export const SortView = (props: SortViewProps) => { const bazaarApi = useApi(bazaarApiRef); const catalogApi = useApi(catalogApiRef); const classes = useStyles(); - const sortMethods = [sortByDate, sortByTitle, sortByMembers]; + const sortMethods = [ + sortByDate, + sortByTitle, + sortByDecendingTitle, + sortByMembers, + ]; const [sortMethodNbr, setSortMethodNbr] = useState(0); const [openAdd, setOpenAdd] = useState(false); const [searchValue, setSearchValue] = useState(''); diff --git a/plugins/bazaar/src/util/sortMethods.ts b/plugins/bazaar/src/util/sortMethods.ts index d7ef71c8de..d0680949f2 100644 --- a/plugins/bazaar/src/util/sortMethods.ts +++ b/plugins/bazaar/src/util/sortMethods.ts @@ -35,6 +35,15 @@ export const sortByTitle = (a: BazaarProject, b: BazaarProject) => { return 0; }; +export const sortByDecendingTitle = (a: BazaarProject, b: BazaarProject) => { + if (a.title < b.title) { + return 1; + } else if (a.title > b.title) { + return -1; + } + return 0; +}; + export const sortByMembers = (a: BazaarProject, b: BazaarProject) => { return b.membersCount - a.membersCount; }; From b4b5d5035017c077b2e8f74e100e275e6f8305f8 Mon Sep 17 00:00:00 2001 From: AmbrishRamachandiran Date: Tue, 17 Oct 2023 11:14:58 +0530 Subject: [PATCH 027/102] Adding decending sort in a bazaar plugin Signed-off-by: AmbrishRamachandiran --- .changeset/heavy-rings-play.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/heavy-rings-play.md b/.changeset/heavy-rings-play.md index fc647f2491..bbed4c3fa3 100644 --- a/.changeset/heavy-rings-play.md +++ b/.changeset/heavy-rings-play.md @@ -2,4 +2,4 @@ '@backstage/plugin-bazaar': patch --- -Adding decending sort in a bazaar plugin +Adding descending sort in a bazaar plugin From 4bbde87a2e63b0d5916251e7aad42a686dd32779 Mon Sep 17 00:00:00 2001 From: rtriesscheijn Date: Tue, 17 Oct 2023 09:08:42 +0200 Subject: [PATCH 028/102] fix: pass full config to StaticTokenIssuer, documentation and test tweaks Signed-off-by: rtriesscheijn --- docs/auth/index.md | 2 +- plugins/auth-backend/package.json | 1 - .../auth-backend/src/identity/KeyStores.ts | 7 +- .../src/identity/StaticKeyStore.test.ts | 66 +++++++++---------- .../src/identity/StaticKeyStore.ts | 20 +++--- .../src/identity/StaticTokenIssuer.test.ts | 1 - .../src/identity/StaticTokenIssuer.ts | 1 - yarn.lock | 1 - 8 files changed, 46 insertions(+), 53 deletions(-) diff --git a/docs/auth/index.md b/docs/auth/index.md index 74433d157f..091c8b01a0 100644 --- a/docs/auth/index.md +++ b/docs/auth/index.md @@ -423,7 +423,7 @@ auth: provider: 'static' static: keys: - # Must be declared at least once and the first one will be used for signing */ + # Must be declared at least once and the first one will be used for signing - keyId: 'primary' publicKeyFile: /path/to/public.key privateKeyFile: /path/to/private.key diff --git a/plugins/auth-backend/package.json b/plugins/auth-backend/package.json index 32c3e86cf3..355c8eb554 100644 --- a/plugins/auth-backend/package.json +++ b/plugins/auth-backend/package.json @@ -88,7 +88,6 @@ "@backstage/backend-defaults": "workspace:^", "@backstage/backend-test-utils": "workspace:^", "@backstage/cli": "workspace:^", - "@backstage/core-app-api": "workspace:^", "@types/body-parser": "^1.19.0", "@types/cookie-parser": "^1.4.2", "@types/express-session": "^1.17.2", diff --git a/plugins/auth-backend/src/identity/KeyStores.ts b/plugins/auth-backend/src/identity/KeyStores.ts index eecf94edc5..7242530c57 100644 --- a/plugins/auth-backend/src/identity/KeyStores.ts +++ b/plugins/auth-backend/src/identity/KeyStores.ts @@ -76,12 +76,7 @@ export class KeyStores { } if (provider === 'static') { - const settings = ks?.getConfig(provider); - if (settings === undefined) { - throw new Error(`Missing configuration for static key store provider`); - } - - await StaticKeyStore.fromConfig(settings); + await StaticKeyStore.fromConfig(config); } throw new Error(`Unknown KeyStore provider: ${provider}`); diff --git a/plugins/auth-backend/src/identity/StaticKeyStore.test.ts b/plugins/auth-backend/src/identity/StaticKeyStore.test.ts index d56698189e..26ec9e4358 100644 --- a/plugins/auth-backend/src/identity/StaticKeyStore.test.ts +++ b/plugins/auth-backend/src/identity/StaticKeyStore.test.ts @@ -13,13 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { promises as fs } from 'fs'; import { StaticKeyStore } from './StaticKeyStore'; import { AnyJWK } from './types'; -import { ConfigReader } from '@backstage/core-app-api'; +import { ConfigReader } from '@backstage/config'; +import { createMockDirectory } from '@backstage/backend-test-utils'; -const publicKeyPath = '/mnt/public.pem'; -const privateKeyPath = '/mnt/private.pem'; const privateKey = ` -----BEGIN PRIVATE KEY----- MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgR8Ja2ppMEgOm1KeY @@ -35,37 +33,39 @@ ZoUEY72HTvjIP9xSbLOhWhMREk84T0q91/m3v3sWq5EzHIWw1zRHQisKZw== -----END PUBLIC KEY----- `.trim(); -const config = new ConfigReader({ - keys: [ - { - publicKeyFile: publicKeyPath, - privateKeyFile: privateKeyPath, - keyId: '1', - algorithm: 'ES256', - }, - { - publicKeyFile: publicKeyPath, - privateKeyFile: privateKeyPath, - keyId: '2', - algorithm: 'ES256', - }, - ], -}); - -jest.mock('fs/promises'); - describe('StaticKeyStore', () => { - beforeEach(() => { - jest.resetAllMocks(); - fs.readFile = jest.fn().mockImplementation(async (path: string, _: any) => { - if (path === publicKeyPath) { - return Promise.resolve(publicKey); - } - if (path === privateKeyPath) { - return Promise.resolve(privateKey); - } + let config: ConfigReader; + const sourceDir = createMockDirectory(); - throw new Error('Unexpected path'); + beforeAll(() => { + sourceDir.setContent({ + 'public.pem': publicKey, + 'private.pem': privateKey, + }); + + const publicKeyPath = sourceDir.resolve('public.pem'); + const privateKeyPath = sourceDir.resolve('private.pem'); + config = new ConfigReader({ + auth: { + keyStore: { + static: { + keys: [ + { + publicKeyFile: publicKeyPath, + privateKeyFile: privateKeyPath, + keyId: '1', + algorithm: 'ES256', + }, + { + publicKeyFile: publicKeyPath, + privateKeyFile: privateKeyPath, + keyId: '2', + algorithm: 'ES256', + }, + ], + }, + }, + }, }); }); diff --git a/plugins/auth-backend/src/identity/StaticKeyStore.ts b/plugins/auth-backend/src/identity/StaticKeyStore.ts index 11ec1585d2..13b9faf771 100644 --- a/plugins/auth-backend/src/identity/StaticKeyStore.ts +++ b/plugins/auth-backend/src/identity/StaticKeyStore.ts @@ -74,16 +74,18 @@ export class StaticKeyStore implements KeyStore { } public static async fromConfig(config: Config): Promise { - const keyConfigs = config.getConfigArray('keys').map(c => { - const staticKeyConfig: StaticKeyConfig = { - publicKeyFile: c.getString('publicKeyFile'), - privateKeyFile: c.getString('privateKeyFile'), - keyId: c.getString('keyId'), - algorithm: c.getOptionalString('algorithm') ?? DEFAULT_ALGORITHM, - }; + const keyConfigs = config + .getConfigArray('auth.keyStore.static.keys') + .map(c => { + const staticKeyConfig: StaticKeyConfig = { + publicKeyFile: c.getString('publicKeyFile'), + privateKeyFile: c.getString('privateKeyFile'), + keyId: c.getString('keyId'), + algorithm: c.getOptionalString('algorithm') ?? DEFAULT_ALGORITHM, + }; - return staticKeyConfig; - }); + return staticKeyConfig; + }); const keyPairs = await Promise.all( keyConfigs.map(async k => await this.loadKeyPair(k)), diff --git a/plugins/auth-backend/src/identity/StaticTokenIssuer.test.ts b/plugins/auth-backend/src/identity/StaticTokenIssuer.test.ts index df792f3e58..3e5d659d54 100644 --- a/plugins/auth-backend/src/identity/StaticTokenIssuer.test.ts +++ b/plugins/auth-backend/src/identity/StaticTokenIssuer.test.ts @@ -26,7 +26,6 @@ const entityRef = stringifyEntityRef({ name: 'name', }); -jest.mock('fs/promises'); describe('StaticTokenIssuer', () => { it('should issue valid tokens signed by the first listed key', async () => { const staticKeyStore = { diff --git a/plugins/auth-backend/src/identity/StaticTokenIssuer.ts b/plugins/auth-backend/src/identity/StaticTokenIssuer.ts index 77c13c7c33..41dc96e71c 100644 --- a/plugins/auth-backend/src/identity/StaticTokenIssuer.ts +++ b/plugins/auth-backend/src/identity/StaticTokenIssuer.ts @@ -35,7 +35,6 @@ export type Options = { issuer: string; /** Expiration time of the JWT in seconds */ sessionExpirationSeconds: number; - /** id to uniquely identify this key within the JWK set, defaults to '1' */ }; /** diff --git a/yarn.lock b/yarn.lock index c4aa235464..2533a51f32 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5006,7 +5006,6 @@ __metadata: "@backstage/catalog-model": "workspace:^" "@backstage/cli": "workspace:^" "@backstage/config": "workspace:^" - "@backstage/core-app-api": "workspace:^" "@backstage/errors": "workspace:^" "@backstage/plugin-auth-backend-module-gcp-iap-provider": "workspace:^" "@backstage/plugin-auth-backend-module-github-provider": "workspace:^" From 335445df2f8878c4b3c295b410495b8aede13742 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 17 Oct 2023 12:01:17 +0000 Subject: [PATCH 029/102] chore(deps): update actions/stale action to v8 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/automate_stale.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/automate_stale.yml b/.github/workflows/automate_stale.yml index 40ebdf8a3e..48ae943f69 100644 --- a/.github/workflows/automate_stale.yml +++ b/.github/workflows/automate_stale.yml @@ -19,7 +19,7 @@ jobs: with: egress-policy: audit - - uses: actions/stale@v7.0.0 + - uses: actions/stale@v8.0.0 id: stale with: stale-issue-message: > From 898abf61a37019006fbf1430a4f67728158eee91 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Oct 2023 12:42:45 +0000 Subject: [PATCH 030/102] build(deps): bump @babel/traverse from 7.18.11 to 7.23.2 in /storybook Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.18.11 to 7.23.2. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse) --- updated-dependencies: - dependency-name: "@babel/traverse" dependency-type: indirect ... Signed-off-by: dependabot[bot] --- storybook/yarn.lock | 141 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 127 insertions(+), 14 deletions(-) diff --git a/storybook/yarn.lock b/storybook/yarn.lock index 9a533c46c0..5be8875478 100644 --- a/storybook/yarn.lock +++ b/storybook/yarn.lock @@ -24,6 +24,16 @@ __metadata: languageName: node linkType: hard +"@babel/code-frame@npm:^7.22.13": + version: 7.22.13 + resolution: "@babel/code-frame@npm:7.22.13" + dependencies: + "@babel/highlight": ^7.22.13 + chalk: ^2.4.2 + checksum: 22e342c8077c8b77eeb11f554ecca2ba14153f707b85294fcf6070b6f6150aae88a7b7436dd88d8c9289970585f3fe5b9b941c5aa3aa26a6d5a8ef3f292da058 + languageName: node + linkType: hard + "@babel/compat-data@npm:^7.17.7, @babel/compat-data@npm:^7.18.8": version: 7.18.8 resolution: "@babel/compat-data@npm:7.18.8" @@ -89,6 +99,18 @@ __metadata: languageName: node linkType: hard +"@babel/generator@npm:^7.23.0": + version: 7.23.0 + resolution: "@babel/generator@npm:7.23.0" + dependencies: + "@babel/types": ^7.23.0 + "@jridgewell/gen-mapping": ^0.3.2 + "@jridgewell/trace-mapping": ^0.3.17 + jsesc: ^2.5.1 + checksum: 8efe24adad34300f1f8ea2add420b28171a646edc70f2a1b3e1683842f23b8b7ffa7e35ef0119294e1901f45bfea5b3dc70abe1f10a1917ccdfb41bed69be5f1 + languageName: node + linkType: hard + "@babel/helper-annotate-as-pure@npm:^7.18.6": version: 7.18.6 resolution: "@babel/helper-annotate-as-pure@npm:7.18.6" @@ -192,6 +214,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-environment-visitor@npm:^7.22.20": + version: 7.22.20 + resolution: "@babel/helper-environment-visitor@npm:7.22.20" + checksum: d80ee98ff66f41e233f36ca1921774c37e88a803b2f7dca3db7c057a5fea0473804db9fb6729e5dbfd07f4bed722d60f7852035c2c739382e84c335661590b69 + languageName: node + linkType: hard + "@babel/helper-explode-assignable-expression@npm:^7.18.6": version: 7.18.6 resolution: "@babel/helper-explode-assignable-expression@npm:7.18.6" @@ -211,6 +240,16 @@ __metadata: languageName: node linkType: hard +"@babel/helper-function-name@npm:^7.23.0": + version: 7.23.0 + resolution: "@babel/helper-function-name@npm:7.23.0" + dependencies: + "@babel/template": ^7.22.15 + "@babel/types": ^7.23.0 + checksum: e44542257b2d4634a1f979244eb2a4ad8e6d75eb6761b4cfceb56b562f7db150d134bc538c8e6adca3783e3bc31be949071527aa8e3aab7867d1ad2d84a26e10 + languageName: node + linkType: hard + "@babel/helper-hoist-variables@npm:^7.18.6": version: 7.18.6 resolution: "@babel/helper-hoist-variables@npm:7.18.6" @@ -220,6 +259,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-hoist-variables@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-hoist-variables@npm:7.22.5" + dependencies: + "@babel/types": ^7.22.5 + checksum: 394ca191b4ac908a76e7c50ab52102669efe3a1c277033e49467913c7ed6f7c64d7eacbeabf3bed39ea1f41731e22993f763b1edce0f74ff8563fd1f380d92cc + languageName: node + linkType: hard + "@babel/helper-member-expression-to-functions@npm:^7.18.9": version: 7.18.9 resolution: "@babel/helper-member-expression-to-functions@npm:7.18.9" @@ -331,6 +379,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-split-export-declaration@npm:^7.22.6": + version: 7.22.6 + resolution: "@babel/helper-split-export-declaration@npm:7.22.6" + dependencies: + "@babel/types": ^7.22.5 + checksum: e141cace583b19d9195f9c2b8e17a3ae913b7ee9b8120246d0f9ca349ca6f03cb2c001fd5ec57488c544347c0bb584afec66c936511e447fd20a360e591ac921 + languageName: node + linkType: hard + "@babel/helper-string-parser@npm:^7.19.4": version: 7.19.4 resolution: "@babel/helper-string-parser@npm:7.19.4" @@ -338,6 +395,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-string-parser@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-string-parser@npm:7.22.5" + checksum: 836851ca5ec813077bbb303acc992d75a360267aa3b5de7134d220411c852a6f17de7c0d0b8c8dcc0f567f67874c00f4528672b2a4f1bc978a3ada64c8c78467 + languageName: node + linkType: hard + "@babel/helper-validator-identifier@npm:^7.18.6, @babel/helper-validator-identifier@npm:^7.19.1": version: 7.19.1 resolution: "@babel/helper-validator-identifier@npm:7.19.1" @@ -345,6 +409,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-identifier@npm:^7.22.20": + version: 7.22.20 + resolution: "@babel/helper-validator-identifier@npm:7.22.20" + checksum: 136412784d9428266bcdd4d91c32bcf9ff0e8d25534a9d94b044f77fe76bc50f941a90319b05aafd1ec04f7d127cd57a179a3716009ff7f3412ef835ada95bdc + languageName: node + linkType: hard + "@babel/helper-validator-option@npm:^7.18.6": version: 7.18.6 resolution: "@babel/helper-validator-option@npm:7.18.6" @@ -386,7 +457,18 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.12.11, @babel/parser@npm:^7.12.7, @babel/parser@npm:^7.18.10, @babel/parser@npm:^7.18.11": +"@babel/highlight@npm:^7.22.13": + version: 7.22.20 + resolution: "@babel/highlight@npm:7.22.20" + dependencies: + "@babel/helper-validator-identifier": ^7.22.20 + chalk: ^2.4.2 + js-tokens: ^4.0.0 + checksum: 84bd034dca309a5e680083cd827a766780ca63cef37308404f17653d32366ea76262bd2364b2d38776232f2d01b649f26721417d507e8b4b6da3e4e739f6d134 + languageName: node + linkType: hard + +"@babel/parser@npm:^7.12.11, @babel/parser@npm:^7.12.7, @babel/parser@npm:^7.18.10": version: 7.21.4 resolution: "@babel/parser@npm:7.21.4" bin: @@ -395,6 +477,15 @@ __metadata: languageName: node linkType: hard +"@babel/parser@npm:^7.22.15, @babel/parser@npm:^7.23.0": + version: 7.23.0 + resolution: "@babel/parser@npm:7.23.0" + bin: + parser: ./bin/babel-parser.js + checksum: 453fdf8b9e2c2b7d7b02139e0ce003d1af21947bbc03eb350fb248ee335c9b85e4ab41697ddbdd97079698de825a265e45a0846bb2ed47a2c7c1df833f42a354 + languageName: node + linkType: hard + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.18.6": version: 7.18.6 resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.18.6" @@ -1510,21 +1601,32 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.1.6, @babel/traverse@npm:^7.12.11, @babel/traverse@npm:^7.12.9, @babel/traverse@npm:^7.13.0, @babel/traverse@npm:^7.18.10, @babel/traverse@npm:^7.18.11, @babel/traverse@npm:^7.18.9": - version: 7.18.11 - resolution: "@babel/traverse@npm:7.18.11" +"@babel/template@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/template@npm:7.22.15" dependencies: - "@babel/code-frame": ^7.18.6 - "@babel/generator": ^7.18.10 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-function-name": ^7.18.9 - "@babel/helper-hoist-variables": ^7.18.6 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/parser": ^7.18.11 - "@babel/types": ^7.18.10 + "@babel/code-frame": ^7.22.13 + "@babel/parser": ^7.22.15 + "@babel/types": ^7.22.15 + checksum: 1f3e7dcd6c44f5904c184b3f7fe280394b191f2fed819919ffa1e529c259d5b197da8981b6ca491c235aee8dbad4a50b7e31304aa531271cb823a4a24a0dd8fd + languageName: node + linkType: hard + +"@babel/traverse@npm:^7.1.6, @babel/traverse@npm:^7.12.11, @babel/traverse@npm:^7.12.9, @babel/traverse@npm:^7.13.0, @babel/traverse@npm:^7.18.10, @babel/traverse@npm:^7.18.11, @babel/traverse@npm:^7.18.9": + version: 7.23.2 + resolution: "@babel/traverse@npm:7.23.2" + dependencies: + "@babel/code-frame": ^7.22.13 + "@babel/generator": ^7.23.0 + "@babel/helper-environment-visitor": ^7.22.20 + "@babel/helper-function-name": ^7.23.0 + "@babel/helper-hoist-variables": ^7.22.5 + "@babel/helper-split-export-declaration": ^7.22.6 + "@babel/parser": ^7.23.0 + "@babel/types": ^7.23.0 debug: ^4.1.0 globals: ^11.1.0 - checksum: 727409464d5cf27f33555010098ce9bb435f0648cc76e674f4fb7513522356655ba62be99c8df330982b391ccf5f0c0c23c7bd7453d4936d47e2181693fed14c + checksum: 26a1eea0dde41ab99dde8b9773a013a0dc50324e5110a049f5d634e721ff08afffd54940b3974a20308d7952085ac769689369e9127dea655f868c0f6e1ab35d languageName: node linkType: hard @@ -1539,6 +1641,17 @@ __metadata: languageName: node linkType: hard +"@babel/types@npm:^7.22.15, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0": + version: 7.23.0 + resolution: "@babel/types@npm:7.23.0" + dependencies: + "@babel/helper-string-parser": ^7.22.5 + "@babel/helper-validator-identifier": ^7.22.20 + to-fast-properties: ^2.0.0 + checksum: 215fe04bd7feef79eeb4d33374b39909ce9cad1611c4135a4f7fdf41fe3280594105af6d7094354751514625ea92d0875aba355f53e86a92600f290e77b0e604 + languageName: node + linkType: hard + "@base2/pretty-print-object@npm:1.0.1": version: 1.0.1 resolution: "@base2/pretty-print-object@npm:1.0.1" @@ -4418,7 +4531,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^2.0.0, chalk@npm:^2.4.1": +"chalk@npm:^2.0.0, chalk@npm:^2.4.1, chalk@npm:^2.4.2": version: 2.4.2 resolution: "chalk@npm:2.4.2" dependencies: From 9f4ae86b0c06218dc96b6cde787bcf67f34fbab3 Mon Sep 17 00:00:00 2001 From: AmbrishRamachandiran Date: Wed, 18 Oct 2023 09:44:58 +0530 Subject: [PATCH 031/102] Replaced the string compare logic with local compare Signed-off-by: AmbrishRamachandiran --- plugins/bazaar/src/util/sortMethods.ts | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/plugins/bazaar/src/util/sortMethods.ts b/plugins/bazaar/src/util/sortMethods.ts index d0680949f2..d23ad177f1 100644 --- a/plugins/bazaar/src/util/sortMethods.ts +++ b/plugins/bazaar/src/util/sortMethods.ts @@ -27,21 +27,11 @@ export const sortByDate = (a: BazaarProject, b: BazaarProject): number => { }; export const sortByTitle = (a: BazaarProject, b: BazaarProject) => { - if (a.title < b.title) { - return -1; - } else if (a.title > b.title) { - return 1; - } - return 0; + return a.title.localeCompare(b.title); }; export const sortByDecendingTitle = (a: BazaarProject, b: BazaarProject) => { - if (a.title < b.title) { - return 1; - } else if (a.title > b.title) { - return -1; - } - return 0; + return b.title.localeCompare(a.title); }; export const sortByMembers = (a: BazaarProject, b: BazaarProject) => { From 138eac62fd82b1b9d330f73f91683ed4192be302 Mon Sep 17 00:00:00 2001 From: AmbrishRamachandiran Date: Wed, 18 Oct 2023 17:21:00 +0530 Subject: [PATCH 032/102] Name changes Signed-off-by: AmbrishRamachandiran --- plugins/bazaar/src/components/SortView/SortView.tsx | 4 ++-- plugins/bazaar/src/util/sortMethods.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/bazaar/src/components/SortView/SortView.tsx b/plugins/bazaar/src/components/SortView/SortView.tsx index e0b591732e..aa310ba55d 100644 --- a/plugins/bazaar/src/components/SortView/SortView.tsx +++ b/plugins/bazaar/src/components/SortView/SortView.tsx @@ -31,7 +31,7 @@ import { sortByDate, sortByMembers, sortByTitle, - sortByDecendingTitle, + sortByTitleDescending, } from '../../util/sortMethods'; import { SortMethodSelector } from '../SortMethodSelector'; import { fetchCatalogItems } from '../../util/fetchMethods'; @@ -86,7 +86,7 @@ export const SortView = (props: SortViewProps) => { const sortMethods = [ sortByDate, sortByTitle, - sortByDecendingTitle, + sortByTitleDescending, sortByMembers, ]; const [sortMethodNbr, setSortMethodNbr] = useState(0); diff --git a/plugins/bazaar/src/util/sortMethods.ts b/plugins/bazaar/src/util/sortMethods.ts index d23ad177f1..2a9b7969b3 100644 --- a/plugins/bazaar/src/util/sortMethods.ts +++ b/plugins/bazaar/src/util/sortMethods.ts @@ -30,7 +30,7 @@ export const sortByTitle = (a: BazaarProject, b: BazaarProject) => { return a.title.localeCompare(b.title); }; -export const sortByDecendingTitle = (a: BazaarProject, b: BazaarProject) => { +export const sortByTitleDescending = (a: BazaarProject, b: BazaarProject) => { return b.title.localeCompare(a.title); }; From 89d13e56183b36cc45fda7ff492b93f8bf841dd0 Mon Sep 17 00:00:00 2001 From: Tomasz Szuba Date: Wed, 18 Oct 2023 14:06:23 +0200 Subject: [PATCH 033/102] Add current and defaultScopes when refreshing session Otherwise google auth always fails, as it lacks userinfo.profile Signed-off-by: Tomasz Szuba --- .changeset/red-yaks-press.md | 5 +++++ .../lib/AuthSessionManager/RefreshingAuthSessionManager.ts | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 .changeset/red-yaks-press.md diff --git a/.changeset/red-yaks-press.md b/.changeset/red-yaks-press.md new file mode 100644 index 0000000000..7166ac345e --- /dev/null +++ b/.changeset/red-yaks-press.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-app-api': patch +--- + +Add current and default scopes when refreshing session diff --git a/packages/core-app-api/src/lib/AuthSessionManager/RefreshingAuthSessionManager.ts b/packages/core-app-api/src/lib/AuthSessionManager/RefreshingAuthSessionManager.ts index c04eb637de..c92fe9fb20 100644 --- a/packages/core-app-api/src/lib/AuthSessionManager/RefreshingAuthSessionManager.ts +++ b/packages/core-app-api/src/lib/AuthSessionManager/RefreshingAuthSessionManager.ts @@ -137,7 +137,9 @@ export class RefreshingAuthSessionManager implements SessionManager { return this.refreshPromise; } - this.refreshPromise = this.connector.refreshSession(scopes); + this.refreshPromise = this.connector.refreshSession( + this.helper.getExtendedScope(this.currentSession, scopes), + ); try { const session = await this.refreshPromise; From d928da692d9dc2ab0454f823d3ad97f745ca77f7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 20 Oct 2023 21:43:37 +0000 Subject: [PATCH 034/102] fix(deps): update aws-sdk-js-v3 monorepo Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 1457 +++++++++++++++++++++++++++-------------------------- 1 file changed, 751 insertions(+), 706 deletions(-) diff --git a/yarn.lock b/yarn.lock index 0242c61e33..6b48a8e52e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -570,457 +570,481 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/client-cognito-identity@npm:3.405.0": - version: 3.405.0 - resolution: "@aws-sdk/client-cognito-identity@npm:3.405.0" +"@aws-sdk/client-cognito-identity@npm:3.433.0": + version: 3.433.0 + resolution: "@aws-sdk/client-cognito-identity@npm:3.433.0" dependencies: "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/client-sts": 3.405.0 - "@aws-sdk/credential-provider-node": 3.405.0 - "@aws-sdk/middleware-host-header": 3.398.0 - "@aws-sdk/middleware-logger": 3.398.0 - "@aws-sdk/middleware-recursion-detection": 3.398.0 - "@aws-sdk/middleware-signing": 3.398.0 - "@aws-sdk/middleware-user-agent": 3.398.0 - "@aws-sdk/types": 3.398.0 - "@aws-sdk/util-endpoints": 3.398.0 - "@aws-sdk/util-user-agent-browser": 3.398.0 - "@aws-sdk/util-user-agent-node": 3.405.0 - "@smithy/config-resolver": ^2.0.5 - "@smithy/fetch-http-handler": ^2.0.5 - "@smithy/hash-node": ^2.0.5 - "@smithy/invalid-dependency": ^2.0.5 - "@smithy/middleware-content-length": ^2.0.5 - "@smithy/middleware-endpoint": ^2.0.5 - "@smithy/middleware-retry": ^2.0.5 - "@smithy/middleware-serde": ^2.0.5 - "@smithy/middleware-stack": ^2.0.0 - "@smithy/node-config-provider": ^2.0.6 - "@smithy/node-http-handler": ^2.0.5 - "@smithy/protocol-http": ^2.0.5 - "@smithy/smithy-client": ^2.0.5 - "@smithy/types": ^2.2.2 - "@smithy/url-parser": ^2.0.5 + "@aws-sdk/client-sts": 3.433.0 + "@aws-sdk/credential-provider-node": 3.433.0 + "@aws-sdk/middleware-host-header": 3.433.0 + "@aws-sdk/middleware-logger": 3.433.0 + "@aws-sdk/middleware-recursion-detection": 3.433.0 + "@aws-sdk/middleware-signing": 3.433.0 + "@aws-sdk/middleware-user-agent": 3.433.0 + "@aws-sdk/region-config-resolver": 3.433.0 + "@aws-sdk/types": 3.433.0 + "@aws-sdk/util-endpoints": 3.433.0 + "@aws-sdk/util-user-agent-browser": 3.433.0 + "@aws-sdk/util-user-agent-node": 3.433.0 + "@smithy/config-resolver": ^2.0.16 + "@smithy/fetch-http-handler": ^2.2.4 + "@smithy/hash-node": ^2.0.12 + "@smithy/invalid-dependency": ^2.0.12 + "@smithy/middleware-content-length": ^2.0.14 + "@smithy/middleware-endpoint": ^2.1.3 + "@smithy/middleware-retry": ^2.0.18 + "@smithy/middleware-serde": ^2.0.12 + "@smithy/middleware-stack": ^2.0.6 + "@smithy/node-config-provider": ^2.1.3 + "@smithy/node-http-handler": ^2.1.8 + "@smithy/protocol-http": ^3.0.8 + "@smithy/smithy-client": ^2.1.12 + "@smithy/types": ^2.4.0 + "@smithy/url-parser": ^2.0.12 "@smithy/util-base64": ^2.0.0 "@smithy/util-body-length-browser": ^2.0.0 "@smithy/util-body-length-node": ^2.1.0 - "@smithy/util-defaults-mode-browser": ^2.0.6 - "@smithy/util-defaults-mode-node": ^2.0.6 - "@smithy/util-retry": ^2.0.0 + "@smithy/util-defaults-mode-browser": ^2.0.16 + "@smithy/util-defaults-mode-node": ^2.0.21 + "@smithy/util-retry": ^2.0.5 "@smithy/util-utf8": ^2.0.0 tslib: ^2.5.0 - checksum: 7cae774ec605939c0bb629b7dcb3155fe998250550d8e4f5696e546fd9debba7cb749556c54787e223613b586c06cec7138f4a9a7718de1df8a5abb43556d1a8 + checksum: a31d0d1ac82937991f82fe15b632751a1c8792cf4fb9497c84553149bd179014e897be7714675095e8f04ab462bcfe18d9bc46ee47d46d0b92266a536a5b7fd6 languageName: node linkType: hard "@aws-sdk/client-eks@npm:^3.350.0": - version: 3.405.0 - resolution: "@aws-sdk/client-eks@npm:3.405.0" + version: 3.433.0 + resolution: "@aws-sdk/client-eks@npm:3.433.0" dependencies: "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/client-sts": 3.405.0 - "@aws-sdk/credential-provider-node": 3.405.0 - "@aws-sdk/middleware-host-header": 3.398.0 - "@aws-sdk/middleware-logger": 3.398.0 - "@aws-sdk/middleware-recursion-detection": 3.398.0 - "@aws-sdk/middleware-signing": 3.398.0 - "@aws-sdk/middleware-user-agent": 3.398.0 - "@aws-sdk/types": 3.398.0 - "@aws-sdk/util-endpoints": 3.398.0 - "@aws-sdk/util-user-agent-browser": 3.398.0 - "@aws-sdk/util-user-agent-node": 3.405.0 - "@smithy/config-resolver": ^2.0.5 - "@smithy/fetch-http-handler": ^2.0.5 - "@smithy/hash-node": ^2.0.5 - "@smithy/invalid-dependency": ^2.0.5 - "@smithy/middleware-content-length": ^2.0.5 - "@smithy/middleware-endpoint": ^2.0.5 - "@smithy/middleware-retry": ^2.0.5 - "@smithy/middleware-serde": ^2.0.5 - "@smithy/middleware-stack": ^2.0.0 - "@smithy/node-config-provider": ^2.0.6 - "@smithy/node-http-handler": ^2.0.5 - "@smithy/protocol-http": ^2.0.5 - "@smithy/smithy-client": ^2.0.5 - "@smithy/types": ^2.2.2 - "@smithy/url-parser": ^2.0.5 + "@aws-sdk/client-sts": 3.433.0 + "@aws-sdk/credential-provider-node": 3.433.0 + "@aws-sdk/middleware-host-header": 3.433.0 + "@aws-sdk/middleware-logger": 3.433.0 + "@aws-sdk/middleware-recursion-detection": 3.433.0 + "@aws-sdk/middleware-signing": 3.433.0 + "@aws-sdk/middleware-user-agent": 3.433.0 + "@aws-sdk/region-config-resolver": 3.433.0 + "@aws-sdk/types": 3.433.0 + "@aws-sdk/util-endpoints": 3.433.0 + "@aws-sdk/util-user-agent-browser": 3.433.0 + "@aws-sdk/util-user-agent-node": 3.433.0 + "@smithy/config-resolver": ^2.0.16 + "@smithy/fetch-http-handler": ^2.2.4 + "@smithy/hash-node": ^2.0.12 + "@smithy/invalid-dependency": ^2.0.12 + "@smithy/middleware-content-length": ^2.0.14 + "@smithy/middleware-endpoint": ^2.1.3 + "@smithy/middleware-retry": ^2.0.18 + "@smithy/middleware-serde": ^2.0.12 + "@smithy/middleware-stack": ^2.0.6 + "@smithy/node-config-provider": ^2.1.3 + "@smithy/node-http-handler": ^2.1.8 + "@smithy/protocol-http": ^3.0.8 + "@smithy/smithy-client": ^2.1.12 + "@smithy/types": ^2.4.0 + "@smithy/url-parser": ^2.0.12 "@smithy/util-base64": ^2.0.0 "@smithy/util-body-length-browser": ^2.0.0 "@smithy/util-body-length-node": ^2.1.0 - "@smithy/util-defaults-mode-browser": ^2.0.6 - "@smithy/util-defaults-mode-node": ^2.0.6 - "@smithy/util-retry": ^2.0.0 + "@smithy/util-defaults-mode-browser": ^2.0.16 + "@smithy/util-defaults-mode-node": ^2.0.21 + "@smithy/util-retry": ^2.0.5 "@smithy/util-utf8": ^2.0.0 - "@smithy/util-waiter": ^2.0.5 + "@smithy/util-waiter": ^2.0.12 tslib: ^2.5.0 uuid: ^8.3.2 - checksum: 166feb777e7bd4f1e7d78201b0f0402f0c2afb8e0f35e32576bd22eeb21bd3a2dda504d7c10a502dd64ddce79ff4f76df971a26fd5944dfe42770b962a242c59 + checksum: c2b121afa0d4a8551f9638fd3b4ad1cb534435b8e0051243129a34cded19a530313e84358910b63d412428f5c55dc7eec810fd801a5f713ec267811f2736b538 languageName: node linkType: hard "@aws-sdk/client-organizations@npm:^3.350.0": - version: 3.405.0 - resolution: "@aws-sdk/client-organizations@npm:3.405.0" + version: 3.433.0 + resolution: "@aws-sdk/client-organizations@npm:3.433.0" dependencies: "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/client-sts": 3.405.0 - "@aws-sdk/credential-provider-node": 3.405.0 - "@aws-sdk/middleware-host-header": 3.398.0 - "@aws-sdk/middleware-logger": 3.398.0 - "@aws-sdk/middleware-recursion-detection": 3.398.0 - "@aws-sdk/middleware-signing": 3.398.0 - "@aws-sdk/middleware-user-agent": 3.398.0 - "@aws-sdk/types": 3.398.0 - "@aws-sdk/util-endpoints": 3.398.0 - "@aws-sdk/util-user-agent-browser": 3.398.0 - "@aws-sdk/util-user-agent-node": 3.405.0 - "@smithy/config-resolver": ^2.0.5 - "@smithy/fetch-http-handler": ^2.0.5 - "@smithy/hash-node": ^2.0.5 - "@smithy/invalid-dependency": ^2.0.5 - "@smithy/middleware-content-length": ^2.0.5 - "@smithy/middleware-endpoint": ^2.0.5 - "@smithy/middleware-retry": ^2.0.5 - "@smithy/middleware-serde": ^2.0.5 - "@smithy/middleware-stack": ^2.0.0 - "@smithy/node-config-provider": ^2.0.6 - "@smithy/node-http-handler": ^2.0.5 - "@smithy/protocol-http": ^2.0.5 - "@smithy/smithy-client": ^2.0.5 - "@smithy/types": ^2.2.2 - "@smithy/url-parser": ^2.0.5 + "@aws-sdk/client-sts": 3.433.0 + "@aws-sdk/credential-provider-node": 3.433.0 + "@aws-sdk/middleware-host-header": 3.433.0 + "@aws-sdk/middleware-logger": 3.433.0 + "@aws-sdk/middleware-recursion-detection": 3.433.0 + "@aws-sdk/middleware-signing": 3.433.0 + "@aws-sdk/middleware-user-agent": 3.433.0 + "@aws-sdk/region-config-resolver": 3.433.0 + "@aws-sdk/types": 3.433.0 + "@aws-sdk/util-endpoints": 3.433.0 + "@aws-sdk/util-user-agent-browser": 3.433.0 + "@aws-sdk/util-user-agent-node": 3.433.0 + "@smithy/config-resolver": ^2.0.16 + "@smithy/fetch-http-handler": ^2.2.4 + "@smithy/hash-node": ^2.0.12 + "@smithy/invalid-dependency": ^2.0.12 + "@smithy/middleware-content-length": ^2.0.14 + "@smithy/middleware-endpoint": ^2.1.3 + "@smithy/middleware-retry": ^2.0.18 + "@smithy/middleware-serde": ^2.0.12 + "@smithy/middleware-stack": ^2.0.6 + "@smithy/node-config-provider": ^2.1.3 + "@smithy/node-http-handler": ^2.1.8 + "@smithy/protocol-http": ^3.0.8 + "@smithy/smithy-client": ^2.1.12 + "@smithy/types": ^2.4.0 + "@smithy/url-parser": ^2.0.12 "@smithy/util-base64": ^2.0.0 "@smithy/util-body-length-browser": ^2.0.0 "@smithy/util-body-length-node": ^2.1.0 - "@smithy/util-defaults-mode-browser": ^2.0.6 - "@smithy/util-defaults-mode-node": ^2.0.6 - "@smithy/util-retry": ^2.0.0 + "@smithy/util-defaults-mode-browser": ^2.0.16 + "@smithy/util-defaults-mode-node": ^2.0.21 + "@smithy/util-retry": ^2.0.5 "@smithy/util-utf8": ^2.0.0 tslib: ^2.5.0 - checksum: 9abdf6593730942a3f97b77ab00b1f52b78c6acb695b34e59fcffb03d92b5e66dae9b7c4005660a4189851d40b66c7845bce1be81be4329262d9977d01c7dcc9 + checksum: 838b60665b7f7f808cf7b901cdeaab611d285f640ddc69e563e9d0cc0911fe188308138f3f2f7b29762104dbd9d7fbdbb9f533ada2d79d0d023c29f5605319c8 languageName: node linkType: hard "@aws-sdk/client-s3@npm:^3.350.0": - version: 3.405.0 - resolution: "@aws-sdk/client-s3@npm:3.405.0" + version: 3.433.0 + resolution: "@aws-sdk/client-s3@npm:3.433.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.405.0 - "@aws-sdk/credential-provider-node": 3.405.0 - "@aws-sdk/middleware-bucket-endpoint": 3.405.0 - "@aws-sdk/middleware-expect-continue": 3.398.0 - "@aws-sdk/middleware-flexible-checksums": 3.400.0 - "@aws-sdk/middleware-host-header": 3.398.0 - "@aws-sdk/middleware-location-constraint": 3.398.0 - "@aws-sdk/middleware-logger": 3.398.0 - "@aws-sdk/middleware-recursion-detection": 3.398.0 - "@aws-sdk/middleware-sdk-s3": 3.398.0 - "@aws-sdk/middleware-signing": 3.398.0 - "@aws-sdk/middleware-ssec": 3.398.0 - "@aws-sdk/middleware-user-agent": 3.398.0 - "@aws-sdk/signature-v4-multi-region": 3.398.0 - "@aws-sdk/types": 3.398.0 - "@aws-sdk/util-endpoints": 3.398.0 - "@aws-sdk/util-user-agent-browser": 3.398.0 - "@aws-sdk/util-user-agent-node": 3.405.0 + "@aws-sdk/client-sts": 3.433.0 + "@aws-sdk/credential-provider-node": 3.433.0 + "@aws-sdk/middleware-bucket-endpoint": 3.433.0 + "@aws-sdk/middleware-expect-continue": 3.433.0 + "@aws-sdk/middleware-flexible-checksums": 3.433.0 + "@aws-sdk/middleware-host-header": 3.433.0 + "@aws-sdk/middleware-location-constraint": 3.433.0 + "@aws-sdk/middleware-logger": 3.433.0 + "@aws-sdk/middleware-recursion-detection": 3.433.0 + "@aws-sdk/middleware-sdk-s3": 3.433.0 + "@aws-sdk/middleware-signing": 3.433.0 + "@aws-sdk/middleware-ssec": 3.433.0 + "@aws-sdk/middleware-user-agent": 3.433.0 + "@aws-sdk/region-config-resolver": 3.433.0 + "@aws-sdk/signature-v4-multi-region": 3.433.0 + "@aws-sdk/types": 3.433.0 + "@aws-sdk/util-endpoints": 3.433.0 + "@aws-sdk/util-user-agent-browser": 3.433.0 + "@aws-sdk/util-user-agent-node": 3.433.0 "@aws-sdk/xml-builder": 3.310.0 - "@smithy/config-resolver": ^2.0.5 - "@smithy/eventstream-serde-browser": ^2.0.5 - "@smithy/eventstream-serde-config-resolver": ^2.0.5 - "@smithy/eventstream-serde-node": ^2.0.5 - "@smithy/fetch-http-handler": ^2.0.5 - "@smithy/hash-blob-browser": ^2.0.5 - "@smithy/hash-node": ^2.0.5 - "@smithy/hash-stream-node": ^2.0.5 - "@smithy/invalid-dependency": ^2.0.5 - "@smithy/md5-js": ^2.0.5 - "@smithy/middleware-content-length": ^2.0.5 - "@smithy/middleware-endpoint": ^2.0.5 - "@smithy/middleware-retry": ^2.0.5 - "@smithy/middleware-serde": ^2.0.5 - "@smithy/middleware-stack": ^2.0.0 - "@smithy/node-config-provider": ^2.0.6 - "@smithy/node-http-handler": ^2.0.5 - "@smithy/protocol-http": ^2.0.5 - "@smithy/smithy-client": ^2.0.5 - "@smithy/types": ^2.2.2 - "@smithy/url-parser": ^2.0.5 + "@smithy/config-resolver": ^2.0.16 + "@smithy/eventstream-serde-browser": ^2.0.12 + "@smithy/eventstream-serde-config-resolver": ^2.0.12 + "@smithy/eventstream-serde-node": ^2.0.12 + "@smithy/fetch-http-handler": ^2.2.4 + "@smithy/hash-blob-browser": ^2.0.12 + "@smithy/hash-node": ^2.0.12 + "@smithy/hash-stream-node": ^2.0.12 + "@smithy/invalid-dependency": ^2.0.12 + "@smithy/md5-js": ^2.0.12 + "@smithy/middleware-content-length": ^2.0.14 + "@smithy/middleware-endpoint": ^2.1.3 + "@smithy/middleware-retry": ^2.0.18 + "@smithy/middleware-serde": ^2.0.12 + "@smithy/middleware-stack": ^2.0.6 + "@smithy/node-config-provider": ^2.1.3 + "@smithy/node-http-handler": ^2.1.8 + "@smithy/protocol-http": ^3.0.8 + "@smithy/smithy-client": ^2.1.12 + "@smithy/types": ^2.4.0 + "@smithy/url-parser": ^2.0.12 "@smithy/util-base64": ^2.0.0 "@smithy/util-body-length-browser": ^2.0.0 "@smithy/util-body-length-node": ^2.1.0 - "@smithy/util-defaults-mode-browser": ^2.0.6 - "@smithy/util-defaults-mode-node": ^2.0.6 - "@smithy/util-retry": ^2.0.0 - "@smithy/util-stream": ^2.0.5 + "@smithy/util-defaults-mode-browser": ^2.0.16 + "@smithy/util-defaults-mode-node": ^2.0.21 + "@smithy/util-retry": ^2.0.5 + "@smithy/util-stream": ^2.0.17 "@smithy/util-utf8": ^2.0.0 - "@smithy/util-waiter": ^2.0.5 + "@smithy/util-waiter": ^2.0.12 fast-xml-parser: 4.2.5 tslib: ^2.5.0 - checksum: e9665537bcd809d9f8b71d45ce4971618017db35d6074a01e89b96d19a5b2e76e9d8e0005f7f9bf898c1556d1d20125dae38bcfc5609ce11f9e418d03e216d76 + checksum: 0974b71e65ab8bef0229cd3c4ae896fd74596385231df1c5a3f884cfafbb1b2b8a4e570a1ef873323cb3f277807855555eeaa8fcd61ba96f7235c4f76bca94e1 languageName: node linkType: hard "@aws-sdk/client-sqs@npm:^3.350.0": - version: 3.405.0 - resolution: "@aws-sdk/client-sqs@npm:3.405.0" + version: 3.433.0 + resolution: "@aws-sdk/client-sqs@npm:3.433.0" dependencies: "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/client-sts": 3.405.0 - "@aws-sdk/credential-provider-node": 3.405.0 - "@aws-sdk/middleware-host-header": 3.398.0 - "@aws-sdk/middleware-logger": 3.398.0 - "@aws-sdk/middleware-recursion-detection": 3.398.0 - "@aws-sdk/middleware-sdk-sqs": 3.398.0 - "@aws-sdk/middleware-signing": 3.398.0 - "@aws-sdk/middleware-user-agent": 3.398.0 - "@aws-sdk/types": 3.398.0 - "@aws-sdk/util-endpoints": 3.398.0 - "@aws-sdk/util-user-agent-browser": 3.398.0 - "@aws-sdk/util-user-agent-node": 3.405.0 - "@smithy/config-resolver": ^2.0.5 - "@smithy/fetch-http-handler": ^2.0.5 - "@smithy/hash-node": ^2.0.5 - "@smithy/invalid-dependency": ^2.0.5 - "@smithy/md5-js": ^2.0.5 - "@smithy/middleware-content-length": ^2.0.5 - "@smithy/middleware-endpoint": ^2.0.5 - "@smithy/middleware-retry": ^2.0.5 - "@smithy/middleware-serde": ^2.0.5 - "@smithy/middleware-stack": ^2.0.0 - "@smithy/node-config-provider": ^2.0.6 - "@smithy/node-http-handler": ^2.0.5 - "@smithy/protocol-http": ^2.0.5 - "@smithy/smithy-client": ^2.0.5 - "@smithy/types": ^2.2.2 - "@smithy/url-parser": ^2.0.5 + "@aws-sdk/client-sts": 3.433.0 + "@aws-sdk/credential-provider-node": 3.433.0 + "@aws-sdk/middleware-host-header": 3.433.0 + "@aws-sdk/middleware-logger": 3.433.0 + "@aws-sdk/middleware-recursion-detection": 3.433.0 + "@aws-sdk/middleware-sdk-sqs": 3.433.0 + "@aws-sdk/middleware-signing": 3.433.0 + "@aws-sdk/middleware-user-agent": 3.433.0 + "@aws-sdk/region-config-resolver": 3.433.0 + "@aws-sdk/types": 3.433.0 + "@aws-sdk/util-endpoints": 3.433.0 + "@aws-sdk/util-user-agent-browser": 3.433.0 + "@aws-sdk/util-user-agent-node": 3.433.0 + "@smithy/config-resolver": ^2.0.16 + "@smithy/fetch-http-handler": ^2.2.4 + "@smithy/hash-node": ^2.0.12 + "@smithy/invalid-dependency": ^2.0.12 + "@smithy/md5-js": ^2.0.12 + "@smithy/middleware-content-length": ^2.0.14 + "@smithy/middleware-endpoint": ^2.1.3 + "@smithy/middleware-retry": ^2.0.18 + "@smithy/middleware-serde": ^2.0.12 + "@smithy/middleware-stack": ^2.0.6 + "@smithy/node-config-provider": ^2.1.3 + "@smithy/node-http-handler": ^2.1.8 + "@smithy/protocol-http": ^3.0.8 + "@smithy/smithy-client": ^2.1.12 + "@smithy/types": ^2.4.0 + "@smithy/url-parser": ^2.0.12 "@smithy/util-base64": ^2.0.0 "@smithy/util-body-length-browser": ^2.0.0 "@smithy/util-body-length-node": ^2.1.0 - "@smithy/util-defaults-mode-browser": ^2.0.6 - "@smithy/util-defaults-mode-node": ^2.0.6 - "@smithy/util-retry": ^2.0.0 + "@smithy/util-defaults-mode-browser": ^2.0.16 + "@smithy/util-defaults-mode-node": ^2.0.21 + "@smithy/util-retry": ^2.0.5 "@smithy/util-utf8": ^2.0.0 fast-xml-parser: 4.2.5 tslib: ^2.5.0 - checksum: 7618b9471cb02a47f5c7a6e1177f502712a6e532d76b814d1203989bd70a2f5e3c518e9927207fbf861b2703f241beec1f3f03e2717001245f9b456884c5b963 + checksum: fa680ff42ad1d5b3d475882f3ce482348c38cfb41fd13b10fab178cfd7e96ee0e1558f3b2270eafb7379a5cf23d46209e8851fbb502e374bbe71014f9b4f9e92 languageName: node linkType: hard -"@aws-sdk/client-sso@npm:3.405.0": - version: 3.405.0 - resolution: "@aws-sdk/client-sso@npm:3.405.0" +"@aws-sdk/client-sso@npm:3.433.0": + version: 3.433.0 + resolution: "@aws-sdk/client-sso@npm:3.433.0" dependencies: "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/middleware-host-header": 3.398.0 - "@aws-sdk/middleware-logger": 3.398.0 - "@aws-sdk/middleware-recursion-detection": 3.398.0 - "@aws-sdk/middleware-user-agent": 3.398.0 - "@aws-sdk/types": 3.398.0 - "@aws-sdk/util-endpoints": 3.398.0 - "@aws-sdk/util-user-agent-browser": 3.398.0 - "@aws-sdk/util-user-agent-node": 3.405.0 - "@smithy/config-resolver": ^2.0.5 - "@smithy/fetch-http-handler": ^2.0.5 - "@smithy/hash-node": ^2.0.5 - "@smithy/invalid-dependency": ^2.0.5 - "@smithy/middleware-content-length": ^2.0.5 - "@smithy/middleware-endpoint": ^2.0.5 - "@smithy/middleware-retry": ^2.0.5 - "@smithy/middleware-serde": ^2.0.5 - "@smithy/middleware-stack": ^2.0.0 - "@smithy/node-config-provider": ^2.0.6 - "@smithy/node-http-handler": ^2.0.5 - "@smithy/protocol-http": ^2.0.5 - "@smithy/smithy-client": ^2.0.5 - "@smithy/types": ^2.2.2 - "@smithy/url-parser": ^2.0.5 + "@aws-sdk/middleware-host-header": 3.433.0 + "@aws-sdk/middleware-logger": 3.433.0 + "@aws-sdk/middleware-recursion-detection": 3.433.0 + "@aws-sdk/middleware-user-agent": 3.433.0 + "@aws-sdk/region-config-resolver": 3.433.0 + "@aws-sdk/types": 3.433.0 + "@aws-sdk/util-endpoints": 3.433.0 + "@aws-sdk/util-user-agent-browser": 3.433.0 + "@aws-sdk/util-user-agent-node": 3.433.0 + "@smithy/config-resolver": ^2.0.16 + "@smithy/fetch-http-handler": ^2.2.4 + "@smithy/hash-node": ^2.0.12 + "@smithy/invalid-dependency": ^2.0.12 + "@smithy/middleware-content-length": ^2.0.14 + "@smithy/middleware-endpoint": ^2.1.3 + "@smithy/middleware-retry": ^2.0.18 + "@smithy/middleware-serde": ^2.0.12 + "@smithy/middleware-stack": ^2.0.6 + "@smithy/node-config-provider": ^2.1.3 + "@smithy/node-http-handler": ^2.1.8 + "@smithy/protocol-http": ^3.0.8 + "@smithy/smithy-client": ^2.1.12 + "@smithy/types": ^2.4.0 + "@smithy/url-parser": ^2.0.12 "@smithy/util-base64": ^2.0.0 "@smithy/util-body-length-browser": ^2.0.0 "@smithy/util-body-length-node": ^2.1.0 - "@smithy/util-defaults-mode-browser": ^2.0.6 - "@smithy/util-defaults-mode-node": ^2.0.6 - "@smithy/util-retry": ^2.0.0 + "@smithy/util-defaults-mode-browser": ^2.0.16 + "@smithy/util-defaults-mode-node": ^2.0.21 + "@smithy/util-retry": ^2.0.5 "@smithy/util-utf8": ^2.0.0 tslib: ^2.5.0 - checksum: ec4fd5cf3d76ef5b8fdd815c58070a924c98fffb7b8228d409d009ce9596851bd54aa7d1f9f3528972f377c596363243a2d3fed5fc62d336751b99bebfd0363f + checksum: c8cc2e0e691394e0b70dfb556f52546646da70d692209402ab44ef5cefb2f5a6cf819bf6fefd4f91d756c5a81d5d2a825f9dee9faadf8eb1a634940b34511bc6 languageName: node linkType: hard -"@aws-sdk/client-sts@npm:3.405.0, @aws-sdk/client-sts@npm:^3.350.0": - version: 3.405.0 - resolution: "@aws-sdk/client-sts@npm:3.405.0" +"@aws-sdk/client-sts@npm:3.433.0, @aws-sdk/client-sts@npm:^3.350.0": + version: 3.433.0 + resolution: "@aws-sdk/client-sts@npm:3.433.0" dependencies: "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/credential-provider-node": 3.405.0 - "@aws-sdk/middleware-host-header": 3.398.0 - "@aws-sdk/middleware-logger": 3.398.0 - "@aws-sdk/middleware-recursion-detection": 3.398.0 - "@aws-sdk/middleware-sdk-sts": 3.398.0 - "@aws-sdk/middleware-signing": 3.398.0 - "@aws-sdk/middleware-user-agent": 3.398.0 - "@aws-sdk/types": 3.398.0 - "@aws-sdk/util-endpoints": 3.398.0 - "@aws-sdk/util-user-agent-browser": 3.398.0 - "@aws-sdk/util-user-agent-node": 3.405.0 - "@smithy/config-resolver": ^2.0.5 - "@smithy/fetch-http-handler": ^2.0.5 - "@smithy/hash-node": ^2.0.5 - "@smithy/invalid-dependency": ^2.0.5 - "@smithy/middleware-content-length": ^2.0.5 - "@smithy/middleware-endpoint": ^2.0.5 - "@smithy/middleware-retry": ^2.0.5 - "@smithy/middleware-serde": ^2.0.5 - "@smithy/middleware-stack": ^2.0.0 - "@smithy/node-config-provider": ^2.0.6 - "@smithy/node-http-handler": ^2.0.5 - "@smithy/protocol-http": ^2.0.5 - "@smithy/smithy-client": ^2.0.5 - "@smithy/types": ^2.2.2 - "@smithy/url-parser": ^2.0.5 + "@aws-sdk/credential-provider-node": 3.433.0 + "@aws-sdk/middleware-host-header": 3.433.0 + "@aws-sdk/middleware-logger": 3.433.0 + "@aws-sdk/middleware-recursion-detection": 3.433.0 + "@aws-sdk/middleware-sdk-sts": 3.433.0 + "@aws-sdk/middleware-signing": 3.433.0 + "@aws-sdk/middleware-user-agent": 3.433.0 + "@aws-sdk/region-config-resolver": 3.433.0 + "@aws-sdk/types": 3.433.0 + "@aws-sdk/util-endpoints": 3.433.0 + "@aws-sdk/util-user-agent-browser": 3.433.0 + "@aws-sdk/util-user-agent-node": 3.433.0 + "@smithy/config-resolver": ^2.0.16 + "@smithy/fetch-http-handler": ^2.2.4 + "@smithy/hash-node": ^2.0.12 + "@smithy/invalid-dependency": ^2.0.12 + "@smithy/middleware-content-length": ^2.0.14 + "@smithy/middleware-endpoint": ^2.1.3 + "@smithy/middleware-retry": ^2.0.18 + "@smithy/middleware-serde": ^2.0.12 + "@smithy/middleware-stack": ^2.0.6 + "@smithy/node-config-provider": ^2.1.3 + "@smithy/node-http-handler": ^2.1.8 + "@smithy/protocol-http": ^3.0.8 + "@smithy/smithy-client": ^2.1.12 + "@smithy/types": ^2.4.0 + "@smithy/url-parser": ^2.0.12 "@smithy/util-base64": ^2.0.0 "@smithy/util-body-length-browser": ^2.0.0 "@smithy/util-body-length-node": ^2.1.0 - "@smithy/util-defaults-mode-browser": ^2.0.6 - "@smithy/util-defaults-mode-node": ^2.0.6 - "@smithy/util-retry": ^2.0.0 + "@smithy/util-defaults-mode-browser": ^2.0.16 + "@smithy/util-defaults-mode-node": ^2.0.21 + "@smithy/util-retry": ^2.0.5 "@smithy/util-utf8": ^2.0.0 fast-xml-parser: 4.2.5 tslib: ^2.5.0 - checksum: f835c95a43100963afe3aea2afb0c0a124191fb9b6cd373a1b61f98287f8637efa08d2caeadb05cf5f85843a4397933e05fe8c63a1d39d0b4829341f972c41bc + checksum: 2c87fa62bf0491bef6ece8acb6fa496b329a77b9368dbf6187dc55192207c25570b8d5be5e01d62a8b5fd0776cb4a3c620ada2aa9819cf43d0c3dcde8c8f7427 languageName: node linkType: hard -"@aws-sdk/credential-provider-cognito-identity@npm:3.405.0": - version: 3.405.0 - resolution: "@aws-sdk/credential-provider-cognito-identity@npm:3.405.0" +"@aws-sdk/credential-provider-cognito-identity@npm:3.433.0": + version: 3.433.0 + resolution: "@aws-sdk/credential-provider-cognito-identity@npm:3.433.0" dependencies: - "@aws-sdk/client-cognito-identity": 3.405.0 - "@aws-sdk/types": 3.398.0 + "@aws-sdk/client-cognito-identity": 3.433.0 + "@aws-sdk/types": 3.433.0 "@smithy/property-provider": ^2.0.0 - "@smithy/types": ^2.2.2 + "@smithy/types": ^2.4.0 tslib: ^2.5.0 - checksum: 4deb3d0f401b2365f190f45a2cd68cc81db66b4c4f8ff8b3ae34e526611c272c4308b0020faaf16ad8e9f1728222271959c14643d0ae04713b495795a8fae8b6 + checksum: fc7f1810f004f780cd394ac20d1e20a01c7b1de09f84bf9bdfe69f868997b47cbee3e5142a8c672dfb7c7032d2fafbd4338b76bce95c50d521b5dbce95743d39 languageName: node linkType: hard -"@aws-sdk/credential-provider-env@npm:3.398.0": - version: 3.398.0 - resolution: "@aws-sdk/credential-provider-env@npm:3.398.0" +"@aws-sdk/credential-provider-env@npm:3.433.0": + version: 3.433.0 + resolution: "@aws-sdk/credential-provider-env@npm:3.433.0" dependencies: - "@aws-sdk/types": 3.398.0 + "@aws-sdk/types": 3.433.0 "@smithy/property-provider": ^2.0.0 - "@smithy/types": ^2.2.2 + "@smithy/types": ^2.4.0 tslib: ^2.5.0 - checksum: 00c3fe0dbb0f58e6c769e447f5ae960e7d30fa9c6e5ed392ffbbe87356c526920e2ea18759a0a0cc2941109007ca950b43cfbb1764b2a1f076b4385333de89e5 + checksum: bc8d2afb35245d1c4aea85d0a2fb56ab85b7a48ddf92d90fc7351c871e8fb90622d6662e066a0a0cf6f493a94f8aba24061f663450bafeec6a70cd6e6af07e29 languageName: node linkType: hard -"@aws-sdk/credential-provider-ini@npm:3.405.0": - version: 3.405.0 - resolution: "@aws-sdk/credential-provider-ini@npm:3.405.0" +"@aws-sdk/credential-provider-http@npm:3.433.0": + version: 3.433.0 + resolution: "@aws-sdk/credential-provider-http@npm:3.433.0" dependencies: - "@aws-sdk/credential-provider-env": 3.398.0 - "@aws-sdk/credential-provider-process": 3.405.0 - "@aws-sdk/credential-provider-sso": 3.405.0 - "@aws-sdk/credential-provider-web-identity": 3.398.0 - "@aws-sdk/types": 3.398.0 + "@aws-sdk/types": 3.433.0 + "@smithy/fetch-http-handler": ^2.2.4 + "@smithy/node-http-handler": ^2.1.8 + "@smithy/property-provider": ^2.0.0 + "@smithy/protocol-http": ^3.0.8 + "@smithy/smithy-client": ^2.1.12 + "@smithy/types": ^2.4.0 + tslib: ^2.5.0 + checksum: 3ccbc90394efe98a7767cde36a674fc3ce16063062516c5d6cf293cd99acfcc2f6751ffbebcbf971106e66e96bf1e26bc843803eccdebc0db77297c209b2f9b3 + languageName: node + linkType: hard + +"@aws-sdk/credential-provider-ini@npm:3.433.0": + version: 3.433.0 + resolution: "@aws-sdk/credential-provider-ini@npm:3.433.0" + dependencies: + "@aws-sdk/credential-provider-env": 3.433.0 + "@aws-sdk/credential-provider-process": 3.433.0 + "@aws-sdk/credential-provider-sso": 3.433.0 + "@aws-sdk/credential-provider-web-identity": 3.433.0 + "@aws-sdk/types": 3.433.0 "@smithy/credential-provider-imds": ^2.0.0 "@smithy/property-provider": ^2.0.0 "@smithy/shared-ini-file-loader": ^2.0.6 - "@smithy/types": ^2.2.2 + "@smithy/types": ^2.4.0 tslib: ^2.5.0 - checksum: 49805d3600db76c42cbaac613bb2aa541bbef923d93d9cfbea746c566c6aead370251032a016f3b615402783a2f9328c3b766022e0b143c207dfd292460dfdab + checksum: ce02cf8e0469f23a0573647a6d36e34b82c823b6f68c95b165762e60da1ea5bf05b0abcd42cbec4b3f67074480fe0670ba19b4fb615bc7d3d202a1161aade50c languageName: node linkType: hard -"@aws-sdk/credential-provider-node@npm:3.405.0, @aws-sdk/credential-provider-node@npm:^3.350.0": - version: 3.405.0 - resolution: "@aws-sdk/credential-provider-node@npm:3.405.0" +"@aws-sdk/credential-provider-node@npm:3.433.0, @aws-sdk/credential-provider-node@npm:^3.350.0": + version: 3.433.0 + resolution: "@aws-sdk/credential-provider-node@npm:3.433.0" dependencies: - "@aws-sdk/credential-provider-env": 3.398.0 - "@aws-sdk/credential-provider-ini": 3.405.0 - "@aws-sdk/credential-provider-process": 3.405.0 - "@aws-sdk/credential-provider-sso": 3.405.0 - "@aws-sdk/credential-provider-web-identity": 3.398.0 - "@aws-sdk/types": 3.398.0 + "@aws-sdk/credential-provider-env": 3.433.0 + "@aws-sdk/credential-provider-ini": 3.433.0 + "@aws-sdk/credential-provider-process": 3.433.0 + "@aws-sdk/credential-provider-sso": 3.433.0 + "@aws-sdk/credential-provider-web-identity": 3.433.0 + "@aws-sdk/types": 3.433.0 "@smithy/credential-provider-imds": ^2.0.0 "@smithy/property-provider": ^2.0.0 "@smithy/shared-ini-file-loader": ^2.0.6 - "@smithy/types": ^2.2.2 + "@smithy/types": ^2.4.0 tslib: ^2.5.0 - checksum: 3333ea579cc32cf4ad41d9de5e35ead4a4166fb3fc56766c3c342c39c2c51e6d292d04769a38725b742a89c9cb48cbcca150fce27d2606a305e25666c5ac4af5 + checksum: 30abdb886861d0b2874bb66fe0d31a66cd90a64c0aa545fa54ea99926128be0c52544b748ee1ba3fda3391e8d967dbe8bda01afdacb4b32e3776eb79c4ebf41e languageName: node linkType: hard -"@aws-sdk/credential-provider-process@npm:3.405.0": - version: 3.405.0 - resolution: "@aws-sdk/credential-provider-process@npm:3.405.0" +"@aws-sdk/credential-provider-process@npm:3.433.0": + version: 3.433.0 + resolution: "@aws-sdk/credential-provider-process@npm:3.433.0" dependencies: - "@aws-sdk/types": 3.398.0 + "@aws-sdk/types": 3.433.0 "@smithy/property-provider": ^2.0.0 "@smithy/shared-ini-file-loader": ^2.0.6 - "@smithy/types": ^2.2.2 + "@smithy/types": ^2.4.0 tslib: ^2.5.0 - checksum: 54a790ececbb84c7eb37c8933158355d2fcf7a0ef8f73bdbaaa665178725532eafe2b775e7f4e17c75c7fe4bddcef92fa596880905553c0caaeb91a845995c6e + checksum: 42c04f294744a7d2b066b6a9e77f785eb391f49335963d25f87fb09d4b2d9a6acf78dfde7e3b4aca1bfca5eb6d799c557d5800846d8c055a27d5a047e023ba35 languageName: node linkType: hard -"@aws-sdk/credential-provider-sso@npm:3.405.0": - version: 3.405.0 - resolution: "@aws-sdk/credential-provider-sso@npm:3.405.0" +"@aws-sdk/credential-provider-sso@npm:3.433.0": + version: 3.433.0 + resolution: "@aws-sdk/credential-provider-sso@npm:3.433.0" dependencies: - "@aws-sdk/client-sso": 3.405.0 - "@aws-sdk/token-providers": 3.405.0 - "@aws-sdk/types": 3.398.0 + "@aws-sdk/client-sso": 3.433.0 + "@aws-sdk/token-providers": 3.433.0 + "@aws-sdk/types": 3.433.0 "@smithy/property-provider": ^2.0.0 "@smithy/shared-ini-file-loader": ^2.0.6 - "@smithy/types": ^2.2.2 + "@smithy/types": ^2.4.0 tslib: ^2.5.0 - checksum: 3475919da43fbaf095034db07eb116ed9cc8ffe0e27df8ab09d2cce31e32c270444ef633a84179950f278bd5e3dd081635d520b66537baded8597f3382e4370d + checksum: ec4c97402b03722e8c2fc1a6a648d576e04291edc0320908d5f3fb799731451b0aa6618d03edc50eb0e6dfabc529c1a80f723b76095d1bb1874236b643f34739 languageName: node linkType: hard -"@aws-sdk/credential-provider-web-identity@npm:3.398.0": - version: 3.398.0 - resolution: "@aws-sdk/credential-provider-web-identity@npm:3.398.0" +"@aws-sdk/credential-provider-web-identity@npm:3.433.0": + version: 3.433.0 + resolution: "@aws-sdk/credential-provider-web-identity@npm:3.433.0" dependencies: - "@aws-sdk/types": 3.398.0 + "@aws-sdk/types": 3.433.0 "@smithy/property-provider": ^2.0.0 - "@smithy/types": ^2.2.2 + "@smithy/types": ^2.4.0 tslib: ^2.5.0 - checksum: 85245e5818e418d555575b49bae464b088fba51a1011c66c5c3f15fcf43075ce66e60e0f45acfe0446a7e402578aa741a125ec5a396a42be2a841d9472a6dd24 + checksum: a0a76fb939da1f3a221927a8d4707f9f554ab27649cecbe84fb8f99264009c88aa10cf13324013fc0efc62edd450d60fe39525d7b9715b95ef7ae14374ce82d3 languageName: node linkType: hard "@aws-sdk/credential-providers@npm:^3.350.0": - version: 3.405.0 - resolution: "@aws-sdk/credential-providers@npm:3.405.0" + version: 3.433.0 + resolution: "@aws-sdk/credential-providers@npm:3.433.0" dependencies: - "@aws-sdk/client-cognito-identity": 3.405.0 - "@aws-sdk/client-sso": 3.405.0 - "@aws-sdk/client-sts": 3.405.0 - "@aws-sdk/credential-provider-cognito-identity": 3.405.0 - "@aws-sdk/credential-provider-env": 3.398.0 - "@aws-sdk/credential-provider-ini": 3.405.0 - "@aws-sdk/credential-provider-node": 3.405.0 - "@aws-sdk/credential-provider-process": 3.405.0 - "@aws-sdk/credential-provider-sso": 3.405.0 - "@aws-sdk/credential-provider-web-identity": 3.398.0 - "@aws-sdk/types": 3.398.0 + "@aws-sdk/client-cognito-identity": 3.433.0 + "@aws-sdk/client-sso": 3.433.0 + "@aws-sdk/client-sts": 3.433.0 + "@aws-sdk/credential-provider-cognito-identity": 3.433.0 + "@aws-sdk/credential-provider-env": 3.433.0 + "@aws-sdk/credential-provider-http": 3.433.0 + "@aws-sdk/credential-provider-ini": 3.433.0 + "@aws-sdk/credential-provider-node": 3.433.0 + "@aws-sdk/credential-provider-process": 3.433.0 + "@aws-sdk/credential-provider-sso": 3.433.0 + "@aws-sdk/credential-provider-web-identity": 3.433.0 + "@aws-sdk/types": 3.433.0 "@smithy/credential-provider-imds": ^2.0.0 "@smithy/property-provider": ^2.0.0 - "@smithy/types": ^2.2.2 + "@smithy/types": ^2.4.0 tslib: ^2.5.0 - checksum: d43e453abf49322933836ccd3d6ac68c87066ba672da543c80f2a751240b67fc679a5b5fd5554caeae2182df2cb1eb604c4cc407fbff200bf7d61631c5539135 + checksum: e2996cacdcc46aaa260c3549502f714dd4bcc7a0e2d757ee16258e119e58c4bc646c9ff7f303cfc52bf2a04976d463b51449aba82c7f25fe5a4f15264856be0e languageName: node linkType: hard @@ -1046,33 +1070,34 @@ __metadata: linkType: hard "@aws-sdk/lib-storage@npm:^3.350.0": - version: 3.405.0 - resolution: "@aws-sdk/lib-storage@npm:3.405.0" + version: 3.433.0 + resolution: "@aws-sdk/lib-storage@npm:3.433.0" dependencies: "@smithy/abort-controller": ^2.0.1 - "@smithy/middleware-endpoint": ^2.0.5 - "@smithy/smithy-client": ^2.0.5 + "@smithy/middleware-endpoint": ^2.1.3 + "@smithy/smithy-client": ^2.1.12 buffer: 5.6.0 events: 3.3.0 stream-browserify: 3.0.0 tslib: ^2.5.0 peerDependencies: "@aws-sdk/client-s3": ^3.0.0 - checksum: 817f54b492a0d4dde6417541579d6c75691d6637de372ab8167305e3a41604e3c9c39266256346d4ab10f180be0dbb6ded698dc4b8ed351e2a30134d02a6e69d + checksum: 5b266063c14636bc43ab529afef073ce84ba6e6a5934a9a166b5ab5fa1dea43511947627477586972544f82be00a0e9aa771cf00364b49536186c077e1c6b37c languageName: node linkType: hard -"@aws-sdk/middleware-bucket-endpoint@npm:3.405.0": - version: 3.405.0 - resolution: "@aws-sdk/middleware-bucket-endpoint@npm:3.405.0" +"@aws-sdk/middleware-bucket-endpoint@npm:3.433.0": + version: 3.433.0 + resolution: "@aws-sdk/middleware-bucket-endpoint@npm:3.433.0" dependencies: - "@aws-sdk/types": 3.398.0 + "@aws-sdk/types": 3.433.0 "@aws-sdk/util-arn-parser": 3.310.0 - "@smithy/protocol-http": ^2.0.5 - "@smithy/types": ^2.2.2 + "@smithy/node-config-provider": ^2.1.3 + "@smithy/protocol-http": ^3.0.8 + "@smithy/types": ^2.4.0 "@smithy/util-config-provider": ^2.0.0 tslib: ^2.5.0 - checksum: 3e45507ca7d6887e289401171ba26e18a41aa2c165266ae7b9156b27930e839fab48f7cd0a26b68109f7409c768c8ff9719da0dff044a23b0d7110964d407b61 + checksum: ee9e3d93b680b53402d3a0c945dd7778c2c043f9d50d265074ced28f06b715548272e4fb3349c797454b9b95af96e33a379008590ec827b40de127f339892329 languageName: node linkType: hard @@ -1089,115 +1114,116 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/middleware-expect-continue@npm:3.398.0": - version: 3.398.0 - resolution: "@aws-sdk/middleware-expect-continue@npm:3.398.0" +"@aws-sdk/middleware-expect-continue@npm:3.433.0": + version: 3.433.0 + resolution: "@aws-sdk/middleware-expect-continue@npm:3.433.0" dependencies: - "@aws-sdk/types": 3.398.0 - "@smithy/protocol-http": ^2.0.5 - "@smithy/types": ^2.2.2 + "@aws-sdk/types": 3.433.0 + "@smithy/protocol-http": ^3.0.8 + "@smithy/types": ^2.4.0 tslib: ^2.5.0 - checksum: 5eaa935f4478b434e4f80dc5c12822e7c6b6de96dd3fb5031e05d6736cd06ad092126b1f9ca2d413f97db33a690232ac5c2ed67d13bae1cb6f3ab1d69b8b235b + checksum: dcf3b671f5db6e2bfaeceee711a47342025188ce86eacaade44694b16af35f63f5d0b3dac8c41553b30652c71347ecb219c072c2881a92148e0420a8e6553ddb languageName: node linkType: hard -"@aws-sdk/middleware-flexible-checksums@npm:3.400.0": - version: 3.400.0 - resolution: "@aws-sdk/middleware-flexible-checksums@npm:3.400.0" +"@aws-sdk/middleware-flexible-checksums@npm:3.433.0": + version: 3.433.0 + resolution: "@aws-sdk/middleware-flexible-checksums@npm:3.433.0" dependencies: "@aws-crypto/crc32": 3.0.0 "@aws-crypto/crc32c": 3.0.0 - "@aws-sdk/types": 3.398.0 + "@aws-sdk/types": 3.433.0 "@smithy/is-array-buffer": ^2.0.0 - "@smithy/protocol-http": ^2.0.5 - "@smithy/types": ^2.2.2 + "@smithy/protocol-http": ^3.0.8 + "@smithy/types": ^2.4.0 "@smithy/util-utf8": ^2.0.0 tslib: ^2.5.0 - checksum: d2fab21ebf98b3a072fd1062c7ddff1b93db31d2356813b670f70690093f05518612009dde217e21493630aa0e6b8cb62a5c9fe29c81d84a66dab7ebbde6179a + checksum: 06e4925aa78645aa0b3c795f042dd12199cda5e13dd1571465d232e4557ab1cddd6cf329696a1269b85cc922a3686acae0fd5968444707b13a21966e0e5aa7fc languageName: node linkType: hard -"@aws-sdk/middleware-host-header@npm:3.398.0": - version: 3.398.0 - resolution: "@aws-sdk/middleware-host-header@npm:3.398.0" +"@aws-sdk/middleware-host-header@npm:3.433.0": + version: 3.433.0 + resolution: "@aws-sdk/middleware-host-header@npm:3.433.0" dependencies: - "@aws-sdk/types": 3.398.0 - "@smithy/protocol-http": ^2.0.5 - "@smithy/types": ^2.2.2 + "@aws-sdk/types": 3.433.0 + "@smithy/protocol-http": ^3.0.8 + "@smithy/types": ^2.4.0 tslib: ^2.5.0 - checksum: 58a69bca4fa5917cfec27dfe4111fda5c4b3e1c254d8048087898081774e2a2fc695f43031134a9d6ee89f725b32284238a6e3219b3d11f2908409f020c0d717 + checksum: b9a2b1b8c1eceaad9db2c30a38007e131ea4d67b936b1cfa8727cc20ae9a3f95975e24c0d5267c77b05c8c8811bfb8ede83d9f8d4bb8eb9726f03c6e5f21345a languageName: node linkType: hard -"@aws-sdk/middleware-location-constraint@npm:3.398.0": - version: 3.398.0 - resolution: "@aws-sdk/middleware-location-constraint@npm:3.398.0" +"@aws-sdk/middleware-location-constraint@npm:3.433.0": + version: 3.433.0 + resolution: "@aws-sdk/middleware-location-constraint@npm:3.433.0" dependencies: - "@aws-sdk/types": 3.398.0 - "@smithy/types": ^2.2.2 + "@aws-sdk/types": 3.433.0 + "@smithy/types": ^2.4.0 tslib: ^2.5.0 - checksum: 57c562dd12fae1a6cf2263b78981b24429a2d562d66ab6b90ec34892004c8140282357e38b993cda6779bbcf0c2c367e05ff6fb53c4cdc6c505c225bbdd58371 + checksum: c364e34a346c97bce551004aedf439ee8e175600f5b8ac2ef86e58263999b19d418ace1799f5beac6bd45302955823db9dc575c00f699c7177dd07510cebfb9b languageName: node linkType: hard -"@aws-sdk/middleware-logger@npm:3.398.0": - version: 3.398.0 - resolution: "@aws-sdk/middleware-logger@npm:3.398.0" +"@aws-sdk/middleware-logger@npm:3.433.0": + version: 3.433.0 + resolution: "@aws-sdk/middleware-logger@npm:3.433.0" dependencies: - "@aws-sdk/types": 3.398.0 - "@smithy/types": ^2.2.2 + "@aws-sdk/types": 3.433.0 + "@smithy/types": ^2.4.0 tslib: ^2.5.0 - checksum: 7da95e1b3550fb1523232fab758b1976cabca29450fbfe24846cea4e42a28d241665e73c567d311104a114cfa37092b8c01eac0a8dc55ddc9723b79ac9747555 + checksum: 4184122eb5e519e4be2f3e70b3b328488ec861e7e9f586e5589fc7395b759e1bf79a5657f96f3dc13d9b0dcf9a0f0040703ac78e0dc736407319ec6d05b01a64 languageName: node linkType: hard -"@aws-sdk/middleware-recursion-detection@npm:3.398.0": - version: 3.398.0 - resolution: "@aws-sdk/middleware-recursion-detection@npm:3.398.0" +"@aws-sdk/middleware-recursion-detection@npm:3.433.0": + version: 3.433.0 + resolution: "@aws-sdk/middleware-recursion-detection@npm:3.433.0" dependencies: - "@aws-sdk/types": 3.398.0 - "@smithy/protocol-http": ^2.0.5 - "@smithy/types": ^2.2.2 + "@aws-sdk/types": 3.433.0 + "@smithy/protocol-http": ^3.0.8 + "@smithy/types": ^2.4.0 tslib: ^2.5.0 - checksum: ada30093a7e8b529830c7f7f2880ee28a4010d216dd9ca6d7b2e8bd2beca1a9c3d875a21feb12af4eebaec0ce0bad26f03aecca00ff363f844543f586c6ea74c + checksum: 49ba0e4b87a911aa834ae4aa22d395258d4a6f1441c780f9f1356b4cb6bb023cecfb5d551f285f11c1968ee930804acf251c0e8b5fdcd9a8544e9177f1675812 languageName: node linkType: hard -"@aws-sdk/middleware-sdk-s3@npm:3.398.0": - version: 3.398.0 - resolution: "@aws-sdk/middleware-sdk-s3@npm:3.398.0" +"@aws-sdk/middleware-sdk-s3@npm:3.433.0": + version: 3.433.0 + resolution: "@aws-sdk/middleware-sdk-s3@npm:3.433.0" dependencies: - "@aws-sdk/types": 3.398.0 + "@aws-sdk/types": 3.433.0 "@aws-sdk/util-arn-parser": 3.310.0 - "@smithy/protocol-http": ^2.0.5 - "@smithy/types": ^2.2.2 + "@smithy/protocol-http": ^3.0.8 + "@smithy/smithy-client": ^2.1.12 + "@smithy/types": ^2.4.0 tslib: ^2.5.0 - checksum: eeb8a210124ed6b8cb3506766a8210247ed5c5d28fa66d97f77aa4d9f6be17ca91e00d448778c8e4d455598bc4a73b7ede0d79f0a7556be57aba60cb05bb3424 + checksum: 8d9d5d0b0ad552bf34b15ad510f8aa2257e40f1e0a356fe58ce69a1ee1d560bb94573f24e627384c1447d249f6ec17661887a6ff697217caf37f106b5e53d905 languageName: node linkType: hard -"@aws-sdk/middleware-sdk-sqs@npm:3.398.0": - version: 3.398.0 - resolution: "@aws-sdk/middleware-sdk-sqs@npm:3.398.0" +"@aws-sdk/middleware-sdk-sqs@npm:3.433.0": + version: 3.433.0 + resolution: "@aws-sdk/middleware-sdk-sqs@npm:3.433.0" dependencies: - "@aws-sdk/types": 3.398.0 - "@smithy/types": ^2.2.2 + "@aws-sdk/types": 3.433.0 + "@smithy/types": ^2.4.0 "@smithy/util-hex-encoding": ^2.0.0 "@smithy/util-utf8": ^2.0.0 tslib: ^2.5.0 - checksum: 00b66081fc4f8d632773c7348c83b125f1b8c4aacd658068d0df9f1f7ec32da8cfbed84a2e2abcc2c08141b844330253f200c60f9497d6724e5b4ca9aca89720 + checksum: 40ea48bb29851a0647dfd053b3f1d575cf322e523b31c78235307732d7275e6563b1296682323dede39c83387f76d58ecf413b2fc6152d8d77bd7b2dbd60ad0e languageName: node linkType: hard -"@aws-sdk/middleware-sdk-sts@npm:3.398.0": - version: 3.398.0 - resolution: "@aws-sdk/middleware-sdk-sts@npm:3.398.0" +"@aws-sdk/middleware-sdk-sts@npm:3.433.0": + version: 3.433.0 + resolution: "@aws-sdk/middleware-sdk-sts@npm:3.433.0" dependencies: - "@aws-sdk/middleware-signing": 3.398.0 - "@aws-sdk/types": 3.398.0 - "@smithy/types": ^2.2.2 + "@aws-sdk/middleware-signing": 3.433.0 + "@aws-sdk/types": 3.433.0 + "@smithy/types": ^2.4.0 tslib: ^2.5.0 - checksum: 51b1c79c71e18d118e6e885e94185abefb91cace5597706a7e6fe9cac03b5be75c7219d9b2ee3182fddb9bd270aa842c51c3073700e71e1e51585e90d8b634dc + checksum: 116b8c1bff74828cbbae69e84c380c0643c45a7b66ea57731f68aa618b189af01a43931c0a82b2a20f67bc8dd7cec1228ebd65c87e620b06a9b5b3c0673d77a3 languageName: node linkType: hard @@ -1211,42 +1237,42 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/middleware-signing@npm:3.398.0": - version: 3.398.0 - resolution: "@aws-sdk/middleware-signing@npm:3.398.0" +"@aws-sdk/middleware-signing@npm:3.433.0": + version: 3.433.0 + resolution: "@aws-sdk/middleware-signing@npm:3.433.0" dependencies: - "@aws-sdk/types": 3.398.0 + "@aws-sdk/types": 3.433.0 "@smithy/property-provider": ^2.0.0 - "@smithy/protocol-http": ^2.0.5 + "@smithy/protocol-http": ^3.0.8 "@smithy/signature-v4": ^2.0.0 - "@smithy/types": ^2.2.2 - "@smithy/util-middleware": ^2.0.0 + "@smithy/types": ^2.4.0 + "@smithy/util-middleware": ^2.0.5 tslib: ^2.5.0 - checksum: cba44afa280ae515285ea8b7f6c032089865696a8416bd66b4e6114ac6303ed4c4a938687f6dee20a23c003339bce95110eb854da679b107486e63cc9ead3fe6 + checksum: a55defd93fa78e613df223668807c314d6c30e299859743c7ffac94da0340703ff93eccf3940cb216add60c475f6334ccbddb484e322c88416111e0e3aef19b5 languageName: node linkType: hard -"@aws-sdk/middleware-ssec@npm:3.398.0": - version: 3.398.0 - resolution: "@aws-sdk/middleware-ssec@npm:3.398.0" +"@aws-sdk/middleware-ssec@npm:3.433.0": + version: 3.433.0 + resolution: "@aws-sdk/middleware-ssec@npm:3.433.0" dependencies: - "@aws-sdk/types": 3.398.0 - "@smithy/types": ^2.2.2 + "@aws-sdk/types": 3.433.0 + "@smithy/types": ^2.4.0 tslib: ^2.5.0 - checksum: d00514654fcb19072c36cf4ab4239e4679b2ede322b41f5d979b6924d78b4ad40d5521b926fd422ed689a78af0e0acc7e7cb4bad1b3a5541d0e57118778712a0 + checksum: e1e1c631686f4a89cf02520361533a007d98a3c9faa868d1462bf8b287e77fd86da896dc7610be37cf8cd66fa672280035dc2169fa15ce1a8debb28fff3cb949 languageName: node linkType: hard -"@aws-sdk/middleware-user-agent@npm:3.398.0": - version: 3.398.0 - resolution: "@aws-sdk/middleware-user-agent@npm:3.398.0" +"@aws-sdk/middleware-user-agent@npm:3.433.0": + version: 3.433.0 + resolution: "@aws-sdk/middleware-user-agent@npm:3.433.0" dependencies: - "@aws-sdk/types": 3.398.0 - "@aws-sdk/util-endpoints": 3.398.0 - "@smithy/protocol-http": ^2.0.5 - "@smithy/types": ^2.2.2 + "@aws-sdk/types": 3.433.0 + "@aws-sdk/util-endpoints": 3.433.0 + "@smithy/protocol-http": ^3.0.8 + "@smithy/types": ^2.4.0 tslib: ^2.5.0 - checksum: 3113e70a1c395b565a6811d6d486941a3f159ecb412a329edf85e652509fd679556136962a303086ad913b219a6531171d1e2d427c24427d9486e66afa485952 + checksum: 91d31db0f9ae660077142c407f1c833f8dffec7cbfd1538cd2af7bfeeb9f6bc7f3563381f975cae3e38d05d3f613fbe0c165625030241e8561d1feab01c3affe languageName: node linkType: hard @@ -1294,21 +1320,29 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/signature-v4-multi-region@npm:3.398.0": - version: 3.398.0 - resolution: "@aws-sdk/signature-v4-multi-region@npm:3.398.0" +"@aws-sdk/region-config-resolver@npm:3.433.0": + version: 3.433.0 + resolution: "@aws-sdk/region-config-resolver@npm:3.433.0" dependencies: - "@aws-sdk/types": 3.398.0 - "@smithy/protocol-http": ^2.0.5 - "@smithy/signature-v4": ^2.0.0 - "@smithy/types": ^2.2.2 + "@smithy/node-config-provider": ^2.1.3 + "@smithy/types": ^2.4.0 + "@smithy/util-config-provider": ^2.0.0 + "@smithy/util-middleware": ^2.0.5 tslib: ^2.5.0 - peerDependencies: - "@aws-sdk/signature-v4-crt": ^3.118.0 - peerDependenciesMeta: - "@aws-sdk/signature-v4-crt": - optional: true - checksum: d6acc0fa94eef3f7d6191d210cf348ff50d6df1ac0b382df5cf4a1d19284e3e093f63352db53fa43077d5dc12f20c96e5fb5092322c17705960886477f9db2b2 + checksum: 80a80707c2c991c16e6a52bde426704337b119d89cdedd70af72a7c52d2ee285a6cdcd355e45cb630e6d2dc3a7f57749b3276b9fff851d57c57916ef5ee2616f + languageName: node + linkType: hard + +"@aws-sdk/signature-v4-multi-region@npm:3.433.0": + version: 3.433.0 + resolution: "@aws-sdk/signature-v4-multi-region@npm:3.433.0" + dependencies: + "@aws-sdk/types": 3.433.0 + "@smithy/protocol-http": ^3.0.8 + "@smithy/signature-v4": ^2.0.0 + "@smithy/types": ^2.4.0 + tslib: ^2.5.0 + checksum: 7bd0d911d16385dd47792421b2a1a19284f121faf6b3fa3b400d6959d11888dbefab6994d3fb2efca85d4cae257a80142579352e7d2a0ae6f487c98c0369efc3 languageName: node linkType: hard @@ -1328,46 +1362,46 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/token-providers@npm:3.405.0": - version: 3.405.0 - resolution: "@aws-sdk/token-providers@npm:3.405.0" +"@aws-sdk/token-providers@npm:3.433.0": + version: 3.433.0 + resolution: "@aws-sdk/token-providers@npm:3.433.0" dependencies: "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/middleware-host-header": 3.398.0 - "@aws-sdk/middleware-logger": 3.398.0 - "@aws-sdk/middleware-recursion-detection": 3.398.0 - "@aws-sdk/middleware-user-agent": 3.398.0 - "@aws-sdk/types": 3.398.0 - "@aws-sdk/util-endpoints": 3.398.0 - "@aws-sdk/util-user-agent-browser": 3.398.0 - "@aws-sdk/util-user-agent-node": 3.405.0 - "@smithy/config-resolver": ^2.0.5 - "@smithy/fetch-http-handler": ^2.0.5 - "@smithy/hash-node": ^2.0.5 - "@smithy/invalid-dependency": ^2.0.5 - "@smithy/middleware-content-length": ^2.0.5 - "@smithy/middleware-endpoint": ^2.0.5 - "@smithy/middleware-retry": ^2.0.5 - "@smithy/middleware-serde": ^2.0.5 - "@smithy/middleware-stack": ^2.0.0 - "@smithy/node-config-provider": ^2.0.6 - "@smithy/node-http-handler": ^2.0.5 + "@aws-sdk/middleware-host-header": 3.433.0 + "@aws-sdk/middleware-logger": 3.433.0 + "@aws-sdk/middleware-recursion-detection": 3.433.0 + "@aws-sdk/middleware-user-agent": 3.433.0 + "@aws-sdk/types": 3.433.0 + "@aws-sdk/util-endpoints": 3.433.0 + "@aws-sdk/util-user-agent-browser": 3.433.0 + "@aws-sdk/util-user-agent-node": 3.433.0 + "@smithy/config-resolver": ^2.0.16 + "@smithy/fetch-http-handler": ^2.2.4 + "@smithy/hash-node": ^2.0.12 + "@smithy/invalid-dependency": ^2.0.12 + "@smithy/middleware-content-length": ^2.0.14 + "@smithy/middleware-endpoint": ^2.1.3 + "@smithy/middleware-retry": ^2.0.18 + "@smithy/middleware-serde": ^2.0.12 + "@smithy/middleware-stack": ^2.0.6 + "@smithy/node-config-provider": ^2.1.3 + "@smithy/node-http-handler": ^2.1.8 "@smithy/property-provider": ^2.0.0 - "@smithy/protocol-http": ^2.0.5 + "@smithy/protocol-http": ^3.0.8 "@smithy/shared-ini-file-loader": ^2.0.6 - "@smithy/smithy-client": ^2.0.5 - "@smithy/types": ^2.2.2 - "@smithy/url-parser": ^2.0.5 + "@smithy/smithy-client": ^2.1.12 + "@smithy/types": ^2.4.0 + "@smithy/url-parser": ^2.0.12 "@smithy/util-base64": ^2.0.0 "@smithy/util-body-length-browser": ^2.0.0 "@smithy/util-body-length-node": ^2.1.0 - "@smithy/util-defaults-mode-browser": ^2.0.6 - "@smithy/util-defaults-mode-node": ^2.0.6 - "@smithy/util-retry": ^2.0.0 + "@smithy/util-defaults-mode-browser": ^2.0.16 + "@smithy/util-defaults-mode-node": ^2.0.21 + "@smithy/util-retry": ^2.0.5 "@smithy/util-utf8": ^2.0.0 tslib: ^2.5.0 - checksum: e7a41844ade3f9b4c94451ac71eedaaa370f5c07e982f431f96b0609a1ade1a455a7a46e1e568ba481e3462e97de04d5adff34007c516737e56fcefe93b5bb3f + checksum: 1ac166b74249080f856a679c44244e758c333bd3325c4e6ead9e3b9638a531eed79ce561247de364372caf840788922cb633cb4f646cd4d333193544ec15ffc8 languageName: node linkType: hard @@ -1381,13 +1415,13 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/types@npm:3.398.0, @aws-sdk/types@npm:^3.222.0, @aws-sdk/types@npm:^3.347.0": - version: 3.398.0 - resolution: "@aws-sdk/types@npm:3.398.0" +"@aws-sdk/types@npm:3.433.0, @aws-sdk/types@npm:^3.222.0, @aws-sdk/types@npm:^3.347.0": + version: 3.433.0 + resolution: "@aws-sdk/types@npm:3.433.0" dependencies: - "@smithy/types": ^2.2.2 + "@smithy/types": ^2.4.0 tslib: ^2.5.0 - checksum: b0c3531336e3dc0a3e2524199026a2366a29a4eee07195bffd6a9d48c778924183ac9894029b1053d0f744121cec3b7d397828f2065acf37eea79d3106af1273 + checksum: f7460897bee2835b06cd957853b17eb4eb4fe1e7f66f6ca97e2fc0c642ff7093011d73cbde64f097cdcc462f1f72c3e0980472c716eefd656c61dac95e7e060d languageName: node linkType: hard @@ -1421,13 +1455,13 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/util-endpoints@npm:3.398.0": - version: 3.398.0 - resolution: "@aws-sdk/util-endpoints@npm:3.398.0" +"@aws-sdk/util-endpoints@npm:3.433.0": + version: 3.433.0 + resolution: "@aws-sdk/util-endpoints@npm:3.433.0" dependencies: - "@aws-sdk/types": 3.398.0 + "@aws-sdk/types": 3.433.0 tslib: ^2.5.0 - checksum: af7df2c99f067641a369f54baf6def9c0dd4ea433f295d80afaebad9698a73ca7b969005c9a9b38a11611618f11b5ae968de7521ddfc35e5a3fa5f1e153687e7 + checksum: 0a688f1a21fe83ce1aa69e87e2f56190cabfa721bbb3d1e45bc698cbbae0a4a22c523cf1c1ac5c6c4a63a2a957b3df928ef2ac9d583cbd276341b3d36e21c672 languageName: node linkType: hard @@ -1479,32 +1513,32 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/util-user-agent-browser@npm:3.398.0": - version: 3.398.0 - resolution: "@aws-sdk/util-user-agent-browser@npm:3.398.0" +"@aws-sdk/util-user-agent-browser@npm:3.433.0": + version: 3.433.0 + resolution: "@aws-sdk/util-user-agent-browser@npm:3.433.0" dependencies: - "@aws-sdk/types": 3.398.0 - "@smithy/types": ^2.2.2 + "@aws-sdk/types": 3.433.0 + "@smithy/types": ^2.4.0 bowser: ^2.11.0 tslib: ^2.5.0 - checksum: 838879f9741e9c43f34bc3e4c29c60a4f43029a06808e4a91a30f943c35636bba93caf74db38f25752c206d3d2157b3ba8ef3e053d9d015e76ec76d15cacc6a8 + checksum: ca762fdf65f0b17832dd6f9d1e48e3c57d54cb79e1ae26fa882a7c13cae2e14b138ec07d4ef766b40c17ec558f1cfd9c1d9ecf9ccb369472abdef79adc1e3189 languageName: node linkType: hard -"@aws-sdk/util-user-agent-node@npm:3.405.0": - version: 3.405.0 - resolution: "@aws-sdk/util-user-agent-node@npm:3.405.0" +"@aws-sdk/util-user-agent-node@npm:3.433.0": + version: 3.433.0 + resolution: "@aws-sdk/util-user-agent-node@npm:3.433.0" dependencies: - "@aws-sdk/types": 3.398.0 - "@smithy/node-config-provider": ^2.0.6 - "@smithy/types": ^2.2.2 + "@aws-sdk/types": 3.433.0 + "@smithy/node-config-provider": ^2.1.3 + "@smithy/types": ^2.4.0 tslib: ^2.5.0 peerDependencies: aws-crt: ">=1.0.0" peerDependenciesMeta: aws-crt: optional: true - checksum: e4a0fc8d5fc98b4d7fa31b786541c0e04f8977c2e6236bf0581e23bcb91592598281d196f38cab857e33cc8852f37fb17ddad1d39b751c4a0551a7735a3811c9 + checksum: dcf49bbbeec20eeb2f95d0b187b967d0d44ba39c82aa517a81784bae2abc7bf4749c7427285f4cefa4097546fa7dea39490b3fc8d29b34d575446073c0e9f7a1 languageName: node linkType: hard @@ -15148,13 +15182,13 @@ __metadata: languageName: node linkType: hard -"@smithy/abort-controller@npm:^2.0.1, @smithy/abort-controller@npm:^2.0.5": - version: 2.0.5 - resolution: "@smithy/abort-controller@npm:2.0.5" +"@smithy/abort-controller@npm:^2.0.1, @smithy/abort-controller@npm:^2.0.12": + version: 2.0.12 + resolution: "@smithy/abort-controller@npm:2.0.12" dependencies: - "@smithy/types": ^2.2.2 + "@smithy/types": ^2.4.0 tslib: ^2.5.0 - checksum: 2e328942b9f42c1186943ed300acd1bd0dbbf0b69ec4826a124fb1e649bcaef556c24d13023439dac0ce93cf37a46e3a277fe8a683fcaee95537d192a9f5d7da + checksum: 187bbe7819271de99c8218d0df08d7b56131a7563e1822ef3142ecdad258201c9cc792e222d59145f6f59f6260e3c4ae2ef09b76370daa393797fad1b3d56551 languageName: node linkType: hard @@ -15177,141 +15211,142 @@ __metadata: languageName: node linkType: hard -"@smithy/config-resolver@npm:^2.0.5": - version: 2.0.5 - resolution: "@smithy/config-resolver@npm:2.0.5" +"@smithy/config-resolver@npm:^2.0.16": + version: 2.0.16 + resolution: "@smithy/config-resolver@npm:2.0.16" dependencies: - "@smithy/types": ^2.2.2 + "@smithy/node-config-provider": ^2.1.3 + "@smithy/types": ^2.4.0 "@smithy/util-config-provider": ^2.0.0 - "@smithy/util-middleware": ^2.0.0 + "@smithy/util-middleware": ^2.0.5 tslib: ^2.5.0 - checksum: 324bc188246462ec7b29f128a92f9135620a37d1bf7c8071c3f51fc8249e8baafe8d8722e7547327c9fea8ad292c42383d211daa24dc8b627baacbeae62c3d1b + checksum: d92948bc42e59c451ff0cf5cf803b6cb13c664dd920d43c0f5a647193c93aa3634fa88391e85dad1c159f535432bfdd7653de8450599b4170e4adced2c8c9850 languageName: node linkType: hard -"@smithy/credential-provider-imds@npm:^2.0.0, @smithy/credential-provider-imds@npm:^2.0.7": - version: 2.0.7 - resolution: "@smithy/credential-provider-imds@npm:2.0.7" +"@smithy/credential-provider-imds@npm:^2.0.0, @smithy/credential-provider-imds@npm:^2.0.18": + version: 2.0.18 + resolution: "@smithy/credential-provider-imds@npm:2.0.18" dependencies: - "@smithy/node-config-provider": ^2.0.7 - "@smithy/property-provider": ^2.0.6 - "@smithy/types": ^2.2.2 - "@smithy/url-parser": ^2.0.5 + "@smithy/node-config-provider": ^2.1.3 + "@smithy/property-provider": ^2.0.13 + "@smithy/types": ^2.4.0 + "@smithy/url-parser": ^2.0.12 tslib: ^2.5.0 - checksum: e4caa4d2f34b9788345fb13ed7d363bc70491e2ac505f2c20d308a3e228a6705666e540ebe07fb81b1369c8893dc4ca64e0997f55221b411335070a83dd48729 + checksum: 12e4a436429b140a2d85e34842d9deb42d7507fe3d3b26070f45f484bf8ecba9ac4fe3f9deb87252f3f6e5ae31d19c9e61147079c69716c2f4bcd0aa4d2c73b8 languageName: node linkType: hard -"@smithy/eventstream-codec@npm:^2.0.1, @smithy/eventstream-codec@npm:^2.0.5": - version: 2.0.5 - resolution: "@smithy/eventstream-codec@npm:2.0.5" +"@smithy/eventstream-codec@npm:^2.0.1, @smithy/eventstream-codec@npm:^2.0.12": + version: 2.0.12 + resolution: "@smithy/eventstream-codec@npm:2.0.12" dependencies: "@aws-crypto/crc32": 3.0.0 - "@smithy/types": ^2.2.2 + "@smithy/types": ^2.4.0 "@smithy/util-hex-encoding": ^2.0.0 tslib: ^2.5.0 - checksum: 472c0b1652e2afcf9dd9a8f122255d8b3b46019ead3c12ce8ceb3242d2dca525c5dcf6fd2fe57e03621283c8762b44d553a10eb0ce35eecaf2f4366c45bbf683 + checksum: 38e457645512d06e9b74bdb8b33df8b712e96b97e59b7cd51c9d31686ba71b7f4e094615dedcca7a1790fdb7e52f3e0791af7d7b66ca46e0556544827a311d5b languageName: node linkType: hard -"@smithy/eventstream-serde-browser@npm:^2.0.5": - version: 2.0.5 - resolution: "@smithy/eventstream-serde-browser@npm:2.0.5" +"@smithy/eventstream-serde-browser@npm:^2.0.12": + version: 2.0.12 + resolution: "@smithy/eventstream-serde-browser@npm:2.0.12" dependencies: - "@smithy/eventstream-serde-universal": ^2.0.5 - "@smithy/types": ^2.2.2 + "@smithy/eventstream-serde-universal": ^2.0.12 + "@smithy/types": ^2.4.0 tslib: ^2.5.0 - checksum: 5fb5f31b20d8b8e614159ed4fa7ad619d303f220bcf2f9bb13ccf07e91ccd187a898cf9c09c97fe4b48d49ba702d1e3d5ad833591afd0051253638204cfafa4b + checksum: 685d9d874e019d62cacac4d98c19ffbd8496c68efa0968f43f93cbcf3bcaa0db2c5ae060d0550c50bd24a6b1a15ea2b94ce7fed121733bb060dd536b7e618ff6 languageName: node linkType: hard -"@smithy/eventstream-serde-config-resolver@npm:^2.0.5": - version: 2.0.5 - resolution: "@smithy/eventstream-serde-config-resolver@npm:2.0.5" +"@smithy/eventstream-serde-config-resolver@npm:^2.0.12": + version: 2.0.12 + resolution: "@smithy/eventstream-serde-config-resolver@npm:2.0.12" dependencies: - "@smithy/types": ^2.2.2 + "@smithy/types": ^2.4.0 tslib: ^2.5.0 - checksum: e1914a9b422c2cbcff1e8897e59ad0f8ca81116c08180f0316ba4adbfc72115ccbff5453488e8cba15431f980adc0a09695fb437b67df8e11b2ebbb0b70036c5 + checksum: 1fbed5f1b1c5fb8830d9940e2d8d56e1c33dd3ce5e5a79f259f0dacaa8ec6dfa4203163b63e707769e4153d1d17680cbf195690b596a44da6f43a62f66bad1aa languageName: node linkType: hard -"@smithy/eventstream-serde-node@npm:^2.0.5": - version: 2.0.5 - resolution: "@smithy/eventstream-serde-node@npm:2.0.5" +"@smithy/eventstream-serde-node@npm:^2.0.12": + version: 2.0.12 + resolution: "@smithy/eventstream-serde-node@npm:2.0.12" dependencies: - "@smithy/eventstream-serde-universal": ^2.0.5 - "@smithy/types": ^2.2.2 + "@smithy/eventstream-serde-universal": ^2.0.12 + "@smithy/types": ^2.4.0 tslib: ^2.5.0 - checksum: a13a432a13418d7d5f766b1dce312c004691b6cd1991d9bae74e65a2b5bcb4f4d8af285ad6c91edbbc8b9b50d4a1405432e0db38e52401c134113c00ea74c5b4 + checksum: 541f57903daa13d78b09b23ac74a6643e8260b4c9afe9375344ccc347c62fdc1fc0c162f763f733b7bd46f8ceb240890cfc89f786bd49efd57cf43d74c9b3f6b languageName: node linkType: hard -"@smithy/eventstream-serde-universal@npm:^2.0.5": - version: 2.0.5 - resolution: "@smithy/eventstream-serde-universal@npm:2.0.5" +"@smithy/eventstream-serde-universal@npm:^2.0.12": + version: 2.0.12 + resolution: "@smithy/eventstream-serde-universal@npm:2.0.12" dependencies: - "@smithy/eventstream-codec": ^2.0.5 - "@smithy/types": ^2.2.2 + "@smithy/eventstream-codec": ^2.0.12 + "@smithy/types": ^2.4.0 tslib: ^2.5.0 - checksum: 94a49055f025a9aac5e115038bdebdc8c88086e58f25d32c3e57f2d788c880e113eccec4633b485b83e8b1e67d42d3870acedbf27365200fd436ebc13948f9e9 + checksum: fea8ad03da25f92b0f3a0b20398a410bbf264aad6318b2cea9c8740cd86b1b130f3b52a07fb2b25e82b19eb44d60ec3770b17667a6842d404548e200a085ead9 languageName: node linkType: hard -"@smithy/fetch-http-handler@npm:^2.0.5": - version: 2.0.5 - resolution: "@smithy/fetch-http-handler@npm:2.0.5" +"@smithy/fetch-http-handler@npm:^2.2.4": + version: 2.2.4 + resolution: "@smithy/fetch-http-handler@npm:2.2.4" dependencies: - "@smithy/protocol-http": ^2.0.5 - "@smithy/querystring-builder": ^2.0.5 - "@smithy/types": ^2.2.2 + "@smithy/protocol-http": ^3.0.8 + "@smithy/querystring-builder": ^2.0.12 + "@smithy/types": ^2.4.0 "@smithy/util-base64": ^2.0.0 tslib: ^2.5.0 - checksum: dae54728eca4e47b0e9604dd87cc503887f62d796b2f92efbbcdfcb4b7432454fa866898416ddf7fd02e7a7d06eb2ba0f1709e418cb1ce763764797f53188b46 + checksum: 37b9dfdd35ff4a997de07f3aacdaf4acb3881b3586b3c2bbf27f163066a241d54ce471fe100353e2bea3f3cd71ec8ef57a0a1f78f897e11c9166f75b06902cfc languageName: node linkType: hard -"@smithy/hash-blob-browser@npm:^2.0.5": - version: 2.0.5 - resolution: "@smithy/hash-blob-browser@npm:2.0.5" +"@smithy/hash-blob-browser@npm:^2.0.12": + version: 2.0.12 + resolution: "@smithy/hash-blob-browser@npm:2.0.12" dependencies: "@smithy/chunked-blob-reader": ^2.0.0 "@smithy/chunked-blob-reader-native": ^2.0.0 - "@smithy/types": ^2.2.2 + "@smithy/types": ^2.4.0 tslib: ^2.5.0 - checksum: b66102c035d669169ef28c2ddc7115b0bb2620159eb0768782d832cc85324222e9463945477dc8b61daa5036251e76a0dd05ddda13e2464373cc31a0b05f94f1 + checksum: 212dd0200020c13c98efaea4544d81acf286ecebf6b8751b7205797da7b0282b17df1e85385525a479c7d3a1f7fd17100f8083974fb33e220e084f310b86f578 languageName: node linkType: hard -"@smithy/hash-node@npm:^2.0.5": - version: 2.0.5 - resolution: "@smithy/hash-node@npm:2.0.5" +"@smithy/hash-node@npm:^2.0.12": + version: 2.0.12 + resolution: "@smithy/hash-node@npm:2.0.12" dependencies: - "@smithy/types": ^2.2.2 + "@smithy/types": ^2.4.0 "@smithy/util-buffer-from": ^2.0.0 "@smithy/util-utf8": ^2.0.0 tslib: ^2.5.0 - checksum: bfc0441464b0f37905feb715bf86fb0ded8be3d31e6b28a1e05bfd48b45fcb929f93be3b25d59a89bb0156cbeb9ba5a245ca807fc42f43b26dd77ed18a3794fa + checksum: e2b36a60c812fb716091ea06d205113cdee9ba4dfdd608bb1723e635f9bd53c4f8a9bd038f2c6fb369a91beee3189123925e2543ee373b81a77d62e71170523c languageName: node linkType: hard -"@smithy/hash-stream-node@npm:^2.0.5": - version: 2.0.5 - resolution: "@smithy/hash-stream-node@npm:2.0.5" +"@smithy/hash-stream-node@npm:^2.0.12": + version: 2.0.12 + resolution: "@smithy/hash-stream-node@npm:2.0.12" dependencies: - "@smithy/types": ^2.2.2 + "@smithy/types": ^2.4.0 "@smithy/util-utf8": ^2.0.0 tslib: ^2.5.0 - checksum: c1b1afa1595bf87101a906d28b7ce3fccfd9d32314305bf143ee126cce2977aa36fb57a12f6830f53008aadfe0161e5b4ad7a193ba00af652eaff27a50a3632b + checksum: 83b395ad6e529a23f82ca006597b08e5e83cf35e92b6813624cb8735632f7271e13249ffc687d6c21dbabccec92fc73fcf747e7dd7096d6d913a33d1e6842c7d languageName: node linkType: hard -"@smithy/invalid-dependency@npm:^2.0.5": - version: 2.0.5 - resolution: "@smithy/invalid-dependency@npm:2.0.5" +"@smithy/invalid-dependency@npm:^2.0.12": + version: 2.0.12 + resolution: "@smithy/invalid-dependency@npm:2.0.12" dependencies: - "@smithy/types": ^2.2.2 + "@smithy/types": ^2.4.0 tslib: ^2.5.0 - checksum: b24444cf315fb52078c6d4faaddccc15db7c8068b14bf3d4742ac6addd6719e94ac17b85cc6012714cbca047eb186ac54d632fd3ea5725a523d2fd7e903f0e81 + checksum: 3b8a218ad67d3eca06d1646f21e52bf7704449fec714a0c113ab5db100605b05b37b12facd00b92df1203d5bec66ff4ed5e763691ac7c098b85854f194eefb58 languageName: node linkType: hard @@ -15324,155 +15359,161 @@ __metadata: languageName: node linkType: hard -"@smithy/md5-js@npm:^2.0.5": - version: 2.0.5 - resolution: "@smithy/md5-js@npm:2.0.5" +"@smithy/md5-js@npm:^2.0.12": + version: 2.0.12 + resolution: "@smithy/md5-js@npm:2.0.12" dependencies: - "@smithy/types": ^2.2.2 + "@smithy/types": ^2.4.0 "@smithy/util-utf8": ^2.0.0 tslib: ^2.5.0 - checksum: 4b253d6762750f751431d881f4d4fb6e0a0d0bc63744a637cff7cc51d242a3d84b906c3fed2500324f13236c16946f18a88b51f35b5ef8edd4ad1ffaf69fdac0 + checksum: c6b90d31d89ff386d13b8ecad7aeb2d63fd6b534f0954745b34690fdb4b2520f228769c4ef2967a476a2cd5d6de0151be2998714c5ba1fde2253976012b18fba languageName: node linkType: hard -"@smithy/middleware-content-length@npm:^2.0.5": - version: 2.0.5 - resolution: "@smithy/middleware-content-length@npm:2.0.5" +"@smithy/middleware-content-length@npm:^2.0.14": + version: 2.0.14 + resolution: "@smithy/middleware-content-length@npm:2.0.14" dependencies: - "@smithy/protocol-http": ^2.0.5 - "@smithy/types": ^2.2.2 + "@smithy/protocol-http": ^3.0.8 + "@smithy/types": ^2.4.0 tslib: ^2.5.0 - checksum: 1dfbac11f63a38a73bb33883c4575d0f74982000ad173a4b723d505734abad3cd20962635aa63231bd0ac1bcdebe75a4f95520c9779d542e6937b70a3dbc84c6 + checksum: ff289f3c7ec4dbf53297e5968196444a387ddd3e67cb8426e40cadc096e7a5127e30315520761aa53a98daecfde0e6ecc195a722d4b31b7662f63b3286474224 languageName: node linkType: hard -"@smithy/middleware-endpoint@npm:^2.0.5": - version: 2.0.5 - resolution: "@smithy/middleware-endpoint@npm:2.0.5" +"@smithy/middleware-endpoint@npm:^2.1.3": + version: 2.1.3 + resolution: "@smithy/middleware-endpoint@npm:2.1.3" dependencies: - "@smithy/middleware-serde": ^2.0.5 - "@smithy/types": ^2.2.2 - "@smithy/url-parser": ^2.0.5 - "@smithy/util-middleware": ^2.0.0 + "@smithy/middleware-serde": ^2.0.12 + "@smithy/node-config-provider": ^2.1.3 + "@smithy/shared-ini-file-loader": ^2.2.2 + "@smithy/types": ^2.4.0 + "@smithy/url-parser": ^2.0.12 + "@smithy/util-middleware": ^2.0.5 tslib: ^2.5.0 - checksum: 258ad9e51dc39aa0b6f16af14bdc80871e3fa0c9649e1ad83d3e8c7e14b4139f8dcba4fbe0953010fde08ba9af3b27611d70627368d94672232b3b667ac398ac + checksum: 62dfcb031bccb575a33f04ca8d684634eb03585530b28ffe759242dc13fef7e11755673d3d7d1be15a90f933f579614bc78d83dad0747e3bf344c60cb2212d92 languageName: node linkType: hard -"@smithy/middleware-retry@npm:^2.0.5": - version: 2.0.5 - resolution: "@smithy/middleware-retry@npm:2.0.5" +"@smithy/middleware-retry@npm:^2.0.18": + version: 2.0.18 + resolution: "@smithy/middleware-retry@npm:2.0.18" dependencies: - "@smithy/protocol-http": ^2.0.5 - "@smithy/service-error-classification": ^2.0.0 - "@smithy/types": ^2.2.2 - "@smithy/util-middleware": ^2.0.0 - "@smithy/util-retry": ^2.0.0 + "@smithy/node-config-provider": ^2.1.3 + "@smithy/protocol-http": ^3.0.8 + "@smithy/service-error-classification": ^2.0.5 + "@smithy/types": ^2.4.0 + "@smithy/util-middleware": ^2.0.5 + "@smithy/util-retry": ^2.0.5 tslib: ^2.5.0 uuid: ^8.3.2 - checksum: 486d3a1d1e706abbb4853c1ee4db313578c19b2529a7c9c2f9e2afd4789f25d247f74895f2c745a49eed6f4c873bd00c2ad3da0f1d170da09c4e90798ca2c3b7 + checksum: 7372232d35fbff0f770e4ec608940c81a776040971556e3a328980ebcceb9f9469eb09e5d6014811c42759c77653ded4cbbccc21b7c26f3405c7299062a523b3 languageName: node linkType: hard -"@smithy/middleware-serde@npm:^2.0.5": - version: 2.0.5 - resolution: "@smithy/middleware-serde@npm:2.0.5" +"@smithy/middleware-serde@npm:^2.0.12": + version: 2.0.12 + resolution: "@smithy/middleware-serde@npm:2.0.12" dependencies: - "@smithy/types": ^2.2.2 + "@smithy/types": ^2.4.0 tslib: ^2.5.0 - checksum: 51c2ce5158106757da351fce512ea709c1cf7a2724f5e4430bf18c4e70571a806ebc7f09e38b3281fc81d5446da106450ee84c4508607cff83078c58be61f8dd + checksum: 5e8b04511c017bcadbf1a6efc6c71588586cabaa130df10562a74159d128e56965581799e80a0645557bab03df8bea187b21cb1fd536e17cf73148e5b678925f languageName: node linkType: hard -"@smithy/middleware-stack@npm:^2.0.0": - version: 2.0.0 - resolution: "@smithy/middleware-stack@npm:2.0.0" - dependencies: - tslib: ^2.5.0 - checksum: dd23dff4da44964e936c5ae465de9416bb8dd67da2ae72ffe450156ad52e82475836ed5c18d82cef7edeca421b33d363889549e34482008eeb9ca0bb97f061f2 - languageName: node - linkType: hard - -"@smithy/node-config-provider@npm:^2.0.6, @smithy/node-config-provider@npm:^2.0.7": - version: 2.0.7 - resolution: "@smithy/node-config-provider@npm:2.0.7" - dependencies: - "@smithy/property-provider": ^2.0.6 - "@smithy/shared-ini-file-loader": ^2.0.6 - "@smithy/types": ^2.2.2 - tslib: ^2.5.0 - checksum: 5bb2e41ada99a4a94a0b087b2e5d2a5e4e1e5d4ed8cb7bf84258ff662a8f649d70870ec40587d4ee92a93dbc1fa904189d71d691c559252e3dc8ddf20990910b - languageName: node - linkType: hard - -"@smithy/node-http-handler@npm:^2.0.5": - version: 2.0.5 - resolution: "@smithy/node-http-handler@npm:2.0.5" - dependencies: - "@smithy/abort-controller": ^2.0.5 - "@smithy/protocol-http": ^2.0.5 - "@smithy/querystring-builder": ^2.0.5 - "@smithy/types": ^2.2.2 - tslib: ^2.5.0 - checksum: fb2c6faab1d0107e7610c4ed723114c58de4b396e4e76a13df7831ef4d22ae188138af8becd749b95acec94a44e3d673b2ca9fee5217928ca3bea52c6e5319b0 - languageName: node - linkType: hard - -"@smithy/property-provider@npm:^2.0.0, @smithy/property-provider@npm:^2.0.6": +"@smithy/middleware-stack@npm:^2.0.6": version: 2.0.6 - resolution: "@smithy/property-provider@npm:2.0.6" + resolution: "@smithy/middleware-stack@npm:2.0.6" dependencies: - "@smithy/types": ^2.2.2 + "@smithy/types": ^2.4.0 tslib: ^2.5.0 - checksum: 7292d89603c3e98c8d771bb7a9f5fac992608927808d7e06b68213514bf2b894ba5360f2a2b0ccd1f0a1b6aa3c31689637b5fce3eebcaa7aec1dd980a6a1e624 + checksum: 3626b71364b83d091751cd6ad7f7bc655a1746f970c63ea3205c2bc171a596a734394d556fcf66f1458b8151fe54cab5bf774ee66b4d40c3dd9d9e7d9114f905 languageName: node linkType: hard -"@smithy/protocol-http@npm:^2.0.5": - version: 2.0.5 - resolution: "@smithy/protocol-http@npm:2.0.5" +"@smithy/node-config-provider@npm:^2.1.3": + version: 2.1.3 + resolution: "@smithy/node-config-provider@npm:2.1.3" dependencies: - "@smithy/types": ^2.2.2 + "@smithy/property-provider": ^2.0.13 + "@smithy/shared-ini-file-loader": ^2.2.2 + "@smithy/types": ^2.4.0 tslib: ^2.5.0 - checksum: 0c9dbc7c90a3908626260156ec26e8fc83eb257c002a01c4f840efc19065a9397df8ebaf9ed7f521baea5b2792e3476143ae8bd7e7f21aaa454bcb894c3d1658 + checksum: 22e188fbc099616e50661afb0decb88ba67b396a1fbed122ad2a857a2a9e4a80d34a68d793cca6cb9e34a299ca1cde2bf3b9ab2b97b733bae838852acec080c5 languageName: node linkType: hard -"@smithy/querystring-builder@npm:^2.0.5": - version: 2.0.5 - resolution: "@smithy/querystring-builder@npm:2.0.5" +"@smithy/node-http-handler@npm:^2.1.8": + version: 2.1.8 + resolution: "@smithy/node-http-handler@npm:2.1.8" dependencies: - "@smithy/types": ^2.2.2 + "@smithy/abort-controller": ^2.0.12 + "@smithy/protocol-http": ^3.0.8 + "@smithy/querystring-builder": ^2.0.12 + "@smithy/types": ^2.4.0 + tslib: ^2.5.0 + checksum: 17e51b8c0b2dc7dcf7e32bc2cbd836220f86355b4d630f0b94fad4ed79dfa737b4ecbb7c72752b59e6849ca342c4a3ade89846e0276d986a72d25ed280ce3a8c + languageName: node + linkType: hard + +"@smithy/property-provider@npm:^2.0.0, @smithy/property-provider@npm:^2.0.13": + version: 2.0.13 + resolution: "@smithy/property-provider@npm:2.0.13" + dependencies: + "@smithy/types": ^2.4.0 + tslib: ^2.5.0 + checksum: 62443ec94d4dafaa0c2f285957264b3b548fd5a164ebd1ef02e4286c55d3e07e4d22d695fc2857ad0b1e406d01bf27271e9d7c3c05465638da0226ae4305d3d7 + languageName: node + linkType: hard + +"@smithy/protocol-http@npm:^3.0.8": + version: 3.0.8 + resolution: "@smithy/protocol-http@npm:3.0.8" + dependencies: + "@smithy/types": ^2.4.0 + tslib: ^2.5.0 + checksum: deb4f7d863bcc67724555b3a1ffb8e605a3df63cde9f40234813f072184bb68f5c33388c1934f56576b08a877bb8c9c0bfb849deb0526b55a9410678040fa019 + languageName: node + linkType: hard + +"@smithy/querystring-builder@npm:^2.0.12": + version: 2.0.12 + resolution: "@smithy/querystring-builder@npm:2.0.12" + dependencies: + "@smithy/types": ^2.4.0 "@smithy/util-uri-escape": ^2.0.0 tslib: ^2.5.0 - checksum: 4a684189ac9bf50dba2c648a6a36299181bcdf3e688dc5e5bce94a5befd30e6662b6e84e5a30e8876dc2ff293eeb74f4fdf17446e8886228a62f1cbcf5c0e807 + checksum: d7d0608ac14d8ccd2b418743fc91be9c77b75a302a7552f666a81454fa1764e2162fb2c2f7655cf24045ae44416252362111b9612ea9759dbc1f27f75a71aa42 languageName: node linkType: hard -"@smithy/querystring-parser@npm:^2.0.5": +"@smithy/querystring-parser@npm:^2.0.12": + version: 2.0.12 + resolution: "@smithy/querystring-parser@npm:2.0.12" + dependencies: + "@smithy/types": ^2.4.0 + tslib: ^2.5.0 + checksum: 889dad387fda7db289d0360cbc38901d2c726d164c56915c76ee125bb8059f8a86e28442841000112c3b8a5a3c7701da391f961350969ea5242c6cdf55f296cf + languageName: node + linkType: hard + +"@smithy/service-error-classification@npm:^2.0.5": version: 2.0.5 - resolution: "@smithy/querystring-parser@npm:2.0.5" + resolution: "@smithy/service-error-classification@npm:2.0.5" dependencies: - "@smithy/types": ^2.2.2 - tslib: ^2.5.0 - checksum: 71d5fb2379529c6fe411945d05887b169113df0c29258981cb541487c0c5cd9be8dc31efee34e357e6532733b000a77f374e665c0ef73aeb92c3134f10ecf607 + "@smithy/types": ^2.4.0 + checksum: cd4b9fcc5cd940035ca4f3e832f8480d75eb81c90501bdb5c9295c5fd26487ca2e2f3d3efa9a322faeaedf10d6d8324327cd3341fc05d38f8605006ad836abaa languageName: node linkType: hard -"@smithy/service-error-classification@npm:^2.0.0": - version: 2.0.0 - resolution: "@smithy/service-error-classification@npm:2.0.0" - checksum: f6f9b869dca8e74871c428e1277dd3700f67b0ca61de69fc838ac55187bbc602193a7d1073113ea6916892babf3f8fe4938b182fc902ce0a415928799a7e3f9a - languageName: node - linkType: hard - -"@smithy/shared-ini-file-loader@npm:^2.0.6": - version: 2.0.6 - resolution: "@smithy/shared-ini-file-loader@npm:2.0.6" +"@smithy/shared-ini-file-loader@npm:^2.0.6, @smithy/shared-ini-file-loader@npm:^2.2.2": + version: 2.2.2 + resolution: "@smithy/shared-ini-file-loader@npm:2.2.2" dependencies: - "@smithy/types": ^2.2.2 + "@smithy/types": ^2.4.0 tslib: ^2.5.0 - checksum: 33569b7e1f236b03c9253ba9d1a07e87d3fb186c33da7ce3f1d3f641a50f1a484e8624b6667d0044188e4a5eb5d594ab9f197dc2d31a8958dc2dd5e6cf74af1d + checksum: 851b1ed096609a3c860aebdf7110629783e4824a246d96b10a262426bb90aa4eb2e0370ff489dec48c1dcbd812d95bd3208d785f34c22c2f20249a36bf5ea762 languageName: node linkType: hard @@ -15492,15 +15533,15 @@ __metadata: languageName: node linkType: hard -"@smithy/smithy-client@npm:^2.0.5": - version: 2.0.5 - resolution: "@smithy/smithy-client@npm:2.0.5" +"@smithy/smithy-client@npm:^2.1.12": + version: 2.1.12 + resolution: "@smithy/smithy-client@npm:2.1.12" dependencies: - "@smithy/middleware-stack": ^2.0.0 - "@smithy/types": ^2.2.2 - "@smithy/util-stream": ^2.0.5 + "@smithy/middleware-stack": ^2.0.6 + "@smithy/types": ^2.4.0 + "@smithy/util-stream": ^2.0.17 tslib: ^2.5.0 - checksum: 8dabc85dae6f7a47cc743e412cbf4d95f93bdee163d9b9dfb0c1f4361f0c3c2d627a1e1dcfec506a2052775b8d3da5977ba94d820c3a3abc48c6d2344185d849 + checksum: 9e2944a9c753511777468ec40a3295e5351d08349258a57b70dfc9a96e882efed6075eb7fd3c0494fa07279bdefdfad2e5aecf7930685c656131a97d56aae209 languageName: node linkType: hard @@ -15513,23 +15554,23 @@ __metadata: languageName: node linkType: hard -"@smithy/types@npm:^2.0.2, @smithy/types@npm:^2.2.2": - version: 2.2.2 - resolution: "@smithy/types@npm:2.2.2" +"@smithy/types@npm:^2.0.2, @smithy/types@npm:^2.4.0": + version: 2.4.0 + resolution: "@smithy/types@npm:2.4.0" dependencies: tslib: ^2.5.0 - checksum: 2799a14620da60efb2a0aba1bf9adc553a5446dc447b9ee1d7a95410233a70dff2b5e563fecf84388137dabbe662c6bf3a2247ca20a1f266c1256f82e0f25fcf + checksum: 936690f8ba9323c05a1046102f83d7ed76c5c2f2405ca22e8bfed8d66a5ba12d74a187c10d93b085d6822b98edaec7b6309a4401f036099bf239a0bf5cdcf00d languageName: node linkType: hard -"@smithy/url-parser@npm:^2.0.5": - version: 2.0.5 - resolution: "@smithy/url-parser@npm:2.0.5" +"@smithy/url-parser@npm:^2.0.12": + version: 2.0.12 + resolution: "@smithy/url-parser@npm:2.0.12" dependencies: - "@smithy/querystring-parser": ^2.0.5 - "@smithy/types": ^2.2.2 + "@smithy/querystring-parser": ^2.0.12 + "@smithy/types": ^2.4.0 tslib: ^2.5.0 - checksum: 5360d96d21492a7014bc952f530bf30a50008a809dc0cb219d336bbd23be29ff15437033bddebe600ff763e3d1efab2fe8cacc6d7545c26c86377e23e6a404d8 + checksum: 40324cee758137342573e9f7bf685bc7c3f8284ff2f15d3c68a244dacf26f62cd92b234f220ddfc2963038ef766dd73c3f70642c592a49bd10432c5432fb1ab6 languageName: node linkType: hard @@ -15580,29 +15621,31 @@ __metadata: languageName: node linkType: hard -"@smithy/util-defaults-mode-browser@npm:^2.0.6": - version: 2.0.6 - resolution: "@smithy/util-defaults-mode-browser@npm:2.0.6" +"@smithy/util-defaults-mode-browser@npm:^2.0.16": + version: 2.0.16 + resolution: "@smithy/util-defaults-mode-browser@npm:2.0.16" dependencies: - "@smithy/property-provider": ^2.0.6 - "@smithy/types": ^2.2.2 + "@smithy/property-provider": ^2.0.13 + "@smithy/smithy-client": ^2.1.12 + "@smithy/types": ^2.4.0 bowser: ^2.11.0 tslib: ^2.5.0 - checksum: 017bb8b0deaa38509164478e2d4b865a0c80098013a7e445a633f97a8e5211b79741dca3c2e0990992d0cabd2f3187ec8bba5a9992ad65e5f2898f5cb302c76f + checksum: 8dae0256e89c13ab7bcd791fe336124adc17d95401ceb7152784a809ed9ba09a639573c1ce2bf32b12964f7181aeb2cdfc283d820301f2b3a82ef4906fe83280 languageName: node linkType: hard -"@smithy/util-defaults-mode-node@npm:^2.0.6": - version: 2.0.7 - resolution: "@smithy/util-defaults-mode-node@npm:2.0.7" +"@smithy/util-defaults-mode-node@npm:^2.0.21": + version: 2.0.21 + resolution: "@smithy/util-defaults-mode-node@npm:2.0.21" dependencies: - "@smithy/config-resolver": ^2.0.5 - "@smithy/credential-provider-imds": ^2.0.7 - "@smithy/node-config-provider": ^2.0.7 - "@smithy/property-provider": ^2.0.6 - "@smithy/types": ^2.2.2 + "@smithy/config-resolver": ^2.0.16 + "@smithy/credential-provider-imds": ^2.0.18 + "@smithy/node-config-provider": ^2.1.3 + "@smithy/property-provider": ^2.0.13 + "@smithy/smithy-client": ^2.1.12 + "@smithy/types": ^2.4.0 tslib: ^2.5.0 - checksum: 87392a683dbf9d73b5068f280f416efcb70a7f71c0b02bd9f4519530c7f48112ce8549378459c764ae23f0520c065c4e801411fb1875fd8d142a4af95a5bcbba + checksum: ce2643ad99181b91b4eb00f2b2b34d12ff006ac1770333ae62541cfc7b98b873e233933d483d7bb0a443a8155debd94731a1df0f4cc572e6cc5ddbf97416e2d7 languageName: node linkType: hard @@ -15615,38 +15658,40 @@ __metadata: languageName: node linkType: hard -"@smithy/util-middleware@npm:^2.0.0": - version: 2.0.0 - resolution: "@smithy/util-middleware@npm:2.0.0" - dependencies: - tslib: ^2.5.0 - checksum: 10401734a10e0c48ed684f20b7a34c40ed85f2e906e61adb6295963d035f2a93b524e80149a252a259a4bca3626773bf89c5eaa2423fd565358c6b4eb9b6d4e0 - languageName: node - linkType: hard - -"@smithy/util-retry@npm:^2.0.0": - version: 2.0.0 - resolution: "@smithy/util-retry@npm:2.0.0" - dependencies: - "@smithy/service-error-classification": ^2.0.0 - tslib: ^2.5.0 - checksum: d5bfe5e81f41dffce6ba5aaf784f08247602d00f883c10c0de9e34a7f04f5369d7ac43901dd75eecc3864882b7390ad40885d07b3dcb35a366411b639482e673 - languageName: node - linkType: hard - -"@smithy/util-stream@npm:^2.0.5": +"@smithy/util-middleware@npm:^2.0.0, @smithy/util-middleware@npm:^2.0.5": version: 2.0.5 - resolution: "@smithy/util-stream@npm:2.0.5" + resolution: "@smithy/util-middleware@npm:2.0.5" dependencies: - "@smithy/fetch-http-handler": ^2.0.5 - "@smithy/node-http-handler": ^2.0.5 - "@smithy/types": ^2.2.2 + "@smithy/types": ^2.4.0 + tslib: ^2.5.0 + checksum: 9d001723e7472c0d78619320235f66d1de42f16e13d1189697f8e447d05643047ab97965525b147eaafbb0e169563ecb5b806da2d02bd4ce0b652b72df4d9131 + languageName: node + linkType: hard + +"@smithy/util-retry@npm:^2.0.5": + version: 2.0.5 + resolution: "@smithy/util-retry@npm:2.0.5" + dependencies: + "@smithy/service-error-classification": ^2.0.5 + "@smithy/types": ^2.4.0 + tslib: ^2.5.0 + checksum: e7169b458a9c194104e16014b2829deddb9ee4175fd17bd933d0ab9ec9df065cf23816b605eafb6604da1111e3280c5fea4da98dd8ec5f5f3e1c30e166119808 + languageName: node + linkType: hard + +"@smithy/util-stream@npm:^2.0.17": + version: 2.0.17 + resolution: "@smithy/util-stream@npm:2.0.17" + dependencies: + "@smithy/fetch-http-handler": ^2.2.4 + "@smithy/node-http-handler": ^2.1.8 + "@smithy/types": ^2.4.0 "@smithy/util-base64": ^2.0.0 "@smithy/util-buffer-from": ^2.0.0 "@smithy/util-hex-encoding": ^2.0.0 "@smithy/util-utf8": ^2.0.0 tslib: ^2.5.0 - checksum: a78312fcbd50b55eb995959fccea8b7957dd352a1fff1abea2906aa5629305b68a9f3025bcd1edd60e5a2d5dd9e1dab00959f5971ded0d450fb463cf9865aedd + checksum: acd68f7b092fdf3560f5d88f3f81d1bfab4c634f8b7acd8eca1993c8ce789d9652d23048c9e891a42dd12dd71e7a9756b9879ae95fccd1cd92f7ad8204c97d68 languageName: node linkType: hard @@ -15669,14 +15714,14 @@ __metadata: languageName: node linkType: hard -"@smithy/util-waiter@npm:^2.0.5": - version: 2.0.5 - resolution: "@smithy/util-waiter@npm:2.0.5" +"@smithy/util-waiter@npm:^2.0.12": + version: 2.0.12 + resolution: "@smithy/util-waiter@npm:2.0.12" dependencies: - "@smithy/abort-controller": ^2.0.5 - "@smithy/types": ^2.2.2 + "@smithy/abort-controller": ^2.0.12 + "@smithy/types": ^2.4.0 tslib: ^2.5.0 - checksum: b36069643d7641f019f8eb28e006eb301e82f5d93412f79b87ae473d661830349e60d65c18219e252d276cd014954f05e989eb6098100efb782219167a88f1f0 + checksum: af35c36a58585472aae9e06ea000a113110f22bed179687213336a014b002deb867cb094f9cb01bc43856235df05517baf08009b3b929a48b48f964c426c1ffc languageName: node linkType: hard From 8edae2f7287e9d75e0093d175da42e9435e3c622 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rados=C5=82aw?= <54472480+radoslaw-sz@users.noreply.github.com> Date: Sun, 22 Oct 2023 13:22:00 +0200 Subject: [PATCH 035/102] Add Changelog plugin to plugins marketplace MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Radosław <54472480+radoslaw-sz@users.noreply.github.com> --- microsite/data/plugins/changelog.yaml | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 microsite/data/plugins/changelog.yaml diff --git a/microsite/data/plugins/changelog.yaml b/microsite/data/plugins/changelog.yaml new file mode 100644 index 0000000000..4d73f6a412 --- /dev/null +++ b/microsite/data/plugins/changelog.yaml @@ -0,0 +1,12 @@ +--- +title: Changelog viewer +author: Radoslaw Szymkiewicz +authorUrl: https://github.com/radoslaw-sz +category: Discovery +description: View changelogs for your components in Backstage. +documentation: https://github.com/RSC-Labs/backstage-changelog-plugin/blob/main/README.md +iconUrl: https://avatars.githubusercontent.com/u/146464373 +npmPackageName: '@rsc-labs/changelog-plugin' +tags: + - changelog +addedDate: '2023-10-22' From 20181ee9d1b2a9e6ad4ba4d1c065eaaa53d90e9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rados=C5=82aw?= <54472480+radoslaw-sz@users.noreply.github.com> Date: Sun, 22 Oct 2023 13:40:16 +0200 Subject: [PATCH 036/102] Update author in changelog.yaml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Radosław <54472480+radoslaw-sz@users.noreply.github.com> --- microsite/data/plugins/changelog.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/microsite/data/plugins/changelog.yaml b/microsite/data/plugins/changelog.yaml index 4d73f6a412..f464d07223 100644 --- a/microsite/data/plugins/changelog.yaml +++ b/microsite/data/plugins/changelog.yaml @@ -1,6 +1,6 @@ --- title: Changelog viewer -author: Radoslaw Szymkiewicz +author: RSC Labs authorUrl: https://github.com/radoslaw-sz category: Discovery description: View changelogs for your components in Backstage. From 33daf0ba661347d5a88a08705470ed5ec2394e6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rados=C5=82aw?= <54472480+radoslaw-sz@users.noreply.github.com> Date: Sun, 22 Oct 2023 15:32:48 +0200 Subject: [PATCH 037/102] Update icon for plugin for changelog.yaml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Radosław <54472480+radoslaw-sz@users.noreply.github.com> --- microsite/data/plugins/changelog.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/microsite/data/plugins/changelog.yaml b/microsite/data/plugins/changelog.yaml index f464d07223..2c42f7ada7 100644 --- a/microsite/data/plugins/changelog.yaml +++ b/microsite/data/plugins/changelog.yaml @@ -5,7 +5,7 @@ authorUrl: https://github.com/radoslaw-sz category: Discovery description: View changelogs for your components in Backstage. documentation: https://github.com/RSC-Labs/backstage-changelog-plugin/blob/main/README.md -iconUrl: https://avatars.githubusercontent.com/u/146464373 +iconUrl: https://raw.githubusercontent.com/RSC-Labs/backstage-changelog-plugin/main/docs/plugin_icon.png npmPackageName: '@rsc-labs/changelog-plugin' tags: - changelog From 37723aba9d14efd79200a3ddc52d4b5ef7046192 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rados=C5=82aw?= <54472480+radoslaw-sz@users.noreply.github.com> Date: Sun, 22 Oct 2023 15:38:35 +0200 Subject: [PATCH 038/102] Update authorUrl in changelog.yaml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Radosław <54472480+radoslaw-sz@users.noreply.github.com> --- microsite/data/plugins/changelog.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/microsite/data/plugins/changelog.yaml b/microsite/data/plugins/changelog.yaml index 2c42f7ada7..dbdec22e2a 100644 --- a/microsite/data/plugins/changelog.yaml +++ b/microsite/data/plugins/changelog.yaml @@ -1,7 +1,7 @@ --- title: Changelog viewer author: RSC Labs -authorUrl: https://github.com/radoslaw-sz +authorUrl: https://rsoftcon.com/ category: Discovery description: View changelogs for your components in Backstage. documentation: https://github.com/RSC-Labs/backstage-changelog-plugin/blob/main/README.md From 9b678dea377da6c8aa745d215a127301aa2be7a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rados=C5=82aw?= <54472480+radoslaw-sz@users.noreply.github.com> Date: Sun, 22 Oct 2023 17:27:06 +0200 Subject: [PATCH 039/102] Update description and fix npmPackageName in changelog.yaml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Radosław <54472480+radoslaw-sz@users.noreply.github.com> --- microsite/data/plugins/changelog.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/microsite/data/plugins/changelog.yaml b/microsite/data/plugins/changelog.yaml index dbdec22e2a..1b4684db7f 100644 --- a/microsite/data/plugins/changelog.yaml +++ b/microsite/data/plugins/changelog.yaml @@ -3,10 +3,10 @@ title: Changelog viewer author: RSC Labs authorUrl: https://rsoftcon.com/ category: Discovery -description: View changelogs for your components in Backstage. +description: View changelogs for your components in Backstage. Built-in support of "Keep the changelog" format. documentation: https://github.com/RSC-Labs/backstage-changelog-plugin/blob/main/README.md iconUrl: https://raw.githubusercontent.com/RSC-Labs/backstage-changelog-plugin/main/docs/plugin_icon.png -npmPackageName: '@rsc-labs/changelog-plugin' +npmPackageName: '@rsc-labs/backstage-changelog-plugin' tags: - changelog addedDate: '2023-10-22' From 18bc2d867ccb0c780a0a3b4d5050d47e2bade917 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Mon, 23 Oct 2023 16:33:37 +0200 Subject: [PATCH 040/102] replace the variant with noIcon and noTitle MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/catalog-react/api-report.md | 3 ++- .../components/EntityDisplayName/EntityDisplayName.tsx | 9 +++++---- .../catalog/src/components/EntityLayout/EntityLayout.tsx | 6 +----- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/plugins/catalog-react/api-report.md b/plugins/catalog-react/api-report.md index 0d41f0ca58..a1ba49f580 100644 --- a/plugins/catalog-react/api-report.md +++ b/plugins/catalog-react/api-report.md @@ -196,7 +196,8 @@ export const EntityDisplayName: (props: EntityDisplayNameProps) => JSX.Element; // @public export type EntityDisplayNameProps = { entityRef: Entity | CompoundEntityRef | string; - variant?: 'simple' | string; + noIcon?: boolean; + noTooltip?: boolean; defaultKind?: string; defaultNamespace?: string; }; diff --git a/plugins/catalog-react/src/components/EntityDisplayName/EntityDisplayName.tsx b/plugins/catalog-react/src/components/EntityDisplayName/EntityDisplayName.tsx index 735828b18f..6bdbe83a84 100644 --- a/plugins/catalog-react/src/components/EntityDisplayName/EntityDisplayName.tsx +++ b/plugins/catalog-react/src/components/EntityDisplayName/EntityDisplayName.tsx @@ -49,7 +49,8 @@ const useStyles = makeStyles( */ export type EntityDisplayNameProps = { entityRef: Entity | CompoundEntityRef | string; - variant?: 'simple' | string; + noIcon?: boolean; + noTooltip?: boolean; defaultKind?: string; defaultNamespace?: string; }; @@ -62,7 +63,7 @@ export type EntityDisplayNameProps = { export const EntityDisplayName = ( props: EntityDisplayNameProps, ): JSX.Element => { - const { entityRef, variant, defaultKind, defaultNamespace } = props; + const { entityRef, noIcon, noTooltip, defaultKind, defaultNamespace } = props; const classes = useStyles(); const { primaryTitle, secondaryTitle, Icon } = useEntityPresentation( @@ -77,7 +78,7 @@ export const EntityDisplayName = ( content = ( {content} - {Icon && variant !== 'simple' ? ( + {Icon && !noIcon ? ( @@ -86,7 +87,7 @@ export const EntityDisplayName = ( ); // Optionally, a tooltip as the outermost layer - if (secondaryTitle) { + if (secondaryTitle && !noTooltip) { content = ( {content} diff --git a/plugins/catalog/src/components/EntityLayout/EntityLayout.tsx b/plugins/catalog/src/components/EntityLayout/EntityLayout.tsx index 71c6bcc860..d253756411 100644 --- a/plugins/catalog/src/components/EntityLayout/EntityLayout.tsx +++ b/plugins/catalog/src/components/EntityLayout/EntityLayout.tsx @@ -79,11 +79,7 @@ function EntityLayoutTitle(props: { whiteSpace="nowrap" overflow="hidden" > - {entity ? ( - - ) : ( - title - )} + {entity ? : title} {entity && } From 762f6091d4aadf354eda77dc3ef375e9d2dd2862 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Mon, 23 Oct 2023 16:40:44 +0200 Subject: [PATCH 041/102] reduce cacheTtl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .../apis/EntityPresentationApi/DefaultEntityPresentationApi.ts | 2 +- plugins/catalog/src/apis/EntityPresentationApi/defaults.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/catalog/src/apis/EntityPresentationApi/DefaultEntityPresentationApi.ts b/plugins/catalog/src/apis/EntityPresentationApi/DefaultEntityPresentationApi.ts index 9ec8af7760..e4ee60f2b4 100644 --- a/plugins/catalog/src/apis/EntityPresentationApi/DefaultEntityPresentationApi.ts +++ b/plugins/catalog/src/apis/EntityPresentationApi/DefaultEntityPresentationApi.ts @@ -121,7 +121,7 @@ export interface DefaultEntityPresentationApiOptions { * When to expire entities that have been loaded from the catalog API and * cached for a while. * - * @defaultValue 30 seconds + * @defaultValue 10 seconds * @remarks * * The higher this value, the lower the load on the catalog API, but also the diff --git a/plugins/catalog/src/apis/EntityPresentationApi/defaults.tsx b/plugins/catalog/src/apis/EntityPresentationApi/defaults.tsx index b3f4c5ec3c..237c57db0f 100644 --- a/plugins/catalog/src/apis/EntityPresentationApi/defaults.tsx +++ b/plugins/catalog/src/apis/EntityPresentationApi/defaults.tsx @@ -28,7 +28,7 @@ import PeopleIcon from '@material-ui/icons/People'; import PersonIcon from '@material-ui/icons/Person'; import { DefaultEntityPresentationApiRenderer } from './DefaultEntityPresentationApi'; -export const DEFAULT_CACHE_TTL: HumanDuration = { seconds: 30 }; +export const DEFAULT_CACHE_TTL: HumanDuration = { seconds: 10 }; export const DEFAULT_BATCH_DELAY: HumanDuration = { milliseconds: 50 }; From 430f2931b30efb373ea341b9c93f2f02054cbdc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Mon, 23 Oct 2023 16:45:28 +0200 Subject: [PATCH 042/102] always fetch full entities MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/catalog/api-report.md | 1 - .../DefaultEntityPresentationApi.ts | 24 ------------------- .../apis/EntityPresentationApi/defaults.tsx | 13 ---------- 3 files changed, 38 deletions(-) diff --git a/plugins/catalog/api-report.md b/plugins/catalog/api-report.md index 7ed2879367..4b2c17865d 100644 --- a/plugins/catalog/api-report.md +++ b/plugins/catalog/api-report.md @@ -257,7 +257,6 @@ export interface DefaultEntityPresentationApiOptions { // @public export interface DefaultEntityPresentationApiRenderer { async?: boolean; - extraFields?: string[]; render: (options: { entityRef: string; loading: boolean; diff --git a/plugins/catalog/src/apis/EntityPresentationApi/DefaultEntityPresentationApi.ts b/plugins/catalog/src/apis/EntityPresentationApi/DefaultEntityPresentationApi.ts index e4ee60f2b4..24b9b744a0 100644 --- a/plugins/catalog/src/apis/EntityPresentationApi/DefaultEntityPresentationApi.ts +++ b/plugins/catalog/src/apis/EntityPresentationApi/DefaultEntityPresentationApi.ts @@ -24,12 +24,10 @@ import { import { HumanDuration } from '@backstage/types'; import DataLoader from 'dataloader'; import ExpiryMap from 'expiry-map'; -import uniq from 'lodash/uniq'; import ObservableImpl from 'zen-observable'; import { DEFAULT_BATCH_DELAY, DEFAULT_CACHE_TTL, - DEFAULT_ENTITY_FIELDS, createDefaultRenderer, } from './defaults'; import { durationToMs } from './util'; @@ -40,23 +38,6 @@ import { durationToMs } from './util'; * @public */ export interface DefaultEntityPresentationApiRenderer { - /** - * An extra set of fields to request for entities from the catalog API. - * - * @remarks - * - * You may want to specify this to get additional entity fields. The smaller - * the set of fields, the more efficient requests will be to the catalog - * backend. - * - * The default set of fields is: apiVersion, kind, the scalar metadata fields - * (uid, etag, name, namespace, title, description), spec.type, and - * spec.profile. - * - * This field is ignored if async is set to false. - */ - extraFields?: string[]; - /** * Whether to request the entity from the catalog API asynchronously. * @@ -332,15 +313,10 @@ export class DefaultEntityPresentationApi implements EntityPresentationApi { const cacheTtlMs = durationToMs(options.cacheTtl); const batchDelayMs = durationToMs(options.batchDelay); - const entityFields = uniq( - [DEFAULT_ENTITY_FIELDS, options.renderer?.extraFields ?? []].flat(), - ); - return new DataLoader( async (entityRefs: readonly string[]) => { const { items } = await options.catalogApi!.getEntitiesByRefs({ entityRefs: entityRefs as string[], - fields: [...entityFields], }); const now = Date.now(); diff --git a/plugins/catalog/src/apis/EntityPresentationApi/defaults.tsx b/plugins/catalog/src/apis/EntityPresentationApi/defaults.tsx index 237c57db0f..afcd1f5464 100644 --- a/plugins/catalog/src/apis/EntityPresentationApi/defaults.tsx +++ b/plugins/catalog/src/apis/EntityPresentationApi/defaults.tsx @@ -32,19 +32,6 @@ export const DEFAULT_CACHE_TTL: HumanDuration = { seconds: 10 }; export const DEFAULT_BATCH_DELAY: HumanDuration = { milliseconds: 50 }; -export const DEFAULT_ENTITY_FIELDS: string[] = [ - 'apiVersion', - 'kind', - 'metadata.uid', - 'metadata.etag', - 'metadata.name', - 'metadata.namespace', - 'metadata.title', - 'metadata.description', - 'spec.type', - 'spec.profile', -]; - export const UNKNOWN_KIND_ICON: IconComponent = HelpIcon; export const DEFAULT_ICONS: Record = { From 3988751087f752fe7e03d7ff371ae439b49b9800 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Mon, 23 Oct 2023 16:53:13 +0200 Subject: [PATCH 043/102] stop returning the entity MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/catalog-react/api-report.md | 1 - .../EntityPresentationApi.ts | 11 -------- .../defaultEntityPresentation.test.ts | 18 ------------- .../defaultEntityPresentation.ts | 8 ------ .../DefaultEntityPresentationApi.test.ts | 26 ------------------- .../DefaultEntityPresentationApi.ts | 2 -- .../General/UserSettingsIdentityCard.tsx | 10 ++----- 7 files changed, 2 insertions(+), 74 deletions(-) diff --git a/plugins/catalog-react/api-report.md b/plugins/catalog-react/api-report.md index a1ba49f580..abbf348848 100644 --- a/plugins/catalog-react/api-report.md +++ b/plugins/catalog-react/api-report.md @@ -416,7 +416,6 @@ export interface EntityRefPresentation { // @public export interface EntityRefPresentationSnapshot { - entity?: Entity | undefined; entityRef: string; Icon?: IconComponent | undefined; primaryTitle: string; diff --git a/plugins/catalog-react/src/apis/EntityPresentationApi/EntityPresentationApi.ts b/plugins/catalog-react/src/apis/EntityPresentationApi/EntityPresentationApi.ts index 17f16d69a4..532fdde9a3 100644 --- a/plugins/catalog-react/src/apis/EntityPresentationApi/EntityPresentationApi.ts +++ b/plugins/catalog-react/src/apis/EntityPresentationApi/EntityPresentationApi.ts @@ -49,17 +49,6 @@ export interface EntityRefPresentationSnapshot { * usable for example for forming a clickable link to the entity. */ entityRef: string; - /** - * The entity that this snapshot represents. - * - * @remarks - * - * Note that this may be a partial entity, i.e. it may not contain all of the - * fields that the kind at hand normally contains, since the input to the - * representation renderer might have been a partial entity. So be careful - * when accessing fields on this. - */ - entity?: Entity | undefined; /** * A string that can be used as a plain representation of the entity, for * example in a header or a link. diff --git a/plugins/catalog-react/src/apis/EntityPresentationApi/defaultEntityPresentation.test.ts b/plugins/catalog-react/src/apis/EntityPresentationApi/defaultEntityPresentation.test.ts index e875de6fd1..ea755dfebc 100644 --- a/plugins/catalog-react/src/apis/EntityPresentationApi/defaultEntityPresentation.test.ts +++ b/plugins/catalog-react/src/apis/EntityPresentationApi/defaultEntityPresentation.test.ts @@ -34,7 +34,6 @@ describe('defaultEntityPresentation', () => { }, }), ).toEqual({ - entity: expect.anything(), entityRef: 'component:default/test', primaryTitle: 'test', secondaryTitle: 'component:default/test | type | desc', @@ -56,7 +55,6 @@ describe('defaultEntityPresentation', () => { }, }), ).toEqual({ - entity: expect.anything(), entityRef: 'component:default/test', primaryTitle: 'title', secondaryTitle: 'component:default/test | type | desc', @@ -81,7 +79,6 @@ describe('defaultEntityPresentation', () => { }, }), ).toEqual({ - entity: expect.anything(), entityRef: 'component:default/test', primaryTitle: 'displayName', secondaryTitle: 'component:default/test | type | desc', @@ -96,7 +93,6 @@ describe('defaultEntityPresentation', () => { metadata: { name: 'test' }, } as Entity), ).toEqual({ - entity: expect.anything(), entityRef: 'component:default/test', primaryTitle: 'test', secondaryTitle: 'component:default/test', @@ -108,7 +104,6 @@ describe('defaultEntityPresentation', () => { expect( defaultEntityPresentation({ metadata: 7 } as unknown as Entity), ).toEqual({ - entity: expect.anything(), entityRef: 'unknown:default/unknown', primaryTitle: 'unknown', secondaryTitle: 'unknown:default/unknown', @@ -120,7 +115,6 @@ describe('defaultEntityPresentation', () => { describe('string ref given', () => { it('happy path', () => { expect(defaultEntityPresentation('component:default/test')).toEqual({ - entity: undefined, entityRef: 'component:default/test', primaryTitle: 'test', secondaryTitle: 'component:default/test', @@ -132,7 +126,6 @@ describe('defaultEntityPresentation', () => { defaultKind: 'X', }), ).toEqual({ - entity: undefined, entityRef: 'component:default/test', primaryTitle: 'component:test', secondaryTitle: 'component:default/test', @@ -144,7 +137,6 @@ describe('defaultEntityPresentation', () => { defaultNamespace: 'X', }), ).toEqual({ - entity: undefined, entityRef: 'component:default/test', primaryTitle: 'default/test', secondaryTitle: 'component:default/test', @@ -154,7 +146,6 @@ describe('defaultEntityPresentation', () => { it('works without throwing on malformed and shortened refs', () => { expect(defaultEntityPresentation('')).toEqual({ - entity: undefined, entityRef: 'unknown:default/unknown', primaryTitle: 'unknown', secondaryTitle: 'unknown:default/unknown', @@ -162,7 +153,6 @@ describe('defaultEntityPresentation', () => { }); expect(defaultEntityPresentation('name')).toEqual({ - entity: undefined, entityRef: 'unknown:default/name', primaryTitle: 'name', secondaryTitle: 'unknown:default/name', @@ -180,7 +170,6 @@ describe('defaultEntityPresentation', () => { name: 'test', }), ).toEqual({ - entity: undefined, entityRef: 'component:default/test', primaryTitle: 'test', secondaryTitle: 'component:default/test', @@ -195,7 +184,6 @@ describe('defaultEntityPresentation', () => { }, ), ).toEqual({ - entity: undefined, entityRef: 'component:default/test', primaryTitle: 'component:test', secondaryTitle: 'component:default/test', @@ -210,7 +198,6 @@ describe('defaultEntityPresentation', () => { }, ), ).toEqual({ - entity: undefined, entityRef: 'component:default/test', primaryTitle: 'default/test', secondaryTitle: 'component:default/test', @@ -227,7 +214,6 @@ describe('defaultEntityPresentation', () => { }, ), ).toEqual({ - entity: undefined, entityRef: 'component:default/test', primaryTitle: 'default/test', secondaryTitle: 'component:default/test', @@ -235,7 +221,6 @@ describe('defaultEntityPresentation', () => { }); expect(defaultEntityPresentation('')).toEqual({ - entity: undefined, entityRef: 'unknown:default/unknown', primaryTitle: 'unknown', secondaryTitle: 'unknown:default/unknown', @@ -247,7 +232,6 @@ describe('defaultEntityPresentation', () => { describe('entirely invalid input type given', () => { it('sad path', () => { expect(defaultEntityPresentation(null as unknown as Entity)).toEqual({ - entity: undefined, entityRef: 'unknown:default/unknown', primaryTitle: 'unknown', secondaryTitle: 'unknown:default/unknown', @@ -256,7 +240,6 @@ describe('defaultEntityPresentation', () => { expect(defaultEntityPresentation(undefined as unknown as Entity)).toEqual( { - entity: undefined, entityRef: 'unknown:default/unknown', primaryTitle: 'unknown', secondaryTitle: 'unknown:default/unknown', @@ -267,7 +250,6 @@ describe('defaultEntityPresentation', () => { expect( defaultEntityPresentation(Symbol.for('Prince') as unknown as Entity), ).toEqual({ - entity: undefined, entityRef: 'unknown:default/unknown', primaryTitle: 'unknown', secondaryTitle: 'unknown:default/unknown', diff --git a/plugins/catalog-react/src/apis/EntityPresentationApi/defaultEntityPresentation.ts b/plugins/catalog-react/src/apis/EntityPresentationApi/defaultEntityPresentation.ts index ab9ea68060..eacb659062 100644 --- a/plugins/catalog-react/src/apis/EntityPresentationApi/defaultEntityPresentation.ts +++ b/plugins/catalog-react/src/apis/EntityPresentationApi/defaultEntityPresentation.ts @@ -70,13 +70,6 @@ export function defaultEntityPresentation( (kind && DEFAULT_ICONS[kind.toLocaleLowerCase('en-US')]) || UNKNOWN_KIND_ICON; - const entity: Entity | undefined = - typeof entityOrRef === 'object' && - entityOrRef !== null && - 'metadata' in entityOrRef - ? entityOrRef - : undefined; - const entityRef: string = stringifyEntityRef({ kind: kind || 'unknown', namespace: namespace || DEFAULT_NAMESPACE, @@ -98,7 +91,6 @@ export function defaultEntityPresentation( .join(' | '); return { - entity, entityRef, primaryTitle: primary, secondaryTitle: secondary || undefined, diff --git a/plugins/catalog/src/apis/EntityPresentationApi/DefaultEntityPresentationApi.test.ts b/plugins/catalog/src/apis/EntityPresentationApi/DefaultEntityPresentationApi.test.ts index eb20b20f9f..42ff777cbd 100644 --- a/plugins/catalog/src/apis/EntityPresentationApi/DefaultEntityPresentationApi.test.ts +++ b/plugins/catalog/src/apis/EntityPresentationApi/DefaultEntityPresentationApi.test.ts @@ -80,7 +80,6 @@ describe('DefaultEntityPresentationApi', () => { expect(api.forEntity(entity)).toEqual({ snapshot: { entityRef: 'component:default/test', - entity: entity, primaryTitle: 'test', secondaryTitle: 'component:default/test | service', Icon: expect.anything(), @@ -120,25 +119,12 @@ describe('DefaultEntityPresentationApi', () => { ).resolves.toEqual([ { entityRef: 'component:default/test', - entity: undefined, primaryTitle: 'test', secondaryTitle: 'component:default/test', Icon: expect.anything(), }, { entityRef: 'component:default/test', - entity: { - apiVersion: 'backstage.io/v1alpha1', - kind: 'Component', - metadata: { - etag: 'something', - name: 'test', - namespace: 'default', - }, - spec: { - type: 'service', - }, - }, primaryTitle: 'test', secondaryTitle: 'component:default/test | service', Icon: expect.anything(), @@ -151,18 +137,6 @@ describe('DefaultEntityPresentationApi', () => { ).resolves.toEqual([ { entityRef: 'component:default/test', - entity: { - apiVersion: 'backstage.io/v1alpha1', - kind: 'Component', - metadata: { - etag: 'something', - name: 'test', - namespace: 'default', - }, - spec: { - type: 'service', - }, - }, primaryTitle: 'test', secondaryTitle: 'component:default/test | service', Icon: expect.anything(), diff --git a/plugins/catalog/src/apis/EntityPresentationApi/DefaultEntityPresentationApi.ts b/plugins/catalog/src/apis/EntityPresentationApi/DefaultEntityPresentationApi.ts index 24b9b744a0..91e5b575ff 100644 --- a/plugins/catalog/src/apis/EntityPresentationApi/DefaultEntityPresentationApi.ts +++ b/plugins/catalog/src/apis/EntityPresentationApi/DefaultEntityPresentationApi.ts @@ -240,7 +240,6 @@ export class DefaultEntityPresentationApi implements EntityPresentationApi { subscriber.next({ ...output.snapshot, entityRef: entityRef, - entity: newEntity, }); } }) @@ -265,7 +264,6 @@ export class DefaultEntityPresentationApi implements EntityPresentationApi { snapshot: { ...rendered, entityRef: entityRef, - entity: entity, }, update$: observable, }; diff --git a/plugins/user-settings/src/components/General/UserSettingsIdentityCard.tsx b/plugins/user-settings/src/components/General/UserSettingsIdentityCard.tsx index a398877ce9..d8d3f677aa 100644 --- a/plugins/user-settings/src/components/General/UserSettingsIdentityCard.tsx +++ b/plugins/user-settings/src/components/General/UserSettingsIdentityCard.tsx @@ -33,19 +33,13 @@ const Contents = () => { User Entity:{' '} - ref} - /> + Ownership Entities:{' '} - ref} - /> + From 3df7b26de5e433be9b67fd2a76c3885b8d1af92b Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Fri, 20 Oct 2023 15:13:00 +0200 Subject: [PATCH 044/102] catalog: target use-case configuration of entity page cards Co-authored-by: Philipp Hugenroth Signed-off-by: Patrik Oldsberg --- packages/app-next/app-config.yaml | 9 +++++++-- plugins/catalog/src/alpha/entityCards.tsx | 2 ++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/app-next/app-config.yaml b/packages/app-next/app-config.yaml index 0c75e1c96c..a46e119ac0 100644 --- a/packages/app-next/app-config.yaml +++ b/packages/app-next/app-config.yaml @@ -10,10 +10,15 @@ app: - apis.plugin.graphiql.browse.gitlab: true # Entity page cards - - 'entity.cards.about' + - entity.cards.about + - entity.cards.labels + - entity.cards.links: + config: + filter: + - isKind: component # Entity page content - - 'entity.content.techdocs' + - entity.content.techdocs # scmAuthExtension: >- # createScmAuthExtension({ diff --git a/plugins/catalog/src/alpha/entityCards.tsx b/plugins/catalog/src/alpha/entityCards.tsx index cc30928fcf..c7b75679a7 100644 --- a/plugins/catalog/src/alpha/entityCards.tsx +++ b/plugins/catalog/src/alpha/entityCards.tsx @@ -27,6 +27,7 @@ export const EntityAboutCard = createEntityCardExtension({ export const EntityLinksCard = createEntityCardExtension({ id: 'links', + filter: ({ entity }) => Boolean(entity.metadata.links), loader: async () => import('../components/EntityLinksCard').then(m => { return ; @@ -35,6 +36,7 @@ export const EntityLinksCard = createEntityCardExtension({ export const EntityLabelsCard = createEntityCardExtension({ id: 'labels', + filter: ({ entity }) => Boolean(entity.metadata.labels), loader: async () => import('../components/EntityLabelsCard').then(m => ( From f2a803ecbfcd3755b7a492babd08044a8e3ad779 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Fri, 20 Oct 2023 17:34:47 +0200 Subject: [PATCH 045/102] catalog: initial implementation of default and configurable entity content filters Co-authored-by: Philipp Hugenroth Signed-off-by: Patrik Oldsberg --- plugins/catalog-react/alpha-api-report.md | 71 +++++----- plugins/catalog-react/src/alpha.tsx | 128 ++++++++++++------ .../catalog/src/alpha/EntityOverviewPage.tsx | 42 ++++++ plugins/catalog/src/alpha/entityContents.tsx | 20 ++- 4 files changed, 176 insertions(+), 85 deletions(-) create mode 100644 plugins/catalog/src/alpha/EntityOverviewPage.tsx diff --git a/plugins/catalog-react/alpha-api-report.md b/plugins/catalog-react/alpha-api-report.md index 120e162c84..ed851f810a 100644 --- a/plugins/catalog-react/alpha-api-report.md +++ b/plugins/catalog-react/alpha-api-report.md @@ -10,13 +10,11 @@ import { ConfigurableExtensionDataRef } from '@backstage/frontend-plugin-api'; import { Entity } from '@backstage/catalog-model'; import { Extension } from '@backstage/frontend-plugin-api'; import { ExtensionInputValues } from '@backstage/frontend-plugin-api'; -import { PortableSchema } from '@backstage/frontend-plugin-api'; import { ResourcePermission } from '@backstage/plugin-permission-common'; import { RouteRef } from '@backstage/frontend-plugin-api'; // @alpha (undocumented) export function createEntityCardExtension< - TConfig, TInputs extends AnyExtensionInputMap, >(options: { id: string; @@ -26,44 +24,47 @@ export function createEntityCardExtension< }; disabled?: boolean; inputs?: TInputs; - configSchema?: PortableSchema; + filter?: (ctx: { entity: Entity }) => boolean; loader: (options: { - config: TConfig; inputs: Expand>; }) => Promise; -}): Extension; +}): Extension<{ + filter?: + | { + isKind?: string | undefined; + isType?: string | undefined; + }[] + | undefined; +}>; // @alpha (undocumented) export function createEntityContentExtension< - TConfig extends { - path: string; - title: string; - }, TInputs extends AnyExtensionInputMap, ->( - options: ( - | { - defaultPath: string; - defaultTitle: string; - } - | { - configSchema: PortableSchema; - } - ) & { +>(options: { + id: string; + attachTo?: { id: string; - attachTo?: { - id: string; - input: string; - }; - disabled?: boolean; - inputs?: TInputs; - routeRef?: RouteRef; - loader: (options: { - config: TConfig; - inputs: Expand>; - }) => Promise; - }, -): Extension; + input: string; + }; + disabled?: boolean; + inputs?: TInputs; + routeRef?: RouteRef; + defaultPath: string; + defaultTitle: string; + filter?: (ctx: { entity: Entity }) => boolean; + loader: (options: { + inputs: Expand>; + }) => Promise; +}): Extension<{ + title: string; + path: string; + filter?: + | { + isKind?: string | undefined; + isType?: string | undefined; + }[] + | undefined; +}>; // @alpha (undocumented) export const entityContentTitleExtensionDataRef: ConfigurableExtensionDataRef< @@ -71,6 +72,12 @@ export const entityContentTitleExtensionDataRef: ConfigurableExtensionDataRef< {} >; +// @alpha (undocumented) +export const entityFilterExtensionDataRef: ConfigurableExtensionDataRef< + (ctx: { entity: Entity }) => boolean, + {} +>; + // @alpha export function isOwnerOf(owner: Entity, entity: Entity): boolean; diff --git a/plugins/catalog-react/src/alpha.tsx b/plugins/catalog-react/src/alpha.tsx index 58762b1994..8ea477d573 100644 --- a/plugins/catalog-react/src/alpha.tsx +++ b/plugins/catalog-react/src/alpha.tsx @@ -17,10 +17,8 @@ import React, { lazy } from 'react'; import { AnyExtensionInputMap, - Extension, ExtensionBoundary, ExtensionInputValues, - PortableSchema, RouteRef, coreExtensionData, createExtension, @@ -29,6 +27,7 @@ import { } from '@backstage/frontend-plugin-api'; // eslint-disable-next-line @backstage/no-relative-monorepo-imports import { Expand } from '../../../packages/frontend-plugin-api/src/types'; +import { Entity } from '@backstage/catalog-model'; export { isOwnerOf } from './utils'; export { useEntityPermission } from './hooks/useEntityPermission'; @@ -37,21 +36,57 @@ export { useEntityPermission } from './hooks/useEntityPermission'; export const entityContentTitleExtensionDataRef = createExtensionDataRef('plugin.catalog.entity.content.title'); +/** @alpha */ +export const entityFilterExtensionDataRef = createExtensionDataRef< + (ctx: { entity: Entity }) => boolean +>('plugin.catalog.entity.filter'); + +function applyFilter(a?: string, b?: string): boolean { + if (!a) { + return true; + } + return a.toLocaleLowerCase('en-US') === b?.toLocaleLowerCase('en-US'); +} + +// TODO: Only two hardcoded isKind and isType filters are available for now +// This is just an initial config filter implementation and needs to be revisited +function buildFilter( + config: { filter?: { isKind?: string; isType?: string }[] }, + filterFunc?: (ctx: { entity: Entity }) => boolean, +) { + return (ctx: { entity: Entity }) => { + const configuredFilterMatch = config.filter?.some(filter => { + const kindMatch = applyFilter(filter.isKind, ctx.entity.kind); + const typeMatch = applyFilter( + filter.isType, + ctx.entity.spec?.type?.toString(), + ); + return kindMatch && typeMatch; + }); + if (configuredFilterMatch) { + return true; + } + if (filterFunc) { + return filterFunc(ctx); + } + return true; + }; +} + +// TODO: Figure out how to merge with provided config schema /** @alpha */ export function createEntityCardExtension< - TConfig, TInputs extends AnyExtensionInputMap, >(options: { id: string; attachTo?: { id: string; input: string }; disabled?: boolean; inputs?: TInputs; - configSchema?: PortableSchema; + filter?: (ctx: { entity: Entity }) => boolean; loader: (options: { - config: TConfig; inputs: Expand>; }) => Promise; -}): Extension { +}) { const id = `entity.cards.${options.id}`; return createExtension({ @@ -63,13 +98,25 @@ export function createEntityCardExtension< disabled: options.disabled ?? true, output: { element: coreExtensionData.reactElement, + filter: entityFilterExtensionDataRef, }, inputs: options.inputs, - configSchema: options.configSchema, + configSchema: createSchemaFromZod(z => + z.object({ + filter: z + .array( + z.object({ + isKind: z.string().optional(), + isType: z.string().optional(), + }), + ) + .optional(), + }), + ), factory({ bind, config, inputs, source }) { const ExtensionComponent = lazy(() => options - .loader({ config, inputs }) + .loader({ inputs }) .then(element => ({ default: () => element })), ); @@ -79,6 +126,7 @@ export function createEntityCardExtension< ), + filter: buildFilter(config, options.filter), }); }, }); @@ -86,41 +134,22 @@ export function createEntityCardExtension< /** @alpha */ export function createEntityContentExtension< - TConfig extends { path: string; title: string }, TInputs extends AnyExtensionInputMap, ->( - options: ( - | { - defaultPath: string; - defaultTitle: string; - } - | { - configSchema: PortableSchema; - } - ) & { - id: string; - attachTo?: { id: string; input: string }; - disabled?: boolean; - inputs?: TInputs; - routeRef?: RouteRef; - loader: (options: { - config: TConfig; - inputs: Expand>; - }) => Promise; - }, -): Extension { +>(options: { + id: string; + attachTo?: { id: string; input: string }; + disabled?: boolean; + inputs?: TInputs; + routeRef?: RouteRef; + defaultPath: string; + defaultTitle: string; + filter?: (ctx: { entity: Entity }) => boolean; + loader: (options: { + inputs: Expand>; + }) => Promise; +}) { const id = `entity.content.${options.id}`; - const configSchema = - 'configSchema' in options - ? options.configSchema - : (createSchemaFromZod(z => - z.object({ - path: z.string().default(options.defaultPath), - title: z.string().default(options.defaultTitle), - }), - ) as PortableSchema); - return createExtension({ id, attachTo: options.attachTo ?? { @@ -133,13 +162,27 @@ export function createEntityContentExtension< path: coreExtensionData.routePath, routeRef: coreExtensionData.routeRef.optional(), title: entityContentTitleExtensionDataRef, + filter: entityFilterExtensionDataRef, }, inputs: options.inputs, - configSchema, + configSchema: createSchemaFromZod(z => + z.object({ + path: z.string().default(options.defaultPath), + title: z.string().default(options.defaultTitle), + filter: z + .array( + z.object({ + isKind: z.string().optional(), + isType: z.string().optional(), + }), + ) + .optional(), + }), + ), factory({ bind, config, inputs, source }) { const ExtensionComponent = lazy(() => options - .loader({ config, inputs }) + .loader({ inputs }) .then(element => ({ default: () => element })), ); @@ -152,6 +195,7 @@ export function createEntityContentExtension< ), + filter: buildFilter(config, options.filter), }); }, }); diff --git a/plugins/catalog/src/alpha/EntityOverviewPage.tsx b/plugins/catalog/src/alpha/EntityOverviewPage.tsx new file mode 100644 index 0000000000..baa93845ae --- /dev/null +++ b/plugins/catalog/src/alpha/EntityOverviewPage.tsx @@ -0,0 +1,42 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React from 'react'; +import { useEntity } from '@backstage/plugin-catalog-react'; +import { Entity } from '@backstage/catalog-model'; +import Grid from '@material-ui/core/Grid'; + +interface EntityOverviewPageProps { + cards: Array<{ + element: React.JSX.Element; + filter: (ctx: { entity: Entity }) => boolean; + }>; +} + +export function EntityOverviewPage(props: EntityOverviewPageProps) { + const { entity } = useEntity(); + return ( + + {props.cards + .filter(card => card.filter({ entity })) + .map(card => ( + + {card.element} + + ))} + + ); +} diff --git a/plugins/catalog/src/alpha/entityContents.tsx b/plugins/catalog/src/alpha/entityContents.tsx index 0e26373b5e..9bef4a5e0d 100644 --- a/plugins/catalog/src/alpha/entityContents.tsx +++ b/plugins/catalog/src/alpha/entityContents.tsx @@ -15,12 +15,14 @@ */ import React from 'react'; -import { Grid } from '@material-ui/core'; import { coreExtensionData, createExtensionInput, } from '@backstage/frontend-plugin-api'; -import { createEntityContentExtension } from '@backstage/plugin-catalog-react/alpha'; +import { + createEntityContentExtension, + entityFilterExtensionDataRef, +} from '@backstage/plugin-catalog-react/alpha'; export const OverviewEntityContent = createEntityContentExtension({ id: 'overview', @@ -30,17 +32,13 @@ export const OverviewEntityContent = createEntityContentExtension({ inputs: { cards: createExtensionInput({ element: coreExtensionData.reactElement, + filter: entityFilterExtensionDataRef, }), }, - loader: async ({ inputs }) => ( - - {inputs.cards.map(card => ( - - {card.element} - - ))} - - ), + loader: async ({ inputs }) => + import('./EntityOverviewPage').then(m => ( + + )), }); export default [OverviewEntityContent]; From 56baf8763ad4840351a4a42fbb6b49645e0815ea Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 23 Oct 2023 17:37:18 +0200 Subject: [PATCH 046/102] core-app-api: test fixes for including default scopes in initial refresh Signed-off-by: Patrik Oldsberg --- .../auth/microsoft/MicrosoftAuth.test.ts | 12 ++++++------ .../RefreshingAuthSessionManager.test.ts | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/core-app-api/src/apis/implementations/auth/microsoft/MicrosoftAuth.test.ts b/packages/core-app-api/src/apis/implementations/auth/microsoft/MicrosoftAuth.test.ts index 1c51dd0698..b6d59bd3f2 100644 --- a/packages/core-app-api/src/apis/implementations/auth/microsoft/MicrosoftAuth.test.ts +++ b/packages/core-app-api/src/apis/implementations/auth/microsoft/MicrosoftAuth.test.ts @@ -44,9 +44,7 @@ describe('MicrosoftAuth', () => { return res( ctx.json({ providerInfo: { - accessToken: scopeParam - ? 'tokenForOtherResource' - : 'tokenForGrantScopes', + accessToken: `token:${scopeParam}`, scope: scopeParam || 'grant-resource/scope', }, }), @@ -59,7 +57,9 @@ describe('MicrosoftAuth', () => { it('gets access token with requested scopes for grant', async () => { const accessToken = await microsoftAuth.getAccessToken(); - expect(accessToken).toEqual('tokenForGrantScopes'); + expect(accessToken).toEqual( + 'token:openid offline_access profile email User.Read', + ); }); it('gets access token for other consented scopes besides those directly granted', async () => { @@ -67,7 +67,7 @@ describe('MicrosoftAuth', () => { 'azure-resource/scope', ); - expect(accessToken).toEqual('tokenForOtherResource'); + expect(accessToken).toEqual('token:azure-resource/scope offline_access'); }); it('fails when requesting scopes for multiple resources at once', async () => { @@ -86,7 +86,7 @@ describe('MicrosoftAuth', () => { ); await expect(accessTokenPromise).resolves.toEqual( - 'tokenForOtherResource', + 'token:same-resource/one-scope same-resource/other-scope offline_access', ); }); }); diff --git a/packages/core-app-api/src/lib/AuthSessionManager/RefreshingAuthSessionManager.test.ts b/packages/core-app-api/src/lib/AuthSessionManager/RefreshingAuthSessionManager.test.ts index 23432856cb..e26934f393 100644 --- a/packages/core-app-api/src/lib/AuthSessionManager/RefreshingAuthSessionManager.test.ts +++ b/packages/core-app-api/src/lib/AuthSessionManager/RefreshingAuthSessionManager.test.ts @@ -47,7 +47,7 @@ describe('RefreshingAuthSessionManager', () => { await manager.getSession({}); expect(createSession).toHaveBeenCalledTimes(1); - expect(refreshSession).toHaveBeenCalledWith(undefined); + expect(refreshSession).toHaveBeenCalledWith(new Set()); expect(stateSubscriber.mock.calls).toEqual([ [SessionState.SignedOut], [SessionState.SignedIn], @@ -134,7 +134,7 @@ describe('RefreshingAuthSessionManager', () => { expect(await manager.getSession({ optional: true })).toBe(undefined); expect(createSession).toHaveBeenCalledTimes(0); - expect(refreshSession).toHaveBeenCalledWith(undefined); + expect(refreshSession).toHaveBeenCalledWith(new Set()); }); it('should forward option to instantly show auth popup and not attempt refresh', async () => { From 6694b369a3826ef64e9a8d7ade5830a51b1567b7 Mon Sep 17 00:00:00 2001 From: Aramis Date: Sun, 16 Jul 2023 14:43:23 -0400 Subject: [PATCH 047/102] feat(repo-tools): add a new command that provides dynamic test-driven OpenAPI schema feedback. Signed-off-by: Aramis Sennyey Signed-off-by: Aramis --- .changeset/nasty-colts-tickle.md | 6 + .changeset/old-chairs-switch.md | 5 + .changeset/tricky-vans-behave.md | 5 + .github/vale/Vocab/Backstage/accept.txt | 1 + .github/workflows/ci.yml | 4 + docs/openapi/test-case-validation.md | 41 + package.json | 1 + packages/backend-openapi-utils/README.md | 2 +- packages/backend-openapi-utils/api-report.md | 5 + packages/backend-openapi-utils/src/index.ts | 1 + .../backend-openapi-utils/src/stub.test.ts | 1 - .../backend-openapi-utils/src/testUtils.ts | 36 + packages/repo-tools/cli-report.md | 21 + packages/repo-tools/package.json | 3 +- packages/repo-tools/src/commands/index.ts | 11 + .../repo-tools/src/commands/openapi/runner.ts | 27 +- .../src/commands/openapi/test/index.ts | 109 + .../src/commands/openapi/test/init.ts | 90 + packages/repo-tools/src/lib/exec.ts | 33 + plugins/catalog-backend/optic.yml | 15 + .../src/schema/openapi.generated.ts | 242 +- .../catalog-backend/src/schema/openapi.yaml | 251 +- .../src/service/createRouter.test.ts | 25 +- .../request/parseQueryEntitiesParams.ts | 4 +- plugins/search-backend/optic.yml | 15 + .../src/schema/openapi.generated.ts | 73 +- .../search-backend/src/schema/openapi.yaml | 60 +- .../search-backend/src/service/router.test.ts | 7 +- yarn.lock | 2036 ++++++++++++++++- 29 files changed, 2836 insertions(+), 294 deletions(-) create mode 100644 .changeset/nasty-colts-tickle.md create mode 100644 .changeset/old-chairs-switch.md create mode 100644 .changeset/tricky-vans-behave.md create mode 100644 docs/openapi/test-case-validation.md create mode 100644 packages/backend-openapi-utils/src/testUtils.ts create mode 100644 packages/repo-tools/src/commands/openapi/test/index.ts create mode 100644 packages/repo-tools/src/commands/openapi/test/init.ts create mode 100644 packages/repo-tools/src/lib/exec.ts create mode 100644 plugins/catalog-backend/optic.yml create mode 100644 plugins/search-backend/optic.yml diff --git a/.changeset/nasty-colts-tickle.md b/.changeset/nasty-colts-tickle.md new file mode 100644 index 0000000000..5a6194c14d --- /dev/null +++ b/.changeset/nasty-colts-tickle.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-catalog-backend': patch +'@backstage/plugin-search-backend': patch +--- + +Update the OpenAPI spec with more complete error responses and request bodies using Optic. Also, updates the test cases to use the new `supertest` pass through from `@backstage/backend-openapi-utils`. diff --git a/.changeset/old-chairs-switch.md b/.changeset/old-chairs-switch.md new file mode 100644 index 0000000000..c9529f9d63 --- /dev/null +++ b/.changeset/old-chairs-switch.md @@ -0,0 +1,5 @@ +--- +'@backstage/repo-tools': patch +--- + +Adds a new command `schema openapi test` that performs runtime validation of your OpenAPI specs using your test data. Under the hood, we're using Optic to perform this check, really cool work by them! diff --git a/.changeset/tricky-vans-behave.md b/.changeset/tricky-vans-behave.md new file mode 100644 index 0000000000..89592e5e8f --- /dev/null +++ b/.changeset/tricky-vans-behave.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-openapi-utils': patch +--- + +Adds a new function `wrapInOpenApiTestServer` that allows for proxied requests at runtime. This will support the new `yarn backstage-repo-tools schema openapi test` command. diff --git a/.github/vale/Vocab/Backstage/accept.txt b/.github/vale/Vocab/Backstage/accept.txt index e1c65fec06..c3a0e7ddcb 100644 --- a/.github/vale/Vocab/Backstage/accept.txt +++ b/.github/vale/Vocab/Backstage/accept.txt @@ -291,6 +291,7 @@ Preprarer productional Protobuf proxying +proxied Proxying pseudonymized pubsub diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 23e81192c0..4e3ec626d7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -222,6 +222,10 @@ jobs: BACKSTAGE_TEST_DATABASE_POSTGRES9_CONNECTION_STRING: postgresql://postgres:postgres@localhost:${{ job.services.postgres9.ports[5432] }} BACKSTAGE_TEST_DATABASE_MYSQL8_CONNECTION_STRING: mysql://root:root@localhost:${{ job.services.mysql8.ports[3306] }}/ignored + # We run the test cases before verifying the specs to prevent any failing tests from causing errors. + - name: verify openapi specs against test cases + run: yarn backstage-repo-tools schema openapi test + - name: ensure clean working directory run: | if files=$(git ls-files --exclude-standard --others --modified) && [[ -z "$files" ]]; then diff --git a/docs/openapi/test-case-validation.md b/docs/openapi/test-case-validation.md new file mode 100644 index 0000000000..50686b5ba0 --- /dev/null +++ b/docs/openapi/test-case-validation.md @@ -0,0 +1,41 @@ +## OpenAPI Validation using Test Cases + +This is primarily performed by `backstage-repo-tools schema openapi test`. Any errors found in the generated specs can be either + +1. Fixed manually, this is usually relevant for request body or response body changes. +2. Fixed automatically with `backstage-repo-tools schema openapi test --update`. +3. Fixing the test case. This can happen where a response is mocked as + +```ts +it('should return the right value', () => { + // We will assume that this is the actual response and update the spec accordingly. + // Ideally, this should be a fully populated return value. + const entity: Entity = {} as any; + app.get('/test', () => { + return entity; + }); + const response = await request(app).get('/test'); + expect(response.body).toEqual(entity); +}); +``` + +will cause an invalid spec validation. The return value doesn't have all properties as defined in the type. Try to avoid this if possible. Something better would be, + +```ts +it('should return the right value', () => { + // We will assume that this is the actual response and update the spec accordingly. + // Ideally, this should be a fully populated return value. + const entity: Entity = { + apiVersion: 'a1', + kind: 'k1', + metadata: { name: 'n1' }, + }; + app.get('/test', () => { + return entity; + }); + const response = await request(app).get('/test'); + expect(response.body).toEqual(entity); +}); +``` + +Additionally, for more advanced use cases, you can run `yarn optic capture {PATH_TO_OPENAPI_FILE} --update interactive` and go through the prompts on the screen. Under the hood, the test validation + updating is done by [Optic](https://github.com/opticdev/optic), a great project around supporting OpenAPI specs and development. You can find additional options [here](https://www.useoptic.com/docs/verify-openapi). diff --git a/package.json b/package.json index 6a21034cae..19bb8f3a85 100644 --- a/package.json +++ b/package.json @@ -73,6 +73,7 @@ "@techdocs/cli": "workspace:*", "@types/node": "^18.17.8", "@types/webpack": "^5.28.0", + "@useoptic/optic": "^0.50.7", "command-exists": "^1.2.9", "concurrently": "^8.0.0", "cross-env": "^7.0.0", diff --git a/packages/backend-openapi-utils/README.md b/packages/backend-openapi-utils/README.md index ca3f03fcc1..3d3f40682e 100644 --- a/packages/backend-openapi-utils/README.md +++ b/packages/backend-openapi-utils/README.md @@ -65,7 +65,7 @@ export function createRouter() { ### Why am I getting `unknown` as the type for a response? -This can happen when you have a `charset` defined in your `response.content` section. Something like `response.content[ 'application/json; charset=utf-8:']` will cause this issue. +This can happen when you have a `charset` defined in your `response.content` section. Something like `response.content['application/json; charset=utf-8:']` will cause this issue. ## INTERNAL diff --git a/packages/backend-openapi-utils/api-report.md b/packages/backend-openapi-utils/api-report.md index 97ea0224d1..b56dd19bfa 100644 --- a/packages/backend-openapi-utils/api-report.md +++ b/packages/backend-openapi-utils/api-report.md @@ -5,6 +5,7 @@ ```ts import type { ContentObject } from 'openapi3-ts'; import type core from 'express-serve-static-core'; +import { Express as Express_2 } from 'express'; import { FromSchema } from 'json-schema-to-ts'; import { JSONSchema7 } from 'json-schema-to-ts'; import { middleware } from 'express-openapi-validator'; @@ -16,6 +17,7 @@ import { RequestHandler } from 'express'; import type { ResponseObject } from 'openapi3-ts'; import { Router } from 'express'; import type { SchemaObject } from 'openapi3-ts'; +import { Server } from 'http'; // @public export interface ApiRouter extends Router { @@ -708,4 +710,7 @@ type UnknownIfNever

= [P] extends [never] ? unknown : P; // @public type ValueOf = T[keyof T]; + +// @public +export const wrapInOpenApiTestServer: (app: Express_2) => Server | Express_2; ``` diff --git a/packages/backend-openapi-utils/src/index.ts b/packages/backend-openapi-utils/src/index.ts index 2b612fd617..46dacdcf0a 100644 --- a/packages/backend-openapi-utils/src/index.ts +++ b/packages/backend-openapi-utils/src/index.ts @@ -32,3 +32,4 @@ export type { } from './utility'; export type { ApiRouter } from './router'; export { createValidatedOpenApiRouter } from './stub'; +export { wrapInOpenApiTestServer } from './testUtils'; diff --git a/packages/backend-openapi-utils/src/stub.test.ts b/packages/backend-openapi-utils/src/stub.test.ts index c9ec955e95..0c337ec7a8 100644 --- a/packages/backend-openapi-utils/src/stub.test.ts +++ b/packages/backend-openapi-utils/src/stub.test.ts @@ -27,7 +27,6 @@ describe('createRouter', () => { status: 'available', photoUrls: [], }; - it('does NOT override originalUrl and basePath after execution', async () => { expect.assertions(2); const router = createValidatedOpenApiRouter(singlePathSpec); diff --git a/packages/backend-openapi-utils/src/testUtils.ts b/packages/backend-openapi-utils/src/testUtils.ts new file mode 100644 index 0000000000..2ac5575fc4 --- /dev/null +++ b/packages/backend-openapi-utils/src/testUtils.ts @@ -0,0 +1,36 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { Express } from 'express'; +import { Server } from 'http'; + +/** + * !!! THIS CURRENTLY ONLY SUPPORTS SUPERTEST !!! + * Running against supertest, we need some way to hit the optic proxy. This ensures that + * that happens at runtime when in the context of a `yarn optic capture` command. + * @param app - Express router that would be passed to supertest's `request`. + * @returns A wrapper around the express router (or the router untouched) that still works with supertest. + * @public + */ +export const wrapInOpenApiTestServer = (app: Express): Server | Express => { + if (process.env.OPTIC_PROXY) { + const server = app.listen(+process.env.PORT!); + return { + ...server, + address: () => new URL(process.env.OPTIC_PROXY!), + } as any; + } + return app; +}; diff --git a/packages/repo-tools/cli-report.md b/packages/repo-tools/cli-report.md index 12d71f3be4..be1e7ffceb 100644 --- a/packages/repo-tools/cli-report.md +++ b/packages/repo-tools/cli-report.md @@ -73,6 +73,8 @@ Commands: verify [paths...] generate [paths...] lint [options] [paths...] + test [options] [paths...] + init help [command] ``` @@ -85,6 +87,15 @@ Options: -h, --help ``` +### `backstage-repo-tools schema openapi init` + +``` +Usage: backstage-repo-tools schema openapi init [options] + +Options: + -h, --help +``` + ### `backstage-repo-tools schema openapi lint` ``` @@ -95,6 +106,16 @@ Options: -h, --help ``` +### `backstage-repo-tools schema openapi test` + +``` +Usage: backstage-repo-tools schema openapi test [options] [paths...] + +Options: + --update + -h, --help +``` + ### `backstage-repo-tools schema openapi verify` ``` diff --git a/packages/repo-tools/package.json b/packages/repo-tools/package.json index fa398e598e..2705f3b589 100644 --- a/packages/repo-tools/package.json +++ b/packages/repo-tools/package.json @@ -43,7 +43,7 @@ "@stoplight/spectral-formatters": "^1.1.0", "@stoplight/spectral-functions": "^1.7.2", "@stoplight/spectral-parsers": "^1.0.2", - "@stoplight/spectral-rulesets": "^1.16.0", + "@stoplight/spectral-rulesets": "^1.18.0", "@stoplight/spectral-runtime": "^1.1.2", "@stoplight/types": "^13.14.0", "chalk": "^4.0.0", @@ -56,6 +56,7 @@ "lodash": "^4.17.21", "minimatch": "^5.1.1", "p-limit": "^3.0.2", + "portfinder": "^1.0.32", "ts-node": "^10.0.0", "yaml-diff-patch": "^2.0.0" }, diff --git a/packages/repo-tools/src/commands/index.ts b/packages/repo-tools/src/commands/index.ts index c429a253f8..4f9ea87708 100644 --- a/packages/repo-tools/src/commands/index.ts +++ b/packages/repo-tools/src/commands/index.ts @@ -49,6 +49,17 @@ function registerSchemaCommand(program: Command) { 'Fail on any linting severity messages, not just errors.', ) .action(lazy(() => import('./openapi/lint').then(m => m.bulkCommand))); + + openApiCommand + .command('test [paths...]') + .description('Test OpenAPI schemas against written tests') + .option('--update', 'Update the spec on failure.') + .action(lazy(() => import('./openapi/test').then(m => m.bulkCommand))); + + openApiCommand + .command('init ') + .description('Creates any config needed for the test command.') + .action(lazy(() => import('./openapi/test/init').then(m => m.default))); } export function registerCommands(program: Command) { diff --git a/packages/repo-tools/src/commands/openapi/runner.ts b/packages/repo-tools/src/commands/openapi/runner.ts index baffb93808..cc354daaaa 100644 --- a/packages/repo-tools/src/commands/openapi/runner.ts +++ b/packages/repo-tools/src/commands/openapi/runner.ts @@ -18,21 +18,40 @@ import { resolvePackagePaths } from '../../lib/paths'; import pLimit from 'p-limit'; import { relative as relativePath } from 'path'; import { paths as cliPaths } from '../../lib/paths'; +import portFinder from 'portfinder'; export async function runner( paths: string[], - command: (dir: string) => Promise, + command: (dir: string, options?: { port: number }) => Promise, + options?: { + concurrencyLimit: number; + startingPort?: number; + }, ) { const packages = await resolvePackagePaths({ paths }); - const limit = pLimit(5); - + const limit = pLimit(options?.concurrencyLimit ?? 5); + let port = + options?.startingPort && + (await portFinder.getPortPromise({ + // Prevent collisions with optic which runs 8000->8999 + port: options.startingPort, + stopPort: options.startingPort + 1_000, + })); const resultsList = await Promise.all( packages.map(pkg => limit(async () => { let resultText = ''; try { + if (port) + port = + options?.startingPort && + (await portFinder.getPortPromise({ + // Prevent collisions with optic which runs 8000->8999 + port: port + 1, + stopPort: options.startingPort + 1_000, + })); console.log(`## Processing ${pkg}`); - await command(pkg); + await command(pkg, port ? { port } : undefined); } catch (err) { resultText = err.message; } diff --git a/packages/repo-tools/src/commands/openapi/test/index.ts b/packages/repo-tools/src/commands/openapi/test/index.ts new file mode 100644 index 0000000000..1d646394d0 --- /dev/null +++ b/packages/repo-tools/src/commands/openapi/test/index.ts @@ -0,0 +1,109 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import fs from 'fs-extra'; +import { join } from 'path'; +import chalk from 'chalk'; +import { runner } from '../runner'; +import { YAML_SCHEMA_PATH } from '../constants'; +import { paths as cliPaths } from '../../../lib/paths'; +import { exec } from '../../../lib/exec'; + +async function test( + directoryPath: string, + { port }: { port: number }, + options?: { update?: boolean }, +) { + const openapiPath = join(directoryPath, YAML_SCHEMA_PATH); + if (!(await fs.pathExists(openapiPath))) { + return; + } + const opticConfigFilePath = join(directoryPath, 'optic.yml'); + if (!(await fs.pathExists(opticConfigFilePath))) { + return; + } + + try { + await exec( + `yarn run -T optic capture`, + [ + YAML_SCHEMA_PATH, + '--server-override', + `http://localhost:${port}`, + options?.update ? '--update' : '', + ], + { + cwd: directoryPath, + env: { + ...process.env, + PORT: `${port}`, + }, + }, + ); + } catch (err) { + // Optic outputs the actual results to stdout, but that will not be added to the message by default. + err.message = err.stderr + err.stdout; + err.message = (err.message as string) + .split('\n') + .map(e => e.replace(/.{1} Sending requests to server/, '')) + // Remove any lines that are emitted during processing and only show output. + .filter(e => !e.includes('PASS')) + .filter(e => e.trim()) + .join('\n'); + throw err; + } + if ( + (await cliPaths.resolveTargetRoot('node_modules/.bin/prettier')) && + options?.update + ) { + await exec(`yarn prettier`, ['--write', openapiPath]); + } +} + +export async function bulkCommand( + paths: string[] = [], + options: { update?: boolean }, +): Promise { + const resultsList = await runner( + paths, + (dir, runnerOptions) => test(dir, runnerOptions!, options), + { + concurrencyLimit: 1, + startingPort: 9_000, + }, + ); + + let failed = false; + for (const { relativeDir, resultText } of resultsList) { + if (resultText) { + console.log(); + console.log( + chalk.red( + `OpenAPI runtime validation against tests failed in ${relativeDir}:`, + ), + ); + console.log(resultText.trimStart()); + + failed = true; + } + } + + if (failed) { + process.exit(1); + } else { + console.log(chalk.green('Verified all specifications against test data.')); + } +} diff --git a/packages/repo-tools/src/commands/openapi/test/init.ts b/packages/repo-tools/src/commands/openapi/test/init.ts new file mode 100644 index 0000000000..13c3aeb2b6 --- /dev/null +++ b/packages/repo-tools/src/commands/openapi/test/init.ts @@ -0,0 +1,90 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import fs from 'fs-extra'; +import { join } from 'path'; +import { YAML_SCHEMA_PATH } from './../constants'; + +import { paths as cliPaths } from '../../../lib/paths'; +import { runner } from '../runner'; +import chalk from 'chalk'; +import { exec } from '../../../lib/exec'; + +const ROUTER_TEST_PATHS = [ + 'src/service/router.test.ts', + 'src/service/createRouter.test.ts', +]; + +async function init(directoryPath: string) { + const openapiPath = join(directoryPath, YAML_SCHEMA_PATH); + if (!(await fs.pathExists(openapiPath))) { + throw new Error( + `You do not have an OpenAPI YAML file at ${openapiPath}. Please create one and retry this command. If you already have existing test cases for your router, see 'backstage-repo-tools schema openapi test --update'`, + ); + } + const opticConfigFilePath = join(directoryPath, 'optic.yml'); + if (!(await fs.pathExists(opticConfigFilePath))) { + throw new Error(`This directory already has an optic.yml file. Exiting.`); + } + await fs.writeFile( + opticConfigFilePath, + `ruleset: + - breaking-changes +capture: + ${YAML_SCHEMA_PATH}: + # 🔧 Runnable example with simple get requests. + # Run with "PORT=3000 optic capture ${YAML_SCHEMA_PATH} --update interactive" in '${directoryPath}' + # You can change the server and the 'requests' section to experiment + server: + # This will not be used by 'backstage-repo-tools schema openapi test', but may be useful for interactive updates. + url: http://localhost:3000 + requests: + # ℹ️ Requests should be sent to the Optic proxy, the address of which is injected into 'run.command's env as OPTIC_PROXY (or the value of 'run.proxy_variable'). + run: + # 🔧 Specify a command that will generate traffic + command: yarn backstage-cli package test --no-watch ${ROUTER_TEST_PATHS.map( + e => `"${e}"`, + ).join(',')} + `, + ); + if (await cliPaths.resolveTargetRoot('node_modules/.bin/prettier')) { + await exec(`yarn prettier`, ['--write', opticConfigFilePath]); + } +} + +export default async function initCommand(paths: string[] = []) { + const resultsList = await runner(paths, dir => init(dir), { + concurrencyLimit: 5, + }); + + let failed = false; + for (const { relativeDir, resultText } of resultsList) { + if (resultText) { + console.log(); + console.log( + chalk.red(`Failed to initialize ${relativeDir} for OpenAPI commands.`), + ); + console.log(resultText.trimStart()); + + failed = true; + } + } + + if (failed) { + process.exit(1); + } else { + console.log(chalk.green(`All directories have already been configured.`)); + } +} diff --git a/packages/repo-tools/src/lib/exec.ts b/packages/repo-tools/src/lib/exec.ts new file mode 100644 index 0000000000..7f1bfe2302 --- /dev/null +++ b/packages/repo-tools/src/lib/exec.ts @@ -0,0 +1,33 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { promisify } from 'util'; +import { ExecOptions, exec as execCb } from 'child_process'; + +const execPromise = promisify(execCb); + +export const exec = ( + command: string, + options: string[] = [], + execOptions?: ExecOptions, +) => { + return execPromise( + [ + command, + ...options.filter(e => e).map(e => (e.startsWith('-') ? e : `"${e}"`)), + ].join(' '), + execOptions, + ); +}; diff --git a/plugins/catalog-backend/optic.yml b/plugins/catalog-backend/optic.yml new file mode 100644 index 0000000000..8b0c050516 --- /dev/null +++ b/plugins/catalog-backend/optic.yml @@ -0,0 +1,15 @@ +ruleset: + - breaking-changes +capture: + src/schema/openapi.yaml: + # 🔧 Runnable example with simple get requests. + # Run with "PORT=3000 optic capture src/schema/openapi.yaml --update interactive" in 'plugins/catalog-backend' + # You can change the server and the 'requests' section to experiment + server: + # This will not be used by 'backstage-repo-tools schema openapi test', but may be useful for interactive updates. + url: http://localhost:3000 + requests: + # ℹ️ Requests should be sent to the Optic proxy, the address of which is injected into 'run.command's env as OPTIC_PROXY (or the value of 'run.proxy_variable'). + run: + # 🔧 Specify a command that will generate traffic + command: yarn backstage-cli package test --no-watch src/service/router.test.ts src/service/createRouter.test.ts diff --git a/plugins/catalog-backend/src/schema/openapi.generated.ts b/plugins/catalog-backend/src/schema/openapi.generated.ts index 2278a30e62..a31615dfc6 100644 --- a/plugins/catalog-backend/src/schema/openapi.generated.ts +++ b/plugins/catalog-backend/src/schema/openapi.generated.ts @@ -191,12 +191,69 @@ export const spec = { }, }, requestBodies: {}, - responses: {}, + responses: { + ErrorResponse: { + description: 'An error response from the backend.', + content: { + 'application/json': { + schema: { + $ref: '#/components/schemas/Error', + }, + }, + }, + }, + }, schemas: { + Error: { + type: 'object', + properties: { + error: { + type: 'object', + properties: { + name: { + type: 'string', + }, + message: { + type: 'string', + }, + stack: { + type: 'string', + }, + code: { + type: 'string', + }, + }, + required: ['name', 'message'], + }, + request: { + type: 'object', + properties: { + method: { + type: 'string', + }, + url: { + type: 'string', + }, + }, + required: ['method', 'url'], + }, + response: { + type: 'object', + properties: { + statusCode: { + type: 'number', + }, + }, + required: ['statusCode'], + }, + }, + required: ['error', 'response'], + }, JsonObject: { type: 'object', properties: {}, description: 'A type representing all allowed JSON object values.', + additionalProperties: true, }, MapStringString: { type: 'object', @@ -698,38 +755,6 @@ export const spec = { required: ['type', 'target'], additionalProperties: false, }, - SerializedError: { - allOf: [ - { - $ref: '#/components/schemas/JsonObject', - }, - { - type: 'object', - properties: { - code: { - type: 'string', - description: - 'A custom code (not necessarily the same as an HTTP response code); may not be present', - }, - stack: { - type: 'string', - description: 'A stringified stack trace; may not be present', - }, - message: { - type: 'string', - description: 'The message of the exception that was thrown', - }, - name: { - type: 'string', - description: 'The name of the exception that was thrown', - }, - }, - required: ['message', 'name'], - }, - ], - description: 'The serialized form of an Error.', - additionalProperties: false, - }, EntitiesQueryResponse: { type: 'object', properties: { @@ -777,6 +802,12 @@ export const spec = { '200': { description: 'Refreshed', }, + '400': { + $ref: '#/components/responses/ErrorResponse', + }, + default: { + $ref: '#/components/responses/ErrorResponse', + }, }, security: [ {}, @@ -829,6 +860,12 @@ export const spec = { }, }, }, + '400': { + $ref: '#/components/responses/ErrorResponse', + }, + default: { + $ref: '#/components/responses/ErrorResponse', + }, }, security: [ {}, @@ -882,6 +919,12 @@ export const spec = { }, }, }, + '400': { + $ref: '#/components/responses/ErrorResponse', + }, + default: { + $ref: '#/components/responses/ErrorResponse', + }, }, security: [ {}, @@ -902,6 +945,12 @@ export const spec = { '204': { description: 'Deleted successfully.', }, + '400': { + $ref: '#/components/responses/ErrorResponse', + }, + default: { + $ref: '#/components/responses/ErrorResponse', + }, }, security: [ {}, @@ -931,6 +980,12 @@ export const spec = { }, }, }, + '400': { + $ref: '#/components/responses/ErrorResponse', + }, + default: { + $ref: '#/components/responses/ErrorResponse', + }, }, security: [ {}, @@ -966,6 +1021,12 @@ export const spec = { }, }, }, + '400': { + $ref: '#/components/responses/ErrorResponse', + }, + default: { + $ref: '#/components/responses/ErrorResponse', + }, }, security: [ {}, @@ -1002,6 +1063,12 @@ export const spec = { }, }, }, + '400': { + $ref: '#/components/responses/ErrorResponse', + }, + default: { + $ref: '#/components/responses/ErrorResponse', + }, }, security: [ {}, @@ -1015,7 +1082,7 @@ export const spec = { }, ], requestBody: { - required: true, + required: false, content: { 'application/json': { schema: { @@ -1072,6 +1139,12 @@ export const spec = { }, }, }, + '400': { + $ref: '#/components/responses/ErrorResponse', + }, + default: { + $ref: '#/components/responses/ErrorResponse', + }, }, security: [ {}, @@ -1139,6 +1212,12 @@ export const spec = { }, }, }, + '400': { + $ref: '#/components/responses/ErrorResponse', + }, + default: { + $ref: '#/components/responses/ErrorResponse', + }, }, security: [ {}, @@ -1203,6 +1282,44 @@ export const spec = { }, }, }, + '201': { + description: '201 response', + content: { + 'application/json': { + schema: { + type: 'object', + properties: { + location: { + type: 'object', + properties: { + id: { + type: 'string', + }, + type: { + type: 'string', + }, + target: { + type: 'string', + }, + }, + required: ['id', 'type', 'target'], + }, + entities: { + type: 'array', + items: {}, + }, + }, + required: ['location', 'entities'], + }, + }, + }, + }, + '400': { + $ref: '#/components/responses/ErrorResponse', + }, + default: { + $ref: '#/components/responses/ErrorResponse', + }, }, security: [ {}, @@ -1264,6 +1381,9 @@ export const spec = { }, }, }, + default: { + $ref: '#/components/responses/ErrorResponse', + }, }, security: [ {}, @@ -1289,6 +1409,9 @@ export const spec = { }, }, }, + default: { + $ref: '#/components/responses/ErrorResponse', + }, }, security: [ {}, @@ -1315,6 +1438,12 @@ export const spec = { '204': { description: 'No content', }, + '400': { + $ref: '#/components/responses/ErrorResponse', + }, + default: { + $ref: '#/components/responses/ErrorResponse', + }, }, security: [ {}, @@ -1350,6 +1479,12 @@ export const spec = { }, }, }, + '400': { + $ref: '#/components/responses/ErrorResponse', + }, + default: { + $ref: '#/components/responses/ErrorResponse', + }, }, security: [ {}, @@ -1387,32 +1522,31 @@ export const spec = { responses: { '200': { description: 'Ok', + }, + '400': { + description: '400 response', content: { - 'application/json': { + 'application/json; charset=utf-8': { schema: { - anyOf: [ - { - type: 'object', - properties: { - errors: { - $ref: '#/components/schemas/SerializedError', - }, - }, - required: ['errors'], - }, - { - type: 'object', - properties: { - errors: { - type: 'array', - items: { - $ref: '#/components/schemas/SerializedError', + type: 'object', + properties: { + errors: { + type: 'array', + items: { + type: 'object', + properties: { + name: { + type: 'string', + }, + message: { + type: 'string', }, }, + required: ['name', 'message'], }, - required: ['errors'], }, - ], + }, + required: ['errors'], }, }, }, diff --git a/plugins/catalog-backend/src/schema/openapi.yaml b/plugins/catalog-backend/src/schema/openapi.yaml index 4db3147a97..3375f7fe15 100644 --- a/plugins/catalog-backend/src/schema/openapi.yaml +++ b/plugins/catalog-backend/src/schema/openapi.yaml @@ -1,5 +1,4 @@ openapi: 3.0.3 - info: title: '@backstage/plugin-catalog-backend' version: '1' @@ -8,10 +7,8 @@ info: name: Apache-2.0 url: http://www.apache.org/licenses/LICENSE-2.0.html contact: {} - servers: - url: / - components: examples: {} headers: {} @@ -73,10 +70,15 @@ components: items: type: string examples: - 'Get name and the entire relations collection': - value: ['metadata.name', 'relations'] - 'Get kind, name and namespace': - value: ['kind', 'metadata.name', 'metadata.namespace'] + Get name and the entire relations collection: + value: + - metadata.name + - relations + Get kind, name and namespace: + value: + - kind + - metadata.name + - metadata.namespace filter: name: filter in: query @@ -88,11 +90,12 @@ components: items: type: string examples: - 'Get groups': - value: ['kind=group'] - 'Get orphaned components': + Get groups: value: - ['kind=component,metadata.annotations.backstage.io/orphan=true'] + - kind=group + Get orphaned components: + value: + - kind=component,metadata.annotations.backstage.io/orphan=true offset: name: offset in: query @@ -125,17 +128,63 @@ components: explode: true style: form examples: - 'Order ascending by name': - value: ['metadata.name,asc'] - 'Order descending by owner': - value: ['spec.owner,desc'] + Order ascending by name: + value: + - metadata.name,asc + Order descending by owner: + value: + - spec.owner,desc requestBodies: {} - responses: {} + responses: + ErrorResponse: + description: An error response from the backend. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' schemas: + Error: + type: object + properties: + error: + type: object + properties: + name: + type: string + message: + type: string + stack: + type: string + code: + type: string + required: + - name + - message + request: + type: object + properties: + method: + type: string + url: + type: string + required: + - method + - url + response: + type: object + properties: + statusCode: + type: number + required: + - statusCode + required: + - error + - response JsonObject: type: object properties: {} description: A type representing all allowed JSON object values. + additionalProperties: true MapStringString: type: object properties: {} @@ -350,7 +399,6 @@ components: count: type: number additionalProperties: false - EntityFacetsResponse: type: object properties: @@ -593,28 +641,6 @@ components: - type - target additionalProperties: false - SerializedError: - allOf: - - $ref: '#/components/schemas/JsonObject' - - type: object - properties: - code: - type: string - description: A custom code (not necessarily the same as an HTTP response code); may not be present - stack: - type: string - description: A stringified stack trace; may not be present - message: - type: string - description: The message of the exception that was thrown - name: - type: string - description: The name of the exception that was thrown - required: - - message - - name - description: The serialized form of an Error. - additionalProperties: false EntitiesQueryResponse: type: object properties: @@ -622,8 +648,7 @@ components: type: array items: $ref: '#/components/schemas/Entity' - description: |- - The list of entities paginated by a specific filter. + description: The list of entities paginated by a specific filter. totalItems: type: number pageInfo: @@ -631,12 +656,10 @@ components: properties: nextCursor: type: string - description: |- - The cursor for the next batch of entities. + description: The cursor for the next batch of entities. prevCursor: type: string - description: |- - The cursor for the previous batch of entities. + description: The cursor for the previous batch of entities. additionalProperties: false securitySchemes: JWT: @@ -651,6 +674,10 @@ paths: responses: '200': description: Refreshed + '400': + $ref: '#/components/responses/ErrorResponse' + default: + $ref: '#/components/responses/ErrorResponse' security: - {} - JWT: [] @@ -684,6 +711,10 @@ paths: type: array items: $ref: '#/components/schemas/Entity' + '400': + $ref: '#/components/responses/ErrorResponse' + default: + $ref: '#/components/responses/ErrorResponse' security: - {} - JWT: [] @@ -712,6 +743,10 @@ paths: application/json: schema: $ref: '#/components/schemas/Entity' + '400': + $ref: '#/components/responses/ErrorResponse' + default: + $ref: '#/components/responses/ErrorResponse' security: - {} - JWT: [] @@ -723,6 +758,10 @@ paths: responses: '204': description: Deleted successfully. + '400': + $ref: '#/components/responses/ErrorResponse' + default: + $ref: '#/components/responses/ErrorResponse' security: - {} - JWT: [] @@ -739,6 +778,10 @@ paths: application/json: schema: $ref: '#/components/schemas/Entity' + '400': + $ref: '#/components/responses/ErrorResponse' + default: + $ref: '#/components/responses/ErrorResponse' security: - {} - JWT: [] @@ -757,6 +800,10 @@ paths: application/json: schema: $ref: '#/components/schemas/EntityAncestryResponse' + '400': + $ref: '#/components/responses/ErrorResponse' + default: + $ref: '#/components/responses/ErrorResponse' security: - {} - JWT: [] @@ -775,13 +822,17 @@ paths: application/json: schema: $ref: '#/components/schemas/EntitiesBatchResponse' + '400': + $ref: '#/components/responses/ErrorResponse' + default: + $ref: '#/components/responses/ErrorResponse' security: - {} - JWT: [] parameters: - $ref: '#/components/parameters/fields' requestBody: - required: true + required: false content: application/json: schema: @@ -798,14 +849,17 @@ paths: items: type: string examples: - 'Fetch Backstage entities': + Fetch Backstage entities: value: entityRefs: - ['component:default/backstage', 'api:default/backstage'] - 'Fetch annotations for backstage entity': + - component:default/backstage + - api:default/backstage + Fetch annotations for backstage entity: value: - entityRefs: ['component:default/backstage'] - fields: ['metadata.annotations'] + entityRefs: + - component:default/backstage + fields: + - metadata.annotations /entities/by-query: get: operationId: GetEntitiesByQuery @@ -817,6 +871,10 @@ paths: application/json: schema: $ref: '#/components/schemas/EntitiesQueryResponse' + '400': + $ref: '#/components/responses/ErrorResponse' + default: + $ref: '#/components/responses/ErrorResponse' security: - {} - JWT: [] @@ -855,6 +913,10 @@ paths: application/json: schema: $ref: '#/components/schemas/EntityFacetsResponse' + '400': + $ref: '#/components/responses/ErrorResponse' + default: + $ref: '#/components/responses/ErrorResponse' security: - {} - JWT: [] @@ -868,10 +930,12 @@ paths: items: type: string examples: - 'Entities by kind': - value: ['kind'] - 'Entities by spec type': - value: ['spec.type'] + Entities by kind: + value: + - kind + Entities by spec type: + value: + - spec.type - $ref: '#/components/parameters/filter' /locations: post: @@ -896,6 +960,36 @@ paths: required: - entities - location + '201': + description: 201 response + content: + application/json: + schema: + type: object + properties: + location: + type: object + properties: + id: + type: string + type: + type: string + target: + type: string + required: + - id + - type + - target + entities: + type: array + items: {} + required: + - location + - entities + '400': + $ref: '#/components/responses/ErrorResponse' + default: + $ref: '#/components/responses/ErrorResponse' security: - {} - JWT: [] @@ -937,6 +1031,8 @@ paths: $ref: '#/components/schemas/Location' required: - data + default: + $ref: '#/components/responses/ErrorResponse' security: - {} - JWT: [] @@ -952,6 +1048,8 @@ paths: application/json: schema: $ref: '#/components/schemas/Location' + default: + $ref: '#/components/responses/ErrorResponse' security: - {} - JWT: [] @@ -968,6 +1066,10 @@ paths: responses: '204': description: No content + '400': + $ref: '#/components/responses/ErrorResponse' + default: + $ref: '#/components/responses/ErrorResponse' security: - {} - JWT: [] @@ -989,6 +1091,10 @@ paths: application/json: schema: $ref: '#/components/schemas/AnalyzeLocationResponse' + '400': + $ref: '#/components/responses/ErrorResponse' + default: + $ref: '#/components/responses/ErrorResponse' security: - {} - JWT: [] @@ -1013,24 +1119,27 @@ paths: responses: '200': description: Ok + '400': + description: 400 response content: - application/json: + application/json; charset=utf-8: schema: - anyOf: - - type: object - properties: - errors: - $ref: '#/components/schemas/SerializedError' - required: - - errors - - type: object - properties: - errors: - type: array - items: - $ref: '#/components/schemas/SerializedError' - required: - - errors + type: object + properties: + errors: + type: array + items: + type: object + properties: + name: + type: string + message: + type: string + required: + - name + - message + required: + - errors security: - {} - JWT: [] diff --git a/plugins/catalog-backend/src/service/createRouter.test.ts b/plugins/catalog-backend/src/service/createRouter.test.ts index c14bc05476..700e35edc1 100644 --- a/plugins/catalog-backend/src/service/createRouter.test.ts +++ b/plugins/catalog-backend/src/service/createRouter.test.ts @@ -22,6 +22,7 @@ import { ANNOTATION_LOCATION, ANNOTATION_ORIGIN_LOCATION, Entity, + stringifyEntityRef, } from '@backstage/catalog-model'; import express from 'express'; import request from 'supertest'; @@ -38,12 +39,14 @@ import { RESOURCE_TYPE_CATALOG_ENTITY } from '@backstage/plugin-catalog-common/a import { CatalogProcessingOrchestrator } from '../processing/types'; import { z } from 'zod'; import { encodeCursor } from './util'; +import { wrapInOpenApiTestServer } from '@backstage/backend-openapi-utils'; +import { Server } from 'http'; describe('createRouter readonly disabled', () => { let entitiesCatalog: jest.Mocked; let locationService: jest.Mocked; let orchestrator: jest.Mocked; - let app: express.Express; + let app: express.Express | Server; let refreshService: RefreshService; beforeAll(async () => { @@ -72,7 +75,7 @@ describe('createRouter readonly disabled', () => { config: new ConfigReader(undefined), permissionIntegrationRouter: express.Router(), }); - app = express().use(router); + app = wrapInOpenApiTestServer(express().use(router)); }); beforeEach(() => { @@ -412,15 +415,27 @@ describe('createRouter readonly disabled', () => { }); it('can fetch entities by refs', async () => { - const entity: Entity = {} as any; + const entity: Entity = { + apiVersion: 'a', + kind: 'component', + metadata: { + name: 'a', + }, + }; + const entityRef = stringifyEntityRef(entity); entitiesCatalog.entitiesBatch.mockResolvedValue({ items: [entity] }); const response = await request(app) .post('/entities/by-refs') .set('Content-Type', 'application/json') - .send('{"entityRefs":["a"],"fields":["b"]}'); + .send( + JSON.stringify({ + entityRefs: [entityRef], + fields: ['metadata.name'], + }), + ); expect(entitiesCatalog.entitiesBatch).toHaveBeenCalledTimes(1); expect(entitiesCatalog.entitiesBatch).toHaveBeenCalledWith({ - entityRefs: ['a'], + entityRefs: [entityRef], fields: expect.any(Function), }); expect(response.status).toEqual(200); diff --git a/plugins/catalog-backend/src/service/request/parseQueryEntitiesParams.ts b/plugins/catalog-backend/src/service/request/parseQueryEntitiesParams.ts index 33033c66f3..b1d5e8dd1f 100644 --- a/plugins/catalog-backend/src/service/request/parseQueryEntitiesParams.ts +++ b/plugins/catalog-backend/src/service/request/parseQueryEntitiesParams.ts @@ -24,10 +24,10 @@ import { parseEntityFilterParams } from './parseEntityFilterParams'; import { parseEntityOrderFieldParams } from './parseEntityOrderFieldParams'; import { parseEntityTransformParams } from './parseEntityTransformParams'; import { spec } from '../../schema/openapi.generated'; -import { QueryParameters } from '@backstage/backend-openapi-utils'; +import { internal } from '@backstage/backend-openapi-utils'; export function parseQueryEntitiesParams( - params: QueryParameters, + params: internal.QuerySchema, ): Omit { const fields = parseEntityTransformParams(params); diff --git a/plugins/search-backend/optic.yml b/plugins/search-backend/optic.yml new file mode 100644 index 0000000000..8f38d46f13 --- /dev/null +++ b/plugins/search-backend/optic.yml @@ -0,0 +1,15 @@ +ruleset: + - breaking-changes +capture: + src/schema/openapi.yaml: + # 🔧 Runnable example with simple get requests. + # Run with "PORT=3000 optic capture src/schema/openapi.yaml --update interactive" in 'plugins/search-backend' + # You can change the server and the 'requests' section to experiment + server: + # This will not be used by 'backstage-repo-tools schema openapi test', but may be useful for interactive updates. + url: http://localhost:3000 + requests: + # ℹ️ Requests should be sent to the Optic proxy, the address of which is injected into 'run.command's env as OPTIC_PROXY (or the value of 'run.proxy_variable'). + run: + # 🔧 Specify a command that will generate traffic + command: yarn backstage-cli package test --no-watch src/service/router.test.ts src/service/createRouter.test.ts diff --git a/plugins/search-backend/src/schema/openapi.generated.ts b/plugins/search-backend/src/schema/openapi.generated.ts index 9bf2e08d3e..2586b7a5bf 100644 --- a/plugins/search-backend/src/schema/openapi.generated.ts +++ b/plugins/search-backend/src/schema/openapi.generated.ts @@ -42,8 +42,58 @@ export const spec = { headers: {}, parameters: {}, requestBodies: {}, - responses: {}, + responses: { + ErrorResponse: { + description: 'An error response from the backend.', + content: { + 'application/json; charset=utf-8': { + schema: { + $ref: '#/components/schemas/Error', + }, + }, + }, + }, + }, schemas: { + Error: { + type: 'object', + properties: { + error: { + type: 'object', + properties: { + name: { + type: 'string', + }, + message: { + type: 'string', + }, + }, + required: ['name', 'message'], + }, + request: { + type: 'object', + properties: { + method: { + type: 'string', + }, + url: { + type: 'string', + }, + }, + required: ['method', 'url'], + }, + response: { + type: 'object', + properties: { + statusCode: { + type: 'number', + }, + }, + required: ['statusCode'], + }, + }, + required: ['error', 'request', 'response'], + }, JsonObject: { type: 'object', properties: {}, @@ -132,25 +182,8 @@ export const spec = { }, }, }, - '400': { - description: 'Bad request', - content: { - 'application/json': { - schema: { - type: 'object', - properties: { - error: { - type: 'object', - properties: { - message: { - type: 'string', - }, - }, - }, - }, - }, - }, - }, + default: { + $ref: '#/components/responses/ErrorResponse', }, }, security: [ diff --git a/plugins/search-backend/src/schema/openapi.yaml b/plugins/search-backend/src/schema/openapi.yaml index 4684ca58d8..79bb84dfe0 100644 --- a/plugins/search-backend/src/schema/openapi.yaml +++ b/plugins/search-backend/src/schema/openapi.yaml @@ -1,5 +1,4 @@ openapi: 3.0.3 - info: title: '@backstage/plugin-search-backend' version: '1' @@ -8,17 +7,56 @@ info: name: Apache-2.0 url: http://www.apache.org/licenses/LICENSE-2.0.html contact: {} - servers: - url: / - components: examples: {} headers: {} parameters: {} requestBodies: {} - responses: {} + responses: + ErrorResponse: + description: An error response from the backend. + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/Error' schemas: + Error: + type: object + properties: + error: + type: object + properties: + name: + type: string + message: + type: string + required: + - name + - message + request: + type: object + properties: + method: + type: string + url: + type: string + required: + - method + - url + response: + type: object + properties: + statusCode: + type: number + required: + - statusCode + required: + - error + - request + - response + JsonObject: type: object properties: {} @@ -85,18 +123,8 @@ paths: type: integer required: - results - '400': - description: Bad request - content: - application/json: - schema: - type: object - properties: - error: - type: object - properties: - message: - type: string + default: + $ref: '#/components/responses/ErrorResponse' security: - {} - JWT: [] diff --git a/plugins/search-backend/src/service/router.test.ts b/plugins/search-backend/src/service/router.test.ts index 73523f2b62..401488dcbf 100644 --- a/plugins/search-backend/src/service/router.test.ts +++ b/plugins/search-backend/src/service/router.test.ts @@ -22,6 +22,8 @@ import { SearchEngine } from '@backstage/plugin-search-common'; import express from 'express'; import request from 'supertest'; import { createRouter } from './router'; +import { wrapInOpenApiTestServer } from '@backstage/backend-openapi-utils'; +import { Server } from 'http'; const mockPermissionEvaluator: PermissionEvaluator = { authorize: () => { @@ -33,7 +35,7 @@ const mockPermissionEvaluator: PermissionEvaluator = { }; describe('createRouter', () => { - let app: express.Express; + let app: express.Express | Server; let mockSearchEngine: jest.Mocked; beforeAll(async () => { @@ -65,7 +67,7 @@ describe('createRouter', () => { permissions: mockPermissionEvaluator, logger, }); - app = express().use(router); + app = wrapInOpenApiTestServer(express().use(router)); }); beforeEach(() => { @@ -78,6 +80,7 @@ describe('createRouter', () => { mockSearchEngine.query.mockRejectedValueOnce(error); const response = await request(app).get('/query'); + console.log((response as any).text); expect(response.status).toEqual(500); expect(response.body).toMatchObject( diff --git a/yarn.lock b/yarn.lock index 70667644f7..c918406c96 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1,6 +1,3 @@ -# This file is generated by running "yarn install" inside your project. -# Manual changes might be lost - proceed with caution! - __metadata: version: 6 cacheKey: 8 @@ -40,6 +37,18 @@ __metadata: languageName: node linkType: hard +"@apidevtools/json-schema-ref-parser@npm:9.0.9": + version: 9.0.9 + resolution: "@apidevtools/json-schema-ref-parser@npm:9.0.9" + dependencies: + "@jsdevtools/ono": ^7.1.3 + "@types/json-schema": ^7.0.6 + call-me-maybe: ^1.0.1 + js-yaml: ^4.1.0 + checksum: b21f6bdd37d2942c3967ee77569bc74fadd1b922f688daf5ef85057789a2c3a7f4afc473aa2f3a93ec950dabb6ef365f8bd9cf51e4e062a1ee1e59b989f8f9b4 + languageName: node + linkType: hard + "@apidevtools/json-schema-ref-parser@npm:^9.0.6, @apidevtools/json-schema-ref-parser@npm:^9.1.2": version: 9.1.2 resolution: "@apidevtools/json-schema-ref-parser@npm:9.1.2" @@ -9924,7 +9933,7 @@ __metadata: "@stoplight/spectral-formatters": ^1.1.0 "@stoplight/spectral-functions": ^1.7.2 "@stoplight/spectral-parsers": ^1.0.2 - "@stoplight/spectral-rulesets": ^1.16.0 + "@stoplight/spectral-rulesets": ^1.18.0 "@stoplight/spectral-runtime": ^1.1.2 "@stoplight/types": ^13.14.0 "@types/is-glob": ^4.0.2 @@ -9941,6 +9950,7 @@ __metadata: minimatch: ^5.1.1 mock-fs: ^5.2.0 p-limit: ^3.0.2 + portfinder: ^1.0.32 ts-node: ^10.0.0 yaml-diff-patch: ^2.0.0 peerDependencies: @@ -11243,6 +11253,13 @@ __metadata: languageName: node linkType: hard +"@faker-js/faker@npm:5.5.3": + version: 5.5.3 + resolution: "@faker-js/faker@npm:5.5.3" + checksum: d248a042e47ac00613d2d7cc29d4504cc5e5d843162454eede8c35f31c74b19a8fd7cecc0d5ea9e3fbbfc812abc51143c3699e51049fd64300e23e6588e76d39 + languageName: node + linkType: hard + "@fastify/busboy@npm:^2.0.0": version: 2.0.0 resolution: "@fastify/busboy@npm:2.0.0" @@ -11950,6 +11967,18 @@ __metadata: languageName: node linkType: hard +"@graphql-tools/merge@npm:8.3.1": + version: 8.3.1 + resolution: "@graphql-tools/merge@npm:8.3.1" + dependencies: + "@graphql-tools/utils": 8.9.0 + tslib: ^2.4.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 16af6be2249f4f500a4c2f5d3db2e0efd56ad69b5e10499649c6fc979c257af12e131112304a16699654b54daab37a80737e0538478bc45a0053b9bc859a7ac1 + languageName: node + linkType: hard + "@graphql-tools/merge@npm:8.3.14": version: 8.3.14 resolution: "@graphql-tools/merge@npm:8.3.14" @@ -12093,6 +12122,20 @@ __metadata: languageName: node linkType: hard +"@graphql-tools/schema@npm:^8.5.0": + version: 8.5.1 + resolution: "@graphql-tools/schema@npm:8.5.1" + dependencies: + "@graphql-tools/merge": 8.3.1 + "@graphql-tools/utils": 8.9.0 + tslib: ^2.4.0 + value-or-promise: 1.0.11 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 91363cd4371e347af40ef66f7d903b5d4f5998bfaec9214768e6a795136ef6372f9f225e05e18daacd929e23695811f15e791c6cbe082bf5b5d03b16b1f874f8 + languageName: node + linkType: hard + "@graphql-tools/schema@npm:^9.0.0": version: 9.0.19 resolution: "@graphql-tools/schema@npm:9.0.19" @@ -12210,6 +12253,17 @@ __metadata: languageName: node linkType: hard +"@graphql-tools/utils@npm:^8.8.0": + version: 8.13.1 + resolution: "@graphql-tools/utils@npm:8.13.1" + dependencies: + tslib: ^2.4.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: ff04fdeb29e9ac596ea53386cd5b23cd741bb14c1997c6b0ba3c34ca165bd82b528a355e8c8e2ba726eb39e833ba9cbb0851ba0addb8c6d367089a1145bf9a49 + languageName: node + linkType: hard + "@graphql-tools/wrap@npm:9.2.23": version: 9.2.23 resolution: "@graphql-tools/wrap@npm:9.2.23" @@ -12295,6 +12349,46 @@ __metadata: languageName: node linkType: hard +"@httptoolkit/httpolyglot@npm:^2.0.1, @httptoolkit/httpolyglot@npm:^2.1.1": + version: 2.1.1 + resolution: "@httptoolkit/httpolyglot@npm:2.1.1" + dependencies: + "@types/node": ^16.7.10 + checksum: 138ccd61355de334c509e2fc4ac9ade9e1aa6aa770ed2271e0bd1d883ed815eb742d0a4de37837edd03a9a243c05d6da32c5febe970f4518c46e2d76e6ff10d5 + languageName: node + linkType: hard + +"@httptoolkit/subscriptions-transport-ws@npm:^0.11.2": + version: 0.11.2 + resolution: "@httptoolkit/subscriptions-transport-ws@npm:0.11.2" + dependencies: + backo2: ^1.0.2 + eventemitter3: ^3.1.0 + iterall: ^1.2.1 + symbol-observable: ^1.0.4 + ws: ^8.8.0 + peerDependencies: + graphql: ^15.7.2 || ^16.0.0 + checksum: a2d99b4d8e46b46fd5d4fac3456fa685dba7d876908e632c73af014fdcc92ae1f77f8c542e8b63ae747a164e9d2e4be95c5046665f9e7b5622f02dc6d7d04549 + languageName: node + linkType: hard + +"@httptoolkit/websocket-stream@npm:^6.0.1": + version: 6.0.1 + resolution: "@httptoolkit/websocket-stream@npm:6.0.1" + dependencies: + "@types/ws": "*" + duplexify: ^3.5.1 + inherits: ^2.0.1 + isomorphic-ws: ^4.0.1 + readable-stream: ^2.3.3 + safe-buffer: ^5.1.2 + ws: "*" + xtend: ^4.0.0 + checksum: e70059c24499abab695e7bc269aefc1a751d161296975a4af932577497c4ecd66b7745dc0c63608e06989442db996d76e563bce08156563bac7bc3411ad9bcee + languageName: node + linkType: hard + "@humanwhocodes/config-array@npm:^0.11.11": version: 0.11.11 resolution: "@humanwhocodes/config-array@npm:0.11.11" @@ -14345,7 +14439,7 @@ __metadata: languageName: node linkType: hard -"@octokit/rest@npm:^19.0.3": +"@octokit/rest@npm:^19.0.0, @octokit/rest@npm:^19.0.3": version: 19.0.13 resolution: "@octokit/rest@npm:19.0.13" dependencies: @@ -15714,6 +15808,72 @@ __metadata: languageName: node linkType: hard +"@segment/loosely-validate-event@npm:^2.0.0": + version: 2.0.0 + resolution: "@segment/loosely-validate-event@npm:2.0.0" + dependencies: + component-type: ^1.2.1 + join-component: ^1.1.0 + checksum: 8c4aacc903fb717619b69ca7eecf8d4a7b928661b0e835c9cd98f1b858a85ce62c348369ad9a52cb2df8df02578c0525a73fce4c69a42ac414d9554cc6be7117 + languageName: node + linkType: hard + +"@sentry-internal/tracing@npm:7.70.0": + version: 7.70.0 + resolution: "@sentry-internal/tracing@npm:7.70.0" + dependencies: + "@sentry/core": 7.70.0 + "@sentry/types": 7.70.0 + "@sentry/utils": 7.70.0 + tslib: ^2.4.1 || ^1.9.3 + checksum: 51fe662ae5b4e26a9698515dbd47427714966c4e3f5df6f19d3d26c21150e17260e4b8c53e814a7e9274e8ca7b7994a4fac2838a71233cadcd4a30f394f9227e + languageName: node + linkType: hard + +"@sentry/core@npm:7.70.0": + version: 7.70.0 + resolution: "@sentry/core@npm:7.70.0" + dependencies: + "@sentry/types": 7.70.0 + "@sentry/utils": 7.70.0 + tslib: ^2.4.1 || ^1.9.3 + checksum: 550ff55f8232fbbe8263b05deca997b6fe98ae19fe445f39d90915cc515bdcc8d6c2ec09df6976fcf750547adc39aefb5714ebfd5f039b32e94c5c5320f4cfab + languageName: node + linkType: hard + +"@sentry/node@npm:7.70.0": + version: 7.70.0 + resolution: "@sentry/node@npm:7.70.0" + dependencies: + "@sentry-internal/tracing": 7.70.0 + "@sentry/core": 7.70.0 + "@sentry/types": 7.70.0 + "@sentry/utils": 7.70.0 + cookie: ^0.5.0 + https-proxy-agent: ^5.0.0 + lru_map: ^0.3.3 + tslib: ^2.4.1 || ^1.9.3 + checksum: 4d60023f0ddfca92ee15e42b5a207d998d683570103655282ce6e1a07a3bccbb86675810778f5500229cf21daef34e1f0fd48e0dbe3665d3df19d7b97c2788e5 + languageName: node + linkType: hard + +"@sentry/types@npm:7.70.0": + version: 7.70.0 + resolution: "@sentry/types@npm:7.70.0" + checksum: 0a38f47ccf0d995d8d5ab0353c332bd2573f044d993d746ec9ecee5e185da773ffdc13db3f29d525b4377ed3ce9235eaa0dc728c039739eb23050d0411667222 + languageName: node + linkType: hard + +"@sentry/utils@npm:7.70.0": + version: 7.70.0 + resolution: "@sentry/utils@npm:7.70.0" + dependencies: + "@sentry/types": 7.70.0 + tslib: ^2.4.1 || ^1.9.3 + checksum: a1590f5e752667910638262bb8e85f2e2c26e722df4087e79c39b11d1d81dbefaea8f426826a50b0832c079e77092ff7c2335d48e63a2d11c32b1c0b59b10eee + languageName: node + linkType: hard + "@short.io/opensearch-mock@npm:^0.3.1": version: 0.3.1 resolution: "@short.io/opensearch-mock@npm:0.3.1" @@ -15739,6 +15899,20 @@ __metadata: languageName: node linkType: hard +"@sinclair/typebox@npm:^0.31.0": + version: 0.31.17 + resolution: "@sinclair/typebox@npm:0.31.17" + checksum: 44c760a07ec908e28a1dae9fddc65a0bf64dc48661c286dfa485274ed7022eb4f676f5e74b216d51aff503bd3934dfde14dbe4740327acdf8411efe1b5bba17e + languageName: node + linkType: hard + +"@sindresorhus/is@npm:^0.14.0": + version: 0.14.0 + resolution: "@sindresorhus/is@npm:0.14.0" + checksum: 971e0441dd44ba3909b467219a5e242da0fc584048db5324cfb8048148fa8dcc9d44d71e3948972c4f6121d24e5da402ef191420d1266a95f713bb6d6e59c98a + languageName: node + linkType: hard + "@sindresorhus/is@npm:^4.0.0": version: 4.0.0 resolution: "@sindresorhus/is@npm:4.0.0" @@ -16564,7 +16738,7 @@ __metadata: languageName: node linkType: hard -"@stoplight/spectral-rulesets@npm:^1.16.0": +"@stoplight/spectral-rulesets@npm:^1.14.1, @stoplight/spectral-rulesets@npm:^1.18.0": version: 1.18.0 resolution: "@stoplight/spectral-rulesets@npm:1.18.0" dependencies: @@ -17375,6 +17549,15 @@ __metadata: languageName: node linkType: hard +"@szmarczak/http-timer@npm:^1.1.2": + version: 1.1.2 + resolution: "@szmarczak/http-timer@npm:1.1.2" + dependencies: + defer-to-connect: ^1.0.1 + checksum: 4d9158061c5f397c57b4988cde33a163244e4f02df16364f103971957a32886beb104d6180902cbe8b38cb940e234d9f98a4e486200deca621923f62f50a06fe + languageName: node + linkType: hard + "@szmarczak/http-timer@npm:^4.0.5": version: 4.0.5 resolution: "@szmarczak/http-timer@npm:4.0.5" @@ -17556,6 +17739,13 @@ __metadata: languageName: node linkType: hard +"@tootallnate/quickjs-emscripten@npm:^0.23.0": + version: 0.23.0 + resolution: "@tootallnate/quickjs-emscripten@npm:0.23.0" + checksum: c350a2947ffb80b22e14ff35099fd582d1340d65723384a0fd0515e905e2534459ad2f301a43279a37308a27c99273c932e64649abd57d0bb3ca8c557150eccc + languageName: node + linkType: hard + "@trendyol-js/openstack-swift-sdk@npm:^0.0.6": version: 0.0.6 resolution: "@trendyol-js/openstack-swift-sdk@npm:0.0.6" @@ -18531,7 +18721,7 @@ __metadata: languageName: node linkType: hard -"@types/keyv@npm:*": +"@types/keyv@npm:*, @types/keyv@npm:^3.1.1": version: 3.1.4 resolution: "@types/keyv@npm:3.1.4" dependencies: @@ -18745,13 +18935,20 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:^16.11.26, @types/node@npm:^16.9.2": +"@types/node@npm:^16.11.26, @types/node@npm:^16.7.10, @types/node@npm:^16.9.2": version: 16.18.58 resolution: "@types/node@npm:16.18.58" checksum: 6d8404abc6c97bacd220f606441727adea923f3bd010d07d869f0dc6c4c6dc016430880af1f270edf1b84ae637a7fa5339e6adb3abba210a4820ac5e28f34067 languageName: node linkType: hard +"@types/node@npm:^17.0.36": + version: 17.0.45 + resolution: "@types/node@npm:17.0.45" + checksum: aa04366b9103b7d6cfd6b2ef64182e0eaa7d4462c3f817618486ea0422984c51fc69fd0d436eae6c9e696ddfdbec9ccaa27a917f7c2e8c75c5d57827fe3d95e8 + languageName: node + linkType: hard + "@types/node@npm:^18.17.8": version: 18.18.5 resolution: "@types/node@npm:18.18.5" @@ -19498,12 +19695,12 @@ __metadata: languageName: node linkType: hard -"@types/ws@npm:^8.0.0, @types/ws@npm:^8.5.3, @types/ws@npm:^8.5.5": - version: 8.5.5 - resolution: "@types/ws@npm:8.5.5" +"@types/ws@npm:*, @types/ws@npm:^8.0.0, @types/ws@npm:^8.5.3, @types/ws@npm:^8.5.5": + version: 8.5.6 + resolution: "@types/ws@npm:8.5.6" dependencies: "@types/node": "*" - checksum: d00bf8070e6938e3ccf933010921c6ce78ac3606696ce37a393b27a9a603f7bd93ea64f3c5fa295a2f743575ba9c9a9fdb904af0f5fe2229bf2adf0630386e4a + checksum: 7addb0c5fa4e7713d5209afb8a90f1852b12c02cb537395adf7a05fbaf21205dc5f7c110fd5ad6f3dbf147112cbff33fb11d8633059cb344f0c14f595b1ea1fb languageName: node linkType: hard @@ -19801,6 +19998,177 @@ __metadata: languageName: node linkType: hard +"@useoptic/json-pointer-helpers@npm:0.50.7": + version: 0.50.7 + resolution: "@useoptic/json-pointer-helpers@npm:0.50.7" + dependencies: + jsonpointer: ^5.0.1 + minimatch: 9.0.3 + checksum: 8cfa1303f4d089d1b0746058765abceed666c00e4583e24c15d475b12f6bc0596e7a0560916eb07537c0e5e1ab28b9f3c178776dad68824ce759444a8c598c08 + languageName: node + linkType: hard + +"@useoptic/openapi-io@npm:0.50.7": + version: 0.50.7 + resolution: "@useoptic/openapi-io@npm:0.50.7" + dependencies: + "@apidevtools/json-schema-ref-parser": 9.0.9 + "@jsdevtools/ono": ^7.1.3 + "@useoptic/json-pointer-helpers": 0.50.7 + "@useoptic/openapi-utilities": 0.50.7 + ajv: ^8.6.0 + ajv-errors: ~3.0.0 + ajv-formats: ~2.1.0 + bottleneck: ^2.19.5 + chalk: ^4.1.2 + fast-deep-equal: ^3.1.3 + fast-json-patch: ^3.1.1 + is-url: ^1.2.4 + json-stable-stringify: ^1.0.1 + lodash.clonedeep: ^4.5.0 + lodash.sortby: ^4.7.0 + node-fetch: ^2.6.7 + openapi-types: ^12.0.2 + semver: ^7.5.4 + upath: ^2.0.1 + yaml: ^2.3.2 + yaml-ast-parser: ^0.0.43 + checksum: a420ad4149c422cbe951879520d8ffc4dd22531768046dcd62a87fc6f91e14bde6520c1e6f029a594c41dd6bfc6ddda15e1c3db552d13b5284460e67b6478bc5 + languageName: node + linkType: hard + +"@useoptic/openapi-utilities@npm:0.50.7": + version: 0.50.7 + resolution: "@useoptic/openapi-utilities@npm:0.50.7" + dependencies: + "@useoptic/json-pointer-helpers": 0.50.7 + ajv: ^8.6.0 + ajv-errors: ~3.0.0 + ajv-formats: ~2.1.0 + chalk: ^4.1.2 + fast-deep-equal: ^3.1.3 + is-url: ^1.2.4 + js-yaml: ^4.1.0 + json-stable-stringify: ^1.0.1 + lodash.groupby: ^4.6.0 + lodash.isequal: ^4.5.0 + lodash.omit: ^4.5.0 + node-machine-id: ^1.1.12 + openapi-types: ^12.0.2 + ts-invariant: ^0.9.3 + url-join: ^4.0.1 + yaml-ast-parser: ^0.0.43 + checksum: 597cec84f07661d2a0c272519adc40a70d3b426d58426b1a513ca8798cac08a7e87841b0eacc0434e652cead2f5af65512ecdeca34544a3f7eab5b40180f4387 + languageName: node + linkType: hard + +"@useoptic/optic@npm:^0.50.7": + version: 0.50.7 + resolution: "@useoptic/optic@npm:0.50.7" + dependencies: + "@babel/runtime": ^7.20.6 + "@httptoolkit/httpolyglot": ^2.0.1 + "@jsdevtools/ono": ^7.1.3 + "@octokit/rest": ^19.0.0 + "@sentry/node": 7.70.0 + "@sinclair/typebox": ^0.31.0 + "@stoplight/spectral-core": ^1.8.1 + "@useoptic/openapi-io": 0.50.7 + "@useoptic/openapi-utilities": 0.50.7 + "@useoptic/rulesets-base": 0.50.7 + "@useoptic/standard-rulesets": 0.50.7 + ajv: ^8.6.0 + ajv-formats: ~2.1.0 + analytics-node: ^6.2.0 + async-exit-hook: ^2.0.1 + axax: ^0.2.2 + bottleneck: ^2.19.5 + chalk: ^4.1.2 + commander: ^11.0.0 + conf: ^10.2.0 + crosspath: ^2.0.0 + dotenv: ^16.0.3 + exit-hook: ^2.2.1 + fast-deep-equal: ^3.1.3 + fast-glob: ^3.2.12 + fs-extra: ^11.1.0 + git-url-parse: ^13.1.0 + har-schema: ^2.0.0 + is-elevated: ^3.0.0 + is-url: ^1.2.4 + js-yaml: ^4.1.0 + json-schema-traverse: ^1.0.0 + json-stable-stringify: ^1.0.1 + latest-version: ^5.1.0 + lodash.chunk: ^4.2.0 + lodash.groupby: ^4.6.0 + lodash.sortby: ^4.7.0 + log: ^6.3.1 + log-node: ^8.0.3 + loglevel: ^1.8.0 + micromatch: ^4.0.5 + minimatch: 9.0.3 + mockttp: ^3.9.1 + node-fetch: ^2.6.7 + node-forge: ^1.2.1 + node-machine-id: ^1.1.12 + open: ^8.4.0 + ora: 5.4.1 + pluralize: 8.0.0 + portfinder: ^1.0.28 + postman-collection: ^4.1.7 + prompts: ^2.4.2 + semver: ^7.5.4 + slice-ansi: ^4.0.0 + stream-chain: ^2.2.5 + stream-json: ^1.7.4 + strip-ansi: ^6.0.1 + tar: ^6.1.11 + ts-invariant: ^0.9.4 + ts-results: ^3.3.0 + tunnel: ^0.0.6 + update-notifier: ^5.1.0 + url-join: ^4.0.1 + whatwg-mimetype: ^3.0.0 + bin: + optic: build/index.js + checksum: a85f5d090dba8669e464ba18614de1f5b17c2ad8bb85ddda4ead9950b49f8d06bc1d11bd3f5e558a9af1bd801c48640ef5b6398e7673f9dea4f2ee267281a091 + languageName: node + linkType: hard + +"@useoptic/rulesets-base@npm:0.50.7": + version: 0.50.7 + resolution: "@useoptic/rulesets-base@npm:0.50.7" + dependencies: + "@stoplight/spectral-core": ^1.8.1 + "@stoplight/spectral-rulesets": ^1.14.1 + "@useoptic/json-pointer-helpers": 0.50.7 + "@useoptic/openapi-utilities": 0.50.7 + ajv: ^8.6.0 + lodash.pick: ^4.4.0 + node-fetch: ^2.6.7 + semver: ^7.5.4 + bin: + rulesets-base: build/index.js + checksum: 891999762cc25c1e84f2c5da89109c604c49dabc5522e9c5eb06d608baef62485dbd500458c164ffd5d9a230c6cdb57b9cfc651ff1fb2520d20388c541459771 + languageName: node + linkType: hard + +"@useoptic/standard-rulesets@npm:0.50.7": + version: 0.50.7 + resolution: "@useoptic/standard-rulesets@npm:0.50.7" + dependencies: + "@useoptic/openapi-utilities": 0.50.7 + "@useoptic/rulesets-base": 0.50.7 + ajv: ^8.6.0 + ajv-formats: ~2.1.0 + whatwg-mimetype: ^3.0.0 + bin: + standard-rulesets: build/index.js + checksum: 9ef3f79703a8938e2d6412b3c6fd8bebd3cc614273f4a8a44d3b0015d61c562a89311f715906c594898540d00f93230f4f264ad08523ade4940ff84580c8042f + languageName: node + linkType: hard + "@vitejs/plugin-react@npm:^4.0.4": version: 4.1.0 resolution: "@vitejs/plugin-react@npm:4.1.0" @@ -20251,6 +20619,15 @@ __metadata: languageName: node linkType: hard +"agent-base@npm:^7.0.2, agent-base@npm:^7.1.0": + version: 7.1.0 + resolution: "agent-base@npm:7.1.0" + dependencies: + debug: ^4.3.4 + checksum: f7828f991470a0cc22cb579c86a18cbae83d8a3cbed39992ab34fc7217c4d126017f1c74d0ab66be87f71455318a8ea3e757d6a37881b8d0f2a2c6aa55e5418f + languageName: node + linkType: hard + "agentkeepalive@npm:^4.1.3, agentkeepalive@npm:^4.1.4, agentkeepalive@npm:^4.2.1": version: 4.2.1 resolution: "agentkeepalive@npm:4.2.1" @@ -20398,6 +20775,31 @@ __metadata: languageName: node linkType: hard +"analytics-node@npm:^6.2.0": + version: 6.2.0 + resolution: "analytics-node@npm:6.2.0" + dependencies: + "@segment/loosely-validate-event": ^2.0.0 + axios: ^0.27.2 + axios-retry: 3.2.0 + lodash.isstring: ^4.0.1 + md5: ^2.2.1 + ms: ^2.0.0 + remove-trailing-slash: ^0.1.0 + uuid: ^8.3.2 + checksum: d682f99742255b0e00a5f7a9a6245736eb04917cb0eb4cb196c3f7f1f889632f2fef62e64d471df24fd35d4da7e6581db08b43fe770cc67c5f277158acef5267 + languageName: node + linkType: hard + +"ansi-align@npm:^3.0.0": + version: 3.0.1 + resolution: "ansi-align@npm:3.0.1" + dependencies: + string-width: ^4.1.0 + checksum: 6abfa08f2141d231c257162b15292467081fa49a208593e055c866aa0455b57f3a86b5a678c190c618faa79b4c59e254493099cb700dd9cf2293c6be2c8f5d8d + languageName: node + linkType: hard + "ansi-colors@npm:^4.1.1, ansi-colors@npm:^4.1.3": version: 4.1.3 resolution: "ansi-colors@npm:4.1.3" @@ -20858,6 +21260,15 @@ __metadata: languageName: node linkType: hard +"ast-types@npm:^0.13.4": + version: 0.13.4 + resolution: "ast-types@npm:0.13.4" + dependencies: + tslib: ^2.0.1 + checksum: 5a51f7b70588ecced3601845a0e203279ca2f5fdc184416a0a1640c93ec0a267241d6090a328e78eebb8de81f8754754e0a4f1558ba2a3d638f8ccbd0b1f0eff + languageName: node + linkType: hard + "ast-types@npm:^0.16.1": version: 0.16.1 resolution: "ast-types@npm:0.16.1" @@ -20883,6 +21294,13 @@ __metadata: languageName: node linkType: hard +"async-exit-hook@npm:^2.0.1": + version: 2.0.1 + resolution: "async-exit-hook@npm:2.0.1" + checksum: b72cbdd19ea90fa33a3a57b0dbff83e4bf2f4e4acd70b2b3847a588f9f16a45d38590ee13f285375dd919c224f60fa58dc3d315a87678d3aa24ff686d1c0200a + languageName: node + linkType: hard + "async-lock@npm:^1.1.0": version: 1.2.4 resolution: "async-lock@npm:1.2.4" @@ -20899,6 +21317,15 @@ __metadata: languageName: node linkType: hard +"async@npm:^2.6.2, async@npm:^2.6.4": + version: 2.6.4 + resolution: "async@npm:2.6.4" + dependencies: + lodash: ^4.17.14 + checksum: a52083fb32e1ebe1d63e5c5624038bb30be68ff07a6c8d7dfe35e47c93fc144bd8652cbec869e0ac07d57dde387aa5f1386be3559cdee799cb1f789678d88e19 + languageName: node + linkType: hard + "async@npm:^3.2.0, async@npm:^3.2.3, async@npm:^3.2.4": version: 3.2.4 resolution: "async@npm:3.2.4" @@ -20936,6 +21363,13 @@ __metadata: languageName: node linkType: hard +"atomically@npm:^1.7.0": + version: 1.7.0 + resolution: "atomically@npm:1.7.0" + checksum: 991153b17334597f93b58e831bea9851e57ed9cd41d8f33991be063f170b5cc8ec7ff8605f3eb95c1d389c2ad651039e9eb8f2b795e24833c2ceb944f347373a + languageName: node + linkType: hard + "auto-bind@npm:~4.0.0": version: 4.0.0 resolution: "auto-bind@npm:4.0.0" @@ -21003,6 +21437,13 @@ __metadata: languageName: node linkType: hard +"axax@npm:^0.2.2": + version: 0.2.2 + resolution: "axax@npm:0.2.2" + checksum: d1f20cf4186f4db3ee5e04da957759ff17e55a2e613d4f368d9f35ecc3257e88c3890a79338d2e0030d70d234385fc4f06b537cd2753e987954b3cb60519db0d + languageName: node + linkType: hard + "axe-core@npm:^4.6.2": version: 4.6.2 resolution: "axe-core@npm:4.6.2" @@ -21024,6 +21465,15 @@ __metadata: languageName: node linkType: hard +"axios-retry@npm:3.2.0": + version: 3.2.0 + resolution: "axios-retry@npm:3.2.0" + dependencies: + is-retry-allowed: ^1.1.0 + checksum: 411bedb3d2254bd05f9eaf8c9c7a7e14a985ad424f3448d6ec15e2a3584079c3bb99950c07465bdbab1138a5329ccb3e9d22c58db58c83253df4ca3f41e315e6 + languageName: node + linkType: hard + "axios@npm:0.27.2, axios@npm:^0.27.2": version: 0.27.2 resolution: "axios@npm:0.27.2" @@ -21341,6 +21791,13 @@ __metadata: languageName: node linkType: hard +"base64-arraybuffer@npm:^0.1.5": + version: 0.1.5 + resolution: "base64-arraybuffer@npm:0.1.5" + checksum: 44588c1b4460faf59643cf3bcf346a7ede9df70d97aec6dbee4fbae15f6b6220d679b8db076771ea4ef5713dd710e7db7a4a3f81bbb04c71fb06764697d9a021 + languageName: node + linkType: hard + "base64-arraybuffer@npm:^1.0.1": version: 1.0.2 resolution: "base64-arraybuffer@npm:1.0.2" @@ -21378,6 +21835,13 @@ __metadata: languageName: node linkType: hard +"basic-ftp@npm:^5.0.2": + version: 5.0.3 + resolution: "basic-ftp@npm:5.0.3" + checksum: 8b04e88eb85a64de9311721bb0707c9cd70453eefdd854cab85438e6f46fb6c597ddad57ed1acf0a9ede3c677b14e657f51051688a5f23d6f3ea7b5d9073b850 + languageName: node + linkType: hard + "batch@npm:0.6.1": version: 0.6.1 resolution: "batch@npm:0.6.1" @@ -21560,7 +22024,7 @@ __metadata: languageName: node linkType: hard -"body-parser@npm:^1.20.0": +"body-parser@npm:^1.15.2, body-parser@npm:^1.20.0": version: 1.20.2 resolution: "body-parser@npm:1.20.2" dependencies: @@ -21606,7 +22070,7 @@ __metadata: languageName: node linkType: hard -"bottleneck@npm:^2.15.3": +"bottleneck@npm:^2.15.3, bottleneck@npm:^2.19.5": version: 2.19.5 resolution: "bottleneck@npm:2.19.5" checksum: c5eef1bbea12cef1f1405e7306e7d24860568b0f7ac5eeab706a86762b3fc65ef6d1c641c8a166e4db90f412fc5c948fc5ce8008a8cd3d28c7212ef9c3482bda @@ -21620,6 +22084,22 @@ __metadata: languageName: node linkType: hard +"boxen@npm:^5.0.0": + version: 5.1.2 + resolution: "boxen@npm:5.1.2" + dependencies: + ansi-align: ^3.0.0 + camelcase: ^6.2.0 + chalk: ^4.1.0 + cli-boxes: ^2.2.1 + string-width: ^4.2.2 + type-fest: ^0.20.2 + widest-line: ^3.1.0 + wrap-ansi: ^7.0.0 + checksum: 82d03e42a72576ff235123f17b7c505372fe05c83f75f61e7d4fa4bcb393897ec95ce766fecb8f26b915f0f7a7227d66e5ec7cef43f5b2bd9d3aeed47ec55877 + languageName: node + linkType: hard + "brace-expansion@npm:^1.1.7": version: 1.1.11 resolution: "brace-expansion@npm:1.1.11" @@ -21671,6 +22151,13 @@ __metadata: languageName: node linkType: hard +"brotli-wasm@npm:^1.1.0": + version: 1.3.1 + resolution: "brotli-wasm@npm:1.3.1" + checksum: ec2931a989ee6f0bb52c2aabf23a0d230232d3bd69fb68ee3dab9542fc9ae2d4085d0e5338f71520c25a4a26cf1cfc991ce02910c24d63d42c7915c5722a3713 + languageName: node + linkType: hard + "browser-headers@npm:^0.4.1": version: 0.4.1 resolution: "browser-headers@npm:0.4.1" @@ -22001,6 +22488,28 @@ __metadata: languageName: node linkType: hard +"cacheable-lookup@npm:^6.0.0": + version: 6.1.0 + resolution: "cacheable-lookup@npm:6.1.0" + checksum: 4e37afe897219b1035335b0765106a2c970ffa930497b43cac5000b860f3b17f48d004187279fae97e2e4cbf6a3693709b6d64af65279c7d6c8453321d36d118 + languageName: node + linkType: hard + +"cacheable-request@npm:^6.0.0": + version: 6.1.0 + resolution: "cacheable-request@npm:6.1.0" + dependencies: + clone-response: ^1.0.2 + get-stream: ^5.1.0 + http-cache-semantics: ^4.0.0 + keyv: ^3.0.0 + lowercase-keys: ^2.0.0 + normalize-url: ^4.1.0 + responselike: ^1.0.2 + checksum: b510b237b18d17e89942e9ee2d2a077cb38db03f12167fd100932dfa8fc963424bfae0bfa1598df4ae16c944a5484e43e03df8f32105b04395ee9495e9e4e9f1 + languageName: node + linkType: hard + "cacheable-request@npm:^7.0.2": version: 7.0.2 resolution: "cacheable-request@npm:7.0.2" @@ -22302,6 +22811,20 @@ __metadata: languageName: node linkType: hard +"charenc@npm:0.0.2": + version: 0.0.2 + resolution: "charenc@npm:0.0.2" + checksum: 81dcadbe57e861d527faf6dd3855dc857395a1c4d6781f4847288ab23cffb7b3ee80d57c15bba7252ffe3e5e8019db767757ee7975663ad2ca0939bb8fcaf2e5 + languageName: node + linkType: hard + +"charset@npm:^1.0.0": + version: 1.0.1 + resolution: "charset@npm:1.0.1" + checksum: adf747e7bc76c0e47dbfbb555ef376f5adb2e67cad35718f19a2d02e27589345ccaf3c6170c185d2cc82298241f8478cdcdcab8be8ec429bf56807885f3c5300 + languageName: node + linkType: hard + "check-types@npm:^11.2.3": version: 11.2.3 resolution: "check-types@npm:11.2.3" @@ -22351,6 +22874,13 @@ __metadata: languageName: node linkType: hard +"ci-info@npm:^2.0.0": + version: 2.0.0 + resolution: "ci-info@npm:2.0.0" + checksum: 3b374666a85ea3ca43fa49aa3a048d21c9b475c96eb13c133505d2324e7ae5efd6a454f41efe46a152269e9b6a00c9edbe63ec7fa1921957165aae16625acd67 + languageName: node + linkType: hard + "ci-info@npm:^3.1.0, ci-info@npm:^3.2.0, ci-info@npm:^3.7.0": version: 3.8.0 resolution: "ci-info@npm:3.8.0" @@ -22423,6 +22953,26 @@ __metadata: languageName: node linkType: hard +"cli-boxes@npm:^2.2.1": + version: 2.2.1 + resolution: "cli-boxes@npm:2.2.1" + checksum: be79f8ec23a558b49e01311b39a1ea01243ecee30539c880cf14bf518a12e223ef40c57ead0cb44f509bffdffc5c129c746cd50d863ab879385370112af4f585 + languageName: node + linkType: hard + +"cli-color@npm:^2.0.1": + version: 2.0.3 + resolution: "cli-color@npm:2.0.3" + dependencies: + d: ^1.0.1 + es5-ext: ^0.10.61 + es6-iterator: ^2.0.3 + memoizee: ^0.4.15 + timers-ext: ^0.1.7 + checksum: b1c5f3d0ec29cbe22be7a01d90bd0cfa080ffed6f1c321ea20ae3f10c6041f0e411e28ee2b98025945bee3548931deed1ae849b53c21b523ba74efef855cd73d + languageName: node + linkType: hard + "cli-cursor@npm:^3.1.0": version: 3.1.0 resolution: "cli-cursor@npm:3.1.0" @@ -22448,6 +22998,18 @@ __metadata: languageName: node linkType: hard +"cli-sprintf-format@npm:^1.1.1": + version: 1.1.1 + resolution: "cli-sprintf-format@npm:1.1.1" + dependencies: + cli-color: ^2.0.1 + es5-ext: ^0.10.53 + sprintf-kit: ^2.0.1 + supports-color: ^6.1.0 + checksum: d02360b42197d5bb087085bea1b2dccbe117b3e8026d0953f7bc65a78e07208377dd7c684696bd239538c03a2ce46da4b81addc6860188d16b0ba32d753bbbdc + languageName: node + linkType: hard + "cli-table@npm:^0.3.1": version: 0.3.6 resolution: "cli-table@npm:0.3.6" @@ -22866,7 +23428,7 @@ __metadata: languageName: node linkType: hard -"commander@npm:*, commander@npm:11.0.0": +"commander@npm:*, commander@npm:11.0.0, commander@npm:^11.0.0": version: 11.0.0 resolution: "commander@npm:11.0.0" checksum: 6621954e1e1d078b4991c1f5bbd9439ad37aa7768d6ab4842de1dbd4d222c8a27e1b8e62108b3a92988614af45031d5bb2a2aaa92951f4d0c934d1a1ac564bb4 @@ -22943,7 +23505,7 @@ __metadata: languageName: node linkType: hard -"common-tags@npm:1.8.2": +"common-tags@npm:1.8.2, common-tags@npm:^1.8.0": version: 1.8.2 resolution: "common-tags@npm:1.8.2" checksum: 767a6255a84bbc47df49a60ab583053bb29a7d9687066a18500a516188a062c4e4cd52de341f22de0b07062e699b1b8fe3cfa1cb55b241cb9301aeb4f45b4dff @@ -22995,6 +23557,13 @@ __metadata: languageName: node linkType: hard +"component-type@npm:^1.2.1": + version: 1.2.1 + resolution: "component-type@npm:1.2.1" + checksum: 41a81f87425088c072dc99b7bd06d8c81057047a599955572bfa7f320e1f4d0b38422b2eee922e0ac6e4132376c572673dbf5eb02717898173ec11512bc06b34 + languageName: node + linkType: hard + "compress-commons@npm:^4.1.0": version: 4.1.0 resolution: "compress-commons@npm:4.1.0" @@ -23132,6 +23701,38 @@ __metadata: languageName: node linkType: hard +"conf@npm:^10.2.0": + version: 10.2.0 + resolution: "conf@npm:10.2.0" + dependencies: + ajv: ^8.6.3 + ajv-formats: ^2.1.1 + atomically: ^1.7.0 + debounce-fn: ^4.0.0 + dot-prop: ^6.0.1 + env-paths: ^2.2.1 + json-schema-typed: ^7.0.3 + onetime: ^5.1.2 + pkg-up: ^3.1.0 + semver: ^7.3.5 + checksum: 27066f38a25411c1e72e81a5219e2c7ed675cd39d8aa2a2f1797bb2c9255725e92e335d639334177a23d488b22b1290bbe0708e9a005574e5d83d5432df72bd3 + languageName: node + linkType: hard + +"configstore@npm:^5.0.1": + version: 5.0.1 + resolution: "configstore@npm:5.0.1" + dependencies: + dot-prop: ^5.2.0 + graceful-fs: ^4.1.2 + make-dir: ^3.0.0 + unique-string: ^2.0.0 + write-file-atomic: ^3.0.0 + xdg-basedir: ^4.0.0 + checksum: 60ef65d493b63f96e14b11ba7ec072fdbf3d40110a94fb7199d1c287761bdea5c5244e76b2596325f30c1b652213aa75de96ea20afd4a5f82065e61ea090988e + languageName: node + linkType: hard + "connect-history-api-fallback@npm:^1.6.0": version: 1.6.0 resolution: "connect-history-api-fallback@npm:1.6.0" @@ -23156,6 +23757,18 @@ __metadata: languageName: node linkType: hard +"connect@npm:^3.7.0": + version: 3.7.0 + resolution: "connect@npm:3.7.0" + dependencies: + debug: 2.6.9 + finalhandler: 1.1.2 + parseurl: ~1.3.3 + utils-merge: 1.0.1 + checksum: 96e1c4effcf219b065c7823e57351c94366d2e2a6952fa95e8212bffb35c86f1d5a3f9f6c5796d4cd3a5fdda628368b1c3cc44bf19c66cfd68fe9f9cab9177e2 + languageName: node + linkType: hard + "consola@npm:^2.15.0, consola@npm:^2.15.3": version: 2.15.3 resolution: "consola@npm:2.15.3" @@ -23283,7 +23896,7 @@ __metadata: languageName: node linkType: hard -"cookie@npm:0.5.0, cookie@npm:~0.5.0": +"cookie@npm:0.5.0, cookie@npm:^0.5.0, cookie@npm:~0.5.0": version: 0.5.0 resolution: "cookie@npm:0.5.0" checksum: 1f4bd2ca5765f8c9689a7e8954183f5332139eb72b6ff783d8947032ec1fdf43109852c178e21a953a30c0dd42257828185be01b49d1eb1a67fd054ca588a180 @@ -23350,7 +23963,14 @@ __metadata: languageName: node linkType: hard -"cors@npm:^2.8.5": +"cors-gate@npm:^1.1.3": + version: 1.1.3 + resolution: "cors-gate@npm:1.1.3" + checksum: 8480e24ccc77a0a150c3cb555ae07fc4e2fa0034a2585c0c91efa3c44b91936d31abf1c5a87b09726253b491e0b66ed491face942502bbc38f87bb309f931fc6 + languageName: node + linkType: hard + +"cors@npm:^2.8.4, cors@npm:^2.8.5": version: 2.8.5 resolution: "cors@npm:2.8.5" dependencies: @@ -23532,6 +24152,19 @@ __metadata: languageName: node linkType: hard +"cross-spawn@npm:^6.0.0": + version: 6.0.5 + resolution: "cross-spawn@npm:6.0.5" + dependencies: + nice-try: ^1.0.4 + path-key: ^2.0.1 + semver: ^5.5.0 + shebang-command: ^1.2.0 + which: ^1.2.9 + checksum: f893bb0d96cd3d5751d04e67145bdddf25f99449531a72e82dcbbd42796bbc8268c1076c6b3ea51d4d455839902804b94bc45dfb37ecbb32ea8e54a6741c3ab9 + languageName: node + linkType: hard + "cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.1, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": version: 7.0.3 resolution: "cross-spawn@npm:7.0.3" @@ -23543,6 +24176,22 @@ __metadata: languageName: node linkType: hard +"crosspath@npm:^2.0.0": + version: 2.0.0 + resolution: "crosspath@npm:2.0.0" + dependencies: + "@types/node": ^17.0.36 + checksum: a209e02562504b91da143f1b3fe4c1f7e5dfc20c9c83b2538f802e243ad16fadc3d529aa4e5f47430f91f92f4c1ed0860206c9fcb4e0ad737723a44b32a7f61b + languageName: node + linkType: hard + +"crypt@npm:0.0.2": + version: 0.0.2 + resolution: "crypt@npm:0.0.2" + checksum: baf4c7bbe05df656ec230018af8cf7dbe8c14b36b98726939cef008d473f6fe7a4fad906cfea4062c93af516f1550a3f43ceb4d6615329612c6511378ed9fe34 + languageName: node + linkType: hard + "crypto-browserify@npm:^3.11.0": version: 3.12.0 resolution: "crypto-browserify@npm:3.12.0" @@ -23562,6 +24211,13 @@ __metadata: languageName: node linkType: hard +"crypto-random-string@npm:^2.0.0": + version: 2.0.0 + resolution: "crypto-random-string@npm:2.0.0" + checksum: 0283879f55e7c16fdceacc181f87a0a65c53bc16ffe1d58b9d19a6277adcd71900d02bb2c4843dd55e78c51e30e89b0fec618a7f170ebcc95b33182c28f05fd6 + languageName: node + linkType: hard + "css-box-model@npm:^1.2.0": version: 1.2.1 resolution: "css-box-model@npm:1.2.1" @@ -24042,6 +24698,16 @@ __metadata: languageName: node linkType: hard +"d@npm:1, d@npm:^1.0.1": + version: 1.0.1 + resolution: "d@npm:1.0.1" + dependencies: + es5-ext: ^0.10.50 + type: ^1.0.1 + checksum: 49ca0639c7b822db670de93d4fbce44b4aa072cd848c76292c9978a8cd0fff1028763020ff4b0f147bd77bfe29b4c7f82e0f71ade76b2a06100543cdfd948d19 + languageName: node + linkType: hard + "dagre@npm:^0.8.5": version: 0.8.5 resolution: "dagre@npm:0.8.5" @@ -24068,6 +24734,13 @@ __metadata: languageName: node linkType: hard +"data-uri-to-buffer@npm:^6.0.0": + version: 6.0.1 + resolution: "data-uri-to-buffer@npm:6.0.1" + checksum: 9140e68c585ae33d950f5943bd476751346c8b789ae80b01a578a33cb8f7f706d1ca7378aff2b1878b2a6d9a8c88c55cc286d88191c8b8ead8255c3c4d934530 + languageName: node + linkType: hard + "data-urls@npm:^2.0.0": version: 2.0.0 resolution: "data-urls@npm:2.0.0" @@ -24127,6 +24800,15 @@ __metadata: languageName: node linkType: hard +"debounce-fn@npm:^4.0.0": + version: 4.0.0 + resolution: "debounce-fn@npm:4.0.0" + dependencies: + mimic-fn: ^3.0.0 + checksum: 7bf8d142b46a88453bbd6eda083f303049b4c8554af5114bdadfc2da56031030664360e81211ae08b708775e6904db7e6d72a421c4ff473344f4521c2c5e4a22 + languageName: node + linkType: hard + "debounce@npm:^1.1.0, debounce@npm:^1.2.0": version: 1.2.1 resolution: "debounce@npm:1.2.1" @@ -24155,7 +24837,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:^3.2.7": +"debug@npm:^3.1.1, debug@npm:^3.2.7": version: 3.2.7 resolution: "debug@npm:3.2.7" dependencies: @@ -24218,6 +24900,15 @@ __metadata: languageName: node linkType: hard +"decompress-response@npm:^3.3.0": + version: 3.3.0 + resolution: "decompress-response@npm:3.3.0" + dependencies: + mimic-response: ^1.0.0 + checksum: 952552ac3bd7de2fc18015086b09468645c9638d98a551305e485230ada278c039c91116e946d07894b39ee53c0f0d5b6473f25a224029344354513b412d7380 + languageName: node + linkType: hard + "decompress-response@npm:^4.2.0": version: 4.2.1 resolution: "decompress-response@npm:4.2.1" @@ -24314,6 +25005,13 @@ __metadata: languageName: node linkType: hard +"defer-to-connect@npm:^1.0.1": + version: 1.1.3 + resolution: "defer-to-connect@npm:1.1.3" + checksum: 9491b301dcfa04956f989481ba7a43c2231044206269eb4ab64a52d6639ee15b1252262a789eb4239fb46ab63e44d4e408641bae8e0793d640aee55398cb3930 + languageName: node + linkType: hard + "defer-to-connect@npm:^2.0.0": version: 2.0.0 resolution: "defer-to-connect@npm:2.0.0" @@ -24338,6 +25036,17 @@ __metadata: languageName: node linkType: hard +"degenerator@npm:^5.0.0": + version: 5.0.1 + resolution: "degenerator@npm:5.0.1" + dependencies: + ast-types: ^0.13.4 + escodegen: ^2.1.0 + esprima: ^4.0.1 + checksum: a64fa39cdf6c2edd75188157d32338ee9de7193d7dbb2aeb4acb1eb30fa4a15ed80ba8dae9bd4d7b085472cf174a5baf81adb761aaa8e326771392c922084152 + languageName: node + linkType: hard + "del@npm:^7.0.0": version: 7.1.0 resolution: "del@npm:7.1.0" @@ -24441,6 +25150,15 @@ __metadata: languageName: node linkType: hard +"destroyable-server@npm:^1.0.0": + version: 1.0.0 + resolution: "destroyable-server@npm:1.0.0" + dependencies: + "@types/node": "*" + checksum: ac81b26f616a9d0aaa9cb759fa5a5a186f887025362329f7ddc909f53090f4aea0d1b75c4dda23e210faee536e2d7352de017261e1625b7b18108f0e630efa1f + languageName: node + linkType: hard + "detect-indent@npm:^6.0.0": version: 6.1.0 resolution: "detect-indent@npm:6.1.0" @@ -24787,7 +25505,7 @@ __metadata: languageName: node linkType: hard -"dot-prop@npm:^5.1.0": +"dot-prop@npm:^5.1.0, dot-prop@npm:^5.2.0": version: 5.3.0 resolution: "dot-prop@npm:5.3.0" dependencies: @@ -24796,6 +25514,15 @@ __metadata: languageName: node linkType: hard +"dot-prop@npm:^6.0.1": + version: 6.0.1 + resolution: "dot-prop@npm:6.0.1" + dependencies: + is-obj: ^2.0.0 + checksum: 0f47600a4b93e1dc37261da4e6909652c008832a5d3684b5bf9a9a0d3f4c67ea949a86dceed9b72f5733ed8e8e6383cc5958df3bbd0799ee317fd181f2ece700 + languageName: node + linkType: hard + "dotenv-expand@npm:^8.0.2": version: 8.0.3 resolution: "dotenv-expand@npm:8.0.3" @@ -24803,10 +25530,10 @@ __metadata: languageName: node linkType: hard -"dotenv@npm:^16.0.0": - version: 16.0.0 - resolution: "dotenv@npm:16.0.0" - checksum: 664cebb51f0a9a1d1b930f51f0271e72e26d62feaecc9dc03df39453dd494b4e724809ca480fb3ec3213382b1ed3f791aaeb83569a137f9329ce58efd4853dbf +"dotenv@npm:^16.0.0, dotenv@npm:^16.0.3": + version: 16.3.1 + resolution: "dotenv@npm:16.3.1" + checksum: 15d75e7279018f4bafd0ee9706593dd14455ddb71b3bcba9c52574460b7ccaf67d5cf8b2c08a5af1a9da6db36c956a04a1192b101ee102a3e0cf8817bbcf3dfd languageName: node linkType: hard @@ -24824,6 +25551,13 @@ __metadata: languageName: node linkType: hard +"duplexer3@npm:^0.1.4": + version: 0.1.5 + resolution: "duplexer3@npm:0.1.5" + checksum: e677cb4c48f031ca728601d6a20bf6aed4c629d69ef9643cb89c67583d673c4ec9317cc6427501f38bd8c368d3a18f173987cc02bd99d8cf8fe3d94259a22a20 + languageName: node + linkType: hard + "duplexer@npm:^0.1.2": version: 0.1.2 resolution: "duplexer@npm:0.1.2" @@ -24831,6 +25565,18 @@ __metadata: languageName: node linkType: hard +"duplexify@npm:^3.5.1": + version: 3.7.1 + resolution: "duplexify@npm:3.7.1" + dependencies: + end-of-stream: ^1.0.0 + inherits: ^2.0.1 + readable-stream: ^2.0.0 + stream-shift: ^1.0.0 + checksum: 3c2ed2223d956a5da713dae12ba8295acb61d9acd966ccbba938090d04f4574ca4dca75cca089b5077c2d7e66101f32e6ea9b36a78ca213eff574e7a8b8accf2 + languageName: node + linkType: hard + "duplexify@npm:^4.0.0": version: 4.1.1 resolution: "duplexify@npm:4.1.1" @@ -24843,6 +25589,16 @@ __metadata: languageName: node linkType: hard +"duration@npm:^0.2.2": + version: 0.2.2 + resolution: "duration@npm:0.2.2" + dependencies: + d: 1 + es5-ext: ~0.10.46 + checksum: 907f4fdb2d5304744b419466846b41076bb0b2f5cde4ca02e78dd8d679b3ae14c29350d3f3a852006f5b6df0c6848efb7b38a6e4ae1b5dbadab5c46a2af22f91 + languageName: node + linkType: hard + "e2e-test@workspace:*, e2e-test@workspace:packages/e2e-test": version: 0.0.0-use.local resolution: "e2e-test@workspace:packages/e2e-test" @@ -25023,7 +25779,7 @@ __metadata: languageName: node linkType: hard -"end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.1": +"end-of-stream@npm:^1.0.0, end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.1": version: 1.4.4 resolution: "end-of-stream@npm:1.4.4" dependencies: @@ -25086,10 +25842,10 @@ __metadata: languageName: node linkType: hard -"env-paths@npm:^2.2.0": - version: 2.2.0 - resolution: "env-paths@npm:2.2.0" - checksum: ba2aea38301aafd69086be1f8cb453b92946e4840cb0de9d1c88a67e6f43a6174dcddb60b218ec36db8720b12de46b0d93c2f97ad9bbec6a267b479ab37debb6 +"env-paths@npm:^2.2.0, env-paths@npm:^2.2.1": + version: 2.2.1 + resolution: "env-paths@npm:2.2.1" + checksum: 65b5df55a8bab92229ab2b40dad3b387fad24613263d103a97f91c9fe43ceb21965cd3392b1ccb5d77088021e525c4e0481adb309625d0cb94ade1d1fb8dc17e languageName: node linkType: hard @@ -25273,6 +26029,17 @@ __metadata: languageName: node linkType: hard +"es5-ext@npm:^0.10.35, es5-ext@npm:^0.10.46, es5-ext@npm:^0.10.50, es5-ext@npm:^0.10.53, es5-ext@npm:^0.10.61, es5-ext@npm:~0.10.14, es5-ext@npm:~0.10.2, es5-ext@npm:~0.10.46": + version: 0.10.62 + resolution: "es5-ext@npm:0.10.62" + dependencies: + es6-iterator: ^2.0.3 + es6-symbol: ^3.1.3 + next-tick: ^1.1.0 + checksum: 25f42f6068cfc6e393cf670bc5bba249132c5f5ec2dd0ed6e200e6274aca2fed8e9aec8a31c76031744c78ca283c57f0b41c7e737804c6328c7b8d3fbcba7983 + languageName: node + linkType: hard + "es6-error@npm:^4.1.1": version: 4.1.1 resolution: "es6-error@npm:4.1.1" @@ -25280,6 +26047,17 @@ __metadata: languageName: node linkType: hard +"es6-iterator@npm:^2.0.3": + version: 2.0.3 + resolution: "es6-iterator@npm:2.0.3" + dependencies: + d: 1 + es5-ext: ^0.10.35 + es6-symbol: ^3.1.1 + checksum: 6e48b1c2d962c21dee604b3d9f0bc3889f11ed5a8b33689155a2065d20e3107e2a69cc63a71bd125aeee3a589182f8bbcb5c8a05b6a8f38fa4205671b6d09697 + languageName: node + linkType: hard + "es6-object-assign@npm:^1.1.0": version: 1.1.0 resolution: "es6-object-assign@npm:1.1.0" @@ -25287,6 +26065,28 @@ __metadata: languageName: node linkType: hard +"es6-symbol@npm:^3.1.1, es6-symbol@npm:^3.1.3": + version: 3.1.3 + resolution: "es6-symbol@npm:3.1.3" + dependencies: + d: ^1.0.1 + ext: ^1.1.2 + checksum: cd49722c2a70f011eb02143ef1c8c70658d2660dead6641e160b94619f408b9cf66425515787ffe338affdf0285ad54f4eae30ea5bd510e33f8659ec53bcaa70 + languageName: node + linkType: hard + +"es6-weak-map@npm:^2.0.3": + version: 2.0.3 + resolution: "es6-weak-map@npm:2.0.3" + dependencies: + d: 1 + es5-ext: ^0.10.46 + es6-iterator: ^2.0.3 + es6-symbol: ^3.1.1 + checksum: 19ca15f46d50948ce78c2da5f21fb5b1ef45addd4fe17b5df952ff1f2a3d6ce4781249bc73b90995257264be2a98b2ec749bb2aba0c14b5776a1154178f9c927 + languageName: node + linkType: hard + "esbuild-loader@npm:^2.18.0": version: 2.21.0 resolution: "esbuild-loader@npm:2.21.0" @@ -25541,6 +26341,13 @@ __metadata: languageName: node linkType: hard +"escape-goat@npm:^2.0.0": + version: 2.1.1 + resolution: "escape-goat@npm:2.1.1" + checksum: ce05c70c20dd7007b60d2d644b625da5412325fdb57acf671ba06cb2ab3cd6789e2087026921a05b665b0a03fadee2955e7fc0b9a67da15a6551a980b260eba7 + languageName: node + linkType: hard + "escape-html@npm:^1.0.3, escape-html@npm:~1.0.3": version: 1.0.3 resolution: "escape-html@npm:1.0.3" @@ -25595,14 +26402,13 @@ __metadata: languageName: node linkType: hard -"escodegen@npm:^2.0.0": - version: 2.0.0 - resolution: "escodegen@npm:2.0.0" +"escodegen@npm:^2.0.0, escodegen@npm:^2.1.0": + version: 2.1.0 + resolution: "escodegen@npm:2.1.0" dependencies: esprima: ^4.0.1 estraverse: ^5.2.0 esutils: ^2.0.2 - optionator: ^0.8.1 source-map: ~0.6.1 dependenciesMeta: source-map: @@ -25610,7 +26416,7 @@ __metadata: bin: escodegen: bin/escodegen.js esgenerate: bin/esgenerate.js - checksum: 5aa6b2966fafe0545e4e77936300cc94ad57cfe4dc4ebff9950492eaba83eef634503f12d7e3cbd644ecc1bab388ad0e92b06fd32222c9281a75d1cf02ec6cef + checksum: 096696407e161305cd05aebb95134ad176708bc5cb13d0dcc89a5fcbb959b8ed757e7f2591a5f8036f8f4952d4a724de0df14cd419e29212729fa6df5ce16bf6 languageName: node linkType: hard @@ -26000,6 +26806,16 @@ __metadata: languageName: node linkType: hard +"event-emitter@npm:^0.3.5": + version: 0.3.5 + resolution: "event-emitter@npm:0.3.5" + dependencies: + d: 1 + es5-ext: ~0.10.14 + checksum: 27c1399557d9cd7e0aa0b366c37c38a4c17293e3a10258e8b692a847dd5ba9fb90429c3a5a1eeff96f31f6fa03ccbd31d8ad15e00540b22b22f01557be706030 + languageName: node + linkType: hard + "event-source-polyfill@npm:1.0.25": version: 1.0.25 resolution: "event-source-polyfill@npm:1.0.25" @@ -26434,6 +27250,21 @@ __metadata: languageName: node linkType: hard +"execa@npm:^1.0.0": + version: 1.0.0 + resolution: "execa@npm:1.0.0" + dependencies: + cross-spawn: ^6.0.0 + get-stream: ^4.0.0 + is-stream: ^1.1.0 + npm-run-path: ^2.0.0 + p-finally: ^1.0.0 + signal-exit: ^3.0.0 + strip-eof: ^1.0.0 + checksum: ddf1342c1c7d02dd93b41364cd847640f6163350d9439071abf70bf4ceb1b9b2b2e37f54babb1d8dc1df8e0d8def32d0e81e74a2e62c3e1d70c303eb4c306bc4 + languageName: node + linkType: hard + "execa@npm:^5.0.0": version: 5.1.1 resolution: "execa@npm:5.1.1" @@ -26451,6 +27282,13 @@ __metadata: languageName: node linkType: hard +"exit-hook@npm:^2.2.1": + version: 2.2.1 + resolution: "exit-hook@npm:2.2.1" + checksum: 1aa8359b6c5590a012d6cadf9cd337d227291bfcaa8970dc585d73dffef0582af34ed8ac56f6164f8979979fb417cff1eb49f03cdfd782f9332a30c773f0ada0 + languageName: node + linkType: hard + "exit-on-epipe@npm:~1.0.1": version: 1.0.1 resolution: "exit-on-epipe@npm:1.0.1" @@ -26573,7 +27411,7 @@ __metadata: languageName: node linkType: hard -"express@npm:^4.17.1, express@npm:^4.17.3, express@npm:^4.18.1, express@npm:^4.18.2": +"express@npm:^4.14.0, express@npm:^4.17.1, express@npm:^4.17.3, express@npm:^4.18.1, express@npm:^4.18.2": version: 4.18.2 resolution: "express@npm:4.18.2" dependencies: @@ -26612,6 +27450,15 @@ __metadata: languageName: node linkType: hard +"ext@npm:^1.1.2": + version: 1.7.0 + resolution: "ext@npm:1.7.0" + dependencies: + type: ^2.7.2 + checksum: ef481f9ef45434d8c867cfd09d0393b60945b7c8a1798bedc4514cb35aac342ccb8d8ecb66a513e6a2b4ec1e294a338e3124c49b29736f8e7c735721af352c31 + languageName: node + linkType: hard + "extend@npm:3.0.2, extend@npm:^3.0.0, extend@npm:^3.0.2, extend@npm:~3.0.2": version: 3.0.2 resolution: "extend@npm:3.0.2" @@ -26706,7 +27553,7 @@ __metadata: languageName: node linkType: hard -"fast-json-patch@npm:^3.0.0-1, fast-json-patch@npm:^3.1.0": +"fast-json-patch@npm:^3.0.0-1, fast-json-patch@npm:^3.1.0, fast-json-patch@npm:^3.1.1": version: 3.1.1 resolution: "fast-json-patch@npm:3.1.1" checksum: c4525b61b2471df60d4b025b4118b036d99778a93431aa44d1084218182841d82ce93056f0f3bbd731a24e6a8e69820128adf1873eb2199a26c62ef58d137833 @@ -26939,6 +27786,13 @@ __metadata: languageName: node linkType: hard +"file-type@npm:3.9.0": + version: 3.9.0 + resolution: "file-type@npm:3.9.0" + checksum: 1db70b2485ac77c4edb4b8753c1874ee6194123533f43c2651820f96b518f505fa570b093fedd6672eb105ba9fb89c62f84b6492e46788e39c3447aed37afa2d + languageName: node + linkType: hard + "file-type@npm:^16.5.4": version: 16.5.4 resolution: "file-type@npm:16.5.4" @@ -26989,6 +27843,21 @@ __metadata: languageName: node linkType: hard +"finalhandler@npm:1.1.2": + version: 1.1.2 + resolution: "finalhandler@npm:1.1.2" + dependencies: + debug: 2.6.9 + encodeurl: ~1.0.2 + escape-html: ~1.0.3 + on-finished: ~2.3.0 + parseurl: ~1.3.3 + statuses: ~1.5.0 + unpipe: ~1.0.0 + checksum: 617880460c5138dd7ccfd555cb5dde4d8f170f4b31b8bd51e4b646bb2946c30f7db716428a1f2882d730d2b72afb47d1f67cc487b874cb15426f95753a88965e + languageName: node + linkType: hard + "finalhandler@npm:1.2.0": version: 1.2.0 resolution: "finalhandler@npm:1.2.0" @@ -27423,6 +28292,17 @@ __metadata: languageName: node linkType: hard +"fs-extra@npm:^11.1.0": + version: 11.1.1 + resolution: "fs-extra@npm:11.1.1" + dependencies: + graceful-fs: ^4.2.0 + jsonfile: ^6.0.1 + universalify: ^2.0.0 + checksum: fb883c68245b2d777fbc1f2082c9efb084eaa2bbf9fddaa366130d196c03608eebef7fb490541276429ee1ca99f317e2d73e96f5ca0999eefedf5a624ae1edfd + languageName: node + linkType: hard + "fs-extra@npm:^7.0.1, fs-extra@npm:~7.0.1": version: 7.0.1 resolution: "fs-extra@npm:7.0.1" @@ -27698,6 +28578,15 @@ __metadata: languageName: node linkType: hard +"get-stream@npm:^4.0.0, get-stream@npm:^4.1.0": + version: 4.1.0 + resolution: "get-stream@npm:4.1.0" + dependencies: + pump: ^3.0.0 + checksum: 443e1914170c15bd52ff8ea6eff6dfc6d712b031303e36302d2778e3de2506af9ee964d6124010f7818736dcfde05c04ba7ca6cc26883106e084357a17ae7d73 + languageName: node + linkType: hard + "get-stream@npm:^5.1.0": version: 5.1.0 resolution: "get-stream@npm:5.1.0" @@ -27733,6 +28622,18 @@ __metadata: languageName: node linkType: hard +"get-uri@npm:^6.0.1": + version: 6.0.2 + resolution: "get-uri@npm:6.0.2" + dependencies: + basic-ftp: ^5.0.2 + data-uri-to-buffer: ^6.0.0 + debug: ^4.3.4 + fs-extra: ^8.1.0 + checksum: 762de3b0e3d4e7afc966e4ce93be587d70c270590da9b4c8fbff888362656c055838d926903d1774cbfeed4d392b4d6def4b2c06d48c050580070426a3a8629b + languageName: node + linkType: hard + "getopts@npm:2.3.0": version: 2.3.0 resolution: "getopts@npm:2.3.0" @@ -27870,6 +28771,15 @@ __metadata: languageName: node linkType: hard +"global-dirs@npm:^3.0.0": + version: 3.0.1 + resolution: "global-dirs@npm:3.0.1" + dependencies: + ini: 2.0.0 + checksum: 70147b80261601fd40ac02a104581432325c1c47329706acd773f3a6ce99bb36d1d996038c85ccacd482ad22258ec233c586b6a91535b1a116b89663d49d6438 + languageName: node + linkType: hard + "global-modules@npm:^2.0.0": version: 2.0.0 resolution: "global-modules@npm:2.0.0" @@ -28040,6 +28950,25 @@ __metadata: languageName: node linkType: hard +"got@npm:^9.6.0": + version: 9.6.0 + resolution: "got@npm:9.6.0" + dependencies: + "@sindresorhus/is": ^0.14.0 + "@szmarczak/http-timer": ^1.1.2 + cacheable-request: ^6.0.0 + decompress-response: ^3.3.0 + duplexer3: ^0.1.4 + get-stream: ^4.1.0 + lowercase-keys: ^1.0.1 + mimic-response: ^1.0.1 + p-cancelable: ^1.0.0 + to-readable-stream: ^1.0.0 + url-parse-lax: ^3.0.0 + checksum: 941807bd9704bacf5eb401f0cc1212ffa1f67c6642f2d028fd75900471c221b1da2b8527f4553d2558f3faeda62ea1cf31665f8b002c6137f5de8732f07370b0 + languageName: node + linkType: hard + "graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.5, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.1.9, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.10, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.10 resolution: "graceful-fs@npm:4.2.10" @@ -28128,6 +29057,15 @@ __metadata: languageName: node linkType: hard +"graphql-http@npm:^1.22.0": + version: 1.22.0 + resolution: "graphql-http@npm:1.22.0" + peerDependencies: + graphql: ">=0.11 <=16" + checksum: 5f7ad26a95bb362e0d75dfdf83e588c1e52631792fbeb4b08566c1d2ce46cb186a82219bba5653257a35643ebbfa6a00870f1dc0fb2c36f9aa1d125f44b1ffe5 + languageName: node + linkType: hard + "graphql-language-service@npm:5.2.0, graphql-language-service@npm:^5.0.6, graphql-language-service@npm:^5.2.0": version: 5.2.0 resolution: "graphql-language-service@npm:5.2.0" @@ -28142,6 +29080,20 @@ __metadata: languageName: node linkType: hard +"graphql-language-service@npm:^5.0.6": + version: 5.0.6 + resolution: "graphql-language-service@npm:5.0.6" + dependencies: + nullthrows: ^1.0.0 + vscode-languageserver-types: ^3.17.1 + peerDependencies: + graphql: ^15.5.0 || ^16.0.0 + bin: + graphql: dist/temp-bin.js + checksum: b053c6b7158d0ee7a3e55391bfd8be956fc5380211ca586b3a252007845e119540fb40efcc438975eaebc5ef25f46973f7ff4d9543c66e14ebd992957e0299b7 + languageName: node + linkType: hard + "graphql-modules@npm:^2.0.0": version: 2.2.0 resolution: "graphql-modules@npm:2.2.0" @@ -28170,6 +29122,17 @@ __metadata: languageName: node linkType: hard +"graphql-subscriptions@npm:^1.1.0": + version: 1.2.1 + resolution: "graphql-subscriptions@npm:1.2.1" + dependencies: + iterall: ^1.3.0 + peerDependencies: + graphql: ^0.10.5 || ^0.11.3 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 + checksum: 2b9533c6774e7be46acd6fbee528aab06429f15dc222eabd991e82c02bf74e390b638dffa1a3fd86c1e26212c40a42a0418d7f4a7c3a1edf0534978ef128e528 + languageName: node + linkType: hard + "graphql-tag@npm:^2.10.3, graphql-tag@npm:^2.11.0, graphql-tag@npm:^2.12.6": version: 2.12.6 resolution: "graphql-tag@npm:2.12.6" @@ -28229,6 +29192,13 @@ __metadata: languageName: node linkType: hard +"graphql@npm:^14.0.2 || ^15.5": + version: 15.8.0 + resolution: "graphql@npm:15.8.0" + checksum: 423325271db8858428641b9aca01699283d1fe5b40ef6d4ac622569ecca927019fce8196208b91dd1d8eb8114f00263fe661d241d0eb40c10e5bfd650f86ec5e + languageName: node + linkType: hard + "graphql@npm:^16.0.0, graphql@npm:^16.8.1": version: 16.8.1 resolution: "graphql@npm:16.8.1" @@ -28403,6 +29373,13 @@ __metadata: languageName: node linkType: hard +"has-yarn@npm:^2.1.0": + version: 2.1.0 + resolution: "has-yarn@npm:2.1.0" + checksum: 5eb1d0bb8518103d7da24532bdbc7124ffc6d367b5d3c10840b508116f2f1bcbcf10fd3ba843ff6e2e991bdf9969fd862d42b2ed58aade88343326c950b7e7f7 + languageName: node + linkType: hard + "has@npm:^1.0.3": version: 1.0.3 resolution: "has@npm:1.0.3" @@ -28707,6 +29684,17 @@ __metadata: languageName: node linkType: hard +"http-encoding@npm:^1.5.1": + version: 1.5.1 + resolution: "http-encoding@npm:1.5.1" + dependencies: + brotli-wasm: ^1.1.0 + pify: ^5.0.0 + zstd-codec: ^0.1.4 + checksum: 534aa2facb0ae529fa88b9778867472247711626b90030fd4351572c6147fb5e895d9d2e305e7dc5cc993345f2fbdb17ca99345651bf76dbac39a07f552af2ac + languageName: node + linkType: hard + "http-errors@npm:2.0.0, http-errors@npm:^2.0.0": version: 2.0.0 resolution: "http-errors@npm:2.0.0" @@ -28761,6 +29749,16 @@ __metadata: languageName: node linkType: hard +"http-proxy-agent@npm:^7.0.0": + version: 7.0.0 + resolution: "http-proxy-agent@npm:7.0.0" + dependencies: + agent-base: ^7.1.0 + debug: ^4.3.4 + checksum: 48d4fac997917e15f45094852b63b62a46d0c8a4f0b9c6c23ca26d27b8df8d178bed88389e604745e748bd9a01f5023e25093722777f0593c3f052009ff438b6 + languageName: node + linkType: hard + "http-proxy-middleware@npm:^2.0.0, http-proxy-middleware@npm:^2.0.3, http-proxy-middleware@npm:^2.0.6": version: 2.0.6 resolution: "http-proxy-middleware@npm:2.0.6" @@ -28790,6 +29788,13 @@ __metadata: languageName: node linkType: hard +"http-reasons@npm:0.1.0": + version: 0.1.0 + resolution: "http-reasons@npm:0.1.0" + checksum: da232d6e958416593989e4078a0fdf0508de19e1efb88fc461e1e214f067c2a8827bb1bb906296b0d7c1108cb6aca8cda964c793d9130c4f1491c98369c7a29c + languageName: node + linkType: hard + "http-signature@npm:~1.2.0": version: 1.2.0 resolution: "http-signature@npm:1.2.0" @@ -28811,6 +29816,16 @@ __metadata: languageName: node linkType: hard +"http2-wrapper@npm:^2.2.0": + version: 2.2.0 + resolution: "http2-wrapper@npm:2.2.0" + dependencies: + quick-lru: ^5.1.1 + resolve-alpn: ^1.2.0 + checksum: 6fd20e5cb6a58151715b3581e06a62a47df943187d2d1f69e538a50cccb7175dd334ecfde7900a37d18f3e13a1a199518a2c211f39860e81e9a16210c199cfaa + languageName: node + linkType: hard + "https-browserify@npm:^1.0.0": version: 1.0.0 resolution: "https-browserify@npm:1.0.0" @@ -28828,6 +29843,16 @@ __metadata: languageName: node linkType: hard +"https-proxy-agent@npm:^7.0.2": + version: 7.0.2 + resolution: "https-proxy-agent@npm:7.0.2" + dependencies: + agent-base: ^7.0.2 + debug: 4 + checksum: 088969a0dd476ea7a0ed0a2cf1283013682b08f874c3bc6696c83fa061d2c157d29ef0ad3eb70a2046010bb7665573b2388d10fdcb3e410a66995e5248444292 + languageName: node + linkType: hard + "human-id@npm:^1.0.2": version: 1.0.2 resolution: "human-id@npm:1.0.2" @@ -29042,6 +30067,13 @@ __metadata: languageName: node linkType: hard +"import-lazy@npm:^2.1.0": + version: 2.1.0 + resolution: "import-lazy@npm:2.1.0" + checksum: 05294f3b9dd4971d3a996f0d2f176410fb6745d491d6e73376429189f5c1c3d290548116b2960a7cf3e89c20cdf11431739d1d2d8c54b84061980795010e803a + languageName: node + linkType: hard + "import-lazy@npm:~4.0.0": version: 4.0.0 resolution: "import-lazy@npm:4.0.0" @@ -29129,6 +30161,13 @@ __metadata: languageName: node linkType: hard +"ini@npm:2.0.0": + version: 2.0.0 + resolution: "ini@npm:2.0.0" + checksum: e7aadc5fb2e4aefc666d74ee2160c073995a4061556b1b5b4241ecb19ad609243b9cceafe91bae49c219519394bbd31512516cb22a3b1ca6e66d869e0447e84e + languageName: node + linkType: hard + "ini@npm:^1.3.5, ini@npm:~1.3.0": version: 1.3.8 resolution: "ini@npm:1.3.8" @@ -29266,10 +30305,17 @@ __metadata: languageName: node linkType: hard -"ip@npm:^1.1.5": - version: 1.1.5 - resolution: "ip@npm:1.1.5" - checksum: 30133981f082a060a32644f6a7746e9ba7ac9e2bc07ecc8bbdda3ee8ca9bec1190724c390e45a1ee7695e7edfd2a8f7dda2c104ec5f7ac5068c00648504c7e5a +"ip@npm:^1.1.8": + version: 1.1.8 + resolution: "ip@npm:1.1.8" + checksum: a2ade53eb339fb0cbe9e69a44caab10d6e3784662285eb5d2677117ee4facc33a64679051c35e0dfdb1a3983a51ce2f5d2cb36446d52e10d01881789b76e28fb + languageName: node + linkType: hard + +"ip@npm:^2.0.0": + version: 2.0.0 + resolution: "ip@npm:2.0.0" + checksum: cfcfac6b873b701996d71ec82a7dd27ba92450afdb421e356f44044ed688df04567344c36cbacea7d01b1c39a4c732dc012570ebe9bebfb06f27314bca625349 languageName: node linkType: hard @@ -29304,6 +30350,15 @@ __metadata: languageName: node linkType: hard +"is-admin@npm:^3.0.0": + version: 3.0.0 + resolution: "is-admin@npm:3.0.0" + dependencies: + execa: ^1.0.0 + checksum: f0e14254ab5dba0ab0b2ede34de799868d3fc8368e8928aadcd624c1430e59c0e83a369f978d8691eb38e2c48b0dc22f24693c415dcd2c2251189ca8a19a94cf + languageName: node + linkType: hard + "is-alphabetical@npm:^1.0.0": version: 1.0.4 resolution: "is-alphabetical@npm:1.0.4" @@ -29417,6 +30472,13 @@ __metadata: languageName: node linkType: hard +"is-buffer@npm:~1.1.6": + version: 1.1.6 + resolution: "is-buffer@npm:1.1.6" + checksum: 4a186d995d8bbf9153b4bd9ff9fd04ae75068fe695d29025d25e592d9488911eeece84eefbd8fa41b8ddcc0711058a71d4c466dcf6f1f6e1d83830052d8ca707 + languageName: node + linkType: hard + "is-builtin-module@npm:^3.1.0": version: 3.1.0 resolution: "is-builtin-module@npm:3.1.0" @@ -29433,6 +30495,17 @@ __metadata: languageName: node linkType: hard +"is-ci@npm:^2.0.0": + version: 2.0.0 + resolution: "is-ci@npm:2.0.0" + dependencies: + ci-info: ^2.0.0 + bin: + is-ci: bin.js + checksum: 77b869057510f3efa439bbb36e9be429d53b3f51abd4776eeea79ab3b221337fe1753d1e50058a9e2c650d38246108beffb15ccfd443929d77748d8c0cc90144 + languageName: node + linkType: hard + "is-ci@npm:^3.0.1": version: 3.0.1 resolution: "is-ci@npm:3.0.1" @@ -29485,6 +30558,16 @@ __metadata: languageName: node linkType: hard +"is-elevated@npm:^3.0.0": + version: 3.0.0 + resolution: "is-elevated@npm:3.0.0" + dependencies: + is-admin: ^3.0.0 + is-root: ^2.1.0 + checksum: 3d15eb223a0bfb3f22ac53e980b2e85d27891bd9840e5da3e04b84fe58bc3f49bdda3577c96ff62dd78c9af4a53cd8d2e7a1ac024ce71bbbc2be4c3d2bb9166a + languageName: node + linkType: hard + "is-extglob@npm:^2.1.1": version: 2.1.1 resolution: "is-extglob@npm:2.1.1" @@ -29561,6 +30644,16 @@ __metadata: languageName: node linkType: hard +"is-installed-globally@npm:^0.4.0": + version: 0.4.0 + resolution: "is-installed-globally@npm:0.4.0" + dependencies: + global-dirs: ^3.0.0 + is-path-inside: ^3.0.2 + checksum: 3359840d5982d22e9b350034237b2cda2a12bac1b48a721912e1ab8e0631dd07d45a2797a120b7b87552759a65ba03e819f1bd63f2d7ab8657ec0b44ee0bf399 + languageName: node + linkType: hard + "is-interactive@npm:^1.0.0": version: 1.0.0 resolution: "is-interactive@npm:1.0.0" @@ -29622,6 +30715,13 @@ __metadata: languageName: node linkType: hard +"is-npm@npm:^5.0.0": + version: 5.0.0 + resolution: "is-npm@npm:5.0.0" + checksum: 9baff02b0c69a3d3c79b162cb2f9e67fb40ef6d172c16601b2e2471c21e9a4fa1fc9885a308d7bc6f3a3cd2a324c27fa0bf284c133c3349bb22571ab70d041cc + languageName: node + linkType: hard + "is-number-object@npm:^1.0.4": version: 1.0.7 resolution: "is-number-object@npm:1.0.7" @@ -29652,7 +30752,7 @@ __metadata: languageName: node linkType: hard -"is-path-inside@npm:^3.0.3": +"is-path-inside@npm:^3.0.2, is-path-inside@npm:^3.0.3": version: 3.0.3 resolution: "is-path-inside@npm:3.0.3" checksum: abd50f06186a052b349c15e55b182326f1936c89a78bf6c8f2b707412517c097ce04bc49a0ca221787bc44e1049f51f09a2ffb63d22899051988d3a618ba13e9 @@ -29717,7 +30817,7 @@ __metadata: languageName: node linkType: hard -"is-promise@npm:^2.1.0": +"is-promise@npm:^2.1.0, is-promise@npm:^2.2.2": version: 2.2.2 resolution: "is-promise@npm:2.2.2" checksum: 18bf7d1c59953e0ad82a1ed963fb3dc0d135c8f299a14f89a17af312fc918373136e56028e8831700e1933519630cc2fd4179a777030330fde20d34e96f40c78 @@ -29773,6 +30873,13 @@ __metadata: languageName: node linkType: hard +"is-retry-allowed@npm:^1.1.0": + version: 1.2.0 + resolution: "is-retry-allowed@npm:1.2.0" + checksum: 50d700a89ae31926b1c91b3eb0104dbceeac8790d8b80d02f5c76d9a75c2056f1bb24b5268a8a018dead606bddf116b2262e5ac07401eb8b8783b266ed22558d + languageName: node + linkType: hard + "is-root@npm:^2.1.0": version: 2.1.0 resolution: "is-root@npm:2.1.0" @@ -29821,7 +30928,7 @@ __metadata: languageName: node linkType: hard -"is-stream@npm:^1.0.1": +"is-stream@npm:^1.0.1, is-stream@npm:^1.1.0": version: 1.1.0 resolution: "is-stream@npm:1.1.0" checksum: 063c6bec9d5647aa6d42108d4c59723d2bd4ae42135a2d4db6eadbd49b7ea05b750fd69d279e5c7c45cf9da753ad2c00d8978be354d65aa9f6bb434969c6a2ae @@ -29878,7 +30985,7 @@ __metadata: languageName: node linkType: hard -"is-typedarray@npm:~1.0.0": +"is-typedarray@npm:^1.0.0, is-typedarray@npm:~1.0.0": version: 1.0.0 resolution: "is-typedarray@npm:1.0.0" checksum: 3508c6cd0a9ee2e0df2fa2e9baabcdc89e911c7bd5cf64604586697212feec525aa21050e48affb5ffc3df20f0f5d2e2cf79b08caa64e1ccc9578e251763aef7 @@ -29910,6 +31017,13 @@ __metadata: languageName: node linkType: hard +"is-url@npm:^1.2.4": + version: 1.2.4 + resolution: "is-url@npm:1.2.4" + checksum: 100e74b3b1feab87a43ef7653736e88d997eb7bd32e71fd3ebc413e58c1cbe56269699c776aaea84244b0567f2a7d68dfaa512a062293ed2f9fdecb394148432 + languageName: node + linkType: hard + "is-utf8@npm:^0.2.0, is-utf8@npm:^0.2.1": version: 0.2.1 resolution: "is-utf8@npm:0.2.1" @@ -29959,6 +31073,13 @@ __metadata: languageName: node linkType: hard +"is-yarn-global@npm:^0.3.0": + version: 0.3.0 + resolution: "is-yarn-global@npm:0.3.0" + checksum: bca013d65fee2862024c9fbb3ba13720ffca2fe750095174c1c80922fdda16402b5c233f5ac9e265bc12ecb5446e7b7f519a32d9541788f01d4d44e24d2bf481 + languageName: node + linkType: hard + "isarray@npm:0.0.1": version: 0.0.1 resolution: "isarray@npm:0.0.1" @@ -30095,6 +31216,15 @@ __metadata: languageName: node linkType: hard +"isomorphic-ws@npm:^4.0.1": + version: 4.0.1 + resolution: "isomorphic-ws@npm:4.0.1" + peerDependencies: + ws: "*" + checksum: d7190eadefdc28bdb93d67b5f0c603385aaf87724fa2974abb382ac1ec9756ed2cfb27065cbe76122879c2d452e2982bc4314317f3d6c737ddda6c047328771a + languageName: node + linkType: hard + "isstream@npm:~0.1.2": version: 0.1.2 resolution: "isstream@npm:0.1.2" @@ -30154,7 +31284,7 @@ __metadata: languageName: node linkType: hard -"iterall@npm:^1.2.1": +"iterall@npm:^1.2.1, iterall@npm:^1.3.0": version: 1.3.0 resolution: "iterall@npm:1.3.0" checksum: c78b99678f8c99be488cca7f33e4acca9b72c1326e050afbaf023f086e55619ee466af0464af94a0cb3f292e60cb5bac53a8fd86bd4249ecad26e09f17bb158b @@ -30847,13 +31977,27 @@ __metadata: languageName: node linkType: hard -"jose@npm:^4.14.6, jose@npm:^4.15.1, jose@npm:^4.6.0": +"join-component@npm:^1.1.0": + version: 1.1.0 + resolution: "join-component@npm:1.1.0" + checksum: b904c2f98549e4195022caca3a7dc837f9706c670ff333f3d617f2aed23bce2841322a999734683b6ab8e202568ad810c11ff79b58a64df66888153f04750239 + languageName: node + linkType: hard + +"jose@npm:^4.14.6": version: 4.15.3 resolution: "jose@npm:4.15.3" checksum: b76eeccc1d40d0eaf26dfaadc0f88fc15802c9105ab66a24ee223bd84369f7cb217f4a2cb852f5080ff6996170b3a73db2b2d26878b8905d99c36ca432628134 languageName: node linkType: hard +"jose@npm:^4.15.1, jose@npm:^4.6.0": + version: 4.15.2 + resolution: "jose@npm:4.15.2" + checksum: 8f0cab1eef31243abe14a935b2b330cd95f10f9b69808fd642088ae5000e50e566664934537d2c6413ab2f6b54acd8265a5033da05157aa1260c5f1d7e57fab0 + languageName: node + linkType: hard + "joycon@npm:^3.0.1": version: 3.1.0 resolution: "joycon@npm:3.1.0" @@ -31141,6 +32285,13 @@ __metadata: languageName: node linkType: hard +"json-buffer@npm:3.0.0": + version: 3.0.0 + resolution: "json-buffer@npm:3.0.0" + checksum: 0cecacb8025370686a916069a2ff81f7d55167421b6aa7270ee74e244012650dd6bce22b0852202ea7ff8624fce50ff0ec1bdf95914ccb4553426e290d5a63fa + languageName: node + linkType: hard + "json-buffer@npm:3.0.1, json-buffer@npm:^3.0.1": version: 3.0.1 resolution: "json-buffer@npm:3.0.1" @@ -31235,6 +32386,13 @@ __metadata: languageName: node linkType: hard +"json-schema-typed@npm:^7.0.3": + version: 7.0.3 + resolution: "json-schema-typed@npm:7.0.3" + checksum: e861b19e97e3cc2b29a429147890157827eeda16ab639a0765b935cf3e22aeb6abbba108e23aef442da806bb1f402bdff21da9c5cb30015f8007594565e110b5 + languageName: node + linkType: hard + "json-schema@npm:0.4.0, json-schema@npm:^0.4.0": version: 0.4.0 resolution: "json-schema@npm:0.4.0" @@ -31710,6 +32868,15 @@ __metadata: languageName: node linkType: hard +"keyv@npm:^3.0.0": + version: 3.1.0 + resolution: "keyv@npm:3.1.0" + dependencies: + json-buffer: 3.0.0 + checksum: bb7e8f3acffdbafbc2dd5b63f377fe6ec4c0e2c44fc82720449ef8ab54f4a7ce3802671ed94c0f475ae0a8549703353a2124561fcf3317010c141b32ca1ce903 + languageName: node + linkType: hard + "keyv@npm:^4.0.0, keyv@npm:^4.5.2": version: 4.5.4 resolution: "keyv@npm:4.5.4" @@ -31839,6 +33006,15 @@ __metadata: languageName: node linkType: hard +"latest-version@npm:^5.1.0": + version: 5.1.0 + resolution: "latest-version@npm:5.1.0" + dependencies: + package-json: ^6.3.0 + checksum: fbc72b071eb66c40f652441fd783a9cca62f08bf42433651937f078cd9ef94bf728ec7743992777826e4e89305aef24f234b515e6030503a2cbee7fc9bdc2c0f + languageName: node + linkType: hard + "launch-editor@npm:^2.6.0": version: 2.6.0 resolution: "launch-editor@npm:2.6.0" @@ -32050,6 +33226,13 @@ __metadata: languageName: node linkType: hard +"liquid-json@npm:0.3.1": + version: 0.3.1 + resolution: "liquid-json@npm:0.3.1" + checksum: b215fb17e7c9409e69a207a0ae275710311c274156862f34a78401dde363f97f15b863462fcc487f2fc3fb1d778d7d9f1d537bf00925a272b506a36e90826e2c + languageName: node + linkType: hard + "listr2@npm:6.6.1": version: 6.6.1 resolution: "listr2@npm:6.6.1" @@ -32180,6 +33363,13 @@ __metadata: languageName: node linkType: hard +"lodash.chunk@npm:^4.2.0": + version: 4.2.0 + resolution: "lodash.chunk@npm:4.2.0" + checksum: 6286c6d06814fbeda502164015c42ef53a9194e6ebaac52ec2b41e83344aefe7bc3d94fdfec525adcd2c66cefdf05dc333b6a1128e4de739797342315c17cbc7 + languageName: node + linkType: hard + "lodash.clonedeep@npm:^4.5.0": version: 4.5.0 resolution: "lodash.clonedeep@npm:4.5.0" @@ -32243,6 +33433,13 @@ __metadata: languageName: node linkType: hard +"lodash.groupby@npm:^4.6.0": + version: 4.6.0 + resolution: "lodash.groupby@npm:4.6.0" + checksum: e2d4d13d12790a1cacab3f5f120b7c072a792224e83b2f403218866d18efde76024b2579996dfebb230a61ce06469332e16639103669a35a605287e19ced6b9b + languageName: node + linkType: hard + "lodash.has@npm:^4.5.2": version: 4.5.2 resolution: "lodash.has@npm:4.5.2" @@ -32341,6 +33538,13 @@ __metadata: languageName: node linkType: hard +"lodash.pick@npm:^4.4.0": + version: 4.4.0 + resolution: "lodash.pick@npm:4.4.0" + checksum: 2c36cab7da6b999a20bd3373b40e31a3ef81fa264f34a6979c852c5bc8ac039379686b27380f0cb8e3781610844fafec6949c6fbbebc059c98f8fa8570e3675f + languageName: node + linkType: hard + "lodash.sortby@npm:^4.7.0": version: 4.7.0 resolution: "lodash.sortby@npm:4.7.0" @@ -32383,13 +33587,31 @@ __metadata: languageName: node linkType: hard -"lodash@npm:4.17.21, lodash@npm:^4.15.0, lodash@npm:^4.17.10, lodash@npm:^4.17.11, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.19, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.17.4, lodash@npm:^4.7.0, lodash@npm:~4.17.0, lodash@npm:~4.17.15, lodash@npm:~4.17.21": +"lodash@npm:4.17.21, lodash@npm:^4.15.0, lodash@npm:^4.16.4, lodash@npm:^4.17.10, lodash@npm:^4.17.11, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.19, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.17.4, lodash@npm:^4.7.0, lodash@npm:~4.17.0, lodash@npm:~4.17.15, lodash@npm:~4.17.21": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 languageName: node linkType: hard +"log-node@npm:^8.0.3": + version: 8.0.3 + resolution: "log-node@npm:8.0.3" + dependencies: + ansi-regex: ^5.0.1 + cli-color: ^2.0.1 + cli-sprintf-format: ^1.1.1 + d: ^1.0.1 + es5-ext: ^0.10.53 + sprintf-kit: ^2.0.1 + supports-color: ^8.1.1 + type: ^2.5.0 + peerDependencies: + log: ^6.0.0 + checksum: d6e634e22098a2453e84324e49cb7aeead7cb3b9e117ed8e5097384de6310b68c327e47a62e20c0c118877aad401d5eb1f14445f6c0b1793ef16221089fc8610 + languageName: node + linkType: hard + "log-symbols@npm:^4.0.0, log-symbols@npm:^4.1.0": version: 4.1.0 resolution: "log-symbols@npm:4.1.0" @@ -32425,6 +33647,21 @@ __metadata: languageName: node linkType: hard +"log@npm:^6.3.1": + version: 6.3.1 + resolution: "log@npm:6.3.1" + dependencies: + d: ^1.0.1 + duration: ^0.2.2 + es5-ext: ^0.10.53 + event-emitter: ^0.3.5 + sprintf-kit: ^2.0.1 + type: ^2.5.0 + uni-global: ^1.0.0 + checksum: 21800f4b55acb7878ec90fcf626d45002b22d91e74270357981305c7e0b7429599c62072b57e807fe73e07fc7229827e983f836f17401d661b22dcfc14519ea5 + languageName: node + linkType: hard + "logform@npm:^2.3.2, logform@npm:^2.4.0": version: 2.5.1 resolution: "logform@npm:2.5.1" @@ -32439,10 +33676,10 @@ __metadata: languageName: node linkType: hard -"loglevel@npm:^1.6.8": - version: 1.8.0 - resolution: "loglevel@npm:1.8.0" - checksum: 41aeea17de24aba8dba68084a31fe9189648bce4f39c1277e021bb276c3c53a75b0d337395919cf271068ad40ecefabad0e4fdeb4a8f11908beee532b898f4a7 +"loglevel@npm:^1.6.8, loglevel@npm:^1.8.0": + version: 1.8.1 + resolution: "loglevel@npm:1.8.1" + checksum: a1a62db40291aaeaef2f612334c49e531bff71cc1d01a2acab689ab80d59e092f852ab164a5aedc1a752fdc46b7b162cb097d8a9eb2cf0b299511106c29af61d languageName: node linkType: hard @@ -32496,6 +33733,13 @@ __metadata: languageName: node linkType: hard +"lowercase-keys@npm:^1.0.0, lowercase-keys@npm:^1.0.1": + version: 1.0.1 + resolution: "lowercase-keys@npm:1.0.1" + checksum: 4d045026595936e09953e3867722e309415ff2c80d7701d067546d75ef698dac218a4f53c6d1d0e7368b47e45fd7529df47e6cb56fbb90523ba599f898b3d147 + languageName: node + linkType: hard + "lowercase-keys@npm:^2.0.0": version: 2.0.0 resolution: "lowercase-keys@npm:2.0.0" @@ -32541,7 +33785,7 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^7.10.1, lru-cache@npm:^7.14.1, lru-cache@npm:^7.7.1": +"lru-cache@npm:^7.10.1, lru-cache@npm:^7.14.0, lru-cache@npm:^7.14.1, lru-cache@npm:^7.7.1": version: 7.18.3 resolution: "lru-cache@npm:7.18.3" checksum: e550d772384709deea3f141af34b6d4fa392e2e418c1498c078de0ee63670f1f46f5eee746e8ef7e69e1c895af0d4224e62ee33e66a543a14763b0f2e74c1356 @@ -32555,6 +33799,22 @@ __metadata: languageName: node linkType: hard +"lru-queue@npm:^0.1.0": + version: 0.1.0 + resolution: "lru-queue@npm:0.1.0" + dependencies: + es5-ext: ~0.10.2 + checksum: 7f2c53c5e7f2de20efb6ebb3086b7aea88d6cf9ae91ac5618ece974122960c4e8ed04988e81d92c3e63d60b12c556b14d56ef7a9c5a4627b23859b813e39b1a2 + languageName: node + linkType: hard + +"lru_map@npm:^0.3.3": + version: 0.3.3 + resolution: "lru_map@npm:0.3.3" + checksum: ca9dd43c65ed7a4f117c548028101c5b6855e10923ea9d1f635af53ad20c5868ff428c364d454a7b57fe391b89c704982275410c3c5099cca5aeee00d76e169a + languageName: node + linkType: hard + "lunr@npm:^2.3.9": version: 2.3.9 resolution: "lunr@npm:2.3.9" @@ -32845,6 +34105,17 @@ __metadata: languageName: node linkType: hard +"md5@npm:^2.2.1": + version: 2.3.0 + resolution: "md5@npm:2.3.0" + dependencies: + charenc: 0.0.2 + crypt: 0.0.2 + is-buffer: ~1.1.6 + checksum: a63cacf4018dc9dee08c36e6f924a64ced735b37826116c905717c41cebeb41a522f7a526ba6ad578f9c80f02cb365033ccd67fe186ffbcc1a1faeb75daa9b6e + languageName: node + linkType: hard + "mdast-util-definitions@npm:^5.0.0": version: 5.1.0 resolution: "mdast-util-definitions@npm:5.1.0" @@ -33079,6 +34350,22 @@ __metadata: languageName: node linkType: hard +"memoizee@npm:^0.4.15": + version: 0.4.15 + resolution: "memoizee@npm:0.4.15" + dependencies: + d: ^1.0.1 + es5-ext: ^0.10.53 + es6-weak-map: ^2.0.3 + event-emitter: ^0.3.5 + is-promise: ^2.2.2 + lru-queue: ^0.1.0 + next-tick: ^1.1.0 + timers-ext: ^0.1.7 + checksum: 4065d94416dbadac56edf5947bf342beca0e9f051f33ad60d7c4baf3f6ca0f3c6fdb770c5caed5a89c0ceaf9121428582f396445d591785281383d60aa883418 + languageName: node + linkType: hard + "meow@npm:^6.0.0": version: 6.1.1 resolution: "meow@npm:6.1.1" @@ -33502,6 +34789,15 @@ __metadata: languageName: node linkType: hard +"mime-format@npm:2.0.1": + version: 2.0.1 + resolution: "mime-format@npm:2.0.1" + dependencies: + charset: ^1.0.0 + checksum: 294a29035e8d430bba2cb5985a1bf31d9f97effe53bcaf269a816ed054c10b7883fa838f30aabaaccdd44d553dce40f32c39ec0efe21b58fa26a9dbfb02015cd + languageName: node + linkType: hard + "mime-types@npm:2.1.18": version: 2.1.18 resolution: "mime-types@npm:2.1.18" @@ -33511,7 +34807,7 @@ __metadata: languageName: node linkType: hard -"mime-types@npm:^2.0.8, mime-types@npm:^2.1.12, mime-types@npm:^2.1.27, mime-types@npm:^2.1.31, mime-types@npm:~2.1.17, mime-types@npm:~2.1.19, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": +"mime-types@npm:2.1.35, mime-types@npm:^2.0.8, mime-types@npm:^2.1.12, mime-types@npm:^2.1.27, mime-types@npm:^2.1.31, mime-types@npm:~2.1.17, mime-types@npm:~2.1.19, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": version: 2.1.35 resolution: "mime-types@npm:2.1.35" dependencies: @@ -33554,6 +34850,13 @@ __metadata: languageName: node linkType: hard +"mimic-fn@npm:^3.0.0": + version: 3.1.0 + resolution: "mimic-fn@npm:3.1.0" + checksum: f7b167f9115b8bbdf2c3ee55dce9149d14be9e54b237259c4bc1d8d0512ea60f25a1b323f814eb1fe8f5a541662804bcfcfff3202ca58df143edb986849d58db + languageName: node + linkType: hard + "mimic-fn@npm:^4.0.0": version: 4.0.0 resolution: "mimic-fn@npm:4.0.0" @@ -33561,7 +34864,7 @@ __metadata: languageName: node linkType: hard -"mimic-response@npm:^1.0.0": +"mimic-response@npm:^1.0.0, mimic-response@npm:^1.0.1": version: 1.0.1 resolution: "mimic-response@npm:1.0.1" checksum: 034c78753b0e622bc03c983663b1cdf66d03861050e0c8606563d149bc2b02d63f62ce4d32be4ab50d0553ae0ffe647fc34d1f5281184c6e1e8cf4d85e8d9823 @@ -33641,6 +34944,15 @@ __metadata: languageName: node linkType: hard +"minimatch@npm:9.0.3, minimatch@npm:^9.0.1": + version: 9.0.3 + resolution: "minimatch@npm:9.0.3" + dependencies: + brace-expansion: ^2.0.1 + checksum: 253487976bf485b612f16bf57463520a14f512662e592e95c571afdab1442a6a6864b6c88f248ce6fc4ff0b6de04ac7aa6c8bb51e868e99d1d65eb0658a708b5 + languageName: node + linkType: hard + "minimatch@npm:^5.0.0, minimatch@npm:^5.0.1, minimatch@npm:^5.1.0, minimatch@npm:^5.1.1, minimatch@npm:^5.1.2": version: 5.1.6 resolution: "minimatch@npm:5.1.6" @@ -33659,15 +34971,6 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^9.0.1": - version: 9.0.1 - resolution: "minimatch@npm:9.0.1" - dependencies: - brace-expansion: ^2.0.1 - checksum: 97f5f5284bb57dc65b9415dec7f17a0f6531a33572193991c60ff18450dcfad5c2dad24ffeaf60b5261dccd63aae58cc3306e2209d57e7f88c51295a532d8ec3 - languageName: node - linkType: hard - "minimist-options@npm:^4.0.2": version: 4.1.0 resolution: "minimist-options@npm:4.1.0" @@ -33860,7 +35163,7 @@ __metadata: languageName: node linkType: hard -"mkdirp@npm:^0.5.4": +"mkdirp@npm:^0.5.4, mkdirp@npm:^0.5.5, mkdirp@npm:^0.5.6": version: 0.5.6 resolution: "mkdirp@npm:0.5.6" dependencies: @@ -33901,6 +35204,55 @@ __metadata: languageName: node linkType: hard +"mockttp@npm:^3.9.1": + version: 3.9.3 + resolution: "mockttp@npm:3.9.3" + dependencies: + "@graphql-tools/schema": ^8.5.0 + "@graphql-tools/utils": ^8.8.0 + "@httptoolkit/httpolyglot": ^2.1.1 + "@httptoolkit/subscriptions-transport-ws": ^0.11.2 + "@httptoolkit/websocket-stream": ^6.0.1 + "@types/cors": ^2.8.6 + "@types/node": "*" + base64-arraybuffer: ^0.1.5 + body-parser: ^1.15.2 + cacheable-lookup: ^6.0.0 + common-tags: ^1.8.0 + connect: ^3.7.0 + cors: ^2.8.4 + cors-gate: ^1.1.3 + cross-fetch: ^3.1.5 + destroyable-server: ^1.0.0 + express: ^4.14.0 + graphql: ^14.0.2 || ^15.5 + graphql-http: ^1.22.0 + graphql-subscriptions: ^1.1.0 + graphql-tag: ^2.12.6 + http-encoding: ^1.5.1 + http2-wrapper: ^2.2.0 + https-proxy-agent: ^5.0.1 + isomorphic-ws: ^4.0.1 + lodash: ^4.16.4 + lru-cache: ^7.14.0 + native-duplexpair: ^1.0.0 + node-forge: ^1.2.1 + pac-proxy-agent: ^7.0.0 + parse-multipart-data: ^1.4.0 + performance-now: ^2.1.0 + portfinder: 1.0.28 + read-tls-client-hello: ^1.0.0 + semver: ^7.5.3 + socks-proxy-agent: ^7.0.0 + typed-error: ^3.0.2 + uuid: ^8.3.2 + ws: ^8.8.0 + bin: + mockttp: dist/admin/admin-bin.js + checksum: f1af699d94fd7cce10f1661688a95dc47ff66be59de201c341e235af1e0fa238ac1b5d640907c9a5e7c4d812c242ba60af698484c9447c325056503d5c87db83 + languageName: node + linkType: hard + "moment@npm:^2.29.1": version: 2.29.4 resolution: "moment@npm:2.29.4" @@ -34131,6 +35483,13 @@ __metadata: languageName: node linkType: hard +"native-duplexpair@npm:^1.0.0": + version: 1.0.0 + resolution: "native-duplexpair@npm:1.0.0" + checksum: d849a8cb78c59eb12326fde2a84fedc26568b4317da46d061e7110a35961230b674a04ec2496860c2eb5f05288176c7ce0eb3a51eb0ed6b76a4263f637461f9d + languageName: node + linkType: hard + "natural-compare@npm:^1.4.0": version: 1.4.0 resolution: "natural-compare@npm:1.4.0" @@ -34184,6 +35543,27 @@ __metadata: languageName: node linkType: hard +"netmask@npm:^2.0.2": + version: 2.0.2 + resolution: "netmask@npm:2.0.2" + checksum: c65cb8d3f7ea5669edddb3217e4c96910a60d0d9a4b52d9847ff6b28b2d0277cd8464eee0ef85133cdee32605c57940cacdd04a9a019079b091b6bba4cb0ec22 + languageName: node + linkType: hard + +"next-tick@npm:1, next-tick@npm:^1.1.0": + version: 1.1.0 + resolution: "next-tick@npm:1.1.0" + checksum: 83b5cf36027a53ee6d8b7f9c0782f2ba87f4858d977342bfc3c20c21629290a2111f8374d13a81221179603ffc4364f38374b5655d17b6a8f8a8c77bdea4fe8b + languageName: node + linkType: hard + +"nice-try@npm:^1.0.4": + version: 1.0.5 + resolution: "nice-try@npm:1.0.5" + checksum: 0b4af3b5bb5d86c289f7a026303d192a7eb4417231fe47245c460baeabae7277bcd8fd9c728fb6bd62c30b3e15cd6620373e2cf33353b095d8b403d3e8a15aff + languageName: node + linkType: hard + "nimma@npm:0.2.2": version: 0.2.2 resolution: "nimma@npm:0.2.2" @@ -34310,7 +35690,7 @@ __metadata: languageName: node linkType: hard -"node-forge@npm:^1, node-forge@npm:^1.3.1": +"node-forge@npm:^1, node-forge@npm:^1.2.1, node-forge@npm:^1.3.1": version: 1.3.1 resolution: "node-forge@npm:1.3.1" checksum: 08fb072d3d670599c89a1704b3e9c649ff1b998256737f0e06fbd1a5bf41cae4457ccaee32d95052d80bbafd9ffe01284e078c8071f0267dc9744e51c5ed42a9 @@ -34436,6 +35816,13 @@ __metadata: languageName: node linkType: hard +"node-machine-id@npm:^1.1.12": + version: 1.1.12 + resolution: "node-machine-id@npm:1.1.12" + checksum: e23088a0fb4a77a1d6484b7f09a22992fd3e0054d4f2e427692b4c7081e6cf30118ba07b6113b6c89f1ce46fd26ec5ab1d76dcaf6c10317717889124511283a5 + languageName: node + linkType: hard + "node-releases@npm:^2.0.13": version: 2.0.13 resolution: "node-releases@npm:2.0.13" @@ -34576,6 +35963,13 @@ __metadata: languageName: node linkType: hard +"normalize-url@npm:^4.1.0": + version: 4.5.1 + resolution: "normalize-url@npm:4.5.1" + checksum: 9a9dee01df02ad23e171171893e56e22d752f7cff86fb96aafeae074819b572ea655b60f8302e2d85dbb834dc885c972cc1c573892fea24df46b2765065dd05a + languageName: node + linkType: hard + "normalize-url@npm:^6.0.1": version: 6.1.0 resolution: "normalize-url@npm:6.1.0" @@ -34689,6 +36083,15 @@ __metadata: languageName: node linkType: hard +"npm-run-path@npm:^2.0.0": + version: 2.0.2 + resolution: "npm-run-path@npm:2.0.2" + dependencies: + path-key: ^2.0.0 + checksum: acd5ad81648ba4588ba5a8effb1d98d2b339d31be16826a118d50f182a134ac523172101b82eab1d01cb4c2ba358e857d54cfafd8163a1ffe7bd52100b741125 + languageName: node + linkType: hard + "npm-run-path@npm:^4.0.1": version: 4.0.1 resolution: "npm-run-path@npm:4.0.1" @@ -35039,7 +36442,7 @@ __metadata: languageName: node linkType: hard -"openapi-types@npm:^12.0.0": +"openapi-types@npm:^12.0.0, openapi-types@npm:^12.0.2": version: 12.1.3 resolution: "openapi-types@npm:12.1.3" checksum: 7fa5547f87a58d2aa0eba6e91d396f42d7d31bc3ae140e61b5d60b47d2fd068b48776f42407d5a8da7280cf31195aa128c2fc285e8bb871d1105edee5647a0bb @@ -35115,7 +36518,7 @@ __metadata: languageName: node linkType: hard -"ora@npm:^5.3.0, ora@npm:^5.4.1": +"ora@npm:5.4.1, ora@npm:^5.3.0, ora@npm:^5.4.1": version: 5.4.1 resolution: "ora@npm:5.4.1" dependencies: @@ -35160,6 +36563,13 @@ __metadata: languageName: node linkType: hard +"p-cancelable@npm:^1.0.0": + version: 1.1.0 + resolution: "p-cancelable@npm:1.1.0" + checksum: 2db3814fef6d9025787f30afaee4496a8857a28be3c5706432cbad76c688a6db1874308f48e364a42f5317f5e41e8e7b4f2ff5c8ff2256dbb6264bc361704ece + languageName: node + linkType: hard + "p-cancelable@npm:^2.0.0": version: 2.0.0 resolution: "p-cancelable@npm:2.0.0" @@ -35315,6 +36725,45 @@ __metadata: languageName: node linkType: hard +"pac-proxy-agent@npm:^7.0.0": + version: 7.0.1 + resolution: "pac-proxy-agent@npm:7.0.1" + dependencies: + "@tootallnate/quickjs-emscripten": ^0.23.0 + agent-base: ^7.0.2 + debug: ^4.3.4 + get-uri: ^6.0.1 + http-proxy-agent: ^7.0.0 + https-proxy-agent: ^7.0.2 + pac-resolver: ^7.0.0 + socks-proxy-agent: ^8.0.2 + checksum: 3d4aa48ec1c19db10158ecc1c4c9a9f77792294412d225ceb3dfa45d5a06950dca9755e2db0d9b69f12769119bea0adf2b24390d9c73c8d81df75e28245ae451 + languageName: node + linkType: hard + +"pac-resolver@npm:^7.0.0": + version: 7.0.0 + resolution: "pac-resolver@npm:7.0.0" + dependencies: + degenerator: ^5.0.0 + ip: ^1.1.8 + netmask: ^2.0.2 + checksum: fa3a898c09848e93e35f5e23443fea36ddb393a851c76a23664a5bf3fcbe58ff77a0bcdae1e4f01b9ea87ea493c52e14d97a0fe39f92474d14cd45559c6e3cde + languageName: node + linkType: hard + +"package-json@npm:^6.3.0": + version: 6.5.0 + resolution: "package-json@npm:6.5.0" + dependencies: + got: ^9.6.0 + registry-auth-token: ^4.0.0 + registry-url: ^5.0.0 + semver: ^6.2.0 + checksum: cc9f890d3667d7610e6184decf543278b87f657d1ace0deb4a9c9155feca738ef88f660c82200763d3348010f4e42e9c7adc91e96ab0f86a770955995b5351e2 + languageName: node + linkType: hard + "packet-reader@npm:1.0.0": version: 1.0.0 resolution: "packet-reader@npm:1.0.0" @@ -35469,6 +36918,13 @@ __metadata: languageName: node linkType: hard +"parse-multipart-data@npm:^1.4.0": + version: 1.5.0 + resolution: "parse-multipart-data@npm:1.5.0" + checksum: a385fb6609a7b393ee7e82042d5f923beaa7fb7d81d430db560869b719574f62f39a30e77fd711fbfa6fe3e212a8e6f81fd2126a80876a3c13dc1ae975eb5d91 + languageName: node + linkType: hard + "parse-path@npm:^7.0.0": version: 7.0.0 resolution: "parse-path@npm:7.0.0" @@ -35753,6 +37209,13 @@ __metadata: languageName: node linkType: hard +"path-key@npm:^2.0.0, path-key@npm:^2.0.1": + version: 2.0.1 + resolution: "path-key@npm:2.0.1" + checksum: f7ab0ad42fe3fb8c7f11d0c4f849871e28fbd8e1add65c370e422512fc5887097b9cf34d09c1747d45c942a8c1e26468d6356e2df3f740bf177ab8ca7301ebfd + languageName: node + linkType: hard + "path-key@npm:^3.0.0, path-key@npm:^3.1.0": version: 3.1.1 resolution: "path-key@npm:3.1.1" @@ -36199,7 +37662,7 @@ __metadata: languageName: node linkType: hard -"pluralize@npm:^8.0.0": +"pluralize@npm:8.0.0, pluralize@npm:^8.0.0": version: 8.0.0 resolution: "pluralize@npm:8.0.0" checksum: 08931d4a6a4a5561a7f94f67a31c17e6632cb21e459ab3ff4f6f629d9a822984cf8afef2311d2005fbea5d7ef26016ebb090db008e2d8bce39d0a9a9d218736e @@ -36239,6 +37702,28 @@ __metadata: languageName: node linkType: hard +"portfinder@npm:1.0.28": + version: 1.0.28 + resolution: "portfinder@npm:1.0.28" + dependencies: + async: ^2.6.2 + debug: ^3.1.1 + mkdirp: ^0.5.5 + checksum: 91fef602f13f8f4c64385d0ad2a36cc9dc6be0b8d10a2628ee2c3c7b9917ab4fefb458815b82cea2abf4b785cd11c9b4e2d917ac6fa06f14b6fa880ca8f8928c + languageName: node + linkType: hard + +"portfinder@npm:^1.0.28, portfinder@npm:^1.0.32": + version: 1.0.32 + resolution: "portfinder@npm:1.0.32" + dependencies: + async: ^2.6.4 + debug: ^3.2.7 + mkdirp: ^0.5.6 + checksum: 116b4aed1b9e16f6d5503823d966d9ffd41b1c2339e27f54c06cd2f3015a9d8ef53e2a53b57bc0a25af0885977b692007353aa28f9a0a98a44335cb50487240d + languageName: node + linkType: hard + "postcss-calc@npm:^8.0.0": version: 8.0.0 resolution: "postcss-calc@npm:8.0.0" @@ -36725,6 +38210,34 @@ __metadata: languageName: node linkType: hard +"postman-collection@npm:^4.1.7": + version: 4.2.1 + resolution: "postman-collection@npm:4.2.1" + dependencies: + "@faker-js/faker": 5.5.3 + file-type: 3.9.0 + http-reasons: 0.1.0 + iconv-lite: 0.6.3 + liquid-json: 0.3.1 + lodash: 4.17.21 + mime-format: 2.0.1 + mime-types: 2.1.35 + postman-url-encoder: 3.0.5 + semver: 7.5.4 + uuid: 8.3.2 + checksum: b027a084d35ac29244e5a47b533178ff7fe6437924320d17b5dd275461689be32030e5b22469da3f72b113353269b37be09b4353db532672975f830772dd70e0 + languageName: node + linkType: hard + +"postman-url-encoder@npm:3.0.5": + version: 3.0.5 + resolution: "postman-url-encoder@npm:3.0.5" + dependencies: + punycode: ^2.1.1 + checksum: d46b52cf9aa344b86152ac422470854707ab4c6466c2ac7e2b86c5791b0ca2364f1b2957fbae32f7bdc80d0d027ddd78d6c799eb73119a2a4ab00b60e8daa4c4 + languageName: node + linkType: hard + "prebuild-install@npm:^7.1.1": version: 7.1.1 resolution: "prebuild-install@npm:7.1.1" @@ -36780,6 +38293,13 @@ __metadata: languageName: node linkType: hard +"prepend-http@npm:^2.0.0": + version: 2.0.0 + resolution: "prepend-http@npm:2.0.0" + checksum: 7694a9525405447662c1ffd352fcb41b6410c705b739b6f4e3a3e21cf5fdede8377890088e8934436b8b17ba55365a615f153960f30877bf0d0392f9e93503ea + languageName: node + linkType: hard + "prettier@npm:^2.2.1, prettier@npm:^2.7.1": version: 2.8.8 resolution: "prettier@npm:2.8.8" @@ -37155,6 +38675,15 @@ __metadata: languageName: node linkType: hard +"pupa@npm:^2.1.1": + version: 2.1.1 + resolution: "pupa@npm:2.1.1" + dependencies: + escape-goat: ^2.0.0 + checksum: 49529e50372ffdb0cccf0efa0f3b3cb0a2c77805d0d9cc2725bd2a0f6bb414631e61c93a38561b26be1259550b7bb6c2cb92315aa09c8bf93f3bdcb49f2b2fb7 + languageName: node + linkType: hard + "pure-color@npm:^1.2.0": version: 1.3.0 resolution: "pure-color@npm:1.3.0" @@ -37420,7 +38949,7 @@ __metadata: languageName: node linkType: hard -"rc@npm:^1.2.7": +"rc@npm:1.2.8, rc@npm:^1.2.7, rc@npm:^1.2.8": version: 1.2.8 resolution: "rc@npm:1.2.8" dependencies: @@ -38209,6 +39738,15 @@ __metadata: languageName: node linkType: hard +"read-tls-client-hello@npm:^1.0.0": + version: 1.0.1 + resolution: "read-tls-client-hello@npm:1.0.1" + dependencies: + "@types/node": "*" + checksum: 532c1c32ef049c245b59473ad7a06ad5db61bd22258ccfb54923be24173e8cafbb1a6a17bcc783884dce9b98db15db76a9569ea9c95b2b9b729be990439b931b + languageName: node + linkType: hard + "read-yaml-file@npm:^1.1.0": version: 1.1.0 resolution: "read-yaml-file@npm:1.1.0" @@ -38554,6 +40092,24 @@ __metadata: languageName: node linkType: hard +"registry-auth-token@npm:^4.0.0": + version: 4.2.2 + resolution: "registry-auth-token@npm:4.2.2" + dependencies: + rc: 1.2.8 + checksum: c5030198546ecfdcbcb0722cbc3e260c4f5f174d8d07bdfedd4620e79bfdf17a2db735aa230d600bd388fce6edd26c0a9ed2eb7e9b4641ec15213a28a806688b + languageName: node + linkType: hard + +"registry-url@npm:^5.0.0": + version: 5.1.0 + resolution: "registry-url@npm:5.1.0" + dependencies: + rc: ^1.2.8 + checksum: bcea86c84a0dbb66467b53187fadebfea79017cddfb4a45cf27530d7275e49082fe9f44301976eb0164c438e395684bcf3dae4819b36ff9d1640d8cc60c73df9 + languageName: node + linkType: hard + "regjsparser@npm:^0.9.1": version: 0.9.1 resolution: "regjsparser@npm:0.9.1" @@ -38651,6 +40207,13 @@ __metadata: languageName: node linkType: hard +"remove-trailing-slash@npm:^0.1.0": + version: 0.1.1 + resolution: "remove-trailing-slash@npm:0.1.1" + checksum: dd200c6b7d6f2b49d12b3eff3abc7089917e8a268cefcd5bf67ff23f8c2ad9f866fbe2f3566e1a8dbdc4f4b1171e2941f7dd00852f8de549bb73c3df53b09d96 + languageName: node + linkType: hard + "remove-trailing-spaces@npm:^1.0.6": version: 1.0.8 resolution: "remove-trailing-spaces@npm:1.0.8" @@ -38777,10 +40340,10 @@ __metadata: languageName: node linkType: hard -"resolve-alpn@npm:^1.0.0": - version: 1.0.0 - resolution: "resolve-alpn@npm:1.0.0" - checksum: 146b739f14fad759bc137e7642b4859a7d7a290b61e00db37a468f159932ccefe610006604e6aa7ba2a2991cbd627246f0c74717e8942b7c805c346da35c3f3f +"resolve-alpn@npm:^1.0.0, resolve-alpn@npm:^1.2.0": + version: 1.2.1 + resolution: "resolve-alpn@npm:1.2.1" + checksum: f558071fcb2c60b04054c99aebd572a2af97ef64128d59bef7ab73bd50d896a222a056de40ffc545b633d99b304c259ea9d0c06830d5c867c34f0bfa60b8eae0 languageName: node linkType: hard @@ -38900,6 +40463,15 @@ __metadata: languageName: node linkType: hard +"responselike@npm:^1.0.2": + version: 1.0.2 + resolution: "responselike@npm:1.0.2" + dependencies: + lowercase-keys: ^1.0.0 + checksum: 2e9e70f1dcca3da621a80ce71f2f9a9cad12c047145c6ece20df22f0743f051cf7c73505e109814915f23f9e34fb0d358e22827723ee3d56b623533cab8eafcd + languageName: node + linkType: hard + "responselike@npm:^2.0.0": version: 2.0.0 resolution: "responselike@npm:2.0.0" @@ -39206,6 +40778,7 @@ __metadata: "@techdocs/cli": "workspace:*" "@types/node": ^18.17.8 "@types/webpack": ^5.28.0 + "@useoptic/optic": ^0.50.7 command-exists: ^1.2.9 concurrently: ^8.0.0 cross-env: ^7.0.0 @@ -39546,6 +41119,15 @@ __metadata: languageName: node linkType: hard +"semver-diff@npm:^3.1.1": + version: 3.1.1 + resolution: "semver-diff@npm:3.1.1" + dependencies: + semver: ^6.3.0 + checksum: 8bbe5a5d7add2d5e51b72314a9215cd294d71f41cdc2bf6bd59ee76411f3610b576172896f1d191d0d7294cb9f2f847438d2ee158adacc0c224dca79052812fe + languageName: node + linkType: hard + "semver-store@npm:^0.3.0": version: 0.3.0 resolution: "semver-store@npm:0.3.0" @@ -39553,7 +41135,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:2 || 3 || 4 || 5, semver@npm:^5.6.0": +"semver@npm:2 || 3 || 4 || 5, semver@npm:^5.5.0, semver@npm:^5.6.0": version: 5.7.2 resolution: "semver@npm:5.7.2" bin: @@ -39562,16 +41144,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^6.0.0, semver@npm:^6.3.0, semver@npm:^6.3.1": - version: 6.3.1 - resolution: "semver@npm:6.3.1" - bin: - semver: bin/semver.js - checksum: ae47d06de28836adb9d3e25f22a92943477371292d9b665fb023fae278d345d508ca1958232af086d85e0155aee22e313e100971898bbb8d5d89b8b1d4054ca2 - languageName: node - linkType: hard - -"semver@npm:^7.1.1, semver@npm:^7.1.2, semver@npm:^7.1.3, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:~7.5.4": +"semver@npm:7.5.4, semver@npm:^7.1.1, semver@npm:^7.1.2, semver@npm:^7.1.3, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:~7.5.4": version: 7.5.4 resolution: "semver@npm:7.5.4" dependencies: @@ -39582,6 +41155,15 @@ __metadata: languageName: node linkType: hard +"semver@npm:^6.0.0, semver@npm:^6.2.0, semver@npm:^6.3.0, semver@npm:^6.3.1": + version: 6.3.1 + resolution: "semver@npm:6.3.1" + bin: + semver: bin/semver.js + checksum: ae47d06de28836adb9d3e25f22a92943477371292d9b665fb023fae278d345d508ca1958232af086d85e0155aee22e313e100971898bbb8d5d89b8b1d4054ca2 + languageName: node + linkType: hard + "send@npm:0.18.0": version: 0.18.0 resolution: "send@npm:0.18.0" @@ -40089,13 +41671,24 @@ __metadata: languageName: node linkType: hard -"socks@npm:^2.6.1, socks@npm:^2.6.2": - version: 2.6.2 - resolution: "socks@npm:2.6.2" +"socks-proxy-agent@npm:^8.0.2": + version: 8.0.2 + resolution: "socks-proxy-agent@npm:8.0.2" dependencies: - ip: ^1.1.5 + agent-base: ^7.0.2 + debug: ^4.3.4 + socks: ^2.7.1 + checksum: 4fb165df08f1f380881dcd887b3cdfdc1aba3797c76c1e9f51d29048be6e494c5b06d68e7aea2e23df4572428f27a3ec22b3d7c75c570c5346507433899a4b6d + languageName: node + linkType: hard + +"socks@npm:^2.6.1, socks@npm:^2.6.2, socks@npm:^2.7.1": + version: 2.7.1 + resolution: "socks@npm:2.7.1" + dependencies: + ip: ^2.0.0 smart-buffer: ^4.2.0 - checksum: dd9194293059d737759d5c69273850ad4149f448426249325c4bea0e340d1cf3d266c3b022694b0dcf5d31f759de23657244c481fc1e8322add80b7985c36b5e + checksum: 259d9e3e8e1c9809a7f5c32238c3d4d2a36b39b83851d0f573bfde5f21c4b1288417ce1af06af1452569cd1eb0841169afd4998f0e04ba04656f6b7f0e46d748 languageName: node linkType: hard @@ -40325,6 +41918,15 @@ __metadata: languageName: node linkType: hard +"sprintf-kit@npm:^2.0.1": + version: 2.0.1 + resolution: "sprintf-kit@npm:2.0.1" + dependencies: + es5-ext: ^0.10.53 + checksum: e867136dc67419920da065ff57a75786b884cd66bb08c7b7978d0368ec6169ecbe90acd3fbc53435753a9b053d55075d196fe5e35ec17919c8251c6e909e41ec + languageName: node + linkType: hard + "sqlstring@npm:^2.3.2": version: 2.3.2 resolution: "sqlstring@npm:2.3.2" @@ -40497,7 +42099,7 @@ __metadata: languageName: node linkType: hard -"statuses@npm:>= 1.4.0 < 2": +"statuses@npm:>= 1.4.0 < 2, statuses@npm:~1.5.0": version: 1.5.0 resolution: "statuses@npm:1.5.0" checksum: c469b9519de16a4bb19600205cffb39ee471a5f17b82589757ca7bd40a8d92ebb6ed9f98b5a540c5d302ccbc78f15dc03cc0280dd6e00df1335568a5d5758a5c @@ -40538,6 +42140,13 @@ __metadata: languageName: node linkType: hard +"stream-chain@npm:^2.2.5": + version: 2.2.5 + resolution: "stream-chain@npm:2.2.5" + checksum: c83cbf504bd11e2bcbe761a92801295b3decac7ffa4092ceffca2eb1b5d0763bcc511fa22cd8044e8a18c21ca66794fd10c8d9cd1292a3e6c0d83a4194c6b8ed + languageName: node + linkType: hard + "stream-events@npm:^1.0.5": version: 1.0.5 resolution: "stream-events@npm:1.0.5" @@ -40572,6 +42181,15 @@ __metadata: languageName: node linkType: hard +"stream-json@npm:^1.7.4": + version: 1.8.0 + resolution: "stream-json@npm:1.8.0" + dependencies: + stream-chain: ^2.2.5 + checksum: c17ac72228815850fc5226d8c0a80afd6c2ffbfa71c572ad99ad2eac145dc836a3fc6f62a298b3df716f1726cc1ed8a448892ed9fb6123f46abf2f89c908749f + languageName: node + linkType: hard + "stream-shift@npm:^1.0.0": version: 1.0.1 resolution: "stream-shift@npm:1.0.1" @@ -40649,7 +42267,7 @@ __metadata: languageName: node linkType: hard -"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.0.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.2, string-width@npm:^4.2.3": version: 4.2.3 resolution: "string-width@npm:4.2.3" dependencies: @@ -40814,6 +42432,13 @@ __metadata: languageName: node linkType: hard +"strip-eof@npm:^1.0.0": + version: 1.0.0 + resolution: "strip-eof@npm:1.0.0" + checksum: 40bc8ddd7e072f8ba0c2d6d05267b4e0a4800898c3435b5fb5f5a21e6e47dfaff18467e7aa0d1844bb5d6274c3097246595841fbfeb317e541974ee992cac506 + languageName: node + linkType: hard + "strip-final-newline@npm:^2.0.0": version: 2.0.0 resolution: "strip-final-newline@npm:2.0.0" @@ -41028,6 +42653,15 @@ __metadata: languageName: node linkType: hard +"supports-color@npm:^6.1.0": + version: 6.1.0 + resolution: "supports-color@npm:6.1.0" + dependencies: + has-flag: ^3.0.0 + checksum: 74358f9535c83ee113fbaac354b11e808060f6e7d8722082ee43af3578469134e89d00026dce2a6b93ce4e5b89d0e9a10f638b2b9f64c7838c2fb2883a47b3d5 + languageName: node + linkType: hard + "supports-color@npm:^7.1.0, supports-color@npm:^7.2.0": version: 7.2.0 resolution: "supports-color@npm:7.2.0" @@ -41513,6 +43147,16 @@ __metadata: languageName: node linkType: hard +"timers-ext@npm:^0.1.7": + version: 0.1.7 + resolution: "timers-ext@npm:0.1.7" + dependencies: + es5-ext: ~0.10.46 + next-tick: 1 + checksum: ef3f27a0702a88d885bcbb0317c3e3ecd094ce644da52e7f7d362394a125d9e3578292a8f8966071a980d8abbc3395725333b1856f3ae93835b46589f700d938 + languageName: node + linkType: hard + "timsort@npm:^0.3.0": version: 0.3.0 resolution: "timsort@npm:0.3.0" @@ -41596,6 +43240,13 @@ __metadata: languageName: node linkType: hard +"to-readable-stream@npm:^1.0.0": + version: 1.0.0 + resolution: "to-readable-stream@npm:1.0.0" + checksum: 2bd7778490b6214a2c40276065dd88949f4cf7037ce3964c76838b8cb212893aeb9cceaaf4352a4c486e3336214c350270f3263e1ce7a0c38863a715a4d9aeb5 + languageName: node + linkType: hard + "to-regex-range@npm:^5.0.1": version: 5.0.1 resolution: "to-regex-range@npm:5.0.1" @@ -41822,6 +43473,15 @@ __metadata: languageName: node linkType: hard +"ts-invariant@npm:^0.9.3, ts-invariant@npm:^0.9.4": + version: 0.9.4 + resolution: "ts-invariant@npm:0.9.4" + dependencies: + tslib: ^2.1.0 + checksum: c9e5726361fa266916966b2070605f8664b6dd1d8b0ef7565dbf056abb6a87be26195985ef62dd97aeb0894cf2f4ad5b7f0d89dadadc197eaa38e99222afa29c + languageName: node + linkType: hard + "ts-log@npm:^2.2.3": version: 2.2.5 resolution: "ts-log@npm:2.2.5" @@ -41877,6 +43537,13 @@ __metadata: languageName: node linkType: hard +"ts-results@npm:^3.3.0": + version: 3.3.0 + resolution: "ts-results@npm:3.3.0" + checksum: 426c272901d7a0cf8e9539ed90739d03f8e99245fb669beabba8c6729b92da6574698018f9dc8d5d92e8a3e833a40899f855192208ff8dd7e4a68178f7740132 + languageName: node + linkType: hard + "ts-toolbelt@npm:^9.6.0": version: 9.6.0 resolution: "ts-toolbelt@npm:9.6.0" @@ -41903,7 +43570,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:2.5.0, tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.2.0, tslib@npm:^2.3.0, tslib@npm:^2.3.1, tslib@npm:^2.4.0, tslib@npm:^2.4.1, tslib@npm:^2.5.0, tslib@npm:~2.5.0": +"tslib@npm:2.5.0, tslib@npm:~2.5.0": version: 2.5.0 resolution: "tslib@npm:2.5.0" checksum: ae3ed5f9ce29932d049908ebfdf21b3a003a85653a9a140d614da6b767a93ef94f460e52c3d787f0e4f383546981713f165037dc2274df212ea9f8a4541004e1 @@ -41917,6 +43584,13 @@ __metadata: languageName: node linkType: hard +"tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.2.0, tslib@npm:^2.3.0, tslib@npm:^2.3.1, tslib@npm:^2.4.0, tslib@npm:^2.4.1, tslib@npm:^2.4.1 || ^1.9.3, tslib@npm:^2.5.0": + version: 2.6.2 + resolution: "tslib@npm:2.6.2" + checksum: 329ea56123005922f39642318e3d1f0f8265d1e7fcb92c633e0809521da75eeaca28d2cf96d7248229deb40e5c19adf408259f4b9640afd20d13aecc1430f3ad + languageName: node + linkType: hard + "tslib@npm:~2.4.0": version: 2.4.1 resolution: "tslib@npm:2.4.1" @@ -42090,6 +43764,20 @@ __metadata: languageName: node linkType: hard +"type@npm:^1.0.1": + version: 1.2.0 + resolution: "type@npm:1.2.0" + checksum: dae8c64f82c648b985caf321e9dd6e8b7f4f2e2d4f846fc6fd2c8e9dc7769382d8a52369ddbaccd59aeeceb0df7f52fb339c465be5f2e543e81e810e413451ee + languageName: node + linkType: hard + +"type@npm:^2.5.0, type@npm:^2.7.2": + version: 2.7.2 + resolution: "type@npm:2.7.2" + checksum: 0f42379a8adb67fe529add238a3e3d16699d95b42d01adfe7b9a7c5da297f5c1ba93de39265ba30ffeb37dfd0afb3fb66ae09f58d6515da442219c086219f6f4 + languageName: node + linkType: hard + "typed-array-buffer@npm:^1.0.0": version: 1.0.0 resolution: "typed-array-buffer@npm:1.0.0" @@ -42137,6 +43825,13 @@ __metadata: languageName: node linkType: hard +"typed-error@npm:^3.0.2": + version: 3.2.2 + resolution: "typed-error@npm:3.2.2" + checksum: 90d0d2ebef72a3655153d7d4ffe8607ebb38a39e38f9f19642a55542c0459afc887862ff5353d57ee77502c5c438341843b21309ecd0cf2b19a344034c9fedef + languageName: node + linkType: hard + "typed-rest-client@npm:^1.8.4": version: 1.8.4 resolution: "typed-rest-client@npm:1.8.4" @@ -42148,6 +43843,15 @@ __metadata: languageName: node linkType: hard +"typedarray-to-buffer@npm:^3.1.5": + version: 3.1.5 + resolution: "typedarray-to-buffer@npm:3.1.5" + dependencies: + is-typedarray: ^1.0.0 + checksum: 99c11aaa8f45189fcfba6b8a4825fd684a321caa9bd7a76a27cf0c7732c174d198b99f449c52c3818107430b5f41c0ccbbfb75cb2ee3ca4a9451710986d61a60 + languageName: node + linkType: hard + "typedarray@npm:^0.0.6": version: 0.0.6 resolution: "typedarray@npm:0.0.6" @@ -42333,6 +44037,15 @@ __metadata: languageName: node linkType: hard +"uni-global@npm:^1.0.0": + version: 1.0.0 + resolution: "uni-global@npm:1.0.0" + dependencies: + type: ^2.5.0 + checksum: 80550f304b350424381189989715888615a8ba9b0552ca771af63c59714fb0f1358d35dfe679ecff60a872da06be0c96f8a440d5f3c5cedfed4b29d7a2d3932c + languageName: node + linkType: hard + "unicode-canonical-property-names-ecmascript@npm:^2.0.0": version: 2.0.0 resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.0" @@ -42415,6 +44128,15 @@ __metadata: languageName: node linkType: hard +"unique-string@npm:^2.0.0": + version: 2.0.0 + resolution: "unique-string@npm:2.0.0" + dependencies: + crypto-random-string: ^2.0.0 + checksum: ef68f639136bcfe040cf7e3cd7a8dff076a665288122855148a6f7134092e6ed33bf83a7f3a9185e46c98dddc445a0da6ac25612afa1a7c38b8b654d6c02498e + languageName: node + linkType: hard + "unist-builder@npm:^3.0.0": version: 3.0.0 resolution: "unist-builder@npm:3.0.0" @@ -42564,6 +44286,13 @@ __metadata: languageName: node linkType: hard +"upath@npm:^2.0.1": + version: 2.0.1 + resolution: "upath@npm:2.0.1" + checksum: 2db04f24a03ef72204c7b969d6991abec9e2cb06fb4c13a1fd1c59bc33b46526b16c3325e55930a11ff86a77a8cbbcda8f6399bf914087028c5beae21ecdb33c + languageName: node + linkType: hard + "update-browserslist-db@npm:^1.0.11": version: 1.0.11 resolution: "update-browserslist-db@npm:1.0.11" @@ -42578,6 +44307,28 @@ __metadata: languageName: node linkType: hard +"update-notifier@npm:^5.1.0": + version: 5.1.0 + resolution: "update-notifier@npm:5.1.0" + dependencies: + boxen: ^5.0.0 + chalk: ^4.1.0 + configstore: ^5.0.1 + has-yarn: ^2.1.0 + import-lazy: ^2.1.0 + is-ci: ^2.0.0 + is-installed-globally: ^0.4.0 + is-npm: ^5.0.0 + is-yarn-global: ^0.3.0 + latest-version: ^5.1.0 + pupa: ^2.1.1 + semver: ^7.3.4 + semver-diff: ^3.1.1 + xdg-basedir: ^4.0.0 + checksum: 461e5e5b002419296d3868ee2abe0f9ab3e1846d9db642936d0c46f838872ec56069eddfe662c45ce1af0a8d6d5026353728de2e0a95ab2e3546a22ea077caf1 + languageName: node + linkType: hard + "upper-case-first@npm:^2.0.2": version: 2.0.2 resolution: "upper-case-first@npm:2.0.2" @@ -42612,6 +44363,22 @@ __metadata: languageName: node linkType: hard +"url-join@npm:^4.0.1": + version: 4.0.1 + resolution: "url-join@npm:4.0.1" + checksum: f74e868bf25dbc8be6a8d7237d4c36bb5b6c62c72e594d5ab1347fe91d6af7ccd9eb5d621e30152e4da45c2e9a26bec21390e911ab54a62d4d82e76028374ee5 + languageName: node + linkType: hard + +"url-parse-lax@npm:^3.0.0": + version: 3.0.0 + resolution: "url-parse-lax@npm:3.0.0" + dependencies: + prepend-http: ^2.0.0 + checksum: 1040e357750451173132228036aff1fd04abbd43eac1fb3e4fca7495a078bcb8d33cb765fe71ad7e473d9c94d98fd67adca63bd2716c815a2da066198dd37217 + languageName: node + linkType: hard + "url-parse@npm:^1.5.10, url-parse@npm:^1.5.3": version: 1.5.10 resolution: "url-parse@npm:1.5.10" @@ -42825,6 +44592,15 @@ __metadata: languageName: node linkType: hard +"uuid@npm:8.3.2, uuid@npm:^8.0.0, uuid@npm:^8.2.0, uuid@npm:^8.3.0, uuid@npm:^8.3.2": + version: 8.3.2 + resolution: "uuid@npm:8.3.2" + bin: + uuid: dist/bin/uuid + checksum: 5575a8a75c13120e2f10e6ddc801b2c7ed7d8f3c8ac22c7ed0c7b2ba6383ec0abda88c905085d630e251719e0777045ae3236f04c812184b7c765f63a70e58df + languageName: node + linkType: hard + "uuid@npm:^3.3.2": version: 3.4.0 resolution: "uuid@npm:3.4.0" @@ -42834,15 +44610,6 @@ __metadata: languageName: node linkType: hard -"uuid@npm:^8.0.0, uuid@npm:^8.2.0, uuid@npm:^8.3.0, uuid@npm:^8.3.2": - version: 8.3.2 - resolution: "uuid@npm:8.3.2" - bin: - uuid: dist/bin/uuid - checksum: 5575a8a75c13120e2f10e6ddc801b2c7ed7d8f3c8ac22c7ed0c7b2ba6383ec0abda88c905085d630e251719e0777045ae3236f04c812184b7c765f63a70e58df - languageName: node - linkType: hard - "uuid@npm:^9.0.0": version: 9.0.1 resolution: "uuid@npm:9.0.1" @@ -43668,6 +45435,15 @@ __metadata: languageName: node linkType: hard +"widest-line@npm:^3.1.0": + version: 3.1.0 + resolution: "widest-line@npm:3.1.0" + dependencies: + string-width: ^4.0.0 + checksum: 03db6c9d0af9329c37d74378ff1d91972b12553c7d72a6f4e8525fe61563fa7adb0b9d6e8d546b7e059688712ea874edd5ded475999abdeedf708de9849310e0 + languageName: node + linkType: hard + "winston-transport@npm:^4.5.0": version: 4.5.0 resolution: "winston-transport@npm:4.5.0" @@ -43763,6 +45539,18 @@ __metadata: languageName: node linkType: hard +"write-file-atomic@npm:^3.0.0": + version: 3.0.3 + resolution: "write-file-atomic@npm:3.0.3" + dependencies: + imurmurhash: ^0.1.4 + is-typedarray: ^1.0.0 + signal-exit: ^3.0.2 + typedarray-to-buffer: ^3.1.5 + checksum: c55b24617cc61c3a4379f425fc62a386cc51916a9b9d993f39734d005a09d5a4bb748bc251f1304e7abd71d0a26d339996c275955f527a131b1dcded67878280 + languageName: node + linkType: hard + "write-file-atomic@npm:^4.0.0, write-file-atomic@npm:^4.0.2": version: 4.0.2 resolution: "write-file-atomic@npm:4.0.2" @@ -43773,6 +45561,21 @@ __metadata: languageName: node linkType: hard +"ws@npm:*, ws@npm:^8.11.0, ws@npm:^8.13.0, ws@npm:^8.8.0": + version: 8.14.2 + resolution: "ws@npm:8.14.2" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 3ca0dad26e8cc6515ff392b622a1467430814c463b3368b0258e33696b1d4bed7510bc7030f7b72838b9fdeb8dbd8839cbf808367d6aae2e1d668ce741d4308b + languageName: node + linkType: hard + "ws@npm:8.11.0": version: 8.11.0 resolution: "ws@npm:8.11.0" @@ -43803,21 +45606,6 @@ __metadata: languageName: node linkType: hard -"ws@npm:^8.11.0, ws@npm:^8.13.0, ws@npm:^8.8.0": - version: 8.14.2 - resolution: "ws@npm:8.14.2" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ">=5.0.2" - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 3ca0dad26e8cc6515ff392b622a1467430814c463b3368b0258e33696b1d4bed7510bc7030f7b72838b9fdeb8dbd8839cbf808367d6aae2e1d668ce741d4308b - languageName: node - linkType: hard - "xcase@npm:^2.0.1": version: 2.0.1 resolution: "xcase@npm:2.0.1" @@ -43825,6 +45613,13 @@ __metadata: languageName: node linkType: hard +"xdg-basedir@npm:^4.0.0": + version: 4.0.0 + resolution: "xdg-basedir@npm:4.0.0" + checksum: 0073d5b59a37224ed3a5ac0dd2ec1d36f09c49f0afd769008a6e9cd3cd666bd6317bd1c7ce2eab47e1de285a286bad11a9b038196413cd753b79770361855f3c + languageName: node + linkType: hard + "xml-but-prettier@npm:^1.0.1": version: 1.0.1 resolution: "xml-but-prettier@npm:1.0.1" @@ -44044,7 +45839,7 @@ __metadata: languageName: node linkType: hard -"yaml@npm:^2.0.0, yaml@npm:^2.0.0-10, yaml@npm:^2.1.1, yaml@npm:^2.2.1, yaml@npm:^2.2.2": +"yaml@npm:^2.0.0, yaml@npm:^2.0.0-10, yaml@npm:^2.1.1, yaml@npm:^2.2.1, yaml@npm:^2.2.2, yaml@npm:^2.3.2": version: 2.3.2 resolution: "yaml@npm:2.3.2" checksum: acd80cc24df12c808c6dec8a0176d404ef9e6f08ad8786f746ecc9d8974968c53c6e8a67fdfabcc5f99f3dc59b6bb0994b95646ff03d18e9b1dcd59eccc02146 @@ -44322,6 +46117,13 @@ __metadata: languageName: node linkType: hard +"zstd-codec@npm:^0.1.4": + version: 0.1.4 + resolution: "zstd-codec@npm:0.1.4" + checksum: 8689bc0defc4f387d1be990b8b8ca8ca56690d17dfc8dd4703db798465b92a21e64e54e886acfaa376147d9d07d879a68627b09fddc34a0c93f0dc5c610a790c + languageName: node + linkType: hard + "zustand@npm:3.6.9": version: 3.6.9 resolution: "zustand@npm:3.6.9" From b7e7d012d4ca578ac2dd7e6cd3775795fadee135 Mon Sep 17 00:00:00 2001 From: Aramis Date: Sat, 21 Oct 2023 22:56:29 -0400 Subject: [PATCH 048/102] update to use optic in repo-tools and local binary dynamically Signed-off-by: Aramis Signed-off-by: Aramis Sennyey --- package.json | 1 - packages/repo-tools/package.json | 1 + .../repo-tools/src/commands/openapi/test/index.ts | 5 ++++- yarn.lock | 11 ++--------- 4 files changed, 7 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 19bb8f3a85..6a21034cae 100644 --- a/package.json +++ b/package.json @@ -73,7 +73,6 @@ "@techdocs/cli": "workspace:*", "@types/node": "^18.17.8", "@types/webpack": "^5.28.0", - "@useoptic/optic": "^0.50.7", "command-exists": "^1.2.9", "concurrently": "^8.0.0", "cross-env": "^7.0.0", diff --git a/packages/repo-tools/package.json b/packages/repo-tools/package.json index 2705f3b589..24a7bc33c1 100644 --- a/packages/repo-tools/package.json +++ b/packages/repo-tools/package.json @@ -66,6 +66,7 @@ "@types/is-glob": "^4.0.2", "@types/mock-fs": "^4.13.0", "@types/node": "^18.17.8", + "@useoptic/optic": "^0.50.7", "mock-fs": "^5.2.0" }, "peerDependencies": { diff --git a/packages/repo-tools/src/commands/openapi/test/index.ts b/packages/repo-tools/src/commands/openapi/test/index.ts index 1d646394d0..3e131e54c8 100644 --- a/packages/repo-tools/src/commands/openapi/test/index.ts +++ b/packages/repo-tools/src/commands/openapi/test/index.ts @@ -36,9 +36,12 @@ async function test( return; } + const opticLocation = ( + await exec(`yarn bin optic`, [], { cwd: cliPaths.ownDir }) + ).stdout as string; try { await exec( - `yarn run -T optic capture`, + `${opticLocation.trim()} capture`, [ YAML_SCHEMA_PATH, '--server-override', diff --git a/yarn.lock b/yarn.lock index c918406c96..ce843df5bf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9939,6 +9939,7 @@ __metadata: "@types/is-glob": ^4.0.2 "@types/mock-fs": ^4.13.0 "@types/node": ^18.17.8 + "@useoptic/optic": ^0.50.7 chalk: ^4.0.0 codeowners-utils: ^1.0.2 commander: ^9.1.0 @@ -31984,20 +31985,13 @@ __metadata: languageName: node linkType: hard -"jose@npm:^4.14.6": +"jose@npm:^4.14.6, jose@npm:^4.15.1, jose@npm:^4.6.0": version: 4.15.3 resolution: "jose@npm:4.15.3" checksum: b76eeccc1d40d0eaf26dfaadc0f88fc15802c9105ab66a24ee223bd84369f7cb217f4a2cb852f5080ff6996170b3a73db2b2d26878b8905d99c36ca432628134 languageName: node linkType: hard -"jose@npm:^4.15.1, jose@npm:^4.6.0": - version: 4.15.2 - resolution: "jose@npm:4.15.2" - checksum: 8f0cab1eef31243abe14a935b2b330cd95f10f9b69808fd642088ae5000e50e566664934537d2c6413ab2f6b54acd8265a5033da05157aa1260c5f1d7e57fab0 - languageName: node - linkType: hard - "joycon@npm:^3.0.1": version: 3.1.0 resolution: "joycon@npm:3.1.0" @@ -40778,7 +40772,6 @@ __metadata: "@techdocs/cli": "workspace:*" "@types/node": ^18.17.8 "@types/webpack": ^5.28.0 - "@useoptic/optic": ^0.50.7 command-exists: ^1.2.9 concurrently: ^8.0.0 cross-env: ^7.0.0 From 2191bb3d1eeed8f259e62617ab5b35bac3395b3b Mon Sep 17 00:00:00 2001 From: Aramis Sennyey Date: Mon, 23 Oct 2023 13:43:54 -0400 Subject: [PATCH 049/102] updated optic to a peer dependency Signed-off-by: Aramis Sennyey --- .changeset/old-chairs-switch.md | 4 +- package.json | 3 +- packages/repo-tools/package.json | 2 +- .../src/commands/openapi/test/index.ts | 14 ++- yarn.lock | 112 ++++++++++-------- 5 files changed, 76 insertions(+), 59 deletions(-) diff --git a/.changeset/old-chairs-switch.md b/.changeset/old-chairs-switch.md index c9529f9d63..2e9251e06f 100644 --- a/.changeset/old-chairs-switch.md +++ b/.changeset/old-chairs-switch.md @@ -1,5 +1,7 @@ --- -'@backstage/repo-tools': patch +'@backstage/repo-tools': minor --- Adds a new command `schema openapi test` that performs runtime validation of your OpenAPI specs using your test data. Under the hood, we're using Optic to perform this check, really cool work by them! + +To use this new command, you will have to run `yarn add @useoptic/optic` in the root of your repo. diff --git a/package.json b/package.json index 6a21034cae..abeb9ee06e 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,8 @@ "version": "1.19.0", "dependencies": { "@backstage/errors": "workspace:^", - "@manypkg/get-packages": "^1.1.3" + "@manypkg/get-packages": "^1.1.3", + "@useoptic/optic": "^0.50.10" }, "devDependencies": { "@backstage/cli": "workspace:*", diff --git a/packages/repo-tools/package.json b/packages/repo-tools/package.json index 24a7bc33c1..6e45d15e3e 100644 --- a/packages/repo-tools/package.json +++ b/packages/repo-tools/package.json @@ -66,13 +66,13 @@ "@types/is-glob": "^4.0.2", "@types/mock-fs": "^4.13.0", "@types/node": "^18.17.8", - "@useoptic/optic": "^0.50.7", "mock-fs": "^5.2.0" }, "peerDependencies": { "@microsoft/api-extractor-model": "*", "@microsoft/tsdoc": "*", "@microsoft/tsdoc-config": "*", + "@useoptic/optic": "^0.50.7", "prettier": "^2.8.1", "typescript": "> 3.0.0" }, diff --git a/packages/repo-tools/src/commands/openapi/test/index.ts b/packages/repo-tools/src/commands/openapi/test/index.ts index 3e131e54c8..47b553aaef 100644 --- a/packages/repo-tools/src/commands/openapi/test/index.ts +++ b/packages/repo-tools/src/commands/openapi/test/index.ts @@ -35,10 +35,16 @@ async function test( if (!(await fs.pathExists(opticConfigFilePath))) { return; } - - const opticLocation = ( - await exec(`yarn bin optic`, [], { cwd: cliPaths.ownDir }) - ).stdout as string; + let opticLocation = ''; + try { + opticLocation = ( + await exec(`yarn bin optic`, [], { cwd: cliPaths.ownRoot }) + ).stdout as string; + } catch (err) { + throw new Error( + `Failed to find an Optic CLI installation, ensure that you have @useoptic/optic installed in the root of your repo. If not, run yarn add @useoptic/optic from the root of your repo.`, + ); + } try { await exec( `${opticLocation.trim()} capture`, diff --git a/yarn.lock b/yarn.lock index ce843df5bf..11c706ab69 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9939,7 +9939,6 @@ __metadata: "@types/is-glob": ^4.0.2 "@types/mock-fs": ^4.13.0 "@types/node": ^18.17.8 - "@useoptic/optic": ^0.50.7 chalk: ^4.0.0 codeowners-utils: ^1.0.2 commander: ^9.1.0 @@ -9958,6 +9957,7 @@ __metadata: "@microsoft/api-extractor-model": "*" "@microsoft/tsdoc": "*" "@microsoft/tsdoc-config": "*" + "@useoptic/optic": ^0.50.7 prettier: ^2.8.1 typescript: "> 3.0.0" peerDependenciesMeta: @@ -15901,9 +15901,9 @@ __metadata: linkType: hard "@sinclair/typebox@npm:^0.31.0": - version: 0.31.17 - resolution: "@sinclair/typebox@npm:0.31.17" - checksum: 44c760a07ec908e28a1dae9fddc65a0bf64dc48661c286dfa485274ed7022eb4f676f5e74b216d51aff503bd3934dfde14dbe4740327acdf8411efe1b5bba17e + version: 0.31.18 + resolution: "@sinclair/typebox@npm:0.31.18" + checksum: 06bc64232394cc11a00ec8214696fcecab4e8af0c04da81fb21c69ccd69b398be55d42dedb5f007b8f49abdb6eb6045520785e362975a9af82563ce11032a91b languageName: node linkType: hard @@ -18937,9 +18937,9 @@ __metadata: linkType: hard "@types/node@npm:^16.11.26, @types/node@npm:^16.7.10, @types/node@npm:^16.9.2": - version: 16.18.58 - resolution: "@types/node@npm:16.18.58" - checksum: 6d8404abc6c97bacd220f606441727adea923f3bd010d07d869f0dc6c4c6dc016430880af1f270edf1b84ae637a7fa5339e6adb3abba210a4820ac5e28f34067 + version: 16.18.59 + resolution: "@types/node@npm:16.18.59" + checksum: 70f28744d239c48db056ff6355d2eb99305db54d1f9377b3f4458e92ffb4da8962a0c67665452d5f430cea2286ced256dac8f769660007aedd3676cf03ff28ad languageName: node linkType: hard @@ -19697,11 +19697,11 @@ __metadata: linkType: hard "@types/ws@npm:*, @types/ws@npm:^8.0.0, @types/ws@npm:^8.5.3, @types/ws@npm:^8.5.5": - version: 8.5.6 - resolution: "@types/ws@npm:8.5.6" + version: 8.5.8 + resolution: "@types/ws@npm:8.5.8" dependencies: "@types/node": "*" - checksum: 7addb0c5fa4e7713d5209afb8a90f1852b12c02cb537395adf7a05fbaf21205dc5f7c110fd5ad6f3dbf147112cbff33fb11d8633059cb344f0c14f595b1ea1fb + checksum: 4ad30de842834d4dd8e6e1476470752709d4165352a3a36780f23f4fdb686d4ac8ca5e16a0e0622940ddace910b856ff8a0baa2e24e41d204fb7a6a02ab2172b languageName: node linkType: hard @@ -19999,24 +19999,24 @@ __metadata: languageName: node linkType: hard -"@useoptic/json-pointer-helpers@npm:0.50.7": - version: 0.50.7 - resolution: "@useoptic/json-pointer-helpers@npm:0.50.7" +"@useoptic/json-pointer-helpers@npm:0.50.10": + version: 0.50.10 + resolution: "@useoptic/json-pointer-helpers@npm:0.50.10" dependencies: jsonpointer: ^5.0.1 minimatch: 9.0.3 - checksum: 8cfa1303f4d089d1b0746058765abceed666c00e4583e24c15d475b12f6bc0596e7a0560916eb07537c0e5e1ab28b9f3c178776dad68824ce759444a8c598c08 + checksum: 02785a8d260fa6b499b09c909578a6583cfcaff44d3dd9cec5f9b0c8e118283764b2e54420b2790218e3053531679ce0d0bdd50e170c92a9bdc28760792a0757 languageName: node linkType: hard -"@useoptic/openapi-io@npm:0.50.7": - version: 0.50.7 - resolution: "@useoptic/openapi-io@npm:0.50.7" +"@useoptic/openapi-io@npm:0.50.10": + version: 0.50.10 + resolution: "@useoptic/openapi-io@npm:0.50.10" dependencies: "@apidevtools/json-schema-ref-parser": 9.0.9 "@jsdevtools/ono": ^7.1.3 - "@useoptic/json-pointer-helpers": 0.50.7 - "@useoptic/openapi-utilities": 0.50.7 + "@useoptic/json-pointer-helpers": 0.50.10 + "@useoptic/openapi-utilities": 0.50.10 ajv: ^8.6.0 ajv-errors: ~3.0.0 ajv-formats: ~2.1.0 @@ -20034,15 +20034,15 @@ __metadata: upath: ^2.0.1 yaml: ^2.3.2 yaml-ast-parser: ^0.0.43 - checksum: a420ad4149c422cbe951879520d8ffc4dd22531768046dcd62a87fc6f91e14bde6520c1e6f029a594c41dd6bfc6ddda15e1c3db552d13b5284460e67b6478bc5 + checksum: 02443ea9448e07b7ef7c2de509f2e31fe5751cc8eafefffb9b83cc83522296fc392da84ba9b95587e609efb485ced6dcc3b6aa270751bb211c5cc91ea33730ff languageName: node linkType: hard -"@useoptic/openapi-utilities@npm:0.50.7": - version: 0.50.7 - resolution: "@useoptic/openapi-utilities@npm:0.50.7" +"@useoptic/openapi-utilities@npm:0.50.10": + version: 0.50.10 + resolution: "@useoptic/openapi-utilities@npm:0.50.10" dependencies: - "@useoptic/json-pointer-helpers": 0.50.7 + "@useoptic/json-pointer-helpers": 0.50.10 ajv: ^8.6.0 ajv-errors: ~3.0.0 ajv-formats: ~2.1.0 @@ -20059,13 +20059,13 @@ __metadata: ts-invariant: ^0.9.3 url-join: ^4.0.1 yaml-ast-parser: ^0.0.43 - checksum: 597cec84f07661d2a0c272519adc40a70d3b426d58426b1a513ca8798cac08a7e87841b0eacc0434e652cead2f5af65512ecdeca34544a3f7eab5b40180f4387 + checksum: 687b8db975467ff4a3db03c6aa024c1be90cfaa5c1db6723c1446f13a87aab5b90556f76c244c29d6e3b41248ae2274bc185d9746b82f6942ce91ca617d8a249 languageName: node linkType: hard -"@useoptic/optic@npm:^0.50.7": - version: 0.50.7 - resolution: "@useoptic/optic@npm:0.50.7" +"@useoptic/optic@npm:^0.50.10": + version: 0.50.10 + resolution: "@useoptic/optic@npm:0.50.10" dependencies: "@babel/runtime": ^7.20.6 "@httptoolkit/httpolyglot": ^2.0.1 @@ -20074,10 +20074,10 @@ __metadata: "@sentry/node": 7.70.0 "@sinclair/typebox": ^0.31.0 "@stoplight/spectral-core": ^1.8.1 - "@useoptic/openapi-io": 0.50.7 - "@useoptic/openapi-utilities": 0.50.7 - "@useoptic/rulesets-base": 0.50.7 - "@useoptic/standard-rulesets": 0.50.7 + "@useoptic/openapi-io": 0.50.10 + "@useoptic/openapi-utilities": 0.50.10 + "@useoptic/rulesets-base": 0.50.10 + "@useoptic/standard-rulesets": 0.50.10 ajv: ^8.6.0 ajv-formats: ~2.1.0 analytics-node: ^6.2.0 @@ -20133,40 +20133,40 @@ __metadata: whatwg-mimetype: ^3.0.0 bin: optic: build/index.js - checksum: a85f5d090dba8669e464ba18614de1f5b17c2ad8bb85ddda4ead9950b49f8d06bc1d11bd3f5e558a9af1bd801c48640ef5b6398e7673f9dea4f2ee267281a091 + checksum: 3316ee1fad67320271fb1f7caf625661f8cb587bedcac2aba1d506a1d179cec5a45f35b189387898a3b341eab84f662094f34766c070cb001e9d7ed1b45df455 languageName: node linkType: hard -"@useoptic/rulesets-base@npm:0.50.7": - version: 0.50.7 - resolution: "@useoptic/rulesets-base@npm:0.50.7" +"@useoptic/rulesets-base@npm:0.50.10": + version: 0.50.10 + resolution: "@useoptic/rulesets-base@npm:0.50.10" dependencies: "@stoplight/spectral-core": ^1.8.1 "@stoplight/spectral-rulesets": ^1.14.1 - "@useoptic/json-pointer-helpers": 0.50.7 - "@useoptic/openapi-utilities": 0.50.7 + "@useoptic/json-pointer-helpers": 0.50.10 + "@useoptic/openapi-utilities": 0.50.10 ajv: ^8.6.0 lodash.pick: ^4.4.0 node-fetch: ^2.6.7 semver: ^7.5.4 bin: rulesets-base: build/index.js - checksum: 891999762cc25c1e84f2c5da89109c604c49dabc5522e9c5eb06d608baef62485dbd500458c164ffd5d9a230c6cdb57b9cfc651ff1fb2520d20388c541459771 + checksum: 5b3f57458cc198ac27965096cb02b6fc8d32dea87ab85a75780b53fdbdbf7a452ffae67e82f95f1fdfddbb8d70347b491a17f46bee6bbbad23ce99a2bd865c2e languageName: node linkType: hard -"@useoptic/standard-rulesets@npm:0.50.7": - version: 0.50.7 - resolution: "@useoptic/standard-rulesets@npm:0.50.7" +"@useoptic/standard-rulesets@npm:0.50.10": + version: 0.50.10 + resolution: "@useoptic/standard-rulesets@npm:0.50.10" dependencies: - "@useoptic/openapi-utilities": 0.50.7 - "@useoptic/rulesets-base": 0.50.7 + "@useoptic/openapi-utilities": 0.50.10 + "@useoptic/rulesets-base": 0.50.10 ajv: ^8.6.0 ajv-formats: ~2.1.0 whatwg-mimetype: ^3.0.0 bin: standard-rulesets: build/index.js - checksum: 9ef3f79703a8938e2d6412b3c6fd8bebd3cc614273f4a8a44d3b0015d61c562a89311f715906c594898540d00f93230f4f264ad08523ade4940ff84580c8042f + checksum: 174b24489d2ba8d8797fc5542858d44c084514b5b7085e835b19fc70a64ca65e139f0a44a5ff2f364e4a2eaad69f0f0498b08013725503c6b9e7808b85b52cd0 languageName: node linkType: hard @@ -23429,7 +23429,14 @@ __metadata: languageName: node linkType: hard -"commander@npm:*, commander@npm:11.0.0, commander@npm:^11.0.0": +"commander@npm:*, commander@npm:^11.0.0": + version: 11.1.0 + resolution: "commander@npm:11.1.0" + checksum: fd1a8557c6b5b622c89ecdfde703242ab7db3b628ea5d1755784c79b8e7cb0d74d65b4a262289b533359cd58e1bfc0bf50245dfbcd2954682a6f367c828b79ef + languageName: node + linkType: hard + +"commander@npm:11.0.0": version: 11.0.0 resolution: "commander@npm:11.0.0" checksum: 6621954e1e1d078b4991c1f5bbd9439ad37aa7768d6ab4842de1dbd4d222c8a27e1b8e62108b3a92988614af45031d5bb2a2aaa92951f4d0c934d1a1ac564bb4 @@ -35199,8 +35206,8 @@ __metadata: linkType: hard "mockttp@npm:^3.9.1": - version: 3.9.3 - resolution: "mockttp@npm:3.9.3" + version: 3.9.4 + resolution: "mockttp@npm:3.9.4" dependencies: "@graphql-tools/schema": ^8.5.0 "@graphql-tools/utils": ^8.8.0 @@ -35243,7 +35250,7 @@ __metadata: ws: ^8.8.0 bin: mockttp: dist/admin/admin-bin.js - checksum: f1af699d94fd7cce10f1661688a95dc47ff66be59de201c341e235af1e0fa238ac1b5d640907c9a5e7c4d812c242ba60af698484c9447c325056503d5c87db83 + checksum: 2e0b984d77a94e6a754e44c85a7ff2ded13ba42fd6cabf125b677a8a57eff543c896bf3ecb522799d3efbe18733bf019fbe707044f098fdd5e8e4bc2c0b1df4f languageName: node linkType: hard @@ -40772,6 +40779,7 @@ __metadata: "@techdocs/cli": "workspace:*" "@types/node": ^18.17.8 "@types/webpack": ^5.28.0 + "@useoptic/optic": ^0.50.10 command-exists: ^1.2.9 concurrently: ^8.0.0 cross-env: ^7.0.0 @@ -45833,9 +45841,9 @@ __metadata: linkType: hard "yaml@npm:^2.0.0, yaml@npm:^2.0.0-10, yaml@npm:^2.1.1, yaml@npm:^2.2.1, yaml@npm:^2.2.2, yaml@npm:^2.3.2": - version: 2.3.2 - resolution: "yaml@npm:2.3.2" - checksum: acd80cc24df12c808c6dec8a0176d404ef9e6f08ad8786f746ecc9d8974968c53c6e8a67fdfabcc5f99f3dc59b6bb0994b95646ff03d18e9b1dcd59eccc02146 + version: 2.3.3 + resolution: "yaml@npm:2.3.3" + checksum: cdfd132e7e0259f948929efe8835923df05c013c273c02bb7a2de9b46ac3af53c2778a35b32c7c0f877cc355dc9340ed564018c0242bfbb1278c2a3e53a0e99e languageName: node linkType: hard From 0995903dd6f5c62fd038949ca68a00c380ef6cf2 Mon Sep 17 00:00:00 2001 From: Aramis Sennyey Date: Mon, 23 Oct 2023 13:49:09 -0400 Subject: [PATCH 050/102] fix yarn file Signed-off-by: Aramis Sennyey --- yarn.lock | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/yarn.lock b/yarn.lock index 11c706ab69..31819e3f79 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1,3 +1,6 @@ +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + __metadata: version: 6 cacheKey: 8 @@ -29088,20 +29091,6 @@ __metadata: languageName: node linkType: hard -"graphql-language-service@npm:^5.0.6": - version: 5.0.6 - resolution: "graphql-language-service@npm:5.0.6" - dependencies: - nullthrows: ^1.0.0 - vscode-languageserver-types: ^3.17.1 - peerDependencies: - graphql: ^15.5.0 || ^16.0.0 - bin: - graphql: dist/temp-bin.js - checksum: b053c6b7158d0ee7a3e55391bfd8be956fc5380211ca586b3a252007845e119540fb40efcc438975eaebc5ef25f46973f7ff4d9543c66e14ebd992957e0299b7 - languageName: node - linkType: hard - "graphql-modules@npm:^2.0.0": version: 2.2.0 resolution: "graphql-modules@npm:2.2.0" From d2059339b13c4983ab270523d78fa0faa0d5a519 Mon Sep 17 00:00:00 2001 From: Aramis Sennyey Date: Mon, 23 Oct 2023 14:03:58 -0400 Subject: [PATCH 051/102] update based on PR feedback Signed-off-by: Aramis Sennyey --- .changeset/gentle-pears-camp.md | 2 +- .github/CODEOWNERS | 2 +- app-config.yaml | 12 ++-- packages/backend-next/package.json | 2 +- packages/backend-next/src/index.ts | 4 +- packages/backend-openapi-utils/api-report.md | 3 - packages/backend-openapi-utils/src/index.ts | 1 - .../.eslintrc.js | 0 .../README.md | 20 ++++--- .../api-report.md | 2 +- .../catalog-info.yaml | 4 +- .../package.json | 5 +- .../InternalOpenApiDocumentationProvider.ts | 18 ++++-- .../src/index.ts | 0 .../src/setupTests.ts | 0 yarn.lock | 60 +++++++++---------- 16 files changed, 71 insertions(+), 64 deletions(-) rename plugins/{catalog-backend-module-openapi-spec => catalog-backend-module-backstage-openapi}/.eslintrc.js (100%) rename plugins/{catalog-backend-module-openapi-spec => catalog-backend-module-backstage-openapi}/README.md (64%) rename plugins/{catalog-backend-module-openapi-spec => catalog-backend-module-backstage-openapi}/api-report.md (97%) rename plugins/{catalog-backend-module-openapi-spec => catalog-backend-module-backstage-openapi}/catalog-info.yaml (55%) rename plugins/{catalog-backend-module-openapi-spec => catalog-backend-module-backstage-openapi}/package.json (94%) rename plugins/{catalog-backend-module-openapi-spec => catalog-backend-module-backstage-openapi}/src/InternalOpenApiDocumentationProvider.ts (95%) rename plugins/{catalog-backend-module-openapi-spec => catalog-backend-module-backstage-openapi}/src/index.ts (100%) rename plugins/{catalog-backend-module-openapi-spec => catalog-backend-module-backstage-openapi}/src/setupTests.ts (100%) diff --git a/.changeset/gentle-pears-camp.md b/.changeset/gentle-pears-camp.md index 6455d1e7fb..6d96958a76 100644 --- a/.changeset/gentle-pears-camp.md +++ b/.changeset/gentle-pears-camp.md @@ -1,5 +1,5 @@ --- -'@backstage/plugin-catalog-backend-module-openapi-spec': minor +'@backstage/plugin-catalog-backend-module-backstage-openapi': minor --- Adds a new catalog module for ingesting Backstage plugin OpenAPI specs into the catalog for display as an API entity. diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 8807862a20..ec137d0747 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -29,7 +29,7 @@ yarn.lock @backstage/maintainers @backst /plugins/catalog-* @backstage/maintainers @backstage/reviewers @backstage/catalog-maintainers /plugins/catalog-backend-module-aws @backstage/maintainers @backstage/reviewers @backstage/catalog-maintainers @pjungermann /plugins/catalog-backend-module-bitbucket-cloud @backstage/maintainers @backstage/reviewers @backstage/catalog-maintainers @pjungermann -/plugins/catalog-backend-module-openapi-spec @backstage/maintainers @backstage/reviewers @backstage/openapi-tooling-maintainers +/plugins/catalog-backend-module-backstage-openapi @backstage/maintainers @backstage/reviewers @backstage/openapi-tooling-maintainers /plugins/catalog-backend-module-msgraph @backstage/maintainers @backstage/reviewers @backstage/catalog-maintainers @pjungermann /plugins/catalog-backend-module-puppetdb @backstage/maintainers @backstage/reviewers @backstage/catalog-maintainers /plugins/catalog-graph @backstage/maintainers @backstage/reviewers @backstage/catalog-maintainers @backstage/sda-se-reviewers diff --git a/app-config.yaml b/app-config.yaml index 0ae2a4aa6e..c53a6475f4 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -235,6 +235,12 @@ catalog: - System - Domain - Location + providers: + openapi: + plugins: + - catalog + - search + - todo processors: ldapOrg: @@ -464,9 +470,3 @@ stackstorm: permission: enabled: true - -openapi: - plugins: - - catalog - - search - - todo diff --git a/packages/backend-next/package.json b/packages/backend-next/package.json index 38245de00e..469ca622ef 100644 --- a/packages/backend-next/package.json +++ b/packages/backend-next/package.json @@ -34,8 +34,8 @@ "@backstage/plugin-azure-devops-backend": "workspace:^", "@backstage/plugin-badges-backend": "workspace:^", "@backstage/plugin-catalog-backend": "workspace:^", + "@backstage/plugin-catalog-backend-module-backstage-openapi": "workspace:^", "@backstage/plugin-catalog-backend-module-openapi": "workspace:^", - "@backstage/plugin-catalog-backend-module-openapi-spec": "workspace:^", "@backstage/plugin-catalog-backend-module-scaffolder-entity-model": "workspace:^", "@backstage/plugin-catalog-backend-module-unprocessed": "workspace:^", "@backstage/plugin-devtools-backend": "workspace:^", diff --git a/packages/backend-next/src/index.ts b/packages/backend-next/src/index.ts index d5793dc0fb..d98661de63 100644 --- a/packages/backend-next/src/index.ts +++ b/packages/backend-next/src/index.ts @@ -43,7 +43,9 @@ backend.add(import('@backstage/plugin-scaffolder-backend/alpha')); backend.add(import('@backstage/plugin-search-backend-module-catalog/alpha')); backend.add(import('@backstage/plugin-search-backend-module-explore/alpha')); backend.add(import('@backstage/plugin-search-backend-module-techdocs/alpha')); -backend.add(import('@backstage/plugin-catalog-backend-module-openapi-spec')); +backend.add( + import('@backstage/plugin-catalog-backend-module-backstage-openapi'), +); backend.add(import('@backstage/plugin-search-backend/alpha')); backend.add(import('@backstage/plugin-techdocs-backend/alpha')); backend.add(import('@backstage/plugin-todo-backend')); diff --git a/packages/backend-openapi-utils/api-report.md b/packages/backend-openapi-utils/api-report.md index cc6d31ac71..553eaac697 100644 --- a/packages/backend-openapi-utils/api-report.md +++ b/packages/backend-openapi-utils/api-report.md @@ -445,9 +445,6 @@ type ObjectWithContentSchema< ? SchemaRef : never; -// @public -export const OPENAPI_SPEC_ROUTE = '/openapi.json'; - // @public (undocumented) type OptionalMap< T extends { diff --git a/packages/backend-openapi-utils/src/index.ts b/packages/backend-openapi-utils/src/index.ts index 528358132c..e8e18ee15e 100644 --- a/packages/backend-openapi-utils/src/index.ts +++ b/packages/backend-openapi-utils/src/index.ts @@ -32,4 +32,3 @@ export type { } from './utility'; export type { ApiRouter } from './router'; export { createValidatedOpenApiRouter, getOpenApiSpecRoute } from './stub'; -export * from './constants'; diff --git a/plugins/catalog-backend-module-openapi-spec/.eslintrc.js b/plugins/catalog-backend-module-backstage-openapi/.eslintrc.js similarity index 100% rename from plugins/catalog-backend-module-openapi-spec/.eslintrc.js rename to plugins/catalog-backend-module-backstage-openapi/.eslintrc.js diff --git a/plugins/catalog-backend-module-openapi-spec/README.md b/plugins/catalog-backend-module-backstage-openapi/README.md similarity index 64% rename from plugins/catalog-backend-module-openapi-spec/README.md rename to plugins/catalog-backend-module-backstage-openapi/README.md index aa0503229f..a7f4727669 100644 --- a/plugins/catalog-backend-module-openapi-spec/README.md +++ b/plugins/catalog-backend-module-backstage-openapi/README.md @@ -1,8 +1,8 @@ -# catalog-backend-module-openapi-spec +# catalog-backend-module-backstage-openapi ## Summary -This module installs an entity provider that exports a single entity, your Backstage instance documentation, which merges as many backend plugins as you have defined in the config value `openapi.plugins`. +This module installs an entity provider that exports a single entity, your Backstage instance documentation, which merges as many backend plugins as you have defined in the config value `catalog.providers.openapi.plugins`. ## Notes @@ -13,17 +13,21 @@ This module installs an entity provider that exports a single entity, your Backs To your new backend file, add ```ts title="packages/backend/src/index.ts" -backend.add(import('@backstage/plugin-catalog-backend-module-openapi-spec')); +backend.add( + import('@backstage/plugin-catalog-backend-module-backstage-openapi'), +); ``` Add a list of plugins to your config like, ```yaml title="app-config.yaml" -openapi: - plugins: - - catalog - - todo - - search +catalog: + providers: + openapi: + plugins: + - catalog + - todo + - search ``` We will attempt to load each plugin's OpenAPI spec hosted at `${pluginRoute}/openapi.json`. These are automatically added if you are using `@backstage/backend-openapi-utils`'s `createValidatedOpenApiRouter`. diff --git a/plugins/catalog-backend-module-openapi-spec/api-report.md b/plugins/catalog-backend-module-backstage-openapi/api-report.md similarity index 97% rename from plugins/catalog-backend-module-openapi-spec/api-report.md rename to plugins/catalog-backend-module-backstage-openapi/api-report.md index 62b4c7194e..d417be049c 100644 --- a/plugins/catalog-backend-module-openapi-spec/api-report.md +++ b/plugins/catalog-backend-module-backstage-openapi/api-report.md @@ -1,4 +1,4 @@ -## API Report File for "@backstage/plugin-catalog-backend-module-openapi-spec" +## API Report File for "@backstage/plugin-catalog-backend-module-backstage-openapi" > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). diff --git a/plugins/catalog-backend-module-openapi-spec/catalog-info.yaml b/plugins/catalog-backend-module-backstage-openapi/catalog-info.yaml similarity index 55% rename from plugins/catalog-backend-module-openapi-spec/catalog-info.yaml rename to plugins/catalog-backend-module-backstage-openapi/catalog-info.yaml index 89bb18d2c3..5e98f11506 100644 --- a/plugins/catalog-backend-module-openapi-spec/catalog-info.yaml +++ b/plugins/catalog-backend-module-backstage-openapi/catalog-info.yaml @@ -1,8 +1,8 @@ apiVersion: backstage.io/v1alpha1 kind: Component metadata: - name: backstage-plugin-catalog-backend-module-openapi-spec - title: '@backstage/plugin-catalog-backend-module-openapi-spec' + name: backstage-plugin-catalog-backend-module-backstage-openapi + title: '@backstage/plugin-catalog-backend-module-backstage-openapi' spec: lifecycle: experimental type: backstage-backend-plugin-module diff --git a/plugins/catalog-backend-module-openapi-spec/package.json b/plugins/catalog-backend-module-backstage-openapi/package.json similarity index 94% rename from plugins/catalog-backend-module-openapi-spec/package.json rename to plugins/catalog-backend-module-backstage-openapi/package.json index ce6bbec95f..0f76bc3234 100644 --- a/plugins/catalog-backend-module-openapi-spec/package.json +++ b/plugins/catalog-backend-module-backstage-openapi/package.json @@ -1,10 +1,9 @@ { - "name": "@backstage/plugin-catalog-backend-module-openapi-spec", + "name": "@backstage/plugin-catalog-backend-module-backstage-openapi", "version": "0.0.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", - "private": true, "publishConfig": { "access": "public", "main": "dist/index.cjs.js", @@ -27,6 +26,7 @@ "@backstage/backend-openapi-utils": "workspace:^", "@backstage/backend-plugin-api": "workspace:^", "@backstage/backend-tasks": "workspace:^", + "@backstage/catalog-model": "workspace:^", "@backstage/config": "workspace:^", "@backstage/errors": "workspace:^", "@backstage/plugin-catalog-node": "workspace:^", @@ -40,7 +40,6 @@ "yn": "^4.0.0" }, "devDependencies": { - "@backstage/catalog-model": "workspace:^", "@backstage/cli": "workspace:^", "@backstage/test-utils": "workspace:^", "@types/supertest": "^2.0.8", diff --git a/plugins/catalog-backend-module-openapi-spec/src/InternalOpenApiDocumentationProvider.ts b/plugins/catalog-backend-module-backstage-openapi/src/InternalOpenApiDocumentationProvider.ts similarity index 95% rename from plugins/catalog-backend-module-openapi-spec/src/InternalOpenApiDocumentationProvider.ts rename to plugins/catalog-backend-module-backstage-openapi/src/InternalOpenApiDocumentationProvider.ts index c5b989dbc7..7700d3081b 100644 --- a/plugins/catalog-backend-module-openapi-spec/src/InternalOpenApiDocumentationProvider.ts +++ b/plugins/catalog-backend-module-backstage-openapi/src/InternalOpenApiDocumentationProvider.ts @@ -13,7 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import type { ApiEntity } from '@backstage/catalog-model'; +import { + ANNOTATION_LOCATION, + ANNOTATION_ORIGIN_LOCATION, + type ApiEntity, +} from '@backstage/catalog-model'; import { Config } from '@backstage/config'; import { ForwardedError } from '@backstage/errors'; import { @@ -202,7 +206,9 @@ export class InternalOpenApiDocumentationProvider implements EntityProvider { } async refresh(logger: LoggerService) { - const pluginsToMerge = this.config.getStringArray('openapi.plugins'); + const pluginsToMerge = this.config.getStringArray( + 'catalog.providers.openapi.plugins', + ); logger.info(`Loading specs from from ${pluginsToMerge}.`); const documentationEntity: ApiEntity = { apiVersion: 'backstage.io/v1beta1', @@ -211,10 +217,10 @@ export class InternalOpenApiDocumentationProvider implements EntityProvider { name: 'INTERNAL_instance_openapi_doc', title: 'Your Backstage Instance documentation', annotations: { - 'backstage.io/managed-by-location': - 'internal-package:@backstage/plugin-catalog-backend-module-openapi-spec', - 'backstage.io/managed-by-origin-location': - 'internal-package:@backstage/plugin-catalog-backend-module-openapi-spec', + [ANNOTATION_LOCATION]: + 'internal-package:@backstage/plugin-catalog-backend-module-backstage-openapi', + [ANNOTATION_ORIGIN_LOCATION]: + 'internal-package:@backstage/plugin-catalog-backend-module-backstage-openapi', }, }, spec: { diff --git a/plugins/catalog-backend-module-openapi-spec/src/index.ts b/plugins/catalog-backend-module-backstage-openapi/src/index.ts similarity index 100% rename from plugins/catalog-backend-module-openapi-spec/src/index.ts rename to plugins/catalog-backend-module-backstage-openapi/src/index.ts diff --git a/plugins/catalog-backend-module-openapi-spec/src/setupTests.ts b/plugins/catalog-backend-module-backstage-openapi/src/setupTests.ts similarity index 100% rename from plugins/catalog-backend-module-openapi-spec/src/setupTests.ts rename to plugins/catalog-backend-module-backstage-openapi/src/setupTests.ts diff --git a/yarn.lock b/yarn.lock index 11ab2b969f..0114aea96d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5388,6 +5388,35 @@ __metadata: languageName: unknown linkType: soft +"@backstage/plugin-catalog-backend-module-backstage-openapi@workspace:^, @backstage/plugin-catalog-backend-module-backstage-openapi@workspace:plugins/catalog-backend-module-backstage-openapi": + version: 0.0.0-use.local + resolution: "@backstage/plugin-catalog-backend-module-backstage-openapi@workspace:plugins/catalog-backend-module-backstage-openapi" + dependencies: + "@backstage/backend-common": "workspace:^" + "@backstage/backend-openapi-utils": "workspace:^" + "@backstage/backend-plugin-api": "workspace:^" + "@backstage/backend-tasks": "workspace:^" + "@backstage/catalog-model": "workspace:^" + "@backstage/cli": "workspace:^" + "@backstage/config": "workspace:^" + "@backstage/errors": "workspace:^" + "@backstage/plugin-catalog-node": "workspace:^" + "@backstage/test-utils": "workspace:^" + "@types/express": "*" + "@types/supertest": ^2.0.8 + cross-fetch: ^3.1.5 + express: ^4.17.1 + express-promise-router: ^4.1.0 + lodash: ^4.17.21 + msw: ^1.0.0 + openapi-merge: ^1.3.2 + openapi3-ts: ^3.1.2 + supertest: ^6.2.4 + uuid: ^9.0.0 + yn: ^4.0.0 + languageName: unknown + linkType: soft + "@backstage/plugin-catalog-backend-module-bitbucket-cloud@workspace:plugins/catalog-backend-module-bitbucket-cloud": version: 0.0.0-use.local resolution: "@backstage/plugin-catalog-backend-module-bitbucket-cloud@workspace:plugins/catalog-backend-module-bitbucket-cloud" @@ -5636,35 +5665,6 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-catalog-backend-module-openapi-spec@workspace:^, @backstage/plugin-catalog-backend-module-openapi-spec@workspace:plugins/catalog-backend-module-openapi-spec": - version: 0.0.0-use.local - resolution: "@backstage/plugin-catalog-backend-module-openapi-spec@workspace:plugins/catalog-backend-module-openapi-spec" - dependencies: - "@backstage/backend-common": "workspace:^" - "@backstage/backend-openapi-utils": "workspace:^" - "@backstage/backend-plugin-api": "workspace:^" - "@backstage/backend-tasks": "workspace:^" - "@backstage/catalog-model": "workspace:^" - "@backstage/cli": "workspace:^" - "@backstage/config": "workspace:^" - "@backstage/errors": "workspace:^" - "@backstage/plugin-catalog-node": "workspace:^" - "@backstage/test-utils": "workspace:^" - "@types/express": "*" - "@types/supertest": ^2.0.8 - cross-fetch: ^3.1.5 - express: ^4.17.1 - express-promise-router: ^4.1.0 - lodash: ^4.17.21 - msw: ^1.0.0 - openapi-merge: ^1.3.2 - openapi3-ts: ^3.1.2 - supertest: ^6.2.4 - uuid: ^9.0.0 - yn: ^4.0.0 - languageName: unknown - linkType: soft - "@backstage/plugin-catalog-backend-module-openapi@workspace:^, @backstage/plugin-catalog-backend-module-openapi@workspace:plugins/catalog-backend-module-openapi": version: 0.0.0-use.local resolution: "@backstage/plugin-catalog-backend-module-openapi@workspace:plugins/catalog-backend-module-openapi" @@ -25687,8 +25687,8 @@ __metadata: "@backstage/plugin-azure-devops-backend": "workspace:^" "@backstage/plugin-badges-backend": "workspace:^" "@backstage/plugin-catalog-backend": "workspace:^" + "@backstage/plugin-catalog-backend-module-backstage-openapi": "workspace:^" "@backstage/plugin-catalog-backend-module-openapi": "workspace:^" - "@backstage/plugin-catalog-backend-module-openapi-spec": "workspace:^" "@backstage/plugin-catalog-backend-module-scaffolder-entity-model": "workspace:^" "@backstage/plugin-catalog-backend-module-unprocessed": "workspace:^" "@backstage/plugin-devtools-backend": "workspace:^" From 28fa763ba0629ef3cd2143c8d765fcb75d41e990 Mon Sep 17 00:00:00 2001 From: Aramis Sennyey Date: Mon, 23 Oct 2023 15:02:29 -0400 Subject: [PATCH 052/102] update to a dev dependency Signed-off-by: Aramis Sennyey --- plugins/catalog-backend-module-backstage-openapi/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/catalog-backend-module-backstage-openapi/package.json b/plugins/catalog-backend-module-backstage-openapi/package.json index 0f76bc3234..d603e22f8a 100644 --- a/plugins/catalog-backend-module-backstage-openapi/package.json +++ b/plugins/catalog-backend-module-backstage-openapi/package.json @@ -30,7 +30,6 @@ "@backstage/config": "workspace:^", "@backstage/errors": "workspace:^", "@backstage/plugin-catalog-node": "workspace:^", - "@types/express": "*", "cross-fetch": "^3.1.5", "express": "^4.17.1", "express-promise-router": "^4.1.0", @@ -42,6 +41,7 @@ "devDependencies": { "@backstage/cli": "workspace:^", "@backstage/test-utils": "workspace:^", + "@types/express": "*", "@types/supertest": "^2.0.8", "msw": "^1.0.0", "openapi3-ts": "^3.1.2", From 1f06689380810795f18b6d74829a36fd98ca3f42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Mon, 23 Oct 2023 21:37:39 +0200 Subject: [PATCH 053/102] allow custom icons MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/catalog-react/api-report.md | 2 +- .../EntityPresentationApi.ts | 7 +- plugins/catalog/api-report.md | 3 +- .../DefaultEntityPresentationApi.ts | 107 +++++++++++++----- .../src/apis/EntityPresentationApi/util.ts | 38 ------- 5 files changed, 89 insertions(+), 68 deletions(-) delete mode 100644 plugins/catalog/src/apis/EntityPresentationApi/util.ts diff --git a/plugins/catalog-react/api-report.md b/plugins/catalog-react/api-report.md index abbf348848..816eadbeaf 100644 --- a/plugins/catalog-react/api-report.md +++ b/plugins/catalog-react/api-report.md @@ -417,7 +417,7 @@ export interface EntityRefPresentation { // @public export interface EntityRefPresentationSnapshot { entityRef: string; - Icon?: IconComponent | undefined; + Icon?: IconComponent | undefined | false; primaryTitle: string; secondaryTitle?: string; } diff --git a/plugins/catalog-react/src/apis/EntityPresentationApi/EntityPresentationApi.ts b/plugins/catalog-react/src/apis/EntityPresentationApi/EntityPresentationApi.ts index 532fdde9a3..bb84c1b71a 100644 --- a/plugins/catalog-react/src/apis/EntityPresentationApi/EntityPresentationApi.ts +++ b/plugins/catalog-react/src/apis/EntityPresentationApi/EntityPresentationApi.ts @@ -84,8 +84,13 @@ export interface EntityRefPresentationSnapshot { * both in larger formats such as in a header, or in smaller formats such as * inline with regular text, so bear in mind that the legibility should be * high in both cases. + * + * A value of `false` here indicates the desire to not have an icon present + * for the given implementation. A value of `undefined` leaves it at the + * discretion of the display layer to choose what to do (such as for example + * showing a fallback icon). */ - Icon?: IconComponent | undefined; + Icon?: IconComponent | undefined | false; } /** diff --git a/plugins/catalog/api-report.md b/plugins/catalog/api-report.md index 4b2c17865d..6647f8deaa 100644 --- a/plugins/catalog/api-report.md +++ b/plugins/catalog/api-report.md @@ -251,6 +251,7 @@ export interface DefaultEntityPresentationApiOptions { batchDelay?: HumanDuration; cacheTtl?: HumanDuration; catalogApi?: CatalogApi; + kindIcons?: Record; renderer?: DefaultEntityPresentationApiRenderer; } @@ -266,7 +267,7 @@ export interface DefaultEntityPresentationApiRenderer { defaultNamespace?: string; }; }) => { - snapshot: Omit; + snapshot: Omit; }; } diff --git a/plugins/catalog/src/apis/EntityPresentationApi/DefaultEntityPresentationApi.ts b/plugins/catalog/src/apis/EntityPresentationApi/DefaultEntityPresentationApi.ts index 91e5b575ff..5f1119e598 100644 --- a/plugins/catalog/src/apis/EntityPresentationApi/DefaultEntityPresentationApi.ts +++ b/plugins/catalog/src/apis/EntityPresentationApi/DefaultEntityPresentationApi.ts @@ -14,23 +14,28 @@ * limitations under the License. */ -import { Entity, stringifyEntityRef } from '@backstage/catalog-model'; +import { + Entity, + parseEntityRef, + stringifyEntityRef, +} from '@backstage/catalog-model'; +import { IconComponent } from '@backstage/core-plugin-api'; import { CatalogApi, EntityPresentationApi, EntityRefPresentation, EntityRefPresentationSnapshot, } from '@backstage/plugin-catalog-react'; -import { HumanDuration } from '@backstage/types'; +import { HumanDuration, durationToMilliseconds } from '@backstage/types'; import DataLoader from 'dataloader'; import ExpiryMap from 'expiry-map'; import ObservableImpl from 'zen-observable'; import { DEFAULT_BATCH_DELAY, DEFAULT_CACHE_TTL, + DEFAULT_ICONS, createDefaultRenderer, } from './defaults'; -import { durationToMs } from './util'; /** * A custom renderer for the {@link DefaultEntityPresentationApi}. @@ -82,7 +87,7 @@ export interface DefaultEntityPresentationApiRenderer { defaultNamespace?: string; }; }) => { - snapshot: Omit; + snapshot: Omit; }; } @@ -123,6 +128,19 @@ export interface DefaultEntityPresentationApiOptions { */ batchDelay?: HumanDuration; + /** + * A mapping from kinds to icons. + * + * @remarks + * + * The keys are kinds (case insensitive) that map to icon values to represent + * kinds by. + * + * If you do not supply a set of icons here, a set of fallback icons will be + * used. If you supply the empty object, no fallback icons will be used. + */ + kindIcons?: Record; + /** * A custom renderer, if any. */ @@ -167,6 +185,7 @@ export class DefaultEntityPresentationApi implements EntityPresentationApi { readonly #cache: Map; readonly #cacheTtlMs: number; readonly #loader: DataLoader | undefined; + readonly #kindIcons: Record; // lowercased kinds readonly #renderer: DefaultEntityPresentationApiRenderer; private constructor(options: DefaultEntityPresentationApiOptions) { @@ -174,6 +193,13 @@ export class DefaultEntityPresentationApi implements EntityPresentationApi { const batchDelay = options.batchDelay ?? DEFAULT_BATCH_DELAY; const renderer = options.renderer ?? createDefaultRenderer({ async: true }); + const kindIcons: Record = {}; + Object.entries(options.kindIcons ?? DEFAULT_ICONS).forEach( + ([kind, icon]) => { + kindIcons[kind.toLocaleLowerCase('en-US')] = icon; + }, + ); + if (renderer.async) { if (!options.catalogApi) { throw new TypeError(`Asynchronous rendering requires a catalog API`); @@ -186,8 +212,9 @@ export class DefaultEntityPresentationApi implements EntityPresentationApi { }); } - this.#cacheTtlMs = durationToMs(cacheTtl); + this.#cacheTtlMs = durationToMilliseconds(cacheTtl); this.#cache = new Map(); + this.#kindIcons = kindIcons; this.#renderer = renderer; } @@ -199,25 +226,43 @@ export class DefaultEntityPresentationApi implements EntityPresentationApi { defaultNamespace?: string; }, ): EntityRefPresentation { - const { entityRef, entity, needsLoad } = + const { entityRef, kind, entity, needsLoad } = this.#getEntityForInitialRender(entityOrRef); - let rendered: Omit; - try { - const output = this.#renderer.render({ + // Make a wrapping helper for rendering + const render = (options: { + loading: boolean; + entity?: Entity; + }): EntityRefPresentationSnapshot => { + const { snapshot } = this.#renderer.render({ entityRef: entityRef, - loading: needsLoad, - entity: entity, + loading: options.loading, + entity: options.entity, context: context || {}, }); - rendered = output.snapshot; + return { + ...snapshot, + entityRef: entityRef, + Icon: this.#maybeFallbackIcon(snapshot.Icon, kind), + }; + }; + + // First the initial render + let initialSnapshot: EntityRefPresentationSnapshot; + try { + initialSnapshot = render({ + loading: needsLoad, + entity: entity, + }); } catch { // This is what gets presented if the renderer throws an error - rendered = { + initialSnapshot = { primaryTitle: entityRef, + entityRef: entityRef, }; } + // And then the following snapshot const observable = !needsLoad ? undefined : new ObservableImpl(subscriber => { @@ -231,16 +276,11 @@ export class DefaultEntityPresentationApi implements EntityPresentationApi { newEntity && newEntity.metadata.etag !== entity?.metadata.etag ) { - const output = this.#renderer.render({ - entityRef: entityRef, + const updatedSnapshot = render({ loading: false, entity: newEntity, - context: context || {}, - }); - subscriber.next({ - ...output.snapshot, - entityRef: entityRef, }); + subscriber.next(updatedSnapshot); } }) .catch(() => { @@ -261,16 +301,14 @@ export class DefaultEntityPresentationApi implements EntityPresentationApi { }); return { - snapshot: { - ...rendered, - entityRef: entityRef, - }, + snapshot: initialSnapshot, update$: observable, }; } #getEntityForInitialRender(entityOrRef: Entity | string): { entity: Entity | undefined; + kind: string; entityRef: string; needsLoad: boolean; } { @@ -281,6 +319,7 @@ export class DefaultEntityPresentationApi implements EntityPresentationApi { if (typeof entityOrRef !== 'string') { return { entity: entityOrRef, + kind: entityOrRef.kind, entityRef: stringifyEntityRef(entityOrRef), needsLoad: false, }; @@ -297,6 +336,7 @@ export class DefaultEntityPresentationApi implements EntityPresentationApi { return { entity: cachedEntity, + kind: parseEntityRef(entityOrRef).kind, entityRef: entityOrRef, needsLoad, }; @@ -308,8 +348,8 @@ export class DefaultEntityPresentationApi implements EntityPresentationApi { batchDelay: HumanDuration; renderer: DefaultEntityPresentationApiRenderer; }): DataLoader { - const cacheTtlMs = durationToMs(options.cacheTtl); - const batchDelayMs = durationToMs(options.batchDelay); + const cacheTtlMs = durationToMilliseconds(options.cacheTtl); + const batchDelayMs = durationToMilliseconds(options.batchDelay); return new DataLoader( async (entityRefs: readonly string[]) => { @@ -328,7 +368,7 @@ export class DefaultEntityPresentationApi implements EntityPresentationApi { return items; }, { - name: DefaultEntityPresentationApi.name, + name: 'DefaultEntityPresentationApi', // This cache is the one that the data loader uses internally for // memoizing requests; essentially what it achieves is that multiple // requests for the same entity ref will be batched up into a single @@ -345,4 +385,17 @@ export class DefaultEntityPresentationApi implements EntityPresentationApi { }, ); } + + #maybeFallbackIcon( + renderedIcon: IconComponent | false | undefined, + kind: string, + ): IconComponent | false | undefined { + if (renderedIcon) { + return renderedIcon; + } else if (renderedIcon === false) { + return false; + } + + return this.#kindIcons[kind.toLocaleLowerCase('en-US')]; + } } diff --git a/plugins/catalog/src/apis/EntityPresentationApi/util.ts b/plugins/catalog/src/apis/EntityPresentationApi/util.ts deleted file mode 100644 index e5dfe6bd7b..0000000000 --- a/plugins/catalog/src/apis/EntityPresentationApi/util.ts +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2023 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { HumanDuration } from '@backstage/types'; - -export function durationToMs(duration: HumanDuration): number { - const { - years = 0, - months = 0, - weeks = 0, - days = 0, - hours = 0, - minutes = 0, - seconds = 0, - milliseconds = 0, - } = duration; - - const totalDays = years * 365 + months * 30 + weeks * 7 + days; - const totalHours = totalDays * 24 + hours; - const totalMinutes = totalHours * 60 + minutes; - const totalSeconds = totalMinutes * 60 + seconds; - const totalMilliseconds = totalSeconds * 1000 + milliseconds; - - return totalMilliseconds; -} From 1d07dcb32cf17bf5c1dd25dc4612c2f20a07afb1 Mon Sep 17 00:00:00 2001 From: Andrew Ochsner Date: Mon, 16 Oct 2023 17:07:01 -0500 Subject: [PATCH 054/102] move to @smithy/node-htp-handler as @aws-sdk/node-http-handler is deprecated Signed-off-by: Andrew Ochsner --- plugins/techdocs-node/package.json | 1 + plugins/techdocs-node/src/stages/publish/awsS3.ts | 2 +- yarn.lock | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/techdocs-node/package.json b/plugins/techdocs-node/package.json index 712693f6af..fce7927df7 100644 --- a/plugins/techdocs-node/package.json +++ b/plugins/techdocs-node/package.json @@ -54,6 +54,7 @@ "@backstage/integration-aws-node": "workspace:^", "@backstage/plugin-search-common": "workspace:^", "@google-cloud/storage": "^6.0.0", + "@smithy/node-http-handler": "^2.1.7", "@trendyol-js/openstack-swift-sdk": "^0.0.6", "@types/express": "^4.17.6", "express": "^4.17.1", diff --git a/plugins/techdocs-node/src/stages/publish/awsS3.ts b/plugins/techdocs-node/src/stages/publish/awsS3.ts index 679e9bf7c9..29a5277682 100644 --- a/plugins/techdocs-node/src/stages/publish/awsS3.ts +++ b/plugins/techdocs-node/src/stages/publish/awsS3.ts @@ -32,7 +32,7 @@ import { S3Client, } from '@aws-sdk/client-s3'; import { fromTemporaryCredentials } from '@aws-sdk/credential-providers'; -import { NodeHttpHandler } from '@aws-sdk/node-http-handler'; +import { NodeHttpHandler } from '@smithy/node-http-handler'; import { Upload } from '@aws-sdk/lib-storage'; import { AwsCredentialIdentityProvider } from '@aws-sdk/types'; import { HttpsProxyAgent } from 'hpagent'; diff --git a/yarn.lock b/yarn.lock index 6b48a8e52e..b7e1c72fa0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9623,6 +9623,7 @@ __metadata: "@backstage/integration-aws-node": "workspace:^" "@backstage/plugin-search-common": "workspace:^" "@google-cloud/storage": ^6.0.0 + "@smithy/node-http-handler": ^2.1.7 "@trendyol-js/openstack-swift-sdk": ^0.0.6 "@types/express": ^4.17.6 "@types/fs-extra": ^9.0.5 From 18b272dfa284f5715e615651d77eb571b2bf1760 Mon Sep 17 00:00:00 2001 From: Andrew Ochsner Date: Tue, 17 Oct 2023 12:39:42 -0500 Subject: [PATCH 055/102] remove @aws-sdk/node-http-handler Signed-off-by: Andrew Ochsner --- plugins/techdocs-node/package.json | 1 - yarn.lock | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/plugins/techdocs-node/package.json b/plugins/techdocs-node/package.json index fce7927df7..0720b79960 100644 --- a/plugins/techdocs-node/package.json +++ b/plugins/techdocs-node/package.json @@ -42,7 +42,6 @@ "@aws-sdk/client-s3": "^3.350.0", "@aws-sdk/credential-providers": "^3.350.0", "@aws-sdk/lib-storage": "^3.350.0", - "@aws-sdk/node-http-handler": "^3.350.0", "@aws-sdk/types": "^3.347.0", "@azure/identity": "^3.2.1", "@azure/storage-blob": "^12.5.0", diff --git a/yarn.lock b/yarn.lock index b7e1c72fa0..58bc492e8b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1276,7 +1276,7 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/node-http-handler@npm:3.370.0, @aws-sdk/node-http-handler@npm:^3.350.0": +"@aws-sdk/node-http-handler@npm:3.370.0": version: 3.370.0 resolution: "@aws-sdk/node-http-handler@npm:3.370.0" dependencies: @@ -9609,7 +9609,6 @@ __metadata: "@aws-sdk/client-s3": ^3.350.0 "@aws-sdk/credential-providers": ^3.350.0 "@aws-sdk/lib-storage": ^3.350.0 - "@aws-sdk/node-http-handler": ^3.350.0 "@aws-sdk/types": ^3.347.0 "@azure/identity": ^3.2.1 "@azure/storage-blob": ^12.5.0 From e61a975f6136f486cb383733dda7639c53afb2c7 Mon Sep 17 00:00:00 2001 From: Andrew Ochsner Date: Tue, 17 Oct 2023 12:41:51 -0500 Subject: [PATCH 056/102] add changeset Signed-off-by: Andrew Ochsner --- .changeset/clever-houses-scream.md | 240 +++++++++++++++++++++++++++++ 1 file changed, 240 insertions(+) create mode 100644 .changeset/clever-houses-scream.md diff --git a/.changeset/clever-houses-scream.md b/.changeset/clever-houses-scream.md new file mode 100644 index 0000000000..858f90ea71 --- /dev/null +++ b/.changeset/clever-houses-scream.md @@ -0,0 +1,240 @@ +--- +'@backstage/plugin-scaffolder-backend-module-confluence-to-markdown': patch +'@backstage/plugin-catalog-backend-module-scaffolder-entity-model': patch +'@backstage/plugin-catalog-backend-module-incremental-ingestion': patch +'@backstage/plugin-permission-backend-module-allow-all-policy': patch +'@backstage/plugin-catalog-backend-module-bitbucket-server': patch +'@backstage/plugin-auth-backend-module-microsoft-provider': patch +'@backstage/plugin-catalog-backend-module-bitbucket-cloud': patch +'@backstage/plugin-scaffolder-backend-module-cookiecutter': patch +'@backstage/plugin-auth-backend-module-pinniped-provider': patch +'@backstage/plugin-events-backend-module-bitbucket-cloud': patch +'@backstage/plugin-auth-backend-module-gcp-iap-provider': patch +'@backstage/plugin-auth-backend-module-github-provider': patch +'@backstage/plugin-auth-backend-module-gitlab-provider': patch +'@backstage/plugin-auth-backend-module-google-provider': patch +'@backstage/plugin-auth-backend-module-oauth2-provider': patch +'@backstage/plugin-search-backend-module-elasticsearch': patch +'@backstage/plugin-tech-insights-backend-module-jsonfc': patch +'@backstage/plugin-catalog-backend-module-unprocessed': patch +'@backstage/plugin-analytics-module-newrelic-browser': patch +'@backstage/plugin-catalog-backend-module-github-org': patch +'@backstage/plugin-catalog-backend-module-bitbucket': patch +'@backstage/plugin-scaffolder-backend-module-gitlab': patch +'@backstage/plugin-scaffolder-backend-module-sentry': patch +'@backstage/plugin-scaffolder-backend-module-yeoman': patch +'@backstage/plugin-catalog-backend-module-puppetdb': patch +'@backstage/plugin-scaffolder-backend-module-rails': patch +'@backstage/plugin-api-docs-module-protoc-gen-doc': patch +'@backstage/plugin-catalog-backend-module-msgraph': patch +'@backstage/plugin-catalog-backend-module-openapi': patch +'@backstage/plugin-search-backend-module-techdocs': patch +'@backstage/plugin-techdocs-module-addons-contrib': patch +'@backstage/plugin-catalog-backend-module-gerrit': patch +'@backstage/plugin-catalog-backend-module-github': patch +'@backstage/plugin-catalog-backend-module-gitlab': patch +'@backstage/plugin-cicd-statistics-module-gitlab': patch +'@backstage/plugin-events-backend-module-aws-sqs': patch +'@backstage/plugin-search-backend-module-catalog': patch +'@backstage/plugin-search-backend-module-explore': patch +'@backstage/plugin-catalog-backend-module-azure': patch +'@backstage/plugin-catalog-unprocessed-entities': patch +'@backstage/plugin-events-backend-module-gerrit': patch +'@backstage/plugin-events-backend-module-github': patch +'@backstage/plugin-events-backend-module-gitlab': patch +'@backstage/plugin-catalog-backend-module-ldap': patch +'@backstage/plugin-events-backend-module-azure': patch +'techdocs-cli-embedded-app': patch +'@backstage/plugin-catalog-backend-module-aws': patch +'@backstage/plugin-catalog-backend-module-gcp': patch +'@backstage/plugin-github-pull-requests-board': patch +'@backstage/plugin-techdocs-addons-test-utils': patch +'@backstage/plugin-events-backend-test-utils': patch +'@internal/plugin-todo-list-backend': patch +'app-next-example-plugin': patch +'@internal/plugin-todo-list-common': patch +'@backstage/plugin-search-backend-module-pg': patch +'@backstage/backend-plugin-manager': patch +'@backstage/plugin-entity-feedback-backend': patch +'@backstage/backend-openapi-utils': patch +'@backstage/plugin-bitbucket-cloud-common': patch +'@backstage/plugin-stack-overflow-backend': patch +'@backstage/integration-aws-node': patch +'@backstage/plugin-code-coverage-backend': patch +'@backstage/plugin-tech-insights-backend': patch +'@backstage/plugin-user-settings-backend': patch +'@backstage/frontend-plugin-api': patch +'@backstage/plugin-analytics-module-ga4': patch +'@backstage/plugin-azure-devops-backend': patch +'@backstage/backend-plugin-api': patch +'@backstage/backend-test-utils': patch +'@backstage/plugin-analytics-module-ga': patch +'@backstage/plugin-azure-sites-backend': patch +'@backstage/plugin-git-release-manager': patch +'@backstage/plugin-search-backend-node': patch +'@backstage/backend-dev-utils': patch +'@backstage/integration-react': patch +'@backstage/plugin-github-deployments': patch +'@backstage/plugin-kubernetes-backend': patch +'@backstage/plugin-kubernetes-cluster': patch +'@backstage/plugin-lighthouse-backend': patch +'@backstage/plugin-microsoft-calendar': patch +'@backstage/plugin-newrelic-dashboard': patch +'@backstage/plugin-permission-backend': patch +'@backstage/plugin-scaffolder-backend': patch +'@backstage/plugin-tech-insights-node': patch +'@backstage/backend-defaults': patch +'@backstage/frontend-app-api': patch +'@backstage/plugin-entity-validation': patch +'@internal/plugin-todo-list': patch +'@backstage/plugin-kubernetes-common': patch +'@backstage/plugin-lighthouse-common': patch +'@backstage/plugin-permission-common': patch +'@backstage/plugin-scaffolder-common': patch +'@backstage/plugin-sonarqube-backend': patch +'@backstage/backend-app-api': patch +'@backstage/core-components': patch +'@backstage/core-plugin-api': patch +'@backstage/plugin-airbrake-backend': patch +'@backstage/plugin-devtools-backend': patch +'@backstage/plugin-kubernetes-react': patch +'@backstage/plugin-linguist-backend': patch +'@backstage/plugin-periskop-backend': patch +'@backstage/plugin-permission-react': patch +'@backstage/plugin-playlist-backend': patch +'@backstage/plugin-scaffolder-react': patch +'@backstage/plugin-techdocs-backend': patch +'@backstage/backend-common': patch +'@backstage/catalog-client': patch +'@backstage/version-bridge': patch +'@backstage/plugin-apollo-explorer': patch +'@backstage/plugin-catalog-backend': patch +'@backstage/plugin-catalog-graphql': patch +'@backstage/plugin-cicd-statistics': patch +'@backstage/plugin-devtools-common': patch +'@backstage/plugin-entity-feedback': patch +'@backstage/plugin-explore-backend': patch +'@backstage/plugin-gitops-profiles': patch +'@backstage/plugin-graphql-backend': patch +'@backstage/plugin-graphql-voyager': patch +'@backstage/plugin-jenkins-backend': patch +'@backstage/plugin-kubernetes-node': patch +'@backstage/plugin-permission-node': patch +'@backstage/plugin-playlist-common': patch +'@backstage/plugin-rollbar-backend': patch +'@backstage/plugin-scaffolder-node': patch +'@backstage/plugin-sonarqube-react': patch +'@backstage/backend-tasks': patch +'@backstage/catalog-model': patch +'@backstage/config-loader': patch +'@backstage/plugin-apache-airflow': patch +'@backstage/plugin-badges-backend': patch +'@backstage/plugin-bazaar-backend': patch +'@backstage/plugin-catalog-common': patch +'@backstage/plugin-catalog-import': patch +'@backstage/plugin-events-backend': patch +'@backstage/plugin-github-actions': patch +'@backstage/plugin-jenkins-common': patch +'@backstage/plugin-octopus-deploy': patch +'@backstage/plugin-search-backend': patch +'@backstage/plugin-splunk-on-call': patch +'@backstage/plugin-stack-overflow': patch +'@backstage/plugin-techdocs-react': patch +'@backstage/app-defaults': patch +'example-backend-next': patch +'@backstage/core-app-api': patch +'@techdocs/cli': patch +'@backstage/plugin-catalog-graph': patch +'@backstage/plugin-catalog-react': patch +'@backstage/plugin-code-coverage': patch +'@backstage/plugin-config-schema': patch +'@backstage/plugin-cost-insights': patch +'@backstage/plugin-explore-react': patch +'@backstage/plugin-github-issues': patch +'@backstage/plugin-kafka-backend': patch +'@backstage/plugin-nomad-backend': patch +'@backstage/plugin-proxy-backend': patch +'@backstage/plugin-search-common': patch +'@backstage/plugin-tech-insights': patch +'@backstage/plugin-techdocs-node': patch +'@backstage/plugin-user-settings': patch +'@backstage/plugin-vault-backend': patch +'@backstage/integration': patch +'@backstage/plugin-auth-backend': patch +'@backstage/plugin-azure-devops': patch +'@backstage/plugin-catalog-node': patch +'@backstage/plugin-code-climate': patch +'@backstage/plugin-gcp-projects': patch +'@backstage/plugin-search-react': patch +'@backstage/plugin-todo-backend': patch +'@backstage/create-app': patch +'@backstage/repo-tools': patch +'@backstage/test-utils': patch +'@backstage/plugin-adr-backend': patch +'@backstage/plugin-app-backend': patch +'@backstage/plugin-azure-sites': patch +'@backstage/plugin-events-node': patch +'@backstage/plugin-firehydrant': patch +'@backstage/dev-utils': patch +'@backstage/plugin-adr-common': patch +'@backstage/plugin-cloudbuild': patch +'@backstage/plugin-home-react': patch +'@backstage/plugin-kubernetes': patch +'@backstage/plugin-lighthouse': patch +'@backstage/plugin-scaffolder': patch +'@backstage/plugin-stackstorm': patch +'@backstage/plugin-tech-radar': patch +'example-app-next': patch +'@backstage/cli-node': patch +'e2e-test': patch +'@backstage/plugin-auth-node': patch +'@backstage/plugin-codescene': patch +'@backstage/plugin-dynatrace': patch +'@backstage/plugin-gcalendar': patch +'@backstage/plugin-org-react': patch +'@backstage/plugin-pagerduty': patch +'@backstage/plugin-shortcuts': patch +'@backstage/plugin-sonarqube': patch +'@backstage/plugin-xcmetrics': patch +'example-backend': patch +'@backstage/plugin-airbrake': patch +'@backstage/plugin-api-docs': patch +'@backstage/plugin-app-node': patch +'@backstage/plugin-circleci': patch +'@backstage/plugin-devtools': patch +'@backstage/plugin-graphiql': patch +'@backstage/plugin-linguist': patch +'@backstage/plugin-newrelic': patch +'@backstage/plugin-opencost': patch +'@backstage/plugin-periskop': patch +'@backstage/plugin-playlist': patch +'@backstage/plugin-puppetdb': patch +'@backstage/plugin-techdocs': patch +'@backstage/config': patch +'@backstage/errors': patch +'@backstage/plugin-bitrise': patch +'@backstage/plugin-catalog': patch +'@backstage/plugin-explore': patch +'@backstage/plugin-jenkins': patch +'@backstage/plugin-rollbar': patch +'@backstage/theme': patch +'@backstage/plugin-allure': patch +'@backstage/plugin-badges': patch +'@backstage/plugin-bazaar': patch +'@backstage/plugin-search': patch +'@backstage/plugin-sentry': patch +'@backstage/plugin-fossa': patch +'@backstage/plugin-ilert': patch +'@backstage/plugin-kafka': patch +'@backstage/plugin-nomad': patch +'@backstage/plugin-vault': patch +'example-app': patch +'@backstage/cli': patch +'@backstage/plugin-gocd': patch +'@backstage/plugin-home': patch +'@backstage/plugin-todo': patch +'@backstage/plugin-adr': patch +'@backstage/plugin-org': patch +--- + +Update aws-sdk-js-v3 versions per renovate From f02b259570f3f6ea264a5c8bb8dc69fec8ee08bf Mon Sep 17 00:00:00 2001 From: Andrew Ochsner Date: Tue, 17 Oct 2023 13:13:03 -0500 Subject: [PATCH 057/102] clean up changeset Signed-off-by: Andrew Ochsner --- .changeset/clever-houses-scream.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/.changeset/clever-houses-scream.md b/.changeset/clever-houses-scream.md index 858f90ea71..4dac99fe18 100644 --- a/.changeset/clever-houses-scream.md +++ b/.changeset/clever-houses-scream.md @@ -44,7 +44,6 @@ '@backstage/plugin-events-backend-module-gitlab': patch '@backstage/plugin-catalog-backend-module-ldap': patch '@backstage/plugin-events-backend-module-azure': patch -'techdocs-cli-embedded-app': patch '@backstage/plugin-catalog-backend-module-aws': patch '@backstage/plugin-catalog-backend-module-gcp': patch '@backstage/plugin-github-pull-requests-board': patch @@ -186,7 +185,6 @@ '@backstage/plugin-tech-radar': patch 'example-app-next': patch '@backstage/cli-node': patch -'e2e-test': patch '@backstage/plugin-auth-node': patch '@backstage/plugin-codescene': patch '@backstage/plugin-dynatrace': patch @@ -196,7 +194,6 @@ '@backstage/plugin-shortcuts': patch '@backstage/plugin-sonarqube': patch '@backstage/plugin-xcmetrics': patch -'example-backend': patch '@backstage/plugin-airbrake': patch '@backstage/plugin-api-docs': patch '@backstage/plugin-app-node': patch From 9dcc4321f9c1b49e44f805001d4cfc9d4902dc61 Mon Sep 17 00:00:00 2001 From: Andrew Ochsner Date: Tue, 17 Oct 2023 13:13:25 -0500 Subject: [PATCH 058/102] clean up changeset Signed-off-by: Andrew Ochsner --- .changeset/clever-houses-scream.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/.changeset/clever-houses-scream.md b/.changeset/clever-houses-scream.md index 4dac99fe18..cc6b4036f7 100644 --- a/.changeset/clever-houses-scream.md +++ b/.changeset/clever-houses-scream.md @@ -225,8 +225,6 @@ '@backstage/plugin-kafka': patch '@backstage/plugin-nomad': patch '@backstage/plugin-vault': patch -'example-app': patch -'@backstage/cli': patch '@backstage/plugin-gocd': patch '@backstage/plugin-home': patch '@backstage/plugin-todo': patch From b3c950fd413a0587f76fb6186e723c49ad9b5b5a Mon Sep 17 00:00:00 2001 From: Andrew Ochsner Date: Mon, 23 Oct 2023 16:45:08 -0500 Subject: [PATCH 059/102] fix yarn.lock Signed-off-by: Andrew Ochsner --- yarn.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yarn.lock b/yarn.lock index 58bc492e8b..6ca6506973 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15444,7 +15444,7 @@ __metadata: languageName: node linkType: hard -"@smithy/node-http-handler@npm:^2.1.8": +"@smithy/node-http-handler@npm:^2.1.7, @smithy/node-http-handler@npm:^2.1.8": version: 2.1.8 resolution: "@smithy/node-http-handler@npm:2.1.8" dependencies: From db8ede850be03153539cef78cae0a3413d3af74e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Tue, 24 Oct 2023 09:18:54 +0200 Subject: [PATCH 060/102] splel MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .../src/apis/EntityPresentationApi/EntityPresentationApi.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/catalog-react/src/apis/EntityPresentationApi/EntityPresentationApi.ts b/plugins/catalog-react/src/apis/EntityPresentationApi/EntityPresentationApi.ts index bb84c1b71a..945bce1d27 100644 --- a/plugins/catalog-react/src/apis/EntityPresentationApi/EntityPresentationApi.ts +++ b/plugins/catalog-react/src/apis/EntityPresentationApi/EntityPresentationApi.ts @@ -59,7 +59,7 @@ export interface EntityRefPresentationSnapshot { * entity holds. When rendering the primary title, you may also want to * make sure to add more contextual information nearby such as the icon or * secondary title, since the primary could for example just be the - * `metadata.name` of tne entity which might be ambiguous to the reader. + * `metadata.name` of the entity which might be ambiguous to the reader. */ primaryTitle: string; /** From df90d7a90ee27979b08a220609ea768b570c56e5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 24 Oct 2023 07:44:11 +0000 Subject: [PATCH 061/102] chore(deps): update chromaui/action digest to 723135c Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/verify_storybook.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/verify_storybook.yml b/.github/workflows/verify_storybook.yml index e992a2d658..fe481f9882 100644 --- a/.github/workflows/verify_storybook.yml +++ b/.github/workflows/verify_storybook.yml @@ -51,7 +51,7 @@ jobs: - run: yarn build-storybook - - uses: chromaui/action@807600692d28833b717c155e15ed20905cdc865c # v1 + - uses: chromaui/action@723135c179d14b28039985d79da5c3d6ee1ac32e # v1 with: token: ${{ secrets.GITHUB_TOKEN }} # projectToken intentionally shared to allow collaborators to run Chromatic on forks From 5fcf852ee84819a5bf48c0568266605015b57b9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Tue, 24 Oct 2023 09:32:58 +0200 Subject: [PATCH 062/102] remove main master build badge MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 83f7512a07..ef371691de 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,6 @@ [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) [![CNCF Status](https://img.shields.io/badge/cncf%20status-incubation-blue.svg)](https://www.cncf.io/projects) -[![Main CI Build](https://github.com/backstage/backstage/workflows/Main%20Master%20Build/badge.svg)](https://github.com/backstage/backstage/actions?query=workflow%3A%22Main+Master+Build%22) [![Discord](https://img.shields.io/discord/687207715902193673)](https://discord.gg/backstage-687207715902193673) ![Code style](https://img.shields.io/badge/code_style-prettier-ff69b4.svg) [![Codecov](https://img.shields.io/codecov/c/github/backstage/backstage)](https://codecov.io/gh/backstage/backstage) From f981d5edcfe9213674e9450814ad832828399ccc Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 24 Oct 2023 10:50:08 +0200 Subject: [PATCH 063/102] catalog-backend-module-backstage-openapi: move over and tweak config schema Signed-off-by: Patrik Oldsberg --- packages/backend-openapi-utils/package.json | 4 +--- .../config.d.ts | 18 +++++++++++++----- .../package.json | 4 +++- .../InternalOpenApiDocumentationProvider.ts | 2 +- 4 files changed, 18 insertions(+), 10 deletions(-) rename {packages/backend-openapi-utils => plugins/catalog-backend-module-backstage-openapi}/config.d.ts (67%) diff --git a/packages/backend-openapi-utils/package.json b/packages/backend-openapi-utils/package.json index b7be1acf3c..15957dd4ac 100644 --- a/packages/backend-openapi-utils/package.json +++ b/packages/backend-openapi-utils/package.json @@ -34,10 +34,8 @@ "supertest": "^6.1.3" }, "files": [ - "dist", - "config.d.ts" + "dist" ], - "configSchema": "config.d.ts", "dependencies": { "@backstage/backend-plugin-api": "workspace:^", "@backstage/config": "workspace:^", diff --git a/packages/backend-openapi-utils/config.d.ts b/plugins/catalog-backend-module-backstage-openapi/config.d.ts similarity index 67% rename from packages/backend-openapi-utils/config.d.ts rename to plugins/catalog-backend-module-backstage-openapi/config.d.ts index 7256dc55e0..ce51640495 100644 --- a/packages/backend-openapi-utils/config.d.ts +++ b/plugins/catalog-backend-module-backstage-openapi/config.d.ts @@ -13,11 +13,19 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + export interface Config { - openapi?: { - /** - * A list of plugins, whose OpenAPI specs you want to collate in `InternalOpenApiDocumentationProvider`. - */ - plugins: string[]; + catalog?: { + providers?: { + /** + * BackstageOpenApiEntityProvider configuration + */ + backstageOpenapi?: { + /** + * A list of plugins, whose OpenAPI specs you want to collate in `InternalOpenApiDocumentationProvider`. + */ + plugins: string[]; + }; + }; }; } diff --git a/plugins/catalog-backend-module-backstage-openapi/package.json b/plugins/catalog-backend-module-backstage-openapi/package.json index d603e22f8a..05152fc99a 100644 --- a/plugins/catalog-backend-module-backstage-openapi/package.json +++ b/plugins/catalog-backend-module-backstage-openapi/package.json @@ -47,7 +47,9 @@ "openapi3-ts": "^3.1.2", "supertest": "^6.2.4" }, + "configSchema": "config.d.ts", "files": [ - "dist" + "dist", + "config.d.ts" ] } diff --git a/plugins/catalog-backend-module-backstage-openapi/src/InternalOpenApiDocumentationProvider.ts b/plugins/catalog-backend-module-backstage-openapi/src/InternalOpenApiDocumentationProvider.ts index 7700d3081b..33c461d95a 100644 --- a/plugins/catalog-backend-module-backstage-openapi/src/InternalOpenApiDocumentationProvider.ts +++ b/plugins/catalog-backend-module-backstage-openapi/src/InternalOpenApiDocumentationProvider.ts @@ -207,7 +207,7 @@ export class InternalOpenApiDocumentationProvider implements EntityProvider { async refresh(logger: LoggerService) { const pluginsToMerge = this.config.getStringArray( - 'catalog.providers.openapi.plugins', + 'catalog.providers.backstageOpenapi.plugins', ); logger.info(`Loading specs from from ${pluginsToMerge}.`); const documentationEntity: ApiEntity = { From 66a7ea42836c1484e2bbaeb7ce3b2a7421d3cce0 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 24 Oct 2023 12:38:02 +0200 Subject: [PATCH 064/102] changesets: fix doc link Signed-off-by: Patrik Oldsberg --- .changeset/red-beers-roll.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/red-beers-roll.md b/.changeset/red-beers-roll.md index d5d2d36511..3c061ce377 100644 --- a/.changeset/red-beers-roll.md +++ b/.changeset/red-beers-roll.md @@ -2,4 +2,4 @@ '@backstage/plugin-search-backend-module-techdocs': patch --- -The process of adding or modifying fields in the techdocs search index has been simplified. For more details, see [How to customize fields in the Software Catalog or TechDocs index](../docs/features/search/how-to-guides.md#how-to-customize-fields-in-the-software-catalog-or-techdocs-index). +The process of adding or modifying fields in the techdocs search index has been simplified. For more details, see [How to customize fields in the Software Catalog or TechDocs index](https://backstage.io/docs/features/search/how-to-guides.md#how-to-customize-fields-in-the-software-catalog-or-techdocs-index). From 8345a35d04e32b73cab15ae9f9e0a549c6dee6d7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 24 Oct 2023 11:04:16 +0000 Subject: [PATCH 065/102] Version Packages (next) --- .changeset/pre.json | 93 +- docs/releases/v1.20.0-next.0-changelog.md | 3261 +++++++++++++++++ package.json | 2 +- packages/app-defaults/CHANGELOG.md | 12 + packages/app-defaults/package.json | 2 +- packages/app-next-example-plugin/CHANGELOG.md | 8 + packages/app-next-example-plugin/package.json | 2 +- packages/app-next/CHANGELOG.md | 77 + packages/app-next/package.json | 2 +- packages/app/CHANGELOG.md | 77 + packages/app/package.json | 2 +- packages/backend-app-api/CHANGELOG.md | 18 + packages/backend-app-api/package.json | 2 +- packages/backend-common/CHANGELOG.md | 16 + packages/backend-common/package.json | 2 +- packages/backend-defaults/CHANGELOG.md | 9 + packages/backend-defaults/package.json | 2 +- packages/backend-next/CHANGELOG.md | 41 + packages/backend-next/package.json | 2 +- packages/backend-openapi-utils/CHANGELOG.md | 14 + packages/backend-openapi-utils/package.json | 2 +- packages/backend-plugin-api/CHANGELOG.md | 11 + packages/backend-plugin-api/package.json | 2 +- packages/backend-plugin-manager/CHANGELOG.md | 23 + packages/backend-plugin-manager/package.json | 2 +- packages/backend-tasks/CHANGELOG.md | 10 + packages/backend-tasks/package.json | 2 +- packages/backend-test-utils/CHANGELOG.md | 13 + packages/backend-test-utils/package.json | 2 +- packages/backend/CHANGELOG.md | 59 + packages/backend/package.json | 2 +- packages/cli-node/CHANGELOG.md | 13 + packages/cli-node/package.json | 2 +- packages/cli/CHANGELOG.md | 25 + packages/cli/package.json | 2 +- packages/config-loader/CHANGELOG.md | 11 + packages/config-loader/package.json | 2 +- packages/core-app-api/CHANGELOG.md | 13 + packages/core-app-api/package.json | 2 +- packages/core-compat-api/CHANGELOG.md | 9 + packages/core-compat-api/package.json | 2 +- packages/core-components/CHANGELOG.md | 20 + packages/core-components/package.json | 2 +- packages/core-plugin-api/CHANGELOG.md | 17 + packages/core-plugin-api/package.json | 2 +- packages/create-app/CHANGELOG.md | 9 + packages/create-app/package.json | 2 +- packages/dev-utils/CHANGELOG.md | 16 + packages/dev-utils/package.json | 2 +- packages/e2e-test/CHANGELOG.md | 9 + packages/e2e-test/package.json | 2 +- packages/frontend-app-api/CHANGELOG.md | 24 + packages/frontend-app-api/package.json | 2 +- packages/frontend-plugin-api/CHANGELOG.md | 16 + packages/frontend-plugin-api/package.json | 2 +- packages/integration-react/CHANGELOG.md | 10 + packages/integration-react/package.json | 2 +- packages/repo-tools/CHANGELOG.md | 17 + packages/repo-tools/package.json | 2 +- .../techdocs-cli-embedded-app/CHANGELOG.md | 19 + .../techdocs-cli-embedded-app/package.json | 2 +- packages/techdocs-cli/CHANGELOG.md | 11 + packages/techdocs-cli/package.json | 2 +- packages/test-utils/CHANGELOG.md | 14 + packages/test-utils/package.json | 2 +- packages/theme/CHANGELOG.md | 6 + packages/theme/package.json | 2 +- packages/version-bridge/CHANGELOG.md | 6 + packages/version-bridge/package.json | 2 +- plugins/adr-backend/CHANGELOG.md | 15 + plugins/adr-backend/package.json | 2 +- plugins/adr/CHANGELOG.md | 17 + plugins/adr/package.json | 2 +- plugins/airbrake-backend/CHANGELOG.md | 9 + plugins/airbrake-backend/package.json | 2 +- plugins/airbrake/CHANGELOG.md | 14 + plugins/airbrake/package.json | 2 +- plugins/allure/CHANGELOG.md | 12 + plugins/allure/package.json | 2 +- plugins/analytics-module-ga/CHANGELOG.md | 11 + plugins/analytics-module-ga/package.json | 2 +- plugins/analytics-module-ga4/CHANGELOG.md | 11 + plugins/analytics-module-ga4/package.json | 2 +- .../CHANGELOG.md | 10 + .../package.json | 2 +- plugins/apache-airflow/CHANGELOG.md | 9 + plugins/apache-airflow/package.json | 2 +- .../CHANGELOG.md | 6 + .../package.json | 2 +- plugins/api-docs/CHANGELOG.md | 13 + plugins/api-docs/package.json | 2 +- plugins/apollo-explorer/CHANGELOG.md | 10 + plugins/apollo-explorer/package.json | 2 +- plugins/app-backend/CHANGELOG.md | 12 + plugins/app-backend/package.json | 2 +- plugins/app-node/CHANGELOG.md | 7 + plugins/app-node/package.json | 2 +- .../CHANGELOG.md | 10 + .../package.json | 2 +- .../CHANGELOG.md | 9 + .../package.json | 2 +- .../CHANGELOG.md | 9 + .../package.json | 2 +- .../CHANGELOG.md | 8 + .../package.json | 2 +- .../CHANGELOG.md | 10 + .../package.json | 2 +- .../CHANGELOG.md | 9 + .../package.json | 2 +- .../CHANGELOG.md | 9 + .../package.json | 2 +- plugins/auth-backend/CHANGELOG.md | 25 + plugins/auth-backend/package.json | 2 +- plugins/auth-node/CHANGELOG.md | 13 + plugins/auth-node/package.json | 2 +- plugins/azure-devops-backend/CHANGELOG.md | 10 + plugins/azure-devops-backend/package.json | 2 +- plugins/azure-devops/CHANGELOG.md | 15 + plugins/azure-devops/package.json | 2 +- plugins/azure-sites-backend/CHANGELOG.md | 9 + plugins/azure-sites-backend/package.json | 2 +- plugins/azure-sites/CHANGELOG.md | 13 + plugins/azure-sites/package.json | 2 +- plugins/badges-backend/CHANGELOG.md | 13 + plugins/badges-backend/package.json | 2 +- plugins/badges/CHANGELOG.md | 13 + plugins/badges/package.json | 2 +- plugins/bazaar-backend/CHANGELOG.md | 12 + plugins/bazaar-backend/package.json | 2 +- plugins/bazaar/CHANGELOG.md | 16 + plugins/bazaar/package.json | 2 +- plugins/bitrise/CHANGELOG.md | 12 + plugins/bitrise/package.json | 2 +- .../catalog-backend-module-aws/CHANGELOG.md | 18 + .../catalog-backend-module-aws/package.json | 2 +- .../catalog-backend-module-azure/CHANGELOG.md | 16 + .../catalog-backend-module-azure/package.json | 2 +- .../CHANGELOG.md | 19 + .../package.json | 2 +- .../CHANGELOG.md | 17 + .../package.json | 2 +- .../CHANGELOG.md | 14 + .../package.json | 2 +- .../CHANGELOG.md | 14 + .../package.json | 2 +- .../catalog-backend-module-gcp/CHANGELOG.md | 12 + .../catalog-backend-module-gcp/package.json | 2 +- .../CHANGELOG.md | 14 + .../package.json | 2 +- .../CHANGELOG.md | 12 + .../package.json | 2 +- .../CHANGELOG.md | 17 + .../package.json | 2 +- .../CHANGELOG.md | 14 + .../package.json | 2 +- .../CHANGELOG.md | 16 + .../package.json | 2 +- .../catalog-backend-module-ldap/CHANGELOG.md | 13 + .../catalog-backend-module-ldap/package.json | 2 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 14 + .../package.json | 2 +- .../CHANGELOG.md | 14 + .../package.json | 2 +- .../CHANGELOG.md | 12 + .../package.json | 2 +- .../CHANGELOG.md | 9 + .../package.json | 2 +- plugins/catalog-backend/CHANGELOG.md | 39 + plugins/catalog-backend/package.json | 2 +- plugins/catalog-graph/CHANGELOG.md | 14 + plugins/catalog-graph/package.json | 2 +- plugins/catalog-graphql/CHANGELOG.md | 10 + plugins/catalog-graphql/package.json | 2 +- plugins/catalog-import/CHANGELOG.md | 20 + plugins/catalog-import/package.json | 2 +- plugins/catalog-node/CHANGELOG.md | 12 + plugins/catalog-node/package.json | 2 +- plugins/catalog-react/CHANGELOG.md | 44 + plugins/catalog-react/package.json | 2 +- .../catalog-unprocessed-entities/CHANGELOG.md | 12 + .../catalog-unprocessed-entities/package.json | 2 +- plugins/catalog/CHANGELOG.md | 38 + plugins/catalog/package.json | 2 +- .../CHANGELOG.md | 10 + .../package.json | 2 +- plugins/cicd-statistics/CHANGELOG.md | 10 + plugins/cicd-statistics/package.json | 2 +- plugins/circleci/CHANGELOG.md | 12 + plugins/circleci/package.json | 2 +- plugins/cloudbuild/CHANGELOG.md | 12 + plugins/cloudbuild/package.json | 2 +- plugins/code-climate/CHANGELOG.md | 12 + plugins/code-climate/package.json | 2 +- plugins/code-coverage-backend/CHANGELOG.md | 15 + plugins/code-coverage-backend/package.json | 2 +- plugins/code-coverage/CHANGELOG.md | 15 + plugins/code-coverage/package.json | 2 +- plugins/codescene/CHANGELOG.md | 12 + plugins/codescene/package.json | 2 +- plugins/config-schema/CHANGELOG.md | 13 + plugins/config-schema/package.json | 2 +- plugins/cost-insights/CHANGELOG.md | 14 + plugins/cost-insights/package.json | 2 +- plugins/devtools-backend/CHANGELOG.md | 17 + plugins/devtools-backend/package.json | 2 +- plugins/devtools/CHANGELOG.md | 14 + plugins/devtools/package.json | 2 +- plugins/dynatrace/CHANGELOG.md | 12 + plugins/dynatrace/package.json | 2 +- plugins/entity-feedback-backend/CHANGELOG.md | 13 + plugins/entity-feedback-backend/package.json | 2 +- plugins/entity-feedback/CHANGELOG.md | 14 + plugins/entity-feedback/package.json | 2 +- plugins/entity-validation/CHANGELOG.md | 15 + plugins/entity-validation/package.json | 2 +- .../CHANGELOG.md | 12 + .../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 | 11 + .../example-todo-list-backend/package.json | 2 +- plugins/example-todo-list/CHANGELOG.md | 9 + plugins/example-todo-list/package.json | 2 +- plugins/explore-backend/CHANGELOG.md | 12 + plugins/explore-backend/package.json | 2 +- plugins/explore-react/CHANGELOG.md | 9 + plugins/explore-react/package.json | 2 +- plugins/explore/CHANGELOG.md | 18 + plugins/explore/package.json | 2 +- plugins/firehydrant/CHANGELOG.md | 12 + plugins/firehydrant/package.json | 2 +- plugins/fossa/CHANGELOG.md | 13 + plugins/fossa/package.json | 2 +- plugins/gcalendar/CHANGELOG.md | 11 + plugins/gcalendar/package.json | 2 +- plugins/gcp-projects/CHANGELOG.md | 10 + plugins/gcp-projects/package.json | 2 +- plugins/git-release-manager/CHANGELOG.md | 11 + plugins/git-release-manager/package.json | 2 +- plugins/github-actions/CHANGELOG.md | 14 + plugins/github-actions/package.json | 2 +- plugins/github-deployments/CHANGELOG.md | 15 + plugins/github-deployments/package.json | 2 +- plugins/github-issues/CHANGELOG.md | 14 + plugins/github-issues/package.json | 2 +- .../github-pull-requests-board/CHANGELOG.md | 13 + .../github-pull-requests-board/package.json | 2 +- plugins/gitops-profiles/CHANGELOG.md | 11 + plugins/gitops-profiles/package.json | 2 +- plugins/gocd/CHANGELOG.md | 13 + plugins/gocd/package.json | 2 +- plugins/graphiql/CHANGELOG.md | 16 + plugins/graphiql/package.json | 2 +- plugins/graphql-backend/CHANGELOG.md | 9 + plugins/graphql-backend/package.json | 2 +- plugins/graphql-voyager/CHANGELOG.md | 10 + plugins/graphql-voyager/package.json | 2 +- plugins/home-react/CHANGELOG.md | 9 + plugins/home-react/package.json | 2 +- plugins/home/CHANGELOG.md | 20 + plugins/home/package.json | 2 +- plugins/ilert/CHANGELOG.md | 13 + plugins/ilert/package.json | 2 +- plugins/jenkins-backend/CHANGELOG.md | 17 + plugins/jenkins-backend/package.json | 2 +- plugins/jenkins/CHANGELOG.md | 14 + plugins/jenkins/package.json | 2 +- plugins/kafka-backend/CHANGELOG.md | 12 + plugins/kafka-backend/package.json | 2 +- plugins/kafka/CHANGELOG.md | 13 + plugins/kafka/package.json | 2 +- plugins/kubernetes-backend/CHANGELOG.md | 20 + plugins/kubernetes-backend/package.json | 2 +- plugins/kubernetes-cluster/CHANGELOG.md | 16 + plugins/kubernetes-cluster/package.json | 2 +- plugins/kubernetes-common/CHANGELOG.md | 11 + plugins/kubernetes-common/package.json | 2 +- plugins/kubernetes-node/CHANGELOG.md | 9 + plugins/kubernetes-node/package.json | 2 +- plugins/kubernetes-react/CHANGELOG.md | 13 + plugins/kubernetes-react/package.json | 2 +- plugins/kubernetes/CHANGELOG.md | 17 + plugins/kubernetes/package.json | 2 +- plugins/lighthouse-backend/CHANGELOG.md | 15 + plugins/lighthouse-backend/package.json | 2 +- plugins/lighthouse/CHANGELOG.md | 14 + plugins/lighthouse/package.json | 2 +- plugins/linguist-backend/CHANGELOG.md | 17 + plugins/linguist-backend/package.json | 2 +- plugins/linguist/CHANGELOG.md | 14 + plugins/linguist/package.json | 2 +- plugins/microsoft-calendar/CHANGELOG.md | 11 + plugins/microsoft-calendar/package.json | 2 +- plugins/newrelic-dashboard/CHANGELOG.md | 12 + plugins/newrelic-dashboard/package.json | 2 +- plugins/newrelic/CHANGELOG.md | 10 + plugins/newrelic/package.json | 2 +- plugins/nomad-backend/CHANGELOG.md | 10 + plugins/nomad-backend/package.json | 2 +- plugins/nomad/CHANGELOG.md | 13 + plugins/nomad/package.json | 2 +- plugins/octopus-deploy/CHANGELOG.md | 12 + plugins/octopus-deploy/package.json | 2 +- plugins/opencost/CHANGELOG.md | 10 + plugins/opencost/package.json | 2 +- plugins/org-react/CHANGELOG.md | 13 + plugins/org-react/package.json | 2 +- plugins/org/CHANGELOG.md | 12 + plugins/org/package.json | 2 +- plugins/pagerduty/CHANGELOG.md | 14 + plugins/pagerduty/package.json | 2 +- plugins/periskop-backend/CHANGELOG.md | 10 + plugins/periskop-backend/package.json | 2 +- plugins/periskop/CHANGELOG.md | 13 + plugins/periskop/package.json | 2 +- .../CHANGELOG.md | 11 + .../package.json | 2 +- plugins/permission-backend/CHANGELOG.md | 13 + plugins/permission-backend/package.json | 2 +- plugins/permission-node/CHANGELOG.md | 12 + plugins/permission-node/package.json | 2 +- plugins/permission-react/CHANGELOG.md | 10 + plugins/permission-react/package.json | 2 +- plugins/playlist-backend/CHANGELOG.md | 16 + plugins/playlist-backend/package.json | 2 +- plugins/playlist/CHANGELOG.md | 18 + plugins/playlist/package.json | 2 +- plugins/proxy-backend/CHANGELOG.md | 10 + plugins/proxy-backend/package.json | 2 +- plugins/puppetdb/CHANGELOG.md | 13 + plugins/puppetdb/package.json | 2 +- plugins/rollbar-backend/CHANGELOG.md | 8 + plugins/rollbar-backend/package.json | 2 +- plugins/rollbar/CHANGELOG.md | 12 + plugins/rollbar/package.json | 2 +- .../CHANGELOG.md | 12 + .../package.json | 2 +- .../CHANGELOG.md | 12 + .../package.json | 2 +- .../CHANGELOG.md | 11 + .../package.json | 2 +- .../CHANGELOG.md | 12 + .../package.json | 2 +- .../CHANGELOG.md | 9 + .../package.json | 2 +- .../CHANGELOG.md | 9 + .../package.json | 2 +- plugins/scaffolder-backend/CHANGELOG.md | 32 + plugins/scaffolder-backend/package.json | 2 +- plugins/scaffolder-common/CHANGELOG.md | 10 + plugins/scaffolder-common/package.json | 2 +- plugins/scaffolder-node/CHANGELOG.md | 14 + plugins/scaffolder-node/package.json | 2 +- plugins/scaffolder-react/CHANGELOG.md | 27 + plugins/scaffolder-react/package.json | 2 +- plugins/scaffolder/CHANGELOG.md | 32 + plugins/scaffolder/package.json | 2 +- .../CHANGELOG.md | 18 + .../package.json | 2 +- .../CHANGELOG.md | 12 + .../package.json | 2 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- plugins/search-backend-module-pg/CHANGELOG.md | 11 + plugins/search-backend-module-pg/package.json | 2 +- .../CHANGELOG.md | 17 + .../package.json | 2 +- .../CHANGELOG.md | 19 + .../package.json | 2 +- plugins/search-backend-node/CHANGELOG.md | 14 + plugins/search-backend-node/package.json | 2 +- plugins/search-backend/CHANGELOG.md | 18 + plugins/search-backend/package.json | 2 +- plugins/search-react/CHANGELOG.md | 18 + plugins/search-react/package.json | 2 +- plugins/search/CHANGELOG.md | 22 + plugins/search/package.json | 2 +- plugins/sentry/CHANGELOG.md | 12 + plugins/sentry/package.json | 2 +- plugins/shortcuts/CHANGELOG.md | 11 + plugins/shortcuts/package.json | 2 +- plugins/sonarqube-backend/CHANGELOG.md | 10 + plugins/sonarqube-backend/package.json | 2 +- plugins/sonarqube-react/CHANGELOG.md | 9 + plugins/sonarqube-react/package.json | 2 +- plugins/sonarqube/CHANGELOG.md | 14 + plugins/sonarqube/package.json | 2 +- plugins/splunk-on-call/CHANGELOG.md | 12 + plugins/splunk-on-call/package.json | 2 +- plugins/stack-overflow-backend/CHANGELOG.md | 14 + plugins/stack-overflow-backend/package.json | 2 +- plugins/stack-overflow/CHANGELOG.md | 16 + plugins/stack-overflow/package.json | 2 +- plugins/stackstorm/CHANGELOG.md | 11 + plugins/stackstorm/package.json | 2 +- .../CHANGELOG.md | 11 + .../package.json | 2 +- plugins/tech-insights-backend/CHANGELOG.md | 16 + plugins/tech-insights-backend/package.json | 2 +- plugins/tech-insights-node/CHANGELOG.md | 11 + plugins/tech-insights-node/package.json | 2 +- plugins/tech-insights/CHANGELOG.md | 15 + plugins/tech-insights/package.json | 2 +- plugins/tech-radar/CHANGELOG.md | 12 + plugins/tech-radar/package.json | 2 +- .../techdocs-addons-test-utils/CHANGELOG.md | 17 + .../techdocs-addons-test-utils/package.json | 2 +- plugins/techdocs-backend/CHANGELOG.md | 19 + plugins/techdocs-backend/package.json | 2 +- .../CHANGELOG.md | 14 + .../package.json | 2 +- plugins/techdocs-node/CHANGELOG.md | 13 + plugins/techdocs-node/package.json | 2 +- plugins/techdocs-react/CHANGELOG.md | 12 + plugins/techdocs-react/package.json | 2 +- plugins/techdocs/CHANGELOG.md | 27 + plugins/techdocs/package.json | 2 +- plugins/todo-backend/CHANGELOG.md | 15 + plugins/todo-backend/package.json | 2 +- plugins/todo/CHANGELOG.md | 14 + plugins/todo/package.json | 2 +- plugins/user-settings-backend/CHANGELOG.md | 15 + plugins/user-settings-backend/package.json | 2 +- plugins/user-settings/CHANGELOG.md | 16 + plugins/user-settings/package.json | 2 +- plugins/vault-backend/CHANGELOG.md | 44 + plugins/vault-backend/package.json | 2 +- plugins/vault-node/CHANGELOG.md | 13 + plugins/vault-node/package.json | 2 +- plugins/vault/CHANGELOG.md | 13 + plugins/vault/package.json | 2 +- plugins/xcmetrics/CHANGELOG.md | 11 + plugins/xcmetrics/package.json | 2 +- yarn.lock | 331 +- 450 files changed, 7094 insertions(+), 295 deletions(-) create mode 100644 docs/releases/v1.20.0-next.0-changelog.md create mode 100644 packages/core-compat-api/CHANGELOG.md create mode 100644 plugins/catalog-backend-module-backstage-openapi/CHANGELOG.md create mode 100644 plugins/search-backend-module-stack-overflow-collator/CHANGELOG.md create mode 100644 plugins/vault-node/CHANGELOG.md diff --git a/.changeset/pre.json b/.changeset/pre.json index 4a9428d0cd..eb4c8454ac 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -250,7 +250,96 @@ "@backstage/plugin-user-settings-backend": "0.2.4", "@backstage/plugin-vault": "0.1.20", "@backstage/plugin-vault-backend": "0.3.11", - "@backstage/plugin-xcmetrics": "0.2.44" + "@backstage/plugin-xcmetrics": "0.2.44", + "@backstage/core-compat-api": "0.0.0", + "@backstage/plugin-catalog-backend-module-backstage-openapi": "0.0.0", + "@backstage/plugin-search-backend-module-stack-overflow-collator": "0.0.0", + "@backstage/plugin-vault-node": "0.0.0" }, - "changesets": [] + "changesets": [ + "chatty-cobras-cheer", + "chilled-knives-rule", + "chilly-books-sneeze", + "chilly-terms-behave", + "dirty-ducks-behave", + "dry-days-invite", + "eighty-chairs-camp", + "fair-parrots-lick", + "fast-bears-lick", + "fifty-taxis-allow", + "flat-ducks-buy", + "fluffy-years-shake", + "four-files-behave", + "four-pears-swim", + "fresh-crews-promise", + "fresh-schools-thank", + "gentle-pears-camp", + "giant-cars-walk", + "giant-cycles-end", + "good-plums-confess", + "great-baboons-allow", + "healthy-shirts-fold", + "heavy-experts-accept", + "hip-mugs-camp", + "hungry-paws-dress", + "hungry-radios-play", + "large-forks-arrive", + "lazy-hotels-wait", + "long-turkeys-argue", + "loud-ghosts-deny", + "many-masks-smoke", + "mighty-crews-attack", + "modern-ducks-battle", + "nasty-colts-tickle", + "new-beers-drive", + "nice-apes-kneel", + "nice-pillows-poke", + "ninety-numbers-study", + "old-apricots-taste", + "old-chairs-switch", + "olive-paws-divide", + "plenty-tigers-argue", + "poor-seahorses-rush", + "popular-bikes-do", + "pretty-swans-worry", + "quick-pumpkins-shave", + "quick-roses-move", + "real-carrots-brake", + "real-jars-yawn", + "red-beers-roll", + "red-yaks-press", + "rich-pugs-chew", + "rude-tomatoes-itch", + "shaggy-beers-collect", + "shaggy-buses-beg", + "sharp-falcons-clean", + "shiny-geese-watch", + "sixty-tips-argue", + "small-buckets-roll", + "smart-dancers-watch", + "sour-toes-joke", + "stale-rice-count", + "strange-queens-deliver", + "strong-taxis-wait", + "sweet-buckets-fry", + "sweet-countries-share", + "swift-mice-care", + "tall-colts-roll", + "tender-lies-wonder", + "tender-maps-type", + "thick-dolphins-boil", + "thirty-stingrays-grin", + "three-moles-mix", + "tidy-camels-boil", + "tricky-cups-hammer", + "tricky-vans-behave", + "violet-lamps-appear", + "wet-cows-brake", + "wicked-ties-knock", + "wild-cows-watch", + "wild-geese-occur", + "wise-waves-approve", + "wise-weeks-design", + "young-days-talk" + ] } diff --git a/docs/releases/v1.20.0-next.0-changelog.md b/docs/releases/v1.20.0-next.0-changelog.md new file mode 100644 index 0000000000..521cbe0d8b --- /dev/null +++ b/docs/releases/v1.20.0-next.0-changelog.md @@ -0,0 +1,3261 @@ +# Release v1.20.0-next.0 + +## @backstage/backend-openapi-utils@0.1.0-next.0 + +### Minor Changes + +- 785fb1ea75: Adds a new route, `/openapi.json` to validated routers for displaying their full OpenAPI spec in a standard endpoint. + +### Patch Changes + +- 6694b369a3: Adds a new function `wrapInOpenApiTestServer` that allows for proxied requests at runtime. This will support the new `yarn backstage-repo-tools schema openapi test` command. +- Updated dependencies + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/cli@0.24.0-next.0 + +### Minor Changes + +- 8db5c3cd7a: Removed support for the `publishConfig.alphaTypes` and `.betaTypes` fields that were used together with `--experimental-type-build` to generate `/alpha` and `/beta` entry points. Use the `exports` field to achieve this instead. +- 4e36abef14: Remove support for the deprecated `--experimental-type-build` option for `package build`. + +### Patch Changes + +- 4ba4ac351f: Switch from using deprecated `@esbuild-kit/*` packages to using `tsx`. This also switches to using the new module loader `register` API when available, avoiding the experimental warning when starting backends. +- 6bf7561d3c: The experimental package detection will now ignore packages that don't make `package.json` available. +- e14cbf563d: Added `EXPERIMENTAL_VITE` flag for using [vite](https://vitejs.dev) as dev server instead of Webpack +- 7cd34392f5: Ignore `stdin` when spawning backend child process for the `start` command. Fixing an issue where backend startup would hang. +- Updated dependencies + - @backstage/config-loader@1.5.2-next.0 + - @backstage/cli-node@0.2.0-next.0 + - @backstage/integration@1.7.1 + - @backstage/catalog-model@1.4.3 + - @backstage/cli-common@0.1.13 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/eslint-plugin@0.1.3 + - @backstage/release-manifests@0.0.10 + - @backstage/types@1.1.1 + +## @backstage/cli-node@0.2.0-next.0 + +### Minor Changes + +- 8db5c3cd7a: Removed support for the `publishConfig.alphaTypes` and `.betaTypes` fields that were used together with `--experimental-type-build` to generate `/alpha` and `/beta` entry points. Use the `exports` field to achieve this instead. + +### Patch Changes + +- Updated dependencies + - @backstage/cli-common@0.1.13 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/core-plugin-api@1.8.0-next.0 + +### Minor Changes + +- 1e5b7d993a: `IconComponent` can now have a `fontSize` of `inherit`, which is useful for in-line icons. +- cb6db75bc2: Introduced `AnyRouteRefParams` as a replacement for `AnyParams`, which is now deprecated. + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- cb6db75bc2: Deprecated several types related to the routing system that are scheduled to be removed, as well as several fields on the route ref types themselves. +- 68fc9dc60e: Added a new `/alpha` export `convertLegacyRouteRef`, which is a temporary utility to allow existing route refs to be used with the new experimental packages. +- Updated dependencies + - @backstage/version-bridge@1.0.7-next.0 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + +## @backstage/frontend-app-api@0.3.0-next.0 + +### Minor Changes + +- 68fc9dc60e: Added the ability to configure bound routes through `app.routes.bindings`. The routing system used by `createApp` has been replaced by one that only supports route refs of the new format from `@backstage/frontend-plugin-api`. The requirement for route refs to have the same ID as their associated extension has been removed. + +### Patch Changes + +- e28d379e32: Refactor internal extension instance system into an app graph. +- 6c2b872153: Add official support for React 18. +- dc613f9bcf: Updated `app.extensions` configuration schema. +- 685a4c8901: Installed features are now deduplicated both by reference and ID when available. Features passed to `createApp` now override both discovered and loaded features. +- bb98953cb9: Register default implementation for the `Translation API` on the new `createApp`. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/frontend-plugin-api@0.3.0-next.0 + - @backstage/plugin-graphiql@0.3.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/version-bridge@1.0.7-next.0 + - @backstage/core-app-api@1.11.1-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + +## @backstage/frontend-plugin-api@0.3.0-next.0 + +### Minor Changes + +- 68fc9dc60e: Added `RouteRef`, `SubRouteRef`, `ExternalRouteRef`, and related types. All exports from this package that previously relied on the types with the same name from `@backstage/core-plugin-api` now use the new types instead. To convert and existing legacy route ref to be compatible with the APIs from this package, use the `convertLegacyRouteRef` utility from `@backstage/core-plugin-api/alpha`. + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- 6af88a05ff: Improve the extension boundary component and create a default extension suspense component. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/version-bridge@1.0.7-next.0 + - @backstage/types@1.1.1 + +## @backstage/repo-tools@0.4.0-next.0 + +### Minor Changes + +- 4e36abef14: Remove support for the deprecated `--experimental-type-build` option for `package build`. +- 6694b369a3: Adds a new command `schema openapi test` that performs runtime validation of your OpenAPI specs using your test data. Under the hood, we're using Optic to perform this check, really cool work by them! + + To use this new command, you will have to run `yarn add @useoptic/optic` in the root of your repo. + +### Patch Changes + +- Updated dependencies + - @backstage/cli-node@0.2.0-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/cli-common@0.1.13 + - @backstage/errors@1.2.3 + +## @backstage/plugin-auth-backend@0.20.0-next.0 + +### Minor Changes + +- bdf08ad04a: Adds the StaticTokenIssuer and StaticKeyStore, an alternative token issuer that can be used to sign the Authorization header using a predefined public/private key pair. + +### Patch Changes + +- 96c4f54bf6: Reverted the Microsoft auth provider to the previous implementation. +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-backend-module-gcp-iap-provider@0.2.1-next.0 + - @backstage/plugin-auth-backend-module-github-provider@0.1.4-next.0 + - @backstage/plugin-auth-backend-module-gitlab-provider@0.1.4-next.0 + - @backstage/plugin-auth-backend-module-google-provider@0.1.4-next.0 + - @backstage/plugin-auth-backend-module-oauth2-provider@0.1.4-next.0 + - @backstage/plugin-auth-node@0.4.1-next.0 + - @backstage/plugin-catalog-node@1.4.8-next.0 + +## @backstage/plugin-catalog@1.15.0-next.0 + +### Minor Changes + +- 1e5b7d993a: Added the `DefaultEntityPresentationApi`, which is an implementation of the + `EntityPresentationApi` that `@backstage/plugin-catalog-react` exposes through + its `entityPresentationApiRef`. This implementation is also by default made + available automatically by the catalog plugin, unless you replace it with a + custom one. It batch fetches and caches data from the catalog as needed for + display, and is customizable by adopters to add their own rendering functions. + +### Patch Changes + +- 8a8445663b: Migrate catalog entity cards to new frontend system extension format. + +- e964c17db9: Use default extensions boundary and suspense on the alpha declarative `createCatalogFilterExtension` extension factory. + +- 71c97e7d73: The \`spec.lifecycle' field in entities will now always be rendered as a string. + +- 6c2b872153: Add official support for React 18. + +- 0bf6ebda88: Initial entity page implementation for new frontend system at `/alpha`, with an overview page enabled by default and the about card available as an optional card. + +- bb98953cb9: Create declarative extensions for the `Catalog` plugin; this initial plugin preset contains sidebar item, index page and filter extensions, all distributed via `/alpha` subpath. + + The `EntityPage` will be migrated in a follow-up patch. + +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/frontend-plugin-api@0.3.0-next.0 + - @backstage/plugin-scaffolder-common@1.4.3-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/integration-react@1.1.21-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-search-react@1.7.2-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.17 + - @backstage/plugin-search-common@1.2.7 + +## @backstage/plugin-catalog-backend@1.15.0-next.0 + +### Minor Changes + +- 8d756968f9: Introduce a new optional config parameter `catalog.stitchingStrategy.mode`, + which can have the values `'immediate'` (default) and `'deferred'`. The default + is for stitching to work as it did before this change, which means that it + happens "in-band" (blocking) immediately when each processing task finishes. + When set to `'deferred'`, stitching is instead deferred to happen on a separate + asynchronous worker queue just like processing. + + Deferred stitching should make performance smoother when ingesting large amounts + of entities, and reduce p99 processing times and repeated over-stitching of + hot spot entities when fan-out/fan-in in terms of relations is very large. It + does however also come with some performance cost due to the queuing with how + much wall-clock time some types of task take. + +### Patch Changes + +- 6694b369a3: Update the OpenAPI spec with more complete error responses and request bodies using Optic. Also, updates the test cases to use the new `supertest` pass through from `@backstage/backend-openapi-utils`. +- Updated dependencies + - @backstage/backend-openapi-utils@0.1.0-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.1-next.0 + - @backstage/plugin-catalog-common@1.0.17 + - @backstage/plugin-catalog-node@1.4.8-next.0 + - @backstage/plugin-events-node@0.2.16-next.0 + - @backstage/plugin-permission-common@0.7.9 + - @backstage/plugin-permission-node@0.7.18-next.0 + - @backstage/plugin-search-backend-module-catalog@0.1.11-next.0 + +## @backstage/plugin-catalog-backend-module-backstage-openapi@0.1.0-next.0 + +### Minor Changes + +- 785fb1ea75: Adds a new catalog module for ingesting Backstage plugin OpenAPI specs into the catalog for display as an API entity. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-openapi-utils@0.1.0-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-node@1.4.8-next.0 + +## @backstage/plugin-catalog-react@1.9.0-next.0 + +### Minor Changes + +- 1e5b7d993a: Added an `EntityPresentationApi` and associated `entityPresentationApiRef`. This + API lets you control how references to entities (e.g. in links, headings, + iconography etc) are represented in the user interface. + + Usage of this API is initially added to the `EntityRefLink` and `EntityRefLinks` + components, so that they can render richer, more correct representation of + entity refs. There's also a new `EntityDisplayName` component, which works just like + the `EntityRefLink` but without the link. + + Along with that change, the `fetchEntities` and `getTitle` props of + `EntityRefLinksProps` are deprecated and no longer used, since the same need + instead is fulfilled (and by default always enabled) by the + `entityPresentationApiRef`. + +- 1fd53fa0c6: The `UserListPicker` component has undergone improvements to enhance its performance. + + The previous implementation inferred the number of owned and starred entities based on the entities available in the `EntityListContext`. The updated version no longer relies on the `EntityListContext` for inference, allowing for better decoupling. + + The component now loads the entities' count asynchronously, resulting in improved performance and responsiveness. For this purpose, some of the exported filters such as `EntityTagFilter`, `EntityOwnerFilter`, `EntityLifecycleFilter` and `EntityNamespaceFilter` have now the `getCatalogFilters` method implemented. + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- 0bf6ebda88: Added new APIs at the `/alpha` subpath for creating entity page cards and content for the new frontend system. +- 71c97e7d73: The `spec.type` field in entities will now always be rendered as a string. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/frontend-plugin-api@0.3.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-permission-react@0.4.17-next.0 + - @backstage/version-bridge@1.0.7-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/integration@1.7.1 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.17 + - @backstage/plugin-permission-common@0.7.9 + +## @backstage/plugin-graphiql@0.3.0-next.0 + +### Minor Changes + +- 57fda44b90: Upgrade to GraphiQL to 3.0.6 + +### Patch Changes + +- 68fc9dc60e: Updated alpha exports according to routing changes in `@backstage/frontend-plugin-api`. +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/frontend-plugin-api@0.3.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + +## @backstage/plugin-scaffolder@1.16.0-next.0 + +### Minor Changes + +- 3fdffbb699: Release design improvements for the `Scaffolder` plugin and support v5 of `@rjsf/*` libraries. + + This change should be non-breaking. If you're seeing typescript issues after migrating please [open an issue](https://github.com/backstage/backstage/issues/new/choose) + + The `next` versions like `createNextFieldExtension` and `NextScaffolderPage` have been promoted to the public interface under `createScaffolderFieldExtension` and `ScaffolderPage`, so any older imports which are no longer found will need updating from `@backstage/plugin-scaffolder/alpha` or `@backstage/plugin-scaffolder-react/alpha` will need to be imported from `@backstage/plugin-scaffolder` and `@backstage/plugin-scaffolder-react` respectively. + + The legacy versions are now available in `/alpha` under `createLegacyFieldExtension` and `LegacyScaffolderPage` if you're running into issues, but be aware that these will be removed in a next mainline release. + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-scaffolder-common@1.4.3-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/integration-react@1.1.21-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-permission-react@0.4.17-next.0 + - @backstage/plugin-scaffolder-react@1.6.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/integration@1.7.1 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.17 + +## @backstage/plugin-scaffolder-backend@1.19.0-next.0 + +### Minor Changes + +- 5e4127c18e: Allow setting `update: true` in `publish:github:pull-request` scaffolder action + +### Patch Changes + +- 0920fd02ac: Add examples for `github:environment:create` scaffolder action & improve related tests +- 8613ba3928: Switched to using `"exports"` field for `/alpha` subpath export. +- 99d4936f6c: Add examples for `github:webhook` scaffolder action & improve related tests +- f8727ad228: Add examples for `publish:github:pull-request` scaffolder action & improve related tests +- Updated dependencies + - @backstage/plugin-scaffolder-common@1.4.3-next.0 + - @backstage/plugin-catalog-backend@1.15.0-next.0 + - @backstage/plugin-scaffolder-node@0.2.8-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.1-next.0 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.4-next.0 + - @backstage/plugin-catalog-common@1.0.17 + - @backstage/plugin-catalog-node@1.4.8-next.0 + - @backstage/plugin-permission-common@0.7.9 + - @backstage/plugin-permission-node@0.7.18-next.0 + +## @backstage/plugin-scaffolder-react@1.6.0-next.0 + +### Minor Changes + +- 3fdffbb699: Release design improvements for the `Scaffolder` plugin and support v5 of `@rjsf/*` libraries. + + This change should be non-breaking. If you're seeing typescript issues after migrating please [open an issue](https://github.com/backstage/backstage/issues/new/choose) + + The `next` versions like `createNextFieldExtension` and `NextScaffolderPage` have been promoted to the public interface under `createScaffolderFieldExtension` and `ScaffolderPage`, so any older imports which are no longer found will need updating from `@backstage/plugin-scaffolder/alpha` or `@backstage/plugin-scaffolder-react/alpha` will need to be imported from `@backstage/plugin-scaffolder` and `@backstage/plugin-scaffolder-react` respectively. + + The legacy versions are now available in `/alpha` under `createLegacyFieldExtension` and `LegacyScaffolderPage` if you're running into issues, but be aware that these will be removed in a next mainline release. + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-scaffolder-common@1.4.3-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/version-bridge@1.0.7-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-search-backend-module-stack-overflow-collator@0.1.0-next.0 + +### Minor Changes + +- 46f0f1700e: Extract a package for the Stack Overflow new backend system plugin. + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-search-backend-node@1.2.11-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-search-common@1.2.7 + +## @backstage/plugin-vault-backend@0.4.0-next.0 + +### Minor Changes + +- a873a32a1f: Added support for the [new backend system](https://backstage.io/docs/backend-system/). + + In your `packages/backend/src/index.ts` make the following changes: + + ```diff + import { createBackend } from '@backstage/backend-defaults'; + const backend = createBackend(); + // ... other feature additions + + backend.add(import('@backstage/plugin-vault-backend'); + backend.start(); + ``` + + If you use the new backend system, the token renewal task can be defined via configuration file: + + ```diff + vault: + baseUrl: + token: + schedule: + + frequency: ... + + timeout: ... + + # Other schedule options, such as scope or initialDelay + ``` + + If the `schedule` is omitted or set to `false` no token renewal task will be scheduled. + If the value of `schedule` is set to `true` the renew will be scheduled hourly (the default). + In other cases (like in the diff above), the defined schedule will be used. + + **DEPRECATIONS**: The interface `VaultApi` and the type `VaultSecret` are now deprecated. Import them from `@backstage/plugin-vault-node`. + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-vault-node@0.1.0-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-vault-node@0.1.0-next.0 + +### Minor Changes + +- 7a41bcf2af: Initial version of the \`plugin-vault-node\`\` package. It contains the extension point definitions + for the vault backend, as well as some types that will be deprecated in the backend plugin. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.7-next.0 + +## @backstage/app-defaults@1.4.5-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-permission-react@0.4.17-next.0 + - @backstage/core-app-api@1.11.1-next.0 + - @backstage/theme@0.4.4-next.0 + +## @backstage/backend-app-api@0.5.8-next.0 + +### Patch Changes + +- bc9a18d5ec: Added a workaround for double `default` wrapping when dynamically importing CommonJS modules with default exports. +- Updated dependencies + - @backstage/config-loader@1.5.2-next.0 + - @backstage/cli-node@0.2.0-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/cli-common@0.1.13 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.1-next.0 + - @backstage/plugin-permission-node@0.7.18-next.0 + +## @backstage/backend-common@0.19.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/config-loader@1.5.2-next.0 + - @backstage/backend-app-api@0.5.8-next.0 + - @backstage/integration@1.7.1 + - @backstage/integration-aws-node@0.1.7 + - @backstage/backend-dev-utils@0.1.2 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/cli-common@0.1.13 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/backend-defaults@0.2.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-app-api@0.5.8-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + +## @backstage/backend-plugin-api@0.6.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.1-next.0 + - @backstage/plugin-permission-common@0.7.9 + +## @backstage/backend-tasks@0.5.12-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/backend-test-utils@0.2.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-app-api@0.5.8-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.1-next.0 + +## @backstage/config-loader@1.5.2-next.0 + +### Patch Changes + +- 22ca64f117: Correctly resolve config targets into absolute paths +- Updated dependencies + - @backstage/cli-common@0.1.13 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/core-app-api@1.11.1-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- 89d13e5618: Add current and default scopes when refreshing session +- 9ab0572217: Add component data `core.type` marker for `AppRouter` and `FlatRoutes`. +- Updated dependencies + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/version-bridge@1.0.7-next.0 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + +## @backstage/core-components@0.13.7-next.0 + +### Patch Changes + +- 81c8db2088: Fix `RoutedTabs` so that it does not explode without tabs. + +- 6c2b872153: Add official support for React 18. + +- 7bdc1b0a12: Fixed compatibility with Safari <16.3 by eliminating RegEx lookbehind in `extractInitials`. + + This PR also changed how initials are generated resulting in _John Jonathan Doe_ => _JD_ instead of _JJ_. + +- 71c97e7d73: Fixed the type declaration of `DependencyGraphProps`, the `defs` prop now expects `JSX.Element`s. + +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/version-bridge@1.0.7-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/create-app@0.5.7-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- ae1602e54d: If create app installs dependencies, don't suggest to user that they also need to do it. +- Updated dependencies + - @backstage/cli-common@0.1.13 + +## @backstage/dev-utils@1.0.23-next.0 + +### Patch Changes + +- 67cc85bb14: Switched the conditional `react-dom/client` import to use `import(...)` rather than `require(...)`. +- 38cda52746: Added support for React 18. The new `createRoot` API from `react-dom/client` will now be used if present. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/integration-react@1.1.21-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/app-defaults@1.4.5-next.0 + - @backstage/core-app-api@1.11.1-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + +## @backstage/integration-react@1.1.21-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/integration@1.7.1 + - @backstage/config@1.1.1 + +## @techdocs/cli@1.6.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/cli-common@0.1.13 + - @backstage/config@1.1.1 + - @backstage/plugin-techdocs-node@1.9.1-next.0 + +## @backstage/test-utils@1.4.5-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-permission-react@0.4.17-next.0 + - @backstage/core-app-api@1.11.1-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.9 + +## @backstage/theme@0.4.4-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. + +## @backstage/version-bridge@1.0.7-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. + +## @backstage/plugin-adr@0.6.9-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/frontend-plugin-api@0.3.0-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/integration-react@1.1.21-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-search-react@1.7.2-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/plugin-adr-common@0.2.16 + - @backstage/plugin-search-common@1.2.7 + +## @backstage/plugin-adr-backend@0.4.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-adr-common@0.2.16 + - @backstage/plugin-search-common@1.2.7 + +## @backstage/plugin-airbrake@0.3.26-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/test-utils@1.4.5-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/dev-utils@1.0.23-next.0 + - @backstage/catalog-model@1.4.3 + +## @backstage/plugin-airbrake-backend@0.3.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/config@1.1.1 + +## @backstage/plugin-allure@0.1.42-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + +## @backstage/plugin-analytics-module-ga@0.1.35-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/config@1.1.1 + +## @backstage/plugin-analytics-module-ga4@0.1.6-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/config@1.1.1 + +## @backstage/plugin-analytics-module-newrelic-browser@0.0.4-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/config@1.1.1 + +## @backstage/plugin-apache-airflow@0.2.17-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + +## @backstage/plugin-api-docs@0.9.13-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog@1.15.0-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + +## @backstage/plugin-api-docs-module-protoc-gen-doc@0.1.5-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. + +## @backstage/plugin-apollo-explorer@0.1.17-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + +## @backstage/plugin-app-backend@0.3.55-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/config-loader@1.5.2-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-app-node@0.1.7-next.0 + +## @backstage/plugin-app-node@0.1.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.7-next.0 + +## @backstage/plugin-auth-backend-module-gcp-iap-provider@0.2.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.1-next.0 + +## @backstage/plugin-auth-backend-module-github-provider@0.1.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/plugin-auth-node@0.4.1-next.0 + +## @backstage/plugin-auth-backend-module-gitlab-provider@0.1.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/plugin-auth-node@0.4.1-next.0 + +## @backstage/plugin-auth-backend-module-google-provider@0.1.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/plugin-auth-node@0.4.1-next.0 + +## @backstage/plugin-auth-backend-module-microsoft-provider@0.1.2-next.0 + +### Patch Changes + +- 2817115d09: Removed `prompt=consent` from start method to fix #20641 +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/plugin-auth-node@0.4.1-next.0 + +## @backstage/plugin-auth-backend-module-oauth2-provider@0.1.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/plugin-auth-node@0.4.1-next.0 + +## @backstage/plugin-auth-backend-module-pinniped-provider@0.1.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/plugin-auth-node@0.4.1-next.0 + +## @backstage/plugin-auth-node@0.4.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-azure-devops@0.3.8-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- 361bb34d8e: Consolidated getting the annotation values into a single function to help with future changes +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + - @backstage/plugin-azure-devops-common@0.3.1 + +## @backstage/plugin-azure-devops-backend@0.4.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-azure-devops-common@0.3.1 + +## @backstage/plugin-azure-sites@0.1.15-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/plugin-azure-sites-common@0.1.1 + +## @backstage/plugin-azure-sites-backend@0.1.17-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-azure-sites-common@0.1.1 + +## @backstage/plugin-badges@0.2.50-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + +## @backstage/plugin-badges-backend@0.3.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.1-next.0 + +## @backstage/plugin-bazaar@0.2.18-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/cli@0.24.0-next.0 + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog@1.15.0-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + +## @backstage/plugin-bazaar-backend@0.3.5-next.0 + +### Patch Changes + +- 8613ba3928: Switched to using `"exports"` field for `/alpha` subpath export. +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.1-next.0 + +## @backstage/plugin-bitrise@0.1.53-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + +## @backstage/plugin-catalog-backend-module-aws@0.3.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/integration-aws-node@0.1.7 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.17 + - @backstage/plugin-catalog-node@1.4.8-next.0 + - @backstage/plugin-kubernetes-common@0.7.1-next.0 + +## @backstage/plugin-catalog-backend-module-azure@0.1.26-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.17 + - @backstage/plugin-catalog-node@1.4.8-next.0 + +## @backstage/plugin-catalog-backend-module-bitbucket@0.2.22-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-bitbucket-cloud-common@0.2.13 + - @backstage/plugin-catalog-node@1.4.8-next.0 + +## @backstage/plugin-catalog-backend-module-bitbucket-cloud@0.1.22-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/plugin-bitbucket-cloud-common@0.2.13 + - @backstage/plugin-catalog-common@1.0.17 + - @backstage/plugin-catalog-node@1.4.8-next.0 + - @backstage/plugin-events-node@0.2.16-next.0 + +## @backstage/plugin-catalog-backend-module-bitbucket-server@0.1.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-node@1.4.8-next.0 + +## @backstage/plugin-catalog-backend-module-gcp@0.1.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-node@1.4.8-next.0 + - @backstage/plugin-kubernetes-common@0.7.1-next.0 + +## @backstage/plugin-catalog-backend-module-gerrit@0.1.23-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-node@1.4.8-next.0 + +## @backstage/plugin-catalog-backend-module-github@0.4.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.15.0-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-common@1.0.17 + - @backstage/plugin-catalog-node@1.4.8-next.0 + - @backstage/plugin-events-node@0.2.16-next.0 + +## @backstage/plugin-catalog-backend-module-github-org@0.1.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-backend-module-github@0.4.5-next.0 + - @backstage/plugin-catalog-node@1.4.8-next.0 + +## @backstage/plugin-catalog-backend-module-gitlab@0.3.4-next.0 + +### Patch Changes + +- d732f17610: Added try catch around fetching gitlab group users to prevent refresh from failing completely while only a select number of groups might not be able to load correctly. +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-node@1.4.8-next.0 + +## @backstage/plugin-catalog-backend-module-incremental-ingestion@0.4.11-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.15.0-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-node@1.4.8-next.0 + - @backstage/plugin-events-node@0.2.16-next.0 + - @backstage/plugin-permission-common@0.7.9 + +## @backstage/plugin-catalog-backend-module-ldap@0.5.22-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.17 + - @backstage/plugin-catalog-node@1.4.8-next.0 + +## @backstage/plugin-catalog-backend-module-msgraph@0.5.14-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-common@1.0.17 + - @backstage/plugin-catalog-node@1.4.8-next.0 + +## @backstage/plugin-catalog-backend-module-openapi@0.1.24-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.15.0-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.17 + - @backstage/plugin-catalog-node@1.4.8-next.0 + +## @backstage/plugin-catalog-backend-module-puppetdb@0.1.12-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-node@1.4.8-next.0 + +## @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-common@1.4.3-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/plugin-catalog-common@1.0.17 + - @backstage/plugin-catalog-node@1.4.8-next.0 + +## @backstage/plugin-catalog-backend-module-unprocessed@0.3.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/plugin-auth-node@0.4.1-next.0 + +## @backstage/plugin-catalog-graph@0.2.38-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-catalog-graphql@0.4.1-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + +## @backstage/plugin-catalog-import@0.10.2-next.0 + +### Patch Changes + +- 6db75b900a: Create an experimental plugin that is compatible with the declarative integration system, it is exported from the `/alpha` subpath. +- 6c2b872153: Add official support for React 18. +- 71c97e7d73: The `app.title` configuration is now properly required to be a string. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/frontend-plugin-api@0.3.0-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/integration-react@1.1.21-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/integration@1.7.1 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-common@1.0.17 + +## @backstage/plugin-catalog-node@1.4.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.17 + +## @backstage/plugin-catalog-unprocessed-entities@0.1.5-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + +## @backstage/plugin-cicd-statistics@0.1.28-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/catalog-model@1.4.3 + +## @backstage/plugin-cicd-statistics-module-gitlab@0.1.22-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-cicd-statistics@0.1.28-next.0 + - @backstage/catalog-model@1.4.3 + +## @backstage/plugin-circleci@0.3.26-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + +## @backstage/plugin-cloudbuild@0.3.26-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + +## @backstage/plugin-code-climate@0.1.26-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + +## @backstage/plugin-code-coverage@0.2.19-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- 71c97e7d73: The warning for missing code coverage will now render the entity as a reference. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-code-coverage-backend@0.2.21-next.0 + +### Patch Changes + +- 11f671eaa9: Added support for new backend system +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.1-next.0 + +## @backstage/plugin-codescene@0.1.19-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-config-schema@0.1.47-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-cost-insights@0.12.15-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/plugin-cost-insights-common@0.1.2 + +## @backstage/plugin-devtools@0.1.6-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-permission-react@0.4.17-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-devtools-common@0.1.5 + +## @backstage/plugin-devtools-backend@0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/config-loader@1.5.2-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/cli-common@0.1.13 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.1-next.0 + - @backstage/plugin-devtools-common@0.1.5 + - @backstage/plugin-permission-common@0.7.9 + - @backstage/plugin-permission-node@0.7.18-next.0 + +## @backstage/plugin-dynatrace@8.0.0-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + +## @backstage/plugin-entity-feedback@0.2.9-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + - @backstage/plugin-entity-feedback-common@0.1.3 + +## @backstage/plugin-entity-feedback-backend@0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/plugin-auth-node@0.4.1-next.0 + - @backstage/plugin-entity-feedback-common@0.1.3 + +## @backstage/plugin-entity-validation@0.1.11-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-common@1.0.17 + +## @backstage/plugin-events-backend@0.2.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-events-node@0.2.16-next.0 + +## @backstage/plugin-events-backend-module-aws-sqs@0.2.10-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-events-node@0.2.16-next.0 + +## @backstage/plugin-events-backend-module-azure@0.1.17-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/plugin-events-node@0.2.16-next.0 + +## @backstage/plugin-events-backend-module-bitbucket-cloud@0.1.17-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/plugin-events-node@0.2.16-next.0 + +## @backstage/plugin-events-backend-module-gerrit@0.1.17-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/plugin-events-node@0.2.16-next.0 + +## @backstage/plugin-events-backend-module-github@0.1.17-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-events-node@0.2.16-next.0 + +## @backstage/plugin-events-backend-module-gitlab@0.1.17-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-events-node@0.2.16-next.0 + +## @backstage/plugin-events-backend-test-utils@0.1.17-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-events-node@0.2.16-next.0 + +## @backstage/plugin-events-node@0.2.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.7-next.0 + +## @backstage/plugin-explore@0.4.12-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/frontend-plugin-api@0.3.0-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-explore-react@0.0.33-next.0 + - @backstage/plugin-search-react@1.7.2-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + - @backstage/plugin-explore-common@0.0.2 + - @backstage/plugin-search-common@1.2.7 + +## @backstage/plugin-explore-backend@0.0.17-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-explore-common@0.0.2 + - @backstage/plugin-search-backend-module-explore@0.1.11-next.0 + - @backstage/plugin-search-common@1.2.7 + +## @backstage/plugin-explore-react@0.0.33-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-explore-common@0.0.2 + +## @backstage/plugin-firehydrant@0.2.10-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + +## @backstage/plugin-fossa@0.2.58-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + +## @backstage/plugin-gcalendar@0.3.20-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-gcp-projects@0.3.43-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + +## @backstage/plugin-git-release-manager@0.3.39-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/integration@1.7.1 + +## @backstage/plugin-github-actions@0.6.7-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/integration-react@1.1.21-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/integration@1.7.1 + - @backstage/catalog-model@1.4.3 + +## @backstage/plugin-github-deployments@0.1.57-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/integration-react@1.1.21-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/integration@1.7.1 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + +## @backstage/plugin-github-issues@0.2.15-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/integration@1.7.1 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + +## @backstage/plugin-github-pull-requests-board@0.1.20-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/integration@1.7.1 + - @backstage/catalog-model@1.4.3 + +## @backstage/plugin-gitops-profiles@0.3.42-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/config@1.1.1 + +## @backstage/plugin-gocd@0.1.32-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + +## @backstage/plugin-graphql-backend@0.2.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-graphql@0.4.1-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/config@1.1.1 + +## @backstage/plugin-graphql-voyager@0.1.9-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + +## @backstage/plugin-home@0.5.10-next.0 + +### Patch Changes + +- 3fdffbb699: Remove the duplicate versions of `@rjsf/*` as they're no longer needed +- 6c2b872153: Add official support for React 18. +- 5b364984bf: Added experimental support for declarative integration via the `/alpha` subpath. +- cc0e8d0b51: Temporarily pin the `react-grid-layout` sub-dependency to version `1.3.4` while the horizontal resizing of the latest version is not fixed. For more details, see [#20712](https://github.com/backstage/backstage/issues/20712). +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/frontend-plugin-api@0.3.0-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/core-app-api@1.11.1-next.0 + - @backstage/plugin-home-react@0.1.5-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + +## @backstage/plugin-home-react@0.1.5-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + +## @backstage/plugin-ilert@0.2.15-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + +## @backstage/plugin-jenkins@0.9.1-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + - @backstage/plugin-jenkins-common@0.1.20 + +## @backstage/plugin-jenkins-backend@0.3.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.1-next.0 + - @backstage/plugin-catalog-node@1.4.8-next.0 + - @backstage/plugin-jenkins-common@0.1.20 + - @backstage/plugin-permission-common@0.7.9 + - @backstage/plugin-permission-node@0.7.18-next.0 + +## @backstage/plugin-kafka@0.3.26-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + +## @backstage/plugin-kafka-backend@0.3.5-next.0 + +### Patch Changes + +- 8613ba3928: Switched to using `"exports"` field for `/alpha` subpath export. +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-kubernetes@0.11.1-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-kubernetes-react@0.1.1-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-kubernetes-common@0.7.1-next.0 + +## @backstage/plugin-kubernetes-backend@0.13.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration-aws-node@0.1.7 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.1-next.0 + - @backstage/plugin-catalog-node@1.4.8-next.0 + - @backstage/plugin-kubernetes-common@0.7.1-next.0 + - @backstage/plugin-kubernetes-node@0.1.1-next.0 + - @backstage/plugin-permission-common@0.7.9 + - @backstage/plugin-permission-node@0.7.18-next.0 + +## @backstage/plugin-kubernetes-cluster@0.0.2-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-kubernetes-react@0.1.1-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-kubernetes-common@0.7.1-next.0 + +## @backstage/plugin-kubernetes-common@0.7.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.9 + +## @backstage/plugin-kubernetes-node@0.1.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/plugin-kubernetes-common@0.7.1-next.0 + +## @backstage/plugin-kubernetes-react@0.1.1-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-kubernetes-common@0.7.1-next.0 + +## @backstage/plugin-lighthouse@0.4.11-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/plugin-lighthouse-common@0.1.4 + +## @backstage/plugin-lighthouse-backend@0.3.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-node@1.4.8-next.0 + - @backstage/plugin-lighthouse-common@0.1.4 + +## @backstage/plugin-linguist@0.1.11-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + - @backstage/plugin-linguist-common@0.1.2 + +## @backstage/plugin-linguist-backend@0.5.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.1-next.0 + - @backstage/plugin-catalog-node@1.4.8-next.0 + - @backstage/plugin-linguist-common@0.1.2 + +## @backstage/plugin-microsoft-calendar@0.1.9-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-newrelic@0.3.42-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + +## @backstage/plugin-newrelic-dashboard@0.3.1-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + +## @backstage/plugin-nomad@0.1.7-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + +## @backstage/plugin-nomad-backend@0.1.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-octopus-deploy@0.2.8-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + +## @backstage/plugin-opencost@0.2.2-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + +## @backstage/plugin-org@0.6.16-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + +## @backstage/plugin-org-react@0.1.15-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + +## @backstage/plugin-pagerduty@0.6.7-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-home-react@0.1.5-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + +## @backstage/plugin-periskop@0.1.24-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + +## @backstage/plugin-periskop-backend@0.2.5-next.0 + +### Patch Changes + +- 8613ba3928: Switched to using `"exports"` field for `/alpha` subpath export. +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/config@1.1.1 + +## @backstage/plugin-permission-backend@0.5.30-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.1-next.0 + - @backstage/plugin-permission-common@0.7.9 + - @backstage/plugin-permission-node@0.7.18-next.0 + +## @backstage/plugin-permission-backend-module-allow-all-policy@0.1.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/plugin-auth-node@0.4.1-next.0 + - @backstage/plugin-permission-common@0.7.9 + - @backstage/plugin-permission-node@0.7.18-next.0 + +## @backstage/plugin-permission-node@0.7.18-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.1-next.0 + - @backstage/plugin-permission-common@0.7.9 + +## @backstage/plugin-permission-react@0.4.17-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-permission-common@0.7.9 + +## @backstage/plugin-playlist@0.1.18-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-permission-react@0.4.17-next.0 + - @backstage/plugin-search-react@1.7.2-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-common@1.0.17 + - @backstage/plugin-permission-common@0.7.9 + - @backstage/plugin-playlist-common@0.1.11 + +## @backstage/plugin-playlist-backend@0.3.11-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.1-next.0 + - @backstage/plugin-permission-common@0.7.9 + - @backstage/plugin-permission-node@0.7.18-next.0 + - @backstage/plugin-playlist-common@0.1.11 + +## @backstage/plugin-proxy-backend@0.4.5-next.0 + +### Patch Changes + +- 8613ba3928: Switched to using `"exports"` field for `/alpha` subpath export. +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/config@1.1.1 + +## @backstage/plugin-puppetdb@0.1.9-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + +## @backstage/plugin-rollbar@0.4.26-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + +## @backstage/plugin-rollbar-backend@0.1.52-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/config@1.1.1 + +## @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.2.8-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-scaffolder-backend-module-cookiecutter@0.2.31-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.2.8-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-scaffolder-backend-module-gitlab@0.2.10-next.0 + +### Patch Changes + +- 26ca97ebaa: Add examples for `gitlab:projectAccessToken:create` scaffolder action & improve related tests +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.2.8-next.0 + - @backstage/integration@1.7.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-scaffolder-backend-module-rails@0.4.24-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.2.8-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-scaffolder-backend-module-sentry@0.1.15-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.2.8-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-scaffolder-backend-module-yeoman@0.2.28-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.2.8-next.0 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + +## @backstage/plugin-scaffolder-common@1.4.3-next.0 + +### Patch Changes + +- 2e0cef42ab: Add missing required property `type` in `Template.v1beta3.schema.json` schema +- Updated dependencies + - @backstage/catalog-model@1.4.3 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.9 + +## @backstage/plugin-scaffolder-node@0.2.8-next.0 + +### Patch Changes + +- 8613ba3928: Switched to using `"exports"` field for `/alpha` subpath export. +- Updated dependencies + - @backstage/plugin-scaffolder-common@1.4.3-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-search@1.4.2-next.0 + +### Patch Changes + +- 68fc9dc60e: Updated alpha exports according to routing changes in `@backstage/frontend-plugin-api`. +- 6c2b872153: Add official support for React 18. +- fa11120050: Fixed incorrect plugin ID in `/alpha` export. +- 71c97e7d73: Minor internal code cleanup. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/frontend-plugin-api@0.3.0-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/version-bridge@1.0.7-next.0 + - @backstage/plugin-search-react@1.7.2-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-search-common@1.2.7 + +## @backstage/plugin-search-backend@1.4.7-next.0 + +### Patch Changes + +- 6694b369a3: Update the OpenAPI spec with more complete error responses and request bodies using Optic. Also, updates the test cases to use the new `supertest` pass through from `@backstage/backend-openapi-utils`. +- Updated dependencies + - @backstage/plugin-search-backend-node@1.2.11-next.0 + - @backstage/backend-openapi-utils@0.1.0-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.1-next.0 + - @backstage/plugin-permission-common@0.7.9 + - @backstage/plugin-permission-node@0.7.18-next.0 + - @backstage/plugin-search-common@1.2.7 + +## @backstage/plugin-search-backend-module-catalog@0.1.11-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-search-backend-node@1.2.11-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-common@1.0.17 + - @backstage/plugin-catalog-node@1.4.8-next.0 + - @backstage/plugin-permission-common@0.7.9 + - @backstage/plugin-search-common@1.2.7 + +## @backstage/plugin-search-backend-module-elasticsearch@1.3.10-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-search-backend-node@1.2.11-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration-aws-node@0.1.7 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-search-common@1.2.7 + +## @backstage/plugin-search-backend-module-explore@0.1.11-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-search-backend-node@1.2.11-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-explore-common@0.0.2 + - @backstage/plugin-search-common@1.2.7 + +## @backstage/plugin-search-backend-module-pg@0.5.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-search-backend-node@1.2.11-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-search-common@1.2.7 + +## @backstage/plugin-search-backend-module-techdocs@0.1.11-next.0 + +### Patch Changes + +- c437253b7a: The process of adding or modifying fields in the techdocs search index has been simplified. For more details, see [How to customize fields in the Software Catalog or TechDocs index](https://backstage.io/docs/features/search/how-to-guides.md#how-to-customize-fields-in-the-software-catalog-or-techdocs-index). +- Updated dependencies + - @backstage/plugin-search-backend-node@1.2.11-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-common@1.0.17 + - @backstage/plugin-catalog-node@1.4.8-next.0 + - @backstage/plugin-permission-common@0.7.9 + - @backstage/plugin-search-common@1.2.7 + - @backstage/plugin-techdocs-node@1.9.1-next.0 + +## @backstage/plugin-search-backend-node@1.2.11-next.0 + +### Patch Changes + +- b168d7e7ea: Fix highlighting for non-string fields on the `Lunr` search engine implementation. +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-permission-common@0.7.9 + - @backstage/plugin-search-common@1.2.7 + +## @backstage/plugin-search-react@1.7.2-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- f75caf9f3d: Fixed a rare occurrence where a race in the search bar could throw away user input or cause the clear button not to work. +- 71c97e7d73: The filter options passed to `SearchResultGroupLayout` are now always explicitly rendered as strings by default. +- e7c09c4f4b: Use default extensions boundary and suspense on the alpha declarative `createSearchResultListItem` extension factory. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/frontend-plugin-api@0.3.0-next.0 + - @backstage/frontend-app-api@0.3.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/version-bridge@1.0.7-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/types@1.1.1 + - @backstage/plugin-search-common@1.2.7 + +## @backstage/plugin-sentry@0.5.11-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + +## @backstage/plugin-shortcuts@0.3.16-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/types@1.1.1 + +## @backstage/plugin-sonarqube@0.7.8-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- 8613ba3928: Switched to using `"exports"` field for `/alpha` subpath export. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-sonarqube-react@0.1.10-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + +## @backstage/plugin-sonarqube-backend@0.2.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + +## @backstage/plugin-sonarqube-react@0.1.10-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/catalog-model@1.4.3 + +## @backstage/plugin-splunk-on-call@0.4.15-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + +## @backstage/plugin-stack-overflow@0.1.22-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- b168d7e7ea: Migrate package to the new Frontend system, the new module is distributed with a `/alpha` subpath. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/frontend-plugin-api@0.3.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-search-react@1.7.2-next.0 + - @backstage/plugin-home-react@0.1.5-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-search-common@1.2.7 + +## @backstage/plugin-stack-overflow-backend@0.2.11-next.0 + +### Patch Changes + +- b168d7e7ea: Deprecate package in favor of the new `@backstage/plugin-search-backend-module-stack-overflow-collator` module. + + The search collator `requestParams` option is optional now, so its default value is `{ order: 'desc', sort: 'activity', site: 'stackoverflow' }` as defined in the `Try It` section on the [official Stack Overflow API documentation](https://api.stackexchange.com/docs/questions). + +- Updated dependencies + - @backstage/plugin-search-backend-module-stack-overflow-collator@0.1.0-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-search-common@1.2.7 + +## @backstage/plugin-stackstorm@0.1.8-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/errors@1.2.3 + +## @backstage/plugin-tech-insights@0.3.18-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-tech-insights-common@0.2.12 + +## @backstage/plugin-tech-insights-backend@0.5.21-next.0 + +### Patch Changes + +- 193ad022bb: Add `factRetrieverId` to the fact retriever's logger metadata. +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-tech-insights-common@0.2.12 + - @backstage/plugin-tech-insights-node@0.4.13-next.0 + +## @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.39-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-tech-insights-common@0.2.12 + - @backstage/plugin-tech-insights-node@0.4.13-next.0 + +## @backstage/plugin-tech-insights-node@0.4.13-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-tech-insights-common@0.2.12 + +## @backstage/plugin-tech-radar@0.6.10-next.0 + +### Patch Changes + +- 68fc9dc60e: Updated alpha exports according to routing changes in `@backstage/frontend-plugin-api`. +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/frontend-plugin-api@0.3.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + +## @backstage/plugin-techdocs@1.8.1-next.0 + +### Patch Changes + +- 4728b3960d: Fixed navigation bug that caused users to not be scrolled to the top of a new page. Fixed navigation bug where using backwards and forwards browser navigation did not scroll users to the correct place on the TechDoc page. +- a3add7a682: Export alpha routes and nav item extension, only available for applications that uses the new Frontend system. +- 71c97e7d73: The \`spec.lifecycle' field in entities will now always be rendered as a string. +- 68fc9dc60e: Updated alpha exports according to routing changes in `@backstage/frontend-plugin-api`. +- 6c2b872153: Add official support for React 18. +- 0bf6ebda88: Added entity page content for the new plugin exported via `/alpha`. +- 67cc85bb14: Switched the conditional `react-dom/client` import to use `import(...)` rather than `require(...)`. +- 38cda52746: Added support for React 18. The new `createRoot` API from `react-dom/client` will now be used if present. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/frontend-plugin-api@0.3.0-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/integration-react@1.1.21-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-techdocs-react@1.1.13-next.0 + - @backstage/plugin-search-react@1.7.2-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/integration@1.7.1 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-search-common@1.2.7 + +## @backstage/plugin-techdocs-addons-test-utils@1.0.23-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog@1.15.0-next.0 + - @backstage/plugin-techdocs@1.8.1-next.0 + - @backstage/integration-react@1.1.21-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-techdocs-react@1.1.13-next.0 + - @backstage/core-app-api@1.11.1-next.0 + - @backstage/plugin-search-react@1.7.2-next.0 + - @backstage/test-utils@1.4.5-next.0 + - @backstage/theme@0.4.4-next.0 + +## @backstage/plugin-techdocs-backend@1.8.1-next.0 + +### Patch Changes + +- c3c5c7e514: Add info about the entity when tech docs fail to build +- Updated dependencies + - @backstage/plugin-search-backend-module-techdocs@0.1.11-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-common@1.0.17 + - @backstage/plugin-permission-common@0.7.9 + - @backstage/plugin-search-common@1.2.7 + - @backstage/plugin-techdocs-node@1.9.1-next.0 + +## @backstage/plugin-techdocs-module-addons-contrib@1.1.2-next.0 + +### Patch Changes + +- 4728b3960d: Fixed navigation bug that caused users to not be scrolled to the top of a new page. Fixed navigation bug where using backwards and forwards browser navigation did not scroll users to the correct place on the TechDoc page. +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/integration-react@1.1.21-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-techdocs-react@1.1.13-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/integration@1.7.1 + +## @backstage/plugin-techdocs-node@1.9.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/integration-aws-node@0.1.7 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-search-common@1.2.7 + +## @backstage/plugin-techdocs-react@1.1.13-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/version-bridge@1.0.7-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + +## @backstage/plugin-todo@0.2.30-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- 8613ba3928: Switched to using `"exports"` field for `/alpha` subpath export. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + +## @backstage/plugin-todo-backend@0.3.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-openapi-utils@0.1.0-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-node@1.4.8-next.0 + +## @backstage/plugin-user-settings@0.7.12-next.0 + +### Patch Changes + +- 68fc9dc60e: Updated alpha exports according to routing changes in `@backstage/frontend-plugin-api`. +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/frontend-plugin-api@0.3.0-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/core-app-api@1.11.1-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + +## @backstage/plugin-user-settings-backend@0.2.6-next.0 + +### Patch Changes + +- dd0350379b: Added dependency on `@backstage/config` +- 8613ba3928: Switched to using `"exports"` field for `/alpha` subpath export. +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.1-next.0 + +## @backstage/plugin-vault@0.1.21-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + +## @backstage/plugin-xcmetrics@0.2.45-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/errors@1.2.3 + +## example-app@0.2.89-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-import@0.10.2-next.0 + - @backstage/cli@0.24.0-next.0 + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-home@0.5.10-next.0 + - @backstage/plugin-catalog@1.15.0-next.0 + - @backstage/plugin-graphiql@0.3.0-next.0 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.2-next.0 + - @backstage/plugin-techdocs@1.8.1-next.0 + - @backstage/frontend-app-api@0.3.0-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/plugin-user-settings@0.7.12-next.0 + - @backstage/plugin-tech-radar@0.6.10-next.0 + - @backstage/plugin-search@1.4.2-next.0 + - @backstage/plugin-catalog-unprocessed-entities@0.1.5-next.0 + - @backstage/integration-react@1.1.21-next.0 + - @backstage/plugin-kubernetes-cluster@0.0.2-next.0 + - @backstage/plugin-microsoft-calendar@0.1.9-next.0 + - @backstage/plugin-newrelic-dashboard@0.3.1-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-permission-react@0.4.17-next.0 + - @backstage/plugin-scaffolder-react@1.6.0-next.0 + - @backstage/plugin-entity-feedback@0.2.9-next.0 + - @backstage/plugin-apache-airflow@0.2.17-next.0 + - @backstage/plugin-github-actions@0.6.7-next.0 + - @backstage/plugin-octopus-deploy@0.2.8-next.0 + - @backstage/plugin-stack-overflow@0.1.22-next.0 + - @backstage/plugin-techdocs-react@1.1.13-next.0 + - @backstage/app-defaults@1.4.5-next.0 + - @backstage/core-app-api@1.11.1-next.0 + - @backstage/plugin-catalog-graph@0.2.38-next.0 + - @backstage/plugin-code-coverage@0.2.19-next.0 + - @backstage/plugin-cost-insights@0.12.15-next.0 + - @backstage/plugin-tech-insights@0.3.18-next.0 + - @backstage/plugin-azure-devops@0.3.8-next.0 + - @backstage/plugin-gcp-projects@0.3.43-next.0 + - @backstage/plugin-search-react@1.7.2-next.0 + - @backstage/plugin-azure-sites@0.1.15-next.0 + - @backstage/plugin-cloudbuild@0.3.26-next.0 + - @backstage/plugin-kubernetes@0.11.1-next.0 + - @backstage/plugin-lighthouse@0.4.11-next.0 + - @backstage/plugin-scaffolder@1.16.0-next.0 + - @backstage/plugin-stackstorm@0.1.8-next.0 + - @backstage/plugin-dynatrace@8.0.0-next.0 + - @backstage/plugin-gcalendar@0.3.20-next.0 + - @backstage/plugin-pagerduty@0.6.7-next.0 + - @backstage/plugin-shortcuts@0.3.16-next.0 + - @backstage/plugin-airbrake@0.3.26-next.0 + - @backstage/plugin-api-docs@0.9.13-next.0 + - @backstage/plugin-circleci@0.3.26-next.0 + - @backstage/plugin-devtools@0.1.6-next.0 + - @backstage/plugin-linguist@0.1.11-next.0 + - @backstage/plugin-newrelic@0.3.42-next.0 + - @backstage/plugin-playlist@0.1.18-next.0 + - @backstage/plugin-puppetdb@0.1.9-next.0 + - @backstage/plugin-explore@0.4.12-next.0 + - @backstage/plugin-jenkins@0.9.1-next.0 + - @backstage/plugin-rollbar@0.4.26-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/plugin-badges@0.2.50-next.0 + - @backstage/plugin-sentry@0.5.11-next.0 + - @backstage/plugin-kafka@0.3.26-next.0 + - @backstage/plugin-nomad@0.1.7-next.0 + - @backstage/plugin-gocd@0.1.32-next.0 + - @backstage/plugin-todo@0.2.30-next.0 + - @backstage/plugin-adr@0.6.9-next.0 + - @backstage/plugin-org@0.6.16-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-common@1.0.17 + - @backstage/plugin-linguist-common@0.1.2 + - @backstage/plugin-search-common@1.2.7 + +## example-app-next@0.0.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-import@0.10.2-next.0 + - @backstage/cli@0.24.0-next.0 + - @backstage/core-components@0.13.7-next.0 + - @backstage/frontend-plugin-api@0.3.0-next.0 + - @backstage/plugin-home@0.5.10-next.0 + - @backstage/plugin-catalog@1.15.0-next.0 + - @backstage/plugin-graphiql@0.3.0-next.0 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.2-next.0 + - @backstage/plugin-techdocs@1.8.1-next.0 + - @backstage/frontend-app-api@0.3.0-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/plugin-user-settings@0.7.12-next.0 + - @backstage/plugin-tech-radar@0.6.10-next.0 + - @backstage/plugin-search@1.4.2-next.0 + - @backstage/plugin-catalog-unprocessed-entities@0.1.5-next.0 + - @backstage/integration-react@1.1.21-next.0 + - @backstage/plugin-microsoft-calendar@0.1.9-next.0 + - @backstage/plugin-newrelic-dashboard@0.3.1-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-permission-react@0.4.17-next.0 + - @backstage/plugin-scaffolder-react@1.6.0-next.0 + - @backstage/plugin-entity-feedback@0.2.9-next.0 + - @backstage/plugin-apache-airflow@0.2.17-next.0 + - @backstage/plugin-github-actions@0.6.7-next.0 + - @backstage/plugin-octopus-deploy@0.2.8-next.0 + - @backstage/plugin-techdocs-react@1.1.13-next.0 + - @backstage/app-defaults@1.4.5-next.0 + - @backstage/core-app-api@1.11.1-next.0 + - @backstage/plugin-catalog-graph@0.2.38-next.0 + - @backstage/plugin-code-coverage@0.2.19-next.0 + - @backstage/plugin-cost-insights@0.12.15-next.0 + - @backstage/plugin-tech-insights@0.3.18-next.0 + - @backstage/plugin-azure-devops@0.3.8-next.0 + - @backstage/plugin-gcp-projects@0.3.43-next.0 + - @backstage/plugin-search-react@1.7.2-next.0 + - @backstage/plugin-azure-sites@0.1.15-next.0 + - @backstage/plugin-cloudbuild@0.3.26-next.0 + - @backstage/plugin-kubernetes@0.11.1-next.0 + - @backstage/plugin-lighthouse@0.4.11-next.0 + - @backstage/plugin-scaffolder@1.16.0-next.0 + - @backstage/plugin-stackstorm@0.1.8-next.0 + - @backstage/plugin-dynatrace@8.0.0-next.0 + - @backstage/plugin-gcalendar@0.3.20-next.0 + - @backstage/plugin-pagerduty@0.6.7-next.0 + - @backstage/plugin-shortcuts@0.3.16-next.0 + - @backstage/plugin-airbrake@0.3.26-next.0 + - @backstage/plugin-api-docs@0.9.13-next.0 + - @backstage/plugin-circleci@0.3.26-next.0 + - @backstage/plugin-devtools@0.1.6-next.0 + - @backstage/plugin-linguist@0.1.11-next.0 + - @backstage/plugin-newrelic@0.3.42-next.0 + - @backstage/plugin-playlist@0.1.18-next.0 + - @backstage/plugin-puppetdb@0.1.9-next.0 + - @backstage/plugin-explore@0.4.12-next.0 + - @backstage/plugin-jenkins@0.9.1-next.0 + - @backstage/plugin-rollbar@0.4.26-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/plugin-badges@0.2.50-next.0 + - @backstage/plugin-sentry@0.5.11-next.0 + - @backstage/plugin-kafka@0.3.26-next.0 + - @backstage/plugin-gocd@0.1.32-next.0 + - @backstage/plugin-todo@0.2.30-next.0 + - @backstage/plugin-adr@0.6.9-next.0 + - @backstage/plugin-org@0.6.16-next.0 + - app-next-example-plugin@0.0.3-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/core-compat-api@0.0.1-next.0 + - @backstage/plugin-catalog-common@1.0.17 + - @backstage/plugin-linguist-common@0.1.2 + - @backstage/plugin-search-common@1.2.7 + +## app-next-example-plugin@0.0.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/frontend-plugin-api@0.3.0-next.0 + +## example-backend@0.2.89-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-search-backend-node@1.2.11-next.0 + - @backstage/plugin-techdocs-backend@1.8.1-next.0 + - @backstage/plugin-code-coverage-backend@0.2.21-next.0 + - @backstage/plugin-scaffolder-backend@1.19.0-next.0 + - @backstage/plugin-catalog-backend@1.15.0-next.0 + - @backstage/plugin-search-backend@1.4.7-next.0 + - @backstage/plugin-tech-insights-backend@0.5.21-next.0 + - @backstage/plugin-search-backend-module-techdocs@0.1.11-next.0 + - @backstage/plugin-kafka-backend@0.3.5-next.0 + - @backstage/plugin-proxy-backend@0.4.5-next.0 + - @backstage/plugin-auth-backend@0.20.0-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/plugin-app-backend@0.3.55-next.0 + - @backstage/plugin-devtools-backend@0.2.4-next.0 + - example-app@0.2.89-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/plugin-adr-backend@0.4.4-next.0 + - @backstage/plugin-auth-node@0.4.1-next.0 + - @backstage/plugin-azure-devops-backend@0.4.4-next.0 + - @backstage/plugin-azure-sites-backend@0.1.17-next.0 + - @backstage/plugin-badges-backend@0.3.4-next.0 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.4-next.0 + - @backstage/plugin-catalog-backend-module-unprocessed@0.3.4-next.0 + - @backstage/plugin-catalog-node@1.4.8-next.0 + - @backstage/plugin-entity-feedback-backend@0.2.4-next.0 + - @backstage/plugin-events-backend@0.2.16-next.0 + - @backstage/plugin-events-node@0.2.16-next.0 + - @backstage/plugin-explore-backend@0.0.17-next.0 + - @backstage/plugin-graphql-backend@0.2.1-next.0 + - @backstage/plugin-jenkins-backend@0.3.1-next.0 + - @backstage/plugin-kubernetes-backend@0.13.1-next.0 + - @backstage/plugin-lighthouse-backend@0.3.4-next.0 + - @backstage/plugin-linguist-backend@0.5.4-next.0 + - @backstage/plugin-nomad-backend@0.1.9-next.0 + - @backstage/plugin-permission-backend@0.5.30-next.0 + - @backstage/plugin-permission-common@0.7.9 + - @backstage/plugin-permission-node@0.7.18-next.0 + - @backstage/plugin-playlist-backend@0.3.11-next.0 + - @backstage/plugin-rollbar-backend@0.1.52-next.0 + - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.8-next.0 + - @backstage/plugin-scaffolder-backend-module-rails@0.4.24-next.0 + - @backstage/plugin-search-backend-module-catalog@0.1.11-next.0 + - @backstage/plugin-search-backend-module-elasticsearch@1.3.10-next.0 + - @backstage/plugin-search-backend-module-explore@0.1.11-next.0 + - @backstage/plugin-search-backend-module-pg@0.5.16-next.0 + - @backstage/plugin-search-common@1.2.7 + - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.39-next.0 + - @backstage/plugin-tech-insights-node@0.4.13-next.0 + - @backstage/plugin-todo-backend@0.3.5-next.0 + +## example-backend-next@0.0.17-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-search-backend-node@1.2.11-next.0 + - @backstage/plugin-catalog-backend-module-backstage-openapi@0.1.0-next.0 + - @backstage/plugin-techdocs-backend@1.8.1-next.0 + - @backstage/plugin-scaffolder-backend@1.19.0-next.0 + - @backstage/plugin-catalog-backend@1.15.0-next.0 + - @backstage/plugin-search-backend@1.4.7-next.0 + - @backstage/plugin-search-backend-module-techdocs@0.1.11-next.0 + - @backstage/plugin-proxy-backend@0.4.5-next.0 + - @backstage/plugin-app-backend@0.3.55-next.0 + - @backstage/plugin-devtools-backend@0.2.4-next.0 + - @backstage/backend-defaults@0.2.7-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/plugin-adr-backend@0.4.4-next.0 + - @backstage/plugin-auth-node@0.4.1-next.0 + - @backstage/plugin-azure-devops-backend@0.4.4-next.0 + - @backstage/plugin-badges-backend@0.3.4-next.0 + - @backstage/plugin-catalog-backend-module-openapi@0.1.24-next.0 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.4-next.0 + - @backstage/plugin-catalog-backend-module-unprocessed@0.3.4-next.0 + - @backstage/plugin-entity-feedback-backend@0.2.4-next.0 + - @backstage/plugin-jenkins-backend@0.3.1-next.0 + - @backstage/plugin-kubernetes-backend@0.13.1-next.0 + - @backstage/plugin-lighthouse-backend@0.3.4-next.0 + - @backstage/plugin-linguist-backend@0.5.4-next.0 + - @backstage/plugin-nomad-backend@0.1.9-next.0 + - @backstage/plugin-permission-backend@0.5.30-next.0 + - @backstage/plugin-permission-backend-module-allow-all-policy@0.1.4-next.0 + - @backstage/plugin-permission-common@0.7.9 + - @backstage/plugin-permission-node@0.7.18-next.0 + - @backstage/plugin-playlist-backend@0.3.11-next.0 + - @backstage/plugin-search-backend-module-catalog@0.1.11-next.0 + - @backstage/plugin-search-backend-module-explore@0.1.11-next.0 + - @backstage/plugin-sonarqube-backend@0.2.9-next.0 + - @backstage/plugin-todo-backend@0.3.5-next.0 + +## @backstage/backend-plugin-manager@0.0.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/cli-node@0.2.0-next.0 + - @backstage/plugin-search-backend-node@1.2.11-next.0 + - @backstage/plugin-catalog-backend@1.15.0-next.0 + - @backstage/plugin-scaffolder-node@0.2.8-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/cli-common@0.1.13 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.1-next.0 + - @backstage/plugin-events-backend@0.2.16-next.0 + - @backstage/plugin-events-node@0.2.16-next.0 + - @backstage/plugin-permission-common@0.7.9 + - @backstage/plugin-permission-node@0.7.18-next.0 + - @backstage/plugin-search-common@1.2.7 + +## @backstage/core-compat-api@0.0.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.3.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + +## e2e-test@0.2.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/create-app@0.5.7-next.0 + - @backstage/cli-common@0.1.13 + - @backstage/errors@1.2.3 + +## techdocs-cli-embedded-app@0.2.88-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/cli@0.24.0-next.0 + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog@1.15.0-next.0 + - @backstage/plugin-techdocs@1.8.1-next.0 + - @backstage/integration-react@1.1.21-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-techdocs-react@1.1.13-next.0 + - @backstage/app-defaults@1.4.5-next.0 + - @backstage/core-app-api@1.11.1-next.0 + - @backstage/test-utils@1.4.5-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + +## @internal/plugin-todo-list@1.0.19-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + +## @internal/plugin-todo-list-backend@1.0.19-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.1-next.0 diff --git a/package.json b/package.json index abeb9ee06e..82a23cf7eb 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "@material-ui/pickers@^3.3.10": "patch:@material-ui/pickers@npm%3A3.3.11#./.yarn/patches/@material-ui-pickers-npm-3.3.11-1c8f68ea20.patch", "@material-ui/pickers@^3.2.10": "patch:@material-ui/pickers@npm%3A3.3.11#./.yarn/patches/@material-ui-pickers-npm-3.3.11-1c8f68ea20.patch" }, - "version": "1.19.0", + "version": "1.20.0-next.0", "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 d212580484..a2a3c28d4b 100644 --- a/packages/app-defaults/CHANGELOG.md +++ b/packages/app-defaults/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/app-defaults +## 1.4.5-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-permission-react@0.4.17-next.0 + - @backstage/core-app-api@1.11.1-next.0 + - @backstage/theme@0.4.4-next.0 + ## 1.4.4 ### Patch Changes diff --git a/packages/app-defaults/package.json b/packages/app-defaults/package.json index 9ab12f7cc5..9f6f16d3e1 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.4.4", + "version": "1.4.5-next.0", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/packages/app-next-example-plugin/CHANGELOG.md b/packages/app-next-example-plugin/CHANGELOG.md index 3402944211..f21bbd45c3 100644 --- a/packages/app-next-example-plugin/CHANGELOG.md +++ b/packages/app-next-example-plugin/CHANGELOG.md @@ -1,5 +1,13 @@ # app-next-example-plugin +## 0.0.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/frontend-plugin-api@0.3.0-next.0 + ## 0.0.2 ### Patch Changes diff --git a/packages/app-next-example-plugin/package.json b/packages/app-next-example-plugin/package.json index 865c6e0800..08186e1210 100644 --- a/packages/app-next-example-plugin/package.json +++ b/packages/app-next-example-plugin/package.json @@ -1,7 +1,7 @@ { "name": "app-next-example-plugin", "description": "Backstage internal example plugin", - "version": "0.0.2", + "version": "0.0.3-next.0", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/packages/app-next/CHANGELOG.md b/packages/app-next/CHANGELOG.md index 0a80d6d902..5bb2a54561 100644 --- a/packages/app-next/CHANGELOG.md +++ b/packages/app-next/CHANGELOG.md @@ -1,5 +1,82 @@ # example-app-next +## 0.0.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-import@0.10.2-next.0 + - @backstage/cli@0.24.0-next.0 + - @backstage/core-components@0.13.7-next.0 + - @backstage/frontend-plugin-api@0.3.0-next.0 + - @backstage/plugin-home@0.5.10-next.0 + - @backstage/plugin-catalog@1.15.0-next.0 + - @backstage/plugin-graphiql@0.3.0-next.0 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.2-next.0 + - @backstage/plugin-techdocs@1.8.1-next.0 + - @backstage/frontend-app-api@0.3.0-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/plugin-user-settings@0.7.12-next.0 + - @backstage/plugin-tech-radar@0.6.10-next.0 + - @backstage/plugin-search@1.4.2-next.0 + - @backstage/plugin-catalog-unprocessed-entities@0.1.5-next.0 + - @backstage/integration-react@1.1.21-next.0 + - @backstage/plugin-microsoft-calendar@0.1.9-next.0 + - @backstage/plugin-newrelic-dashboard@0.3.1-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-permission-react@0.4.17-next.0 + - @backstage/plugin-scaffolder-react@1.6.0-next.0 + - @backstage/plugin-entity-feedback@0.2.9-next.0 + - @backstage/plugin-apache-airflow@0.2.17-next.0 + - @backstage/plugin-github-actions@0.6.7-next.0 + - @backstage/plugin-octopus-deploy@0.2.8-next.0 + - @backstage/plugin-techdocs-react@1.1.13-next.0 + - @backstage/app-defaults@1.4.5-next.0 + - @backstage/core-app-api@1.11.1-next.0 + - @backstage/plugin-catalog-graph@0.2.38-next.0 + - @backstage/plugin-code-coverage@0.2.19-next.0 + - @backstage/plugin-cost-insights@0.12.15-next.0 + - @backstage/plugin-tech-insights@0.3.18-next.0 + - @backstage/plugin-azure-devops@0.3.8-next.0 + - @backstage/plugin-gcp-projects@0.3.43-next.0 + - @backstage/plugin-search-react@1.7.2-next.0 + - @backstage/plugin-azure-sites@0.1.15-next.0 + - @backstage/plugin-cloudbuild@0.3.26-next.0 + - @backstage/plugin-kubernetes@0.11.1-next.0 + - @backstage/plugin-lighthouse@0.4.11-next.0 + - @backstage/plugin-scaffolder@1.16.0-next.0 + - @backstage/plugin-stackstorm@0.1.8-next.0 + - @backstage/plugin-dynatrace@8.0.0-next.0 + - @backstage/plugin-gcalendar@0.3.20-next.0 + - @backstage/plugin-pagerduty@0.6.7-next.0 + - @backstage/plugin-shortcuts@0.3.16-next.0 + - @backstage/plugin-airbrake@0.3.26-next.0 + - @backstage/plugin-api-docs@0.9.13-next.0 + - @backstage/plugin-circleci@0.3.26-next.0 + - @backstage/plugin-devtools@0.1.6-next.0 + - @backstage/plugin-linguist@0.1.11-next.0 + - @backstage/plugin-newrelic@0.3.42-next.0 + - @backstage/plugin-playlist@0.1.18-next.0 + - @backstage/plugin-puppetdb@0.1.9-next.0 + - @backstage/plugin-explore@0.4.12-next.0 + - @backstage/plugin-jenkins@0.9.1-next.0 + - @backstage/plugin-rollbar@0.4.26-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/plugin-badges@0.2.50-next.0 + - @backstage/plugin-sentry@0.5.11-next.0 + - @backstage/plugin-kafka@0.3.26-next.0 + - @backstage/plugin-gocd@0.1.32-next.0 + - @backstage/plugin-todo@0.2.30-next.0 + - @backstage/plugin-adr@0.6.9-next.0 + - @backstage/plugin-org@0.6.16-next.0 + - app-next-example-plugin@0.0.3-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/core-compat-api@0.0.1-next.0 + - @backstage/plugin-catalog-common@1.0.17 + - @backstage/plugin-linguist-common@0.1.2 + - @backstage/plugin-search-common@1.2.7 + ## 0.0.2 ### Patch Changes diff --git a/packages/app-next/package.json b/packages/app-next/package.json index 5437c66272..62c00fca94 100644 --- a/packages/app-next/package.json +++ b/packages/app-next/package.json @@ -1,6 +1,6 @@ { "name": "example-app-next", - "version": "0.0.2", + "version": "0.0.3-next.0", "private": true, "backstage": { "role": "frontend" diff --git a/packages/app/CHANGELOG.md b/packages/app/CHANGELOG.md index f339cf74da..c360b1108d 100644 --- a/packages/app/CHANGELOG.md +++ b/packages/app/CHANGELOG.md @@ -1,5 +1,82 @@ # example-app +## 0.2.89-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-import@0.10.2-next.0 + - @backstage/cli@0.24.0-next.0 + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-home@0.5.10-next.0 + - @backstage/plugin-catalog@1.15.0-next.0 + - @backstage/plugin-graphiql@0.3.0-next.0 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.2-next.0 + - @backstage/plugin-techdocs@1.8.1-next.0 + - @backstage/frontend-app-api@0.3.0-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/plugin-user-settings@0.7.12-next.0 + - @backstage/plugin-tech-radar@0.6.10-next.0 + - @backstage/plugin-search@1.4.2-next.0 + - @backstage/plugin-catalog-unprocessed-entities@0.1.5-next.0 + - @backstage/integration-react@1.1.21-next.0 + - @backstage/plugin-kubernetes-cluster@0.0.2-next.0 + - @backstage/plugin-microsoft-calendar@0.1.9-next.0 + - @backstage/plugin-newrelic-dashboard@0.3.1-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-permission-react@0.4.17-next.0 + - @backstage/plugin-scaffolder-react@1.6.0-next.0 + - @backstage/plugin-entity-feedback@0.2.9-next.0 + - @backstage/plugin-apache-airflow@0.2.17-next.0 + - @backstage/plugin-github-actions@0.6.7-next.0 + - @backstage/plugin-octopus-deploy@0.2.8-next.0 + - @backstage/plugin-stack-overflow@0.1.22-next.0 + - @backstage/plugin-techdocs-react@1.1.13-next.0 + - @backstage/app-defaults@1.4.5-next.0 + - @backstage/core-app-api@1.11.1-next.0 + - @backstage/plugin-catalog-graph@0.2.38-next.0 + - @backstage/plugin-code-coverage@0.2.19-next.0 + - @backstage/plugin-cost-insights@0.12.15-next.0 + - @backstage/plugin-tech-insights@0.3.18-next.0 + - @backstage/plugin-azure-devops@0.3.8-next.0 + - @backstage/plugin-gcp-projects@0.3.43-next.0 + - @backstage/plugin-search-react@1.7.2-next.0 + - @backstage/plugin-azure-sites@0.1.15-next.0 + - @backstage/plugin-cloudbuild@0.3.26-next.0 + - @backstage/plugin-kubernetes@0.11.1-next.0 + - @backstage/plugin-lighthouse@0.4.11-next.0 + - @backstage/plugin-scaffolder@1.16.0-next.0 + - @backstage/plugin-stackstorm@0.1.8-next.0 + - @backstage/plugin-dynatrace@8.0.0-next.0 + - @backstage/plugin-gcalendar@0.3.20-next.0 + - @backstage/plugin-pagerduty@0.6.7-next.0 + - @backstage/plugin-shortcuts@0.3.16-next.0 + - @backstage/plugin-airbrake@0.3.26-next.0 + - @backstage/plugin-api-docs@0.9.13-next.0 + - @backstage/plugin-circleci@0.3.26-next.0 + - @backstage/plugin-devtools@0.1.6-next.0 + - @backstage/plugin-linguist@0.1.11-next.0 + - @backstage/plugin-newrelic@0.3.42-next.0 + - @backstage/plugin-playlist@0.1.18-next.0 + - @backstage/plugin-puppetdb@0.1.9-next.0 + - @backstage/plugin-explore@0.4.12-next.0 + - @backstage/plugin-jenkins@0.9.1-next.0 + - @backstage/plugin-rollbar@0.4.26-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/plugin-badges@0.2.50-next.0 + - @backstage/plugin-sentry@0.5.11-next.0 + - @backstage/plugin-kafka@0.3.26-next.0 + - @backstage/plugin-nomad@0.1.7-next.0 + - @backstage/plugin-gocd@0.1.32-next.0 + - @backstage/plugin-todo@0.2.30-next.0 + - @backstage/plugin-adr@0.6.9-next.0 + - @backstage/plugin-org@0.6.16-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-common@1.0.17 + - @backstage/plugin-linguist-common@0.1.2 + - @backstage/plugin-search-common@1.2.7 + ## 0.2.88 ### Patch Changes diff --git a/packages/app/package.json b/packages/app/package.json index 9c6b578cd8..4c02aa5cb6 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,6 +1,6 @@ { "name": "example-app", - "version": "0.2.88", + "version": "0.2.89-next.0", "private": true, "backstage": { "role": "frontend" diff --git a/packages/backend-app-api/CHANGELOG.md b/packages/backend-app-api/CHANGELOG.md index efc72cefc8..a6705a897f 100644 --- a/packages/backend-app-api/CHANGELOG.md +++ b/packages/backend-app-api/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/backend-app-api +## 0.5.8-next.0 + +### Patch Changes + +- bc9a18d5ec: Added a workaround for double `default` wrapping when dynamically importing CommonJS modules with default exports. +- Updated dependencies + - @backstage/config-loader@1.5.2-next.0 + - @backstage/cli-node@0.2.0-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/cli-common@0.1.13 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.1-next.0 + - @backstage/plugin-permission-node@0.7.18-next.0 + ## 0.5.6 ### Patch Changes diff --git a/packages/backend-app-api/package.json b/packages/backend-app-api/package.json index 48a3b7a05b..b5bf276e33 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.5.6", + "version": "0.5.8-next.0", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/packages/backend-common/CHANGELOG.md b/packages/backend-common/CHANGELOG.md index 50216d5139..cae7c3314a 100644 --- a/packages/backend-common/CHANGELOG.md +++ b/packages/backend-common/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/backend-common +## 0.19.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/config-loader@1.5.2-next.0 + - @backstage/backend-app-api@0.5.8-next.0 + - @backstage/integration@1.7.1 + - @backstage/integration-aws-node@0.1.7 + - @backstage/backend-dev-utils@0.1.2 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/cli-common@0.1.13 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + ## 0.19.8 ### Patch Changes diff --git a/packages/backend-common/package.json b/packages/backend-common/package.json index 11facfa7ce..111370ad4b 100644 --- a/packages/backend-common/package.json +++ b/packages/backend-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-common", "description": "Common functionality library for Backstage backends", - "version": "0.19.8", + "version": "0.19.9-next.0", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/packages/backend-defaults/CHANGELOG.md b/packages/backend-defaults/CHANGELOG.md index 6c9089fd06..a85c49aacc 100644 --- a/packages/backend-defaults/CHANGELOG.md +++ b/packages/backend-defaults/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/backend-defaults +## 0.2.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-app-api@0.5.8-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + ## 0.2.6 ### Patch Changes diff --git a/packages/backend-defaults/package.json b/packages/backend-defaults/package.json index c843bbc412..13982228ea 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.2.6", + "version": "0.2.7-next.0", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/packages/backend-next/CHANGELOG.md b/packages/backend-next/CHANGELOG.md index 171d82887c..1e4227084d 100644 --- a/packages/backend-next/CHANGELOG.md +++ b/packages/backend-next/CHANGELOG.md @@ -1,5 +1,46 @@ # example-backend-next +## 0.0.17-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-search-backend-node@1.2.11-next.0 + - @backstage/plugin-catalog-backend-module-backstage-openapi@0.1.0-next.0 + - @backstage/plugin-techdocs-backend@1.8.1-next.0 + - @backstage/plugin-scaffolder-backend@1.19.0-next.0 + - @backstage/plugin-catalog-backend@1.15.0-next.0 + - @backstage/plugin-search-backend@1.4.7-next.0 + - @backstage/plugin-search-backend-module-techdocs@0.1.11-next.0 + - @backstage/plugin-proxy-backend@0.4.5-next.0 + - @backstage/plugin-app-backend@0.3.55-next.0 + - @backstage/plugin-devtools-backend@0.2.4-next.0 + - @backstage/backend-defaults@0.2.7-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/plugin-adr-backend@0.4.4-next.0 + - @backstage/plugin-auth-node@0.4.1-next.0 + - @backstage/plugin-azure-devops-backend@0.4.4-next.0 + - @backstage/plugin-badges-backend@0.3.4-next.0 + - @backstage/plugin-catalog-backend-module-openapi@0.1.24-next.0 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.4-next.0 + - @backstage/plugin-catalog-backend-module-unprocessed@0.3.4-next.0 + - @backstage/plugin-entity-feedback-backend@0.2.4-next.0 + - @backstage/plugin-jenkins-backend@0.3.1-next.0 + - @backstage/plugin-kubernetes-backend@0.13.1-next.0 + - @backstage/plugin-lighthouse-backend@0.3.4-next.0 + - @backstage/plugin-linguist-backend@0.5.4-next.0 + - @backstage/plugin-nomad-backend@0.1.9-next.0 + - @backstage/plugin-permission-backend@0.5.30-next.0 + - @backstage/plugin-permission-backend-module-allow-all-policy@0.1.4-next.0 + - @backstage/plugin-permission-common@0.7.9 + - @backstage/plugin-permission-node@0.7.18-next.0 + - @backstage/plugin-playlist-backend@0.3.11-next.0 + - @backstage/plugin-search-backend-module-catalog@0.1.11-next.0 + - @backstage/plugin-search-backend-module-explore@0.1.11-next.0 + - @backstage/plugin-sonarqube-backend@0.2.9-next.0 + - @backstage/plugin-todo-backend@0.3.5-next.0 + ## 0.0.16 ### Patch Changes diff --git a/packages/backend-next/package.json b/packages/backend-next/package.json index d492ee8016..63bfc35d29 100644 --- a/packages/backend-next/package.json +++ b/packages/backend-next/package.json @@ -1,6 +1,6 @@ { "name": "example-backend-next", - "version": "0.0.16", + "version": "0.0.17-next.0", "main": "dist/index.cjs.js", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/packages/backend-openapi-utils/CHANGELOG.md b/packages/backend-openapi-utils/CHANGELOG.md index 097b0aa089..371ef680c8 100644 --- a/packages/backend-openapi-utils/CHANGELOG.md +++ b/packages/backend-openapi-utils/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/backend-openapi-utils +## 0.1.0-next.0 + +### Minor Changes + +- 785fb1ea75: Adds a new route, `/openapi.json` to validated routers for displaying their full OpenAPI spec in a standard endpoint. + +### Patch Changes + +- 6694b369a3: Adds a new function `wrapInOpenApiTestServer` that allows for proxied requests at runtime. This will support the new `yarn backstage-repo-tools schema openapi test` command. +- Updated dependencies + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + ## 0.0.5 ### Patch Changes diff --git a/packages/backend-openapi-utils/package.json b/packages/backend-openapi-utils/package.json index 1d3b3b4777..9fd5b5a83f 100644 --- a/packages/backend-openapi-utils/package.json +++ b/packages/backend-openapi-utils/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-openapi-utils", "description": "OpenAPI typescript support.", - "version": "0.0.5", + "version": "0.1.0-next.0", "main": "src/index.ts", "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 63600bed9f..e83e630a54 100644 --- a/packages/backend-plugin-api/CHANGELOG.md +++ b/packages/backend-plugin-api/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/backend-plugin-api +## 0.6.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.1-next.0 + - @backstage/plugin-permission-common@0.7.9 + ## 0.6.6 ### Patch Changes diff --git a/packages/backend-plugin-api/package.json b/packages/backend-plugin-api/package.json index 2706b1bdaf..cea829b8d7 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.6.6", + "version": "0.6.7-next.0", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/packages/backend-plugin-manager/CHANGELOG.md b/packages/backend-plugin-manager/CHANGELOG.md index 526bc6c802..bb9184ec0c 100644 --- a/packages/backend-plugin-manager/CHANGELOG.md +++ b/packages/backend-plugin-manager/CHANGELOG.md @@ -1,5 +1,28 @@ # @backstage/backend-plugin-manager +## 0.0.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/cli-node@0.2.0-next.0 + - @backstage/plugin-search-backend-node@1.2.11-next.0 + - @backstage/plugin-catalog-backend@1.15.0-next.0 + - @backstage/plugin-scaffolder-node@0.2.8-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/cli-common@0.1.13 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.1-next.0 + - @backstage/plugin-events-backend@0.2.16-next.0 + - @backstage/plugin-events-node@0.2.16-next.0 + - @backstage/plugin-permission-common@0.7.9 + - @backstage/plugin-permission-node@0.7.18-next.0 + - @backstage/plugin-search-common@1.2.7 + ## 0.0.2 ### Patch Changes diff --git a/packages/backend-plugin-manager/package.json b/packages/backend-plugin-manager/package.json index 20446196cf..7fc6b554b0 100644 --- a/packages/backend-plugin-manager/package.json +++ b/packages/backend-plugin-manager/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-plugin-manager", "description": "Backstage plugin management backend", - "version": "0.0.2", + "version": "0.0.3-next.0", "private": true, "main": "src/index.ts", "types": "src/index.ts", diff --git a/packages/backend-tasks/CHANGELOG.md b/packages/backend-tasks/CHANGELOG.md index 2a209521f1..b7cdf841eb 100644 --- a/packages/backend-tasks/CHANGELOG.md +++ b/packages/backend-tasks/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/backend-tasks +## 0.5.12-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + ## 0.5.11 ### Patch Changes diff --git a/packages/backend-tasks/package.json b/packages/backend-tasks/package.json index c386654a24..0b08c29c05 100644 --- a/packages/backend-tasks/package.json +++ b/packages/backend-tasks/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-tasks", "description": "Common distributed task management library for Backstage backends", - "version": "0.5.11", + "version": "0.5.12-next.0", "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 8cb13b24c5..320d11e8d2 100644 --- a/packages/backend-test-utils/CHANGELOG.md +++ b/packages/backend-test-utils/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/backend-test-utils +## 0.2.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-app-api@0.5.8-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.1-next.0 + ## 0.2.7 ### Patch Changes diff --git a/packages/backend-test-utils/package.json b/packages/backend-test-utils/package.json index 1094de8ced..55d2d13aa1 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.2.7", + "version": "0.2.8-next.0", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/packages/backend/CHANGELOG.md b/packages/backend/CHANGELOG.md index 9eb282bb1c..618218ebd8 100644 --- a/packages/backend/CHANGELOG.md +++ b/packages/backend/CHANGELOG.md @@ -1,5 +1,64 @@ # example-backend +## 0.2.89-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-search-backend-node@1.2.11-next.0 + - @backstage/plugin-techdocs-backend@1.8.1-next.0 + - @backstage/plugin-code-coverage-backend@0.2.21-next.0 + - @backstage/plugin-scaffolder-backend@1.19.0-next.0 + - @backstage/plugin-catalog-backend@1.15.0-next.0 + - @backstage/plugin-search-backend@1.4.7-next.0 + - @backstage/plugin-tech-insights-backend@0.5.21-next.0 + - @backstage/plugin-search-backend-module-techdocs@0.1.11-next.0 + - @backstage/plugin-kafka-backend@0.3.5-next.0 + - @backstage/plugin-proxy-backend@0.4.5-next.0 + - @backstage/plugin-auth-backend@0.20.0-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/plugin-app-backend@0.3.55-next.0 + - @backstage/plugin-devtools-backend@0.2.4-next.0 + - example-app@0.2.89-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/plugin-adr-backend@0.4.4-next.0 + - @backstage/plugin-auth-node@0.4.1-next.0 + - @backstage/plugin-azure-devops-backend@0.4.4-next.0 + - @backstage/plugin-azure-sites-backend@0.1.17-next.0 + - @backstage/plugin-badges-backend@0.3.4-next.0 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.4-next.0 + - @backstage/plugin-catalog-backend-module-unprocessed@0.3.4-next.0 + - @backstage/plugin-catalog-node@1.4.8-next.0 + - @backstage/plugin-entity-feedback-backend@0.2.4-next.0 + - @backstage/plugin-events-backend@0.2.16-next.0 + - @backstage/plugin-events-node@0.2.16-next.0 + - @backstage/plugin-explore-backend@0.0.17-next.0 + - @backstage/plugin-graphql-backend@0.2.1-next.0 + - @backstage/plugin-jenkins-backend@0.3.1-next.0 + - @backstage/plugin-kubernetes-backend@0.13.1-next.0 + - @backstage/plugin-lighthouse-backend@0.3.4-next.0 + - @backstage/plugin-linguist-backend@0.5.4-next.0 + - @backstage/plugin-nomad-backend@0.1.9-next.0 + - @backstage/plugin-permission-backend@0.5.30-next.0 + - @backstage/plugin-permission-common@0.7.9 + - @backstage/plugin-permission-node@0.7.18-next.0 + - @backstage/plugin-playlist-backend@0.3.11-next.0 + - @backstage/plugin-rollbar-backend@0.1.52-next.0 + - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.2.8-next.0 + - @backstage/plugin-scaffolder-backend-module-rails@0.4.24-next.0 + - @backstage/plugin-search-backend-module-catalog@0.1.11-next.0 + - @backstage/plugin-search-backend-module-elasticsearch@1.3.10-next.0 + - @backstage/plugin-search-backend-module-explore@0.1.11-next.0 + - @backstage/plugin-search-backend-module-pg@0.5.16-next.0 + - @backstage/plugin-search-common@1.2.7 + - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.39-next.0 + - @backstage/plugin-tech-insights-node@0.4.13-next.0 + - @backstage/plugin-todo-backend@0.3.5-next.0 + ## 0.2.88 ### Patch Changes diff --git a/packages/backend/package.json b/packages/backend/package.json index 76ef8dfb2d..5ccc70b104 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -1,6 +1,6 @@ { "name": "example-backend", - "version": "0.2.88", + "version": "0.2.89-next.0", "main": "dist/index.cjs.js", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/packages/cli-node/CHANGELOG.md b/packages/cli-node/CHANGELOG.md index d5dcb6e976..efe94c5ffa 100644 --- a/packages/cli-node/CHANGELOG.md +++ b/packages/cli-node/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/cli-node +## 0.2.0-next.0 + +### Minor Changes + +- 8db5c3cd7a: Removed support for the `publishConfig.alphaTypes` and `.betaTypes` fields that were used together with `--experimental-type-build` to generate `/alpha` and `/beta` entry points. Use the `exports` field to achieve this instead. + +### Patch Changes + +- Updated dependencies + - @backstage/cli-common@0.1.13 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + ## 0.1.5 ### Patch Changes diff --git a/packages/cli-node/package.json b/packages/cli-node/package.json index 1d1158c818..74051dbd94 100644 --- a/packages/cli-node/package.json +++ b/packages/cli-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/cli-node", "description": "Node.js library for Backstage CLIs", - "version": "0.1.5", + "version": "0.2.0-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index 65d0b752e7..10f60a2f78 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,30 @@ # @backstage/cli +## 0.24.0-next.0 + +### Minor Changes + +- 8db5c3cd7a: Removed support for the `publishConfig.alphaTypes` and `.betaTypes` fields that were used together with `--experimental-type-build` to generate `/alpha` and `/beta` entry points. Use the `exports` field to achieve this instead. +- 4e36abef14: Remove support for the deprecated `--experimental-type-build` option for `package build`. + +### Patch Changes + +- 4ba4ac351f: Switch from using deprecated `@esbuild-kit/*` packages to using `tsx`. This also switches to using the new module loader `register` API when available, avoiding the experimental warning when starting backends. +- 6bf7561d3c: The experimental package detection will now ignore packages that don't make `package.json` available. +- e14cbf563d: Added `EXPERIMENTAL_VITE` flag for using [vite](https://vitejs.dev) as dev server instead of Webpack +- 7cd34392f5: Ignore `stdin` when spawning backend child process for the `start` command. Fixing an issue where backend startup would hang. +- Updated dependencies + - @backstage/config-loader@1.5.2-next.0 + - @backstage/cli-node@0.2.0-next.0 + - @backstage/integration@1.7.1 + - @backstage/catalog-model@1.4.3 + - @backstage/cli-common@0.1.13 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/eslint-plugin@0.1.3 + - @backstage/release-manifests@0.0.10 + - @backstage/types@1.1.1 + ## 0.23.0 ### Minor Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index f397fd5865..f70b0f2696 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/cli", "description": "CLI for developing Backstage plugins and apps", - "version": "0.23.0", + "version": "0.24.0-next.0", "publishConfig": { "access": "public" }, diff --git a/packages/config-loader/CHANGELOG.md b/packages/config-loader/CHANGELOG.md index b0d59d8a8b..269c1b5c31 100644 --- a/packages/config-loader/CHANGELOG.md +++ b/packages/config-loader/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/config-loader +## 1.5.2-next.0 + +### Patch Changes + +- 22ca64f117: Correctly resolve config targets into absolute paths +- Updated dependencies + - @backstage/cli-common@0.1.13 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + ## 1.5.1 ### Patch Changes diff --git a/packages/config-loader/package.json b/packages/config-loader/package.json index fa2ad992c6..652820d5f0 100644 --- a/packages/config-loader/package.json +++ b/packages/config-loader/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/config-loader", "description": "Config loading functionality used by Backstage backend, and CLI", - "version": "1.5.1", + "version": "1.5.2-next.0", "publishConfig": { "access": "public", "main": "dist/index.cjs.js", diff --git a/packages/core-app-api/CHANGELOG.md b/packages/core-app-api/CHANGELOG.md index bce1da4c9d..3ce35f99c0 100644 --- a/packages/core-app-api/CHANGELOG.md +++ b/packages/core-app-api/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/core-app-api +## 1.11.1-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- 89d13e5618: Add current and default scopes when refreshing session +- 9ab0572217: Add component data `core.type` marker for `AppRouter` and `FlatRoutes`. +- Updated dependencies + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/version-bridge@1.0.7-next.0 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + ## 1.11.0 ### Minor Changes diff --git a/packages/core-app-api/package.json b/packages/core-app-api/package.json index e6792a3402..2a5a3cf0c8 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.11.0", + "version": "1.11.1-next.0", "publishConfig": { "access": "public" }, diff --git a/packages/core-compat-api/CHANGELOG.md b/packages/core-compat-api/CHANGELOG.md new file mode 100644 index 0000000000..348132ac66 --- /dev/null +++ b/packages/core-compat-api/CHANGELOG.md @@ -0,0 +1,9 @@ +# @backstage/core-compat-api + +## 0.0.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.3.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 diff --git a/packages/core-compat-api/package.json b/packages/core-compat-api/package.json index d27049c2a4..0753917fd8 100644 --- a/packages/core-compat-api/package.json +++ b/packages/core-compat-api/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/core-compat-api", - "version": "0.0.0", + "version": "0.0.1-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/packages/core-components/CHANGELOG.md b/packages/core-components/CHANGELOG.md index 3ee6eae062..5b6718e958 100644 --- a/packages/core-components/CHANGELOG.md +++ b/packages/core-components/CHANGELOG.md @@ -1,5 +1,25 @@ # @backstage/core-components +## 0.13.7-next.0 + +### Patch Changes + +- 81c8db2088: Fix `RoutedTabs` so that it does not explode without tabs. +- 6c2b872153: Add official support for React 18. +- 7bdc1b0a12: Fixed compatibility with Safari <16.3 by eliminating RegEx lookbehind in `extractInitials`. + + This PR also changed how initials are generated resulting in _John Jonathan Doe_ => _JD_ instead of _JJ_. + +- 71c97e7d73: Fixed the type declaration of `DependencyGraphProps`, the `defs` prop now expects `JSX.Element`s. +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/version-bridge@1.0.7-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + ## 0.13.6 ### Patch Changes diff --git a/packages/core-components/package.json b/packages/core-components/package.json index 842a52df43..4c63eeaac5 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.13.6", + "version": "0.13.7-next.0", "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 e35fd4d6a3..23dbfc0968 100644 --- a/packages/core-plugin-api/CHANGELOG.md +++ b/packages/core-plugin-api/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/core-plugin-api +## 1.8.0-next.0 + +### Minor Changes + +- 1e5b7d993a: `IconComponent` can now have a `fontSize` of `inherit`, which is useful for in-line icons. +- cb6db75bc2: Introduced `AnyRouteRefParams` as a replacement for `AnyParams`, which is now deprecated. + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- cb6db75bc2: Deprecated several types related to the routing system that are scheduled to be removed, as well as several fields on the route ref types themselves. +- 68fc9dc60e: Added a new `/alpha` export `convertLegacyRouteRef`, which is a temporary utility to allow existing route refs to be used with the new experimental packages. +- Updated dependencies + - @backstage/version-bridge@1.0.7-next.0 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + ## 1.7.0 ### Minor Changes diff --git a/packages/core-plugin-api/package.json b/packages/core-plugin-api/package.json index 42f3b8b4d4..5aac6b3fb7 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.7.0", + "version": "1.8.0-next.0", "publishConfig": { "access": "public" }, diff --git a/packages/create-app/CHANGELOG.md b/packages/create-app/CHANGELOG.md index 25728675d6..89a46a3b18 100644 --- a/packages/create-app/CHANGELOG.md +++ b/packages/create-app/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/create-app +## 0.5.7-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- ae1602e54d: If create app installs dependencies, don't suggest to user that they also need to do it. +- Updated dependencies + - @backstage/cli-common@0.1.13 + ## 0.5.6 ### Patch Changes diff --git a/packages/create-app/package.json b/packages/create-app/package.json index 597908c894..bf7780bd49 100644 --- a/packages/create-app/package.json +++ b/packages/create-app/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/create-app", "description": "A CLI that helps you create your own Backstage app", - "version": "0.5.6", + "version": "0.5.7-next.0", "publishConfig": { "access": "public" }, diff --git a/packages/dev-utils/CHANGELOG.md b/packages/dev-utils/CHANGELOG.md index 3bb6f8e324..3d800a8bf0 100644 --- a/packages/dev-utils/CHANGELOG.md +++ b/packages/dev-utils/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/dev-utils +## 1.0.23-next.0 + +### Patch Changes + +- 67cc85bb14: Switched the conditional `react-dom/client` import to use `import(...)` rather than `require(...)`. +- 38cda52746: Added support for React 18. The new `createRoot` API from `react-dom/client` will now be used if present. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/integration-react@1.1.21-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/app-defaults@1.4.5-next.0 + - @backstage/core-app-api@1.11.1-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + ## 1.0.22 ### Patch Changes diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index d860d67070..f1d4420922 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.22", + "version": "1.0.23-next.0", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/packages/e2e-test/CHANGELOG.md b/packages/e2e-test/CHANGELOG.md index 37d8b1d24a..4b50bb883e 100644 --- a/packages/e2e-test/CHANGELOG.md +++ b/packages/e2e-test/CHANGELOG.md @@ -1,5 +1,14 @@ # e2e-test +## 0.2.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/create-app@0.5.7-next.0 + - @backstage/cli-common@0.1.13 + - @backstage/errors@1.2.3 + ## 0.2.8 ### Patch Changes diff --git a/packages/e2e-test/package.json b/packages/e2e-test/package.json index f6e90e116e..70e58832f2 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.8", + "version": "0.2.9-next.0", "private": true, "backstage": { "role": "cli" diff --git a/packages/frontend-app-api/CHANGELOG.md b/packages/frontend-app-api/CHANGELOG.md index 96bf43f73c..84d19133cb 100644 --- a/packages/frontend-app-api/CHANGELOG.md +++ b/packages/frontend-app-api/CHANGELOG.md @@ -1,5 +1,29 @@ # @backstage/frontend-app-api +## 0.3.0-next.0 + +### Minor Changes + +- 68fc9dc60e: Added the ability to configure bound routes through `app.routes.bindings`. The routing system used by `createApp` has been replaced by one that only supports route refs of the new format from `@backstage/frontend-plugin-api`. The requirement for route refs to have the same ID as their associated extension has been removed. + +### Patch Changes + +- e28d379e32: Refactor internal extension instance system into an app graph. +- 6c2b872153: Add official support for React 18. +- dc613f9bcf: Updated `app.extensions` configuration schema. +- 685a4c8901: Installed features are now deduplicated both by reference and ID when available. Features passed to `createApp` now override both discovered and loaded features. +- bb98953cb9: Register default implementation for the `Translation API` on the new `createApp`. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/frontend-plugin-api@0.3.0-next.0 + - @backstage/plugin-graphiql@0.3.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/version-bridge@1.0.7-next.0 + - @backstage/core-app-api@1.11.1-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + ## 0.2.0 ### Minor Changes diff --git a/packages/frontend-app-api/package.json b/packages/frontend-app-api/package.json index d4a595707a..b3f3a98dab 100644 --- a/packages/frontend-app-api/package.json +++ b/packages/frontend-app-api/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/frontend-app-api", - "version": "0.2.0", + "version": "0.3.0-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/packages/frontend-plugin-api/CHANGELOG.md b/packages/frontend-plugin-api/CHANGELOG.md index 8fa9a49726..1a432e19de 100644 --- a/packages/frontend-plugin-api/CHANGELOG.md +++ b/packages/frontend-plugin-api/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/frontend-plugin-api +## 0.3.0-next.0 + +### Minor Changes + +- 68fc9dc60e: Added `RouteRef`, `SubRouteRef`, `ExternalRouteRef`, and related types. All exports from this package that previously relied on the types with the same name from `@backstage/core-plugin-api` now use the new types instead. To convert and existing legacy route ref to be compatible with the APIs from this package, use the `convertLegacyRouteRef` utility from `@backstage/core-plugin-api/alpha`. + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- 6af88a05ff: Improve the extension boundary component and create a default extension suspense component. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/version-bridge@1.0.7-next.0 + - @backstage/types@1.1.1 + ## 0.2.0 ### Minor Changes diff --git a/packages/frontend-plugin-api/package.json b/packages/frontend-plugin-api/package.json index 528d86e0d1..37229dcff8 100644 --- a/packages/frontend-plugin-api/package.json +++ b/packages/frontend-plugin-api/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/frontend-plugin-api", - "version": "0.2.0", + "version": "0.3.0-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/packages/integration-react/CHANGELOG.md b/packages/integration-react/CHANGELOG.md index f26a0e631b..d7e2289443 100644 --- a/packages/integration-react/CHANGELOG.md +++ b/packages/integration-react/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/integration-react +## 1.1.21-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/integration@1.7.1 + - @backstage/config@1.1.1 + ## 1.1.20 ### Patch Changes diff --git a/packages/integration-react/package.json b/packages/integration-react/package.json index f5f77aa775..d2fe31eabc 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.20", + "version": "1.1.21-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/packages/repo-tools/CHANGELOG.md b/packages/repo-tools/CHANGELOG.md index 75ee910172..18ef451c79 100644 --- a/packages/repo-tools/CHANGELOG.md +++ b/packages/repo-tools/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/repo-tools +## 0.4.0-next.0 + +### Minor Changes + +- 4e36abef14: Remove support for the deprecated `--experimental-type-build` option for `package build`. +- 6694b369a3: Adds a new command `schema openapi test` that performs runtime validation of your OpenAPI specs using your test data. Under the hood, we're using Optic to perform this check, really cool work by them! + + To use this new command, you will have to run `yarn add @useoptic/optic` in the root of your repo. + +### Patch Changes + +- Updated dependencies + - @backstage/cli-node@0.2.0-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/cli-common@0.1.13 + - @backstage/errors@1.2.3 + ## 0.3.5 ### Patch Changes diff --git a/packages/repo-tools/package.json b/packages/repo-tools/package.json index 6e45d15e3e..d67a7cf816 100644 --- a/packages/repo-tools/package.json +++ b/packages/repo-tools/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/repo-tools", "description": "CLI for Backstage repo tooling ", - "version": "0.3.5", + "version": "0.4.0-next.0", "publishConfig": { "access": "public" }, diff --git a/packages/techdocs-cli-embedded-app/CHANGELOG.md b/packages/techdocs-cli-embedded-app/CHANGELOG.md index 7a935bc85c..67b125c2ed 100644 --- a/packages/techdocs-cli-embedded-app/CHANGELOG.md +++ b/packages/techdocs-cli-embedded-app/CHANGELOG.md @@ -1,5 +1,24 @@ # techdocs-cli-embedded-app +## 0.2.88-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/cli@0.24.0-next.0 + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog@1.15.0-next.0 + - @backstage/plugin-techdocs@1.8.1-next.0 + - @backstage/integration-react@1.1.21-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-techdocs-react@1.1.13-next.0 + - @backstage/app-defaults@1.4.5-next.0 + - @backstage/core-app-api@1.11.1-next.0 + - @backstage/test-utils@1.4.5-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + ## 0.2.87 ### Patch Changes diff --git a/packages/techdocs-cli-embedded-app/package.json b/packages/techdocs-cli-embedded-app/package.json index 8cd74ea71a..0b3e3d2020 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.87", + "version": "0.2.88-next.0", "private": true, "backstage": { "role": "frontend" diff --git a/packages/techdocs-cli/CHANGELOG.md b/packages/techdocs-cli/CHANGELOG.md index 1ab192f698..95895a7620 100644 --- a/packages/techdocs-cli/CHANGELOG.md +++ b/packages/techdocs-cli/CHANGELOG.md @@ -1,5 +1,16 @@ # @techdocs/cli +## 1.6.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/cli-common@0.1.13 + - @backstage/config@1.1.1 + - @backstage/plugin-techdocs-node@1.9.1-next.0 + ## 1.6.0 ### Minor Changes diff --git a/packages/techdocs-cli/package.json b/packages/techdocs-cli/package.json index 7b97f13e3f..691e42a232 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.6.0", + "version": "1.6.1-next.0", "publishConfig": { "access": "public" }, diff --git a/packages/test-utils/CHANGELOG.md b/packages/test-utils/CHANGELOG.md index 213877cfb0..9580b4855f 100644 --- a/packages/test-utils/CHANGELOG.md +++ b/packages/test-utils/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/test-utils +## 1.4.5-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-permission-react@0.4.17-next.0 + - @backstage/core-app-api@1.11.1-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.9 + ## 1.4.4 ### Patch Changes diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json index 28aa1715e6..35a434dd8f 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.4.4", + "version": "1.4.5-next.0", "publishConfig": { "access": "public" }, diff --git a/packages/theme/CHANGELOG.md b/packages/theme/CHANGELOG.md index 69c88c79ab..b2583c299a 100644 --- a/packages/theme/CHANGELOG.md +++ b/packages/theme/CHANGELOG.md @@ -1,5 +1,11 @@ # @backstage/theme +## 0.4.4-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. + ## 0.4.3 ### Patch Changes diff --git a/packages/theme/package.json b/packages/theme/package.json index 77109aef87..7aed800cbc 100644 --- a/packages/theme/package.json +++ b/packages/theme/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/theme", "description": "material-ui theme for use with Backstage.", - "version": "0.4.3", + "version": "0.4.4-next.0", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/packages/version-bridge/CHANGELOG.md b/packages/version-bridge/CHANGELOG.md index bffaff7177..7e7a708be1 100644 --- a/packages/version-bridge/CHANGELOG.md +++ b/packages/version-bridge/CHANGELOG.md @@ -1,5 +1,11 @@ # @backstage/version-bridge +## 1.0.7-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. + ## 1.0.6 ### Patch Changes diff --git a/packages/version-bridge/package.json b/packages/version-bridge/package.json index caf196f497..4cb6119071 100644 --- a/packages/version-bridge/package.json +++ b/packages/version-bridge/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/version-bridge", "description": "Utilities used by @backstage packages to support multiple concurrent versions", - "version": "1.0.6", + "version": "1.0.7-next.0", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/plugins/adr-backend/CHANGELOG.md b/plugins/adr-backend/CHANGELOG.md index 16446bee2a..5bfae0013c 100644 --- a/plugins/adr-backend/CHANGELOG.md +++ b/plugins/adr-backend/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-adr-backend +## 0.4.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-adr-common@0.2.16 + - @backstage/plugin-search-common@1.2.7 + ## 0.4.3 ### Patch Changes diff --git a/plugins/adr-backend/package.json b/plugins/adr-backend/package.json index ffc5740aaf..b94c0f858f 100644 --- a/plugins/adr-backend/package.json +++ b/plugins/adr-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-adr-backend", - "version": "0.4.3", + "version": "0.4.4-next.0", "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 ea9f9519b0..79443b1988 100644 --- a/plugins/adr/CHANGELOG.md +++ b/plugins/adr/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-adr +## 0.6.9-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/frontend-plugin-api@0.3.0-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/integration-react@1.1.21-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-search-react@1.7.2-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/plugin-adr-common@0.2.16 + - @backstage/plugin-search-common@1.2.7 + ## 0.6.8 ### Patch Changes diff --git a/plugins/adr/package.json b/plugins/adr/package.json index 86e07013bf..47cb0da80f 100644 --- a/plugins/adr/package.json +++ b/plugins/adr/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-adr", - "version": "0.6.8", + "version": "0.6.9-next.0", "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 d10077998b..225310011a 100644 --- a/plugins/airbrake-backend/CHANGELOG.md +++ b/plugins/airbrake-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-airbrake-backend +## 0.3.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/config@1.1.1 + ## 0.3.3 ### Patch Changes diff --git a/plugins/airbrake-backend/package.json b/plugins/airbrake-backend/package.json index dda7f4e28d..f5732264c6 100644 --- a/plugins/airbrake-backend/package.json +++ b/plugins/airbrake-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-airbrake-backend", - "version": "0.3.3", + "version": "0.3.4-next.0", "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 725d9f883a..38fa84f797 100644 --- a/plugins/airbrake/CHANGELOG.md +++ b/plugins/airbrake/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-airbrake +## 0.3.26-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/test-utils@1.4.5-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/dev-utils@1.0.23-next.0 + - @backstage/catalog-model@1.4.3 + ## 0.3.25 ### Patch Changes diff --git a/plugins/airbrake/package.json b/plugins/airbrake/package.json index 4e6476ecea..ec5baa8acc 100644 --- a/plugins/airbrake/package.json +++ b/plugins/airbrake/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-airbrake", - "version": "0.3.25", + "version": "0.3.26-next.0", "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 7117a5e22a..83bb766318 100644 --- a/plugins/allure/CHANGELOG.md +++ b/plugins/allure/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-allure +## 0.1.42-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + ## 0.1.41 ### Patch Changes diff --git a/plugins/allure/package.json b/plugins/allure/package.json index 628eea6651..003d7fa853 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.41", + "version": "0.1.42-next.0", "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 72c42c20fb..fc3b9c7c4c 100644 --- a/plugins/analytics-module-ga/CHANGELOG.md +++ b/plugins/analytics-module-ga/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-analytics-module-ga +## 0.1.35-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/config@1.1.1 + ## 0.1.34 ### Patch Changes diff --git a/plugins/analytics-module-ga/package.json b/plugins/analytics-module-ga/package.json index 44d922ed7a..878a28d382 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.34", + "version": "0.1.35-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/analytics-module-ga4/CHANGELOG.md b/plugins/analytics-module-ga4/CHANGELOG.md index 366fc6e16f..43be5517d4 100644 --- a/plugins/analytics-module-ga4/CHANGELOG.md +++ b/plugins/analytics-module-ga4/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-analytics-module-ga4 +## 0.1.6-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/config@1.1.1 + ## 0.1.5 ### Patch Changes diff --git a/plugins/analytics-module-ga4/package.json b/plugins/analytics-module-ga4/package.json index 705a430424..c6811cbb2d 100644 --- a/plugins/analytics-module-ga4/package.json +++ b/plugins/analytics-module-ga4/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-analytics-module-ga4", - "version": "0.1.5", + "version": "0.1.6-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/analytics-module-newrelic-browser/CHANGELOG.md b/plugins/analytics-module-newrelic-browser/CHANGELOG.md index 2d7e7ea467..dba2d14fd2 100644 --- a/plugins/analytics-module-newrelic-browser/CHANGELOG.md +++ b/plugins/analytics-module-newrelic-browser/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-analytics-module-newrelic-browser +## 0.0.4-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/config@1.1.1 + ## 0.0.3 ### Patch Changes diff --git a/plugins/analytics-module-newrelic-browser/package.json b/plugins/analytics-module-newrelic-browser/package.json index 06b3cf5e02..fcd1f67658 100644 --- a/plugins/analytics-module-newrelic-browser/package.json +++ b/plugins/analytics-module-newrelic-browser/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-analytics-module-newrelic-browser", - "version": "0.0.3", + "version": "0.0.4-next.0", "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 d245b155f6..435030cde4 100644 --- a/plugins/apache-airflow/CHANGELOG.md +++ b/plugins/apache-airflow/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-apache-airflow +## 0.2.17-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + ## 0.2.16 ### Patch Changes diff --git a/plugins/apache-airflow/package.json b/plugins/apache-airflow/package.json index e87179784f..26fa686c88 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.16", + "version": "0.2.17-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/api-docs-module-protoc-gen-doc/CHANGELOG.md b/plugins/api-docs-module-protoc-gen-doc/CHANGELOG.md index 883ed270fa..b31c53f633 100644 --- a/plugins/api-docs-module-protoc-gen-doc/CHANGELOG.md +++ b/plugins/api-docs-module-protoc-gen-doc/CHANGELOG.md @@ -1,5 +1,11 @@ # @backstage/plugin-api-docs-module-protoc-gen-doc +## 0.1.5-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. + ## 0.1.4 ### Patch Changes diff --git a/plugins/api-docs-module-protoc-gen-doc/package.json b/plugins/api-docs-module-protoc-gen-doc/package.json index 80fe6645d7..4f038aaaec 100644 --- a/plugins/api-docs-module-protoc-gen-doc/package.json +++ b/plugins/api-docs-module-protoc-gen-doc/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-api-docs-module-protoc-gen-doc", "description": "Additional functionalities for the api-docs plugin that renders the output of the protoc-gen-doc", - "version": "0.1.4", + "version": "0.1.5-next.0", "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 5cefe7b94b..7e0ac7c44d 100644 --- a/plugins/api-docs/CHANGELOG.md +++ b/plugins/api-docs/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-api-docs +## 0.9.13-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog@1.15.0-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + ## 0.9.12 ### Patch Changes diff --git a/plugins/api-docs/package.json b/plugins/api-docs/package.json index 53832682af..182380b6f6 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.12", + "version": "0.9.13-next.0", "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 a502d30e7d..9a405a026c 100644 --- a/plugins/apollo-explorer/CHANGELOG.md +++ b/plugins/apollo-explorer/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-apollo-explorer +## 0.1.17-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + ## 0.1.16 ### Patch Changes diff --git a/plugins/apollo-explorer/package.json b/plugins/apollo-explorer/package.json index 6af85a2784..436d7dbc37 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.16", + "version": "0.1.17-next.0", "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 991c1defc5..acd36cac83 100644 --- a/plugins/app-backend/CHANGELOG.md +++ b/plugins/app-backend/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-app-backend +## 0.3.55-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/config-loader@1.5.2-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-app-node@0.1.7-next.0 + ## 0.3.54 ### Patch Changes diff --git a/plugins/app-backend/package.json b/plugins/app-backend/package.json index cda5301de8..0b3556c239 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.54", + "version": "0.3.55-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/app-node/CHANGELOG.md b/plugins/app-node/CHANGELOG.md index 30bfaecc96..5cfa6b7aa2 100644 --- a/plugins/app-node/CHANGELOG.md +++ b/plugins/app-node/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/plugin-app-node +## 0.1.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.7-next.0 + ## 0.1.6 ### Patch Changes diff --git a/plugins/app-node/package.json b/plugins/app-node/package.json index 915c5a0881..ac892910a5 100644 --- a/plugins/app-node/package.json +++ b/plugins/app-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-app-node", "description": "Node.js library for the app plugin", - "version": "0.1.6", + "version": "0.1.7-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/auth-backend-module-gcp-iap-provider/CHANGELOG.md b/plugins/auth-backend-module-gcp-iap-provider/CHANGELOG.md index 9cf2657b6b..a96202ef8a 100644 --- a/plugins/auth-backend-module-gcp-iap-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-gcp-iap-provider/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-auth-backend-module-gcp-iap-provider +## 0.2.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.1-next.0 + ## 0.2.0 ### Minor Changes diff --git a/plugins/auth-backend-module-gcp-iap-provider/package.json b/plugins/auth-backend-module-gcp-iap-provider/package.json index 85ddf5aaba..473dc7e3b6 100644 --- a/plugins/auth-backend-module-gcp-iap-provider/package.json +++ b/plugins/auth-backend-module-gcp-iap-provider/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-auth-backend-module-gcp-iap-provider", "description": "A GCP IAP auth provider module for the Backstage auth backend", - "version": "0.2.0", + "version": "0.2.1-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/auth-backend-module-github-provider/CHANGELOG.md b/plugins/auth-backend-module-github-provider/CHANGELOG.md index 80f47d6c2b..6b82880afb 100644 --- a/plugins/auth-backend-module-github-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-github-provider/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-auth-backend-module-github-provider +## 0.1.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/plugin-auth-node@0.4.1-next.0 + ## 0.1.3 ### Patch Changes diff --git a/plugins/auth-backend-module-github-provider/package.json b/plugins/auth-backend-module-github-provider/package.json index 85b6927ba5..9164f6fe2c 100644 --- a/plugins/auth-backend-module-github-provider/package.json +++ b/plugins/auth-backend-module-github-provider/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-auth-backend-module-github-provider", "description": "The github-provider backend module for the auth plugin.", - "version": "0.1.3", + "version": "0.1.4-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/auth-backend-module-gitlab-provider/CHANGELOG.md b/plugins/auth-backend-module-gitlab-provider/CHANGELOG.md index aad16984c2..400bbbfbbf 100644 --- a/plugins/auth-backend-module-gitlab-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-gitlab-provider/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-auth-backend-module-gitlab-provider +## 0.1.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/plugin-auth-node@0.4.1-next.0 + ## 0.1.3 ### Patch Changes diff --git a/plugins/auth-backend-module-gitlab-provider/package.json b/plugins/auth-backend-module-gitlab-provider/package.json index 85fb4b77df..735d241cc9 100644 --- a/plugins/auth-backend-module-gitlab-provider/package.json +++ b/plugins/auth-backend-module-gitlab-provider/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-auth-backend-module-gitlab-provider", "description": "The gitlab-provider backend module for the auth plugin.", - "version": "0.1.3", + "version": "0.1.4-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/auth-backend-module-google-provider/CHANGELOG.md b/plugins/auth-backend-module-google-provider/CHANGELOG.md index 4b78ea58fa..2445a0adf1 100644 --- a/plugins/auth-backend-module-google-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-google-provider/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-auth-backend-module-google-provider +## 0.1.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/plugin-auth-node@0.4.1-next.0 + ## 0.1.3 ### Patch Changes diff --git a/plugins/auth-backend-module-google-provider/package.json b/plugins/auth-backend-module-google-provider/package.json index 7332f0c5e9..ac0678caf7 100644 --- a/plugins/auth-backend-module-google-provider/package.json +++ b/plugins/auth-backend-module-google-provider/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-auth-backend-module-google-provider", "description": "A Google auth provider module for the Backstage auth backend", - "version": "0.1.3", + "version": "0.1.4-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/auth-backend-module-microsoft-provider/CHANGELOG.md b/plugins/auth-backend-module-microsoft-provider/CHANGELOG.md index 4d982911e7..a45f3e21cc 100644 --- a/plugins/auth-backend-module-microsoft-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-microsoft-provider/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-auth-backend-module-microsoft-provider +## 0.1.2-next.0 + +### Patch Changes + +- 2817115d09: Removed `prompt=consent` from start method to fix #20641 +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/plugin-auth-node@0.4.1-next.0 + ## 0.1.0 ### Minor Changes diff --git a/plugins/auth-backend-module-microsoft-provider/package.json b/plugins/auth-backend-module-microsoft-provider/package.json index 16c10667fe..907ba3f16f 100644 --- a/plugins/auth-backend-module-microsoft-provider/package.json +++ b/plugins/auth-backend-module-microsoft-provider/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-auth-backend-module-microsoft-provider", "description": "The microsoft-provider backend module for the auth plugin.", - "version": "0.1.0", + "version": "0.1.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/auth-backend-module-oauth2-provider/CHANGELOG.md b/plugins/auth-backend-module-oauth2-provider/CHANGELOG.md index 3920726928..5236bdcd6c 100644 --- a/plugins/auth-backend-module-oauth2-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-oauth2-provider/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-auth-backend-module-oauth2-provider +## 0.1.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/plugin-auth-node@0.4.1-next.0 + ## 0.1.3 ### Patch Changes diff --git a/plugins/auth-backend-module-oauth2-provider/package.json b/plugins/auth-backend-module-oauth2-provider/package.json index dda9aca87a..33dfd5582f 100644 --- a/plugins/auth-backend-module-oauth2-provider/package.json +++ b/plugins/auth-backend-module-oauth2-provider/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-auth-backend-module-oauth2-provider", "description": "The oauth2-provider backend module for the auth plugin.", - "version": "0.1.3", + "version": "0.1.4-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/auth-backend-module-pinniped-provider/CHANGELOG.md b/plugins/auth-backend-module-pinniped-provider/CHANGELOG.md index 3d24e48a89..ba7b20ca6a 100644 --- a/plugins/auth-backend-module-pinniped-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-pinniped-provider/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-auth-backend-module-pinniped-provider +## 0.1.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/plugin-auth-node@0.4.1-next.0 + ## 0.1.0 ### Minor Changes diff --git a/plugins/auth-backend-module-pinniped-provider/package.json b/plugins/auth-backend-module-pinniped-provider/package.json index 013fd6c49f..dcbd48c84f 100644 --- a/plugins/auth-backend-module-pinniped-provider/package.json +++ b/plugins/auth-backend-module-pinniped-provider/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-auth-backend-module-pinniped-provider", "description": "The pinniped-provider backend module for the auth plugin.", - "version": "0.1.0", + "version": "0.1.1-next.0", "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 d682f21c26..bff9f727fe 100644 --- a/plugins/auth-backend/CHANGELOG.md +++ b/plugins/auth-backend/CHANGELOG.md @@ -1,5 +1,30 @@ # @backstage/plugin-auth-backend +## 0.20.0-next.0 + +### Minor Changes + +- bdf08ad04a: Adds the StaticTokenIssuer and StaticKeyStore, an alternative token issuer that can be used to sign the Authorization header using a predefined public/private key pair. + +### Patch Changes + +- 96c4f54bf6: Reverted the Microsoft auth provider to the previous implementation. +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-backend-module-gcp-iap-provider@0.2.1-next.0 + - @backstage/plugin-auth-backend-module-github-provider@0.1.4-next.0 + - @backstage/plugin-auth-backend-module-gitlab-provider@0.1.4-next.0 + - @backstage/plugin-auth-backend-module-google-provider@0.1.4-next.0 + - @backstage/plugin-auth-backend-module-oauth2-provider@0.1.4-next.0 + - @backstage/plugin-auth-node@0.4.1-next.0 + - @backstage/plugin-catalog-node@1.4.8-next.0 + ## 0.19.3 ### Patch Changes diff --git a/plugins/auth-backend/package.json b/plugins/auth-backend/package.json index 6de6fddd58..113fa8a027 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.19.3", + "version": "0.20.0-next.0", "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 b20ddd7697..d8953c8c94 100644 --- a/plugins/auth-node/CHANGELOG.md +++ b/plugins/auth-node/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-auth-node +## 0.4.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + ## 0.4.0 ### Minor Changes diff --git a/plugins/auth-node/package.json b/plugins/auth-node/package.json index bf2257c942..3eb7a31ca7 100644 --- a/plugins/auth-node/package.json +++ b/plugins/auth-node/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-auth-node", - "version": "0.4.0", + "version": "0.4.1-next.0", "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 605bc9c81c..12d2b37d5d 100644 --- a/plugins/azure-devops-backend/CHANGELOG.md +++ b/plugins/azure-devops-backend/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-azure-devops-backend +## 0.4.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-azure-devops-common@0.3.1 + ## 0.4.3 ### Patch Changes diff --git a/plugins/azure-devops-backend/package.json b/plugins/azure-devops-backend/package.json index 0186a9268b..218c58f665 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.4.3", + "version": "0.4.4-next.0", "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 1277fa0f1e..398d741652 100644 --- a/plugins/azure-devops/CHANGELOG.md +++ b/plugins/azure-devops/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-azure-devops +## 0.3.8-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- 361bb34d8e: Consolidated getting the annotation values into a single function to help with future changes +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + - @backstage/plugin-azure-devops-common@0.3.1 + ## 0.3.7 ### Patch Changes diff --git a/plugins/azure-devops/package.json b/plugins/azure-devops/package.json index 7b5d8ee97a..a09b75ac9e 100644 --- a/plugins/azure-devops/package.json +++ b/plugins/azure-devops/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-azure-devops", - "version": "0.3.7", + "version": "0.3.8-next.0", "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 203b9bab9c..d6275f8838 100644 --- a/plugins/azure-sites-backend/CHANGELOG.md +++ b/plugins/azure-sites-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-azure-sites-backend +## 0.1.17-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-azure-sites-common@0.1.1 + ## 0.1.16 ### Patch Changes diff --git a/plugins/azure-sites-backend/package.json b/plugins/azure-sites-backend/package.json index aa5d700be2..5be47519ad 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.16", + "version": "0.1.17-next.0", "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 1d96a10e10..5cdba26fcb 100644 --- a/plugins/azure-sites/CHANGELOG.md +++ b/plugins/azure-sites/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-azure-sites +## 0.1.15-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/plugin-azure-sites-common@0.1.1 + ## 0.1.14 ### Patch Changes diff --git a/plugins/azure-sites/package.json b/plugins/azure-sites/package.json index c00f1f21af..eb5390d236 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.14", + "version": "0.1.15-next.0", "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 3bf44d0960..58081b140a 100644 --- a/plugins/badges-backend/CHANGELOG.md +++ b/plugins/badges-backend/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-badges-backend +## 0.3.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.1-next.0 + ## 0.3.3 ### Patch Changes diff --git a/plugins/badges-backend/package.json b/plugins/badges-backend/package.json index fb2ab72985..08118445e2 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.3.3", + "version": "0.3.4-next.0", "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 7ba4750487..4ee172f365 100644 --- a/plugins/badges/CHANGELOG.md +++ b/plugins/badges/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-badges +## 0.2.50-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + ## 0.2.49 ### Patch Changes diff --git a/plugins/badges/package.json b/plugins/badges/package.json index 6cb8fa7642..6b476cac8a 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.49", + "version": "0.2.50-next.0", "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 f5df21413d..9b1e3662e1 100644 --- a/plugins/bazaar-backend/CHANGELOG.md +++ b/plugins/bazaar-backend/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-bazaar-backend +## 0.3.5-next.0 + +### Patch Changes + +- 8613ba3928: Switched to using `"exports"` field for `/alpha` subpath export. +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.1-next.0 + ## 0.3.3 ### Patch Changes diff --git a/plugins/bazaar-backend/package.json b/plugins/bazaar-backend/package.json index 2a0c2c8f28..838f01577b 100644 --- a/plugins/bazaar-backend/package.json +++ b/plugins/bazaar-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-bazaar-backend", - "version": "0.3.3", + "version": "0.3.5-next.0", "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 e39456be88..83691388dc 100644 --- a/plugins/bazaar/CHANGELOG.md +++ b/plugins/bazaar/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-bazaar +## 0.2.18-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/cli@0.24.0-next.0 + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog@1.15.0-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + ## 0.2.17 ### Patch Changes diff --git a/plugins/bazaar/package.json b/plugins/bazaar/package.json index ed3428d7f9..2571f00063 100644 --- a/plugins/bazaar/package.json +++ b/plugins/bazaar/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-bazaar", - "version": "0.2.17", + "version": "0.2.18-next.0", "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 175d1c20b0..871a6a718c 100644 --- a/plugins/bitrise/CHANGELOG.md +++ b/plugins/bitrise/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-bitrise +## 0.1.53-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + ## 0.1.52 ### Patch Changes diff --git a/plugins/bitrise/package.json b/plugins/bitrise/package.json index 023472669b..2c2e577ec9 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.52", + "version": "0.1.53-next.0", "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 26971186d6..4cbd9e3c94 100644 --- a/plugins/catalog-backend-module-aws/CHANGELOG.md +++ b/plugins/catalog-backend-module-aws/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-catalog-backend-module-aws +## 0.3.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/integration-aws-node@0.1.7 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.17 + - @backstage/plugin-catalog-node@1.4.8-next.0 + - @backstage/plugin-kubernetes-common@0.7.1-next.0 + ## 0.3.0 ### Minor Changes diff --git a/plugins/catalog-backend-module-aws/package.json b/plugins/catalog-backend-module-aws/package.json index a8999430fa..f51fd3f8c2 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.3.0", + "version": "0.3.1-next.0", "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 315d39baab..a1b7d52763 100644 --- a/plugins/catalog-backend-module-azure/CHANGELOG.md +++ b/plugins/catalog-backend-module-azure/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-catalog-backend-module-azure +## 0.1.26-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.17 + - @backstage/plugin-catalog-node@1.4.8-next.0 + ## 0.1.25 ### Patch Changes diff --git a/plugins/catalog-backend-module-azure/package.json b/plugins/catalog-backend-module-azure/package.json index ef21110f7b..9c49fb839a 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.25", + "version": "0.1.26-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-backstage-openapi/CHANGELOG.md b/plugins/catalog-backend-module-backstage-openapi/CHANGELOG.md new file mode 100644 index 0000000000..b2ee0a4d14 --- /dev/null +++ b/plugins/catalog-backend-module-backstage-openapi/CHANGELOG.md @@ -0,0 +1,19 @@ +# @backstage/plugin-catalog-backend-module-backstage-openapi + +## 0.1.0-next.0 + +### Minor Changes + +- 785fb1ea75: Adds a new catalog module for ingesting Backstage plugin OpenAPI specs into the catalog for display as an API entity. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-openapi-utils@0.1.0-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-node@1.4.8-next.0 diff --git a/plugins/catalog-backend-module-backstage-openapi/package.json b/plugins/catalog-backend-module-backstage-openapi/package.json index 05152fc99a..eaed841623 100644 --- a/plugins/catalog-backend-module-backstage-openapi/package.json +++ b/plugins/catalog-backend-module-backstage-openapi/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-backstage-openapi", - "version": "0.0.0", + "version": "0.1.0-next.0", "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 7682992e01..67930259fc 100644 --- a/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md +++ b/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-catalog-backend-module-bitbucket-cloud +## 0.1.22-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/plugin-bitbucket-cloud-common@0.2.13 + - @backstage/plugin-catalog-common@1.0.17 + - @backstage/plugin-catalog-node@1.4.8-next.0 + - @backstage/plugin-events-node@0.2.16-next.0 + ## 0.1.21 ### Patch Changes diff --git a/plugins/catalog-backend-module-bitbucket-cloud/package.json b/plugins/catalog-backend-module-bitbucket-cloud/package.json index ed10c8433e..deda20c641 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.21", + "version": "0.1.22-next.0", "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 67ea880c96..3b6e9a9a26 100644 --- a/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md +++ b/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-catalog-backend-module-bitbucket-server +## 0.1.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-node@1.4.8-next.0 + ## 0.1.19 ### Patch Changes diff --git a/plugins/catalog-backend-module-bitbucket-server/package.json b/plugins/catalog-backend-module-bitbucket-server/package.json index e0f395a1a2..249ee24660 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.19", + "version": "0.1.20-next.0", "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 cf7e871bc5..cdf8e53426 100644 --- a/plugins/catalog-backend-module-bitbucket/CHANGELOG.md +++ b/plugins/catalog-backend-module-bitbucket/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-catalog-backend-module-bitbucket +## 0.2.22-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-bitbucket-cloud-common@0.2.13 + - @backstage/plugin-catalog-node@1.4.8-next.0 + ## 0.2.21 ### Patch Changes diff --git a/plugins/catalog-backend-module-bitbucket/package.json b/plugins/catalog-backend-module-bitbucket/package.json index a68cb1e674..8efed95068 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.21", + "version": "0.2.22-next.0", "deprecated": true, "main": "src/index.ts", "types": "src/index.ts", diff --git a/plugins/catalog-backend-module-gcp/CHANGELOG.md b/plugins/catalog-backend-module-gcp/CHANGELOG.md index c755f7a72b..9240006161 100644 --- a/plugins/catalog-backend-module-gcp/CHANGELOG.md +++ b/plugins/catalog-backend-module-gcp/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-catalog-backend-module-gcp +## 0.1.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-node@1.4.8-next.0 + - @backstage/plugin-kubernetes-common@0.7.1-next.0 + ## 0.1.6 ### Patch Changes diff --git a/plugins/catalog-backend-module-gcp/package.json b/plugins/catalog-backend-module-gcp/package.json index 70bf6f7b88..678c8e1075 100644 --- a/plugins/catalog-backend-module-gcp/package.json +++ b/plugins/catalog-backend-module-gcp/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-gcp", "description": "A Backstage catalog backend module that helps integrate towards GCP", - "version": "0.1.6", + "version": "0.1.7-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-gerrit/CHANGELOG.md b/plugins/catalog-backend-module-gerrit/CHANGELOG.md index e55d30ed12..280215731b 100644 --- a/plugins/catalog-backend-module-gerrit/CHANGELOG.md +++ b/plugins/catalog-backend-module-gerrit/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-catalog-backend-module-gerrit +## 0.1.23-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-node@1.4.8-next.0 + ## 0.1.22 ### Patch Changes diff --git a/plugins/catalog-backend-module-gerrit/package.json b/plugins/catalog-backend-module-gerrit/package.json index 576f772968..7e8b248573 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.22", + "version": "0.1.23-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-github-org/CHANGELOG.md b/plugins/catalog-backend-module-github-org/CHANGELOG.md index e0a24889c4..939233c8db 100644 --- a/plugins/catalog-backend-module-github-org/CHANGELOG.md +++ b/plugins/catalog-backend-module-github-org/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-catalog-backend-module-github-org +## 0.1.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-backend-module-github@0.4.5-next.0 + - @backstage/plugin-catalog-node@1.4.8-next.0 + ## 0.1.0 ### Minor Changes diff --git a/plugins/catalog-backend-module-github-org/package.json b/plugins/catalog-backend-module-github-org/package.json index 7ad96c65e2..6b91be826a 100644 --- a/plugins/catalog-backend-module-github-org/package.json +++ b/plugins/catalog-backend-module-github-org/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-github-org", "description": "The github-org backend module for the catalog plugin.", - "version": "0.1.0", + "version": "0.1.1-next.0", "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 21e8ad0e1b..e5fb524cb3 100644 --- a/plugins/catalog-backend-module-github/CHANGELOG.md +++ b/plugins/catalog-backend-module-github/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-catalog-backend-module-github +## 0.4.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.15.0-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-common@1.0.17 + - @backstage/plugin-catalog-node@1.4.8-next.0 + - @backstage/plugin-events-node@0.2.16-next.0 + ## 0.4.4 ### Patch Changes diff --git a/plugins/catalog-backend-module-github/package.json b/plugins/catalog-backend-module-github/package.json index f2c321f84a..ba51c49eff 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.4.4", + "version": "0.4.5-next.0", "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 5378ba5448..a48379e18d 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.3.4-next.0 + +### Patch Changes + +- d732f17610: Added try catch around fetching gitlab group users to prevent refresh from failing completely while only a select number of groups might not be able to load correctly. +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-node@1.4.8-next.0 + ## 0.3.3 ### Patch Changes diff --git a/plugins/catalog-backend-module-gitlab/package.json b/plugins/catalog-backend-module-gitlab/package.json index 2c5966bb68..abf9797f7f 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.3.3", + "version": "0.3.4-next.0", "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 58e19beae8..20f2abd655 100644 --- a/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md +++ b/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-catalog-backend-module-incremental-ingestion +## 0.4.11-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.15.0-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-node@1.4.8-next.0 + - @backstage/plugin-events-node@0.2.16-next.0 + - @backstage/plugin-permission-common@0.7.9 + ## 0.4.10 ### Patch Changes diff --git a/plugins/catalog-backend-module-incremental-ingestion/package.json b/plugins/catalog-backend-module-incremental-ingestion/package.json index a0df7f5449..ef2a876f5f 100644 --- a/plugins/catalog-backend-module-incremental-ingestion/package.json +++ b/plugins/catalog-backend-module-incremental-ingestion/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-incremental-ingestion", "description": "An entity provider for streaming large asset sources into the catalog", - "version": "0.4.10", + "version": "0.4.11-next.0", "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 f9d38ee033..061536cc9d 100644 --- a/plugins/catalog-backend-module-ldap/CHANGELOG.md +++ b/plugins/catalog-backend-module-ldap/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-catalog-backend-module-ldap +## 0.5.22-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.17 + - @backstage/plugin-catalog-node@1.4.8-next.0 + ## 0.5.21 ### Patch Changes diff --git a/plugins/catalog-backend-module-ldap/package.json b/plugins/catalog-backend-module-ldap/package.json index 36c1e6c46f..819ad2a81c 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.21", + "version": "0.5.22-next.0", "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 3cb7b30b3d..acd364a94c 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.14-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-common@1.0.17 + - @backstage/plugin-catalog-node@1.4.8-next.0 + ## 0.5.13 ### Patch Changes diff --git a/plugins/catalog-backend-module-msgraph/package.json b/plugins/catalog-backend-module-msgraph/package.json index 91459e847e..7802f5a50e 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.13", + "version": "0.5.14-next.0", "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 65b55833ca..7e2651b957 100644 --- a/plugins/catalog-backend-module-openapi/CHANGELOG.md +++ b/plugins/catalog-backend-module-openapi/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-catalog-backend-module-openapi +## 0.1.24-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.15.0-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.17 + - @backstage/plugin-catalog-node@1.4.8-next.0 + ## 0.1.23 ### Patch Changes diff --git a/plugins/catalog-backend-module-openapi/package.json b/plugins/catalog-backend-module-openapi/package.json index 1f85d0d844..e96649ef95 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.23", + "version": "0.1.24-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-puppetdb/CHANGELOG.md b/plugins/catalog-backend-module-puppetdb/CHANGELOG.md index 7ce2b70e20..0e1f1fdccd 100644 --- a/plugins/catalog-backend-module-puppetdb/CHANGELOG.md +++ b/plugins/catalog-backend-module-puppetdb/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-catalog-backend-module-puppetdb +## 0.1.12-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-node@1.4.8-next.0 + ## 0.1.11 ### Patch Changes diff --git a/plugins/catalog-backend-module-puppetdb/package.json b/plugins/catalog-backend-module-puppetdb/package.json index db267bc22e..ffe9195fa4 100644 --- a/plugins/catalog-backend-module-puppetdb/package.json +++ b/plugins/catalog-backend-module-puppetdb/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-puppetdb", "description": "A Backstage catalog backend module that helps integrate towards PuppetDB", - "version": "0.1.11", + "version": "0.1.12-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-scaffolder-entity-model/CHANGELOG.md b/plugins/catalog-backend-module-scaffolder-entity-model/CHANGELOG.md index b077261f25..63b52026af 100644 --- a/plugins/catalog-backend-module-scaffolder-entity-model/CHANGELOG.md +++ b/plugins/catalog-backend-module-scaffolder-entity-model/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-catalog-backend-module-scaffolder-entity-model +## 0.1.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-common@1.4.3-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/plugin-catalog-common@1.0.17 + - @backstage/plugin-catalog-node@1.4.8-next.0 + ## 0.1.3 ### Patch Changes diff --git a/plugins/catalog-backend-module-scaffolder-entity-model/package.json b/plugins/catalog-backend-module-scaffolder-entity-model/package.json index f20a772a30..ca87a07d1d 100644 --- a/plugins/catalog-backend-module-scaffolder-entity-model/package.json +++ b/plugins/catalog-backend-module-scaffolder-entity-model/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-scaffolder-entity-model", "description": "Adds support for the scaffolder specific entity model (e.g. the Template kind) to the catalog backend plugin.", - "version": "0.1.3", + "version": "0.1.4-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-unprocessed/CHANGELOG.md b/plugins/catalog-backend-module-unprocessed/CHANGELOG.md index 310f3b9b5f..a911b911eb 100644 --- a/plugins/catalog-backend-module-unprocessed/CHANGELOG.md +++ b/plugins/catalog-backend-module-unprocessed/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-catalog-backend-module-unprocessed +## 0.3.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/plugin-auth-node@0.4.1-next.0 + ## 0.3.3 ### Patch Changes diff --git a/plugins/catalog-backend-module-unprocessed/package.json b/plugins/catalog-backend-module-unprocessed/package.json index 5adc6e1f5f..ba1080d02b 100644 --- a/plugins/catalog-backend-module-unprocessed/package.json +++ b/plugins/catalog-backend-module-unprocessed/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-unprocessed", "description": "Backstage Catalog module to view unprocessed entities", - "version": "0.3.3", + "version": "0.3.4-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 f6dee7b12f..0775bb6a1f 100644 --- a/plugins/catalog-backend/CHANGELOG.md +++ b/plugins/catalog-backend/CHANGELOG.md @@ -1,5 +1,44 @@ # @backstage/plugin-catalog-backend +## 1.15.0-next.0 + +### Minor Changes + +- 8d756968f9: Introduce a new optional config parameter `catalog.stitchingStrategy.mode`, + which can have the values `'immediate'` (default) and `'deferred'`. The default + is for stitching to work as it did before this change, which means that it + happens "in-band" (blocking) immediately when each processing task finishes. + When set to `'deferred'`, stitching is instead deferred to happen on a separate + asynchronous worker queue just like processing. + + Deferred stitching should make performance smoother when ingesting large amounts + of entities, and reduce p99 processing times and repeated over-stitching of + hot spot entities when fan-out/fan-in in terms of relations is very large. It + does however also come with some performance cost due to the queuing with how + much wall-clock time some types of task take. + +### Patch Changes + +- 6694b369a3: Update the OpenAPI spec with more complete error responses and request bodies using Optic. Also, updates the test cases to use the new `supertest` pass through from `@backstage/backend-openapi-utils`. +- Updated dependencies + - @backstage/backend-openapi-utils@0.1.0-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.1-next.0 + - @backstage/plugin-catalog-common@1.0.17 + - @backstage/plugin-catalog-node@1.4.8-next.0 + - @backstage/plugin-events-node@0.2.16-next.0 + - @backstage/plugin-permission-common@0.7.9 + - @backstage/plugin-permission-node@0.7.18-next.0 + - @backstage/plugin-search-backend-module-catalog@0.1.11-next.0 + ## 1.14.0 ### Minor Changes diff --git a/plugins/catalog-backend/package.json b/plugins/catalog-backend/package.json index 388f6b5ffc..8dc96c3cb7 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.14.0", + "version": "1.15.0-next.0", "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 5d10ff94f3..31f342f335 100644 --- a/plugins/catalog-graph/CHANGELOG.md +++ b/plugins/catalog-graph/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-catalog-graph +## 0.2.38-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/types@1.1.1 + ## 0.2.37 ### Patch Changes diff --git a/plugins/catalog-graph/package.json b/plugins/catalog-graph/package.json index 0afb6d92f7..e9a69f1545 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.37", + "version": "0.2.38-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-graphql/CHANGELOG.md b/plugins/catalog-graphql/CHANGELOG.md index 0a08803e7d..0a8a24b828 100644 --- a/plugins/catalog-graphql/CHANGELOG.md +++ b/plugins/catalog-graphql/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-catalog-graphql +## 0.4.1-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + ## 0.4.0 ### Minor Changes diff --git a/plugins/catalog-graphql/package.json b/plugins/catalog-graphql/package.json index d8869e2578..de493b16f4 100644 --- a/plugins/catalog-graphql/package.json +++ b/plugins/catalog-graphql/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-graphql", "description": "Deprecated, consider using @frontside/backstage-plugin-graphql-backend instead", - "version": "0.4.0", + "version": "0.4.1-next.0", "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 8a84c211e5..3c4b4e9472 100644 --- a/plugins/catalog-import/CHANGELOG.md +++ b/plugins/catalog-import/CHANGELOG.md @@ -1,5 +1,25 @@ # @backstage/plugin-catalog-import +## 0.10.2-next.0 + +### Patch Changes + +- 6db75b900a: Create an experimental plugin that is compatible with the declarative integration system, it is exported from the `/alpha` subpath. +- 6c2b872153: Add official support for React 18. +- 71c97e7d73: The `app.title` configuration is now properly required to be a string. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/frontend-plugin-api@0.3.0-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/integration-react@1.1.21-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/integration@1.7.1 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-common@1.0.17 + ## 0.10.1 ### Patch Changes diff --git a/plugins/catalog-import/package.json b/plugins/catalog-import/package.json index e892338dea..8749b4924f 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.10.1", + "version": "0.10.2-next.0", "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 22a2319142..13978277ff 100644 --- a/plugins/catalog-node/CHANGELOG.md +++ b/plugins/catalog-node/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-catalog-node +## 1.4.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.17 + ## 1.4.7 ### Patch Changes diff --git a/plugins/catalog-node/package.json b/plugins/catalog-node/package.json index 2817703044..aa5db93f6d 100644 --- a/plugins/catalog-node/package.json +++ b/plugins/catalog-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-node", "description": "The plugin-catalog-node module for @backstage/plugin-catalog-backend", - "version": "1.4.7", + "version": "1.4.8-next.0", "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 9d6dbd2840..c8630a80ee 100644 --- a/plugins/catalog-react/CHANGELOG.md +++ b/plugins/catalog-react/CHANGELOG.md @@ -1,5 +1,49 @@ # @backstage/plugin-catalog-react +## 1.9.0-next.0 + +### Minor Changes + +- 1e5b7d993a: Added an `EntityPresentationApi` and associated `entityPresentationApiRef`. This + API lets you control how references to entities (e.g. in links, headings, + iconography etc) are represented in the user interface. + + Usage of this API is initially added to the `EntityRefLink` and `EntityRefLinks` + components, so that they can render richer, more correct representation of + entity refs. There's also a new `EntityDisplayName` component, which works just like + the `EntityRefLink` but without the link. + + Along with that change, the `fetchEntities` and `getTitle` props of + `EntityRefLinksProps` are deprecated and no longer used, since the same need + instead is fulfilled (and by default always enabled) by the + `entityPresentationApiRef`. + +- 1fd53fa0c6: The `UserListPicker` component has undergone improvements to enhance its performance. + + The previous implementation inferred the number of owned and starred entities based on the entities available in the `EntityListContext`. The updated version no longer relies on the `EntityListContext` for inference, allowing for better decoupling. + + The component now loads the entities' count asynchronously, resulting in improved performance and responsiveness. For this purpose, some of the exported filters such as `EntityTagFilter`, `EntityOwnerFilter`, `EntityLifecycleFilter` and `EntityNamespaceFilter` have now the `getCatalogFilters` method implemented. + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- 0bf6ebda88: Added new APIs at the `/alpha` subpath for creating entity page cards and content for the new frontend system. +- 71c97e7d73: The `spec.type` field in entities will now always be rendered as a string. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/frontend-plugin-api@0.3.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-permission-react@0.4.17-next.0 + - @backstage/version-bridge@1.0.7-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/integration@1.7.1 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.17 + - @backstage/plugin-permission-common@0.7.9 + ## 1.8.5 ### Patch Changes diff --git a/plugins/catalog-react/package.json b/plugins/catalog-react/package.json index 70fa5e9614..6f156beea4 100644 --- a/plugins/catalog-react/package.json +++ b/plugins/catalog-react/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-react", "description": "A frontend library that helps other Backstage plugins interact with the catalog", - "version": "1.8.5", + "version": "1.9.0-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-unprocessed-entities/CHANGELOG.md b/plugins/catalog-unprocessed-entities/CHANGELOG.md index afd3890a12..a3039ed051 100644 --- a/plugins/catalog-unprocessed-entities/CHANGELOG.md +++ b/plugins/catalog-unprocessed-entities/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-catalog-unprocessed-entities +## 0.1.5-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + ## 0.1.4 ### Patch Changes diff --git a/plugins/catalog-unprocessed-entities/package.json b/plugins/catalog-unprocessed-entities/package.json index b4d95ac20a..113d0ed648 100644 --- a/plugins/catalog-unprocessed-entities/package.json +++ b/plugins/catalog-unprocessed-entities/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-unprocessed-entities", - "version": "0.1.4", + "version": "0.1.5-next.0", "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 6b5ba8b956..1bbe6ed199 100644 --- a/plugins/catalog/CHANGELOG.md +++ b/plugins/catalog/CHANGELOG.md @@ -1,5 +1,43 @@ # @backstage/plugin-catalog +## 1.15.0-next.0 + +### Minor Changes + +- 1e5b7d993a: Added the `DefaultEntityPresentationApi`, which is an implementation of the + `EntityPresentationApi` that `@backstage/plugin-catalog-react` exposes through + its `entityPresentationApiRef`. This implementation is also by default made + available automatically by the catalog plugin, unless you replace it with a + custom one. It batch fetches and caches data from the catalog as needed for + display, and is customizable by adopters to add their own rendering functions. + +### Patch Changes + +- 8a8445663b: Migrate catalog entity cards to new frontend system extension format. +- e964c17db9: Use default extensions boundary and suspense on the alpha declarative `createCatalogFilterExtension` extension factory. +- 71c97e7d73: The `spec.lifecycle' field in entities will now always be rendered as a string. +- 6c2b872153: Add official support for React 18. +- 0bf6ebda88: Initial entity page implementation for new frontend system at `/alpha`, with an overview page enabled by default and the about card available as an optional card. +- bb98953cb9: Create declarative extensions for the `Catalog` plugin; this initial plugin preset contains sidebar item, index page and filter extensions, all distributed via `/alpha` subpath. + + The `EntityPage` will be migrated in a follow-up patch. + +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/frontend-plugin-api@0.3.0-next.0 + - @backstage/plugin-scaffolder-common@1.4.3-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/integration-react@1.1.21-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-search-react@1.7.2-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.17 + - @backstage/plugin-search-common@1.2.7 + ## 1.14.0 ### Minor Changes diff --git a/plugins/catalog/package.json b/plugins/catalog/package.json index 5ddf22d1f1..013f49ba2e 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.14.0", + "version": "1.15.0-next.0", "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 b0cb0fb020..fd6d68e389 100644 --- a/plugins/cicd-statistics-module-gitlab/CHANGELOG.md +++ b/plugins/cicd-statistics-module-gitlab/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-cicd-statistics-module-gitlab +## 0.1.22-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-cicd-statistics@0.1.28-next.0 + - @backstage/catalog-model@1.4.3 + ## 0.1.21 ### Patch Changes diff --git a/plugins/cicd-statistics-module-gitlab/package.json b/plugins/cicd-statistics-module-gitlab/package.json index 6c7f3c150f..9c763bbedc 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.21", + "version": "0.1.22-next.0", "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 9fe1717192..2ae84785d1 100644 --- a/plugins/cicd-statistics/CHANGELOG.md +++ b/plugins/cicd-statistics/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-cicd-statistics +## 0.1.28-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/catalog-model@1.4.3 + ## 0.1.27 ### Patch Changes diff --git a/plugins/cicd-statistics/package.json b/plugins/cicd-statistics/package.json index fb8b736035..a19523580e 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.27", + "version": "0.1.28-next.0", "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 c8ba1ae27f..5ed6d4d6e8 100644 --- a/plugins/circleci/CHANGELOG.md +++ b/plugins/circleci/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-circleci +## 0.3.26-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + ## 0.3.25 ### Patch Changes diff --git a/plugins/circleci/package.json b/plugins/circleci/package.json index ddec70c2de..22ff9d8238 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.25", + "version": "0.3.26-next.0", "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 a322da009c..da292577a2 100644 --- a/plugins/cloudbuild/CHANGELOG.md +++ b/plugins/cloudbuild/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-cloudbuild +## 0.3.26-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + ## 0.3.25 ### Patch Changes diff --git a/plugins/cloudbuild/package.json b/plugins/cloudbuild/package.json index 8b64387aa8..e156694938 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.25", + "version": "0.3.26-next.0", "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 65dda2e3f5..430efe264e 100644 --- a/plugins/code-climate/CHANGELOG.md +++ b/plugins/code-climate/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-code-climate +## 0.1.26-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + ## 0.1.25 ### Patch Changes diff --git a/plugins/code-climate/package.json b/plugins/code-climate/package.json index dc01c52a13..cb154399f1 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.25", + "version": "0.1.26-next.0", "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 2cc9d85f3b..358ba9c483 100644 --- a/plugins/code-coverage-backend/CHANGELOG.md +++ b/plugins/code-coverage-backend/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-code-coverage-backend +## 0.2.21-next.0 + +### Patch Changes + +- 11f671eaa9: Added support for new backend system +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.1-next.0 + ## 0.2.20 ### Patch Changes diff --git a/plugins/code-coverage-backend/package.json b/plugins/code-coverage-backend/package.json index d1fa4e4aed..7f667c50b1 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.20", + "version": "0.2.21-next.0", "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 f5ba60eeb4..111e4ad512 100644 --- a/plugins/code-coverage/CHANGELOG.md +++ b/plugins/code-coverage/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-code-coverage +## 0.2.19-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- 71c97e7d73: The warning for missing code coverage will now render the entity as a reference. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + ## 0.2.18 ### Patch Changes diff --git a/plugins/code-coverage/package.json b/plugins/code-coverage/package.json index 15343a8212..2f74877a50 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.18", + "version": "0.2.19-next.0", "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 29f0700e65..b9d2faff0c 100644 --- a/plugins/codescene/CHANGELOG.md +++ b/plugins/codescene/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-codescene +## 0.1.19-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + ## 0.1.18 ### Patch Changes diff --git a/plugins/codescene/package.json b/plugins/codescene/package.json index e36c8e5575..77f4b36f58 100644 --- a/plugins/codescene/package.json +++ b/plugins/codescene/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-codescene", - "version": "0.1.18", + "version": "0.1.19-next.0", "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 3e09c6dd98..19eb742821 100644 --- a/plugins/config-schema/CHANGELOG.md +++ b/plugins/config-schema/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-config-schema +## 0.1.47-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + ## 0.1.46 ### Patch Changes diff --git a/plugins/config-schema/package.json b/plugins/config-schema/package.json index 387921650b..9d89e7c9c1 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.46", + "version": "0.1.47-next.0", "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 a60e531966..4885ff4bc8 100644 --- a/plugins/cost-insights/CHANGELOG.md +++ b/plugins/cost-insights/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-cost-insights +## 0.12.15-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/plugin-cost-insights-common@0.1.2 + ## 0.12.14 ### Patch Changes diff --git a/plugins/cost-insights/package.json b/plugins/cost-insights/package.json index 5cd7c3458b..8bb278588e 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.14", + "version": "0.12.15-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/devtools-backend/CHANGELOG.md b/plugins/devtools-backend/CHANGELOG.md index fd9108d28d..e7dbc7427c 100644 --- a/plugins/devtools-backend/CHANGELOG.md +++ b/plugins/devtools-backend/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-devtools-backend +## 0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/config-loader@1.5.2-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/cli-common@0.1.13 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.1-next.0 + - @backstage/plugin-devtools-common@0.1.5 + - @backstage/plugin-permission-common@0.7.9 + - @backstage/plugin-permission-node@0.7.18-next.0 + ## 0.2.3 ### Patch Changes diff --git a/plugins/devtools-backend/package.json b/plugins/devtools-backend/package.json index acf7788d8c..9938bec6e7 100644 --- a/plugins/devtools-backend/package.json +++ b/plugins/devtools-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-devtools-backend", - "version": "0.2.3", + "version": "0.2.4-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/devtools/CHANGELOG.md b/plugins/devtools/CHANGELOG.md index b200af4d82..0496e56359 100644 --- a/plugins/devtools/CHANGELOG.md +++ b/plugins/devtools/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-devtools +## 0.1.6-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-permission-react@0.4.17-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-devtools-common@0.1.5 + ## 0.1.5 ### Patch Changes diff --git a/plugins/devtools/package.json b/plugins/devtools/package.json index 41ea821dea..4523be5278 100644 --- a/plugins/devtools/package.json +++ b/plugins/devtools/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-devtools", - "version": "0.1.5", + "version": "0.1.6-next.0", "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 2de9b4555b..7b9e8b609f 100644 --- a/plugins/dynatrace/CHANGELOG.md +++ b/plugins/dynatrace/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-dynatrace +## 8.0.0-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + ## 7.0.5 ### Patch Changes diff --git a/plugins/dynatrace/package.json b/plugins/dynatrace/package.json index f8b35eafaa..86b7ea87b8 100644 --- a/plugins/dynatrace/package.json +++ b/plugins/dynatrace/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-dynatrace", - "version": "7.0.5", + "version": "8.0.0-next.0", "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 acfdaf360f..5ef3f5e709 100644 --- a/plugins/entity-feedback-backend/CHANGELOG.md +++ b/plugins/entity-feedback-backend/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-entity-feedback-backend +## 0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/plugin-auth-node@0.4.1-next.0 + - @backstage/plugin-entity-feedback-common@0.1.3 + ## 0.2.3 ### Patch Changes diff --git a/plugins/entity-feedback-backend/package.json b/plugins/entity-feedback-backend/package.json index c493be7075..77e49a7086 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.2.3", + "version": "0.2.4-next.0", "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 469ff16ca2..d813946f1f 100644 --- a/plugins/entity-feedback/CHANGELOG.md +++ b/plugins/entity-feedback/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-entity-feedback +## 0.2.9-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + - @backstage/plugin-entity-feedback-common@0.1.3 + ## 0.2.8 ### Patch Changes diff --git a/plugins/entity-feedback/package.json b/plugins/entity-feedback/package.json index f2a4697454..67ea558503 100644 --- a/plugins/entity-feedback/package.json +++ b/plugins/entity-feedback/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-entity-feedback", - "version": "0.2.8", + "version": "0.2.9-next.0", "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 4aeb6cfd03..3c0b1fe96d 100644 --- a/plugins/entity-validation/CHANGELOG.md +++ b/plugins/entity-validation/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-entity-validation +## 0.1.11-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-common@1.0.17 + ## 0.1.10 ### Patch Changes diff --git a/plugins/entity-validation/package.json b/plugins/entity-validation/package.json index 1fee0c7892..ec2e36d06b 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.10", + "version": "0.1.11-next.0", "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 304271a0a4..ea404bd4da 100644 --- a/plugins/events-backend-module-aws-sqs/CHANGELOG.md +++ b/plugins/events-backend-module-aws-sqs/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-events-backend-module-aws-sqs +## 0.2.10-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-events-node@0.2.16-next.0 + ## 0.2.9 ### Patch Changes diff --git a/plugins/events-backend-module-aws-sqs/package.json b/plugins/events-backend-module-aws-sqs/package.json index a114136c7e..877af9b03c 100644 --- a/plugins/events-backend-module-aws-sqs/package.json +++ b/plugins/events-backend-module-aws-sqs/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-events-backend-module-aws-sqs", - "version": "0.2.9", + "version": "0.2.10-next.0", "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 593b77bdf3..0b8ef3e3a3 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.17-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/plugin-events-node@0.2.16-next.0 + ## 0.1.16 ### Patch Changes diff --git a/plugins/events-backend-module-azure/package.json b/plugins/events-backend-module-azure/package.json index 175f952a4b..d81d912ed4 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.16", + "version": "0.1.17-next.0", "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 2bfd659892..4fe98ad304 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.17-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/plugin-events-node@0.2.16-next.0 + ## 0.1.16 ### Patch Changes diff --git a/plugins/events-backend-module-bitbucket-cloud/package.json b/plugins/events-backend-module-bitbucket-cloud/package.json index e81bea9415..d6a33fbed2 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.16", + "version": "0.1.17-next.0", "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 fd49c7df3b..c63b5224dc 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.17-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/plugin-events-node@0.2.16-next.0 + ## 0.1.16 ### Patch Changes diff --git a/plugins/events-backend-module-gerrit/package.json b/plugins/events-backend-module-gerrit/package.json index d30063e14f..48dace1744 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.16", + "version": "0.1.17-next.0", "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 f87a77ea7e..d1eca166f9 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.17-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-events-node@0.2.16-next.0 + ## 0.1.16 ### Patch Changes diff --git a/plugins/events-backend-module-github/package.json b/plugins/events-backend-module-github/package.json index bf9caa3bfd..cf48d2c008 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.16", + "version": "0.1.17-next.0", "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 90f9ce8e5d..9c1be3735c 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.17-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-events-node@0.2.16-next.0 + ## 0.1.16 ### Patch Changes diff --git a/plugins/events-backend-module-gitlab/package.json b/plugins/events-backend-module-gitlab/package.json index 9ce53681d0..7cfb42ad5b 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.16", + "version": "0.1.17-next.0", "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 fd4afbc91c..3ddcce8a1f 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.17-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-events-node@0.2.16-next.0 + ## 0.1.16 ### Patch Changes diff --git a/plugins/events-backend-test-utils/package.json b/plugins/events-backend-test-utils/package.json index f7cfa76cef..508ef0cddc 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.16", + "version": "0.1.17-next.0", "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 0ecbc4461e..256bffd508 100644 --- a/plugins/events-backend/CHANGELOG.md +++ b/plugins/events-backend/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-events-backend +## 0.2.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-events-node@0.2.16-next.0 + ## 0.2.15 ### Patch Changes diff --git a/plugins/events-backend/package.json b/plugins/events-backend/package.json index 6c330ce996..2221d1bf13 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.15", + "version": "0.2.16-next.0", "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 cf2c846c93..c35980b9f6 100644 --- a/plugins/events-node/CHANGELOG.md +++ b/plugins/events-node/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/plugin-events-node +## 0.2.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.7-next.0 + ## 0.2.15 ### Patch Changes diff --git a/plugins/events-node/package.json b/plugins/events-node/package.json index 804eabe491..df9b89aa9c 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.15", + "version": "0.2.16-next.0", "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 3ce8bb2103..b1d1ebabc7 100644 --- a/plugins/example-todo-list-backend/CHANGELOG.md +++ b/plugins/example-todo-list-backend/CHANGELOG.md @@ -1,5 +1,16 @@ # @internal/plugin-todo-list-backend +## 1.0.19-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.1-next.0 + ## 1.0.18 ### Patch Changes diff --git a/plugins/example-todo-list-backend/package.json b/plugins/example-todo-list-backend/package.json index 21759dffa2..e020ca765d 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.18", + "version": "1.0.19-next.0", "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 1a4c10fb2b..239785c44b 100644 --- a/plugins/example-todo-list/CHANGELOG.md +++ b/plugins/example-todo-list/CHANGELOG.md @@ -1,5 +1,14 @@ # @internal/plugin-todo-list +## 1.0.19-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + ## 1.0.18 ### Patch Changes diff --git a/plugins/example-todo-list/package.json b/plugins/example-todo-list/package.json index 7bfc3f898c..5d60daaacd 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.18", + "version": "1.0.19-next.0", "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 c02ad2da28..04214e66ed 100644 --- a/plugins/explore-backend/CHANGELOG.md +++ b/plugins/explore-backend/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-explore-backend +## 0.0.17-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-explore-common@0.0.2 + - @backstage/plugin-search-backend-module-explore@0.1.11-next.0 + - @backstage/plugin-search-common@1.2.7 + ## 0.0.16 ### Patch Changes diff --git a/plugins/explore-backend/package.json b/plugins/explore-backend/package.json index 8c1ae12922..1ade42b078 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.16", + "version": "0.0.17-next.0", "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 ba70624ec9..006d3cf7e9 100644 --- a/plugins/explore-react/CHANGELOG.md +++ b/plugins/explore-react/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-explore-react +## 0.0.33-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-explore-common@0.0.2 + ## 0.0.32 ### Patch Changes diff --git a/plugins/explore-react/package.json b/plugins/explore-react/package.json index 7599da4ba8..ce9f6af869 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.32", + "version": "0.0.33-next.0", "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 82e0a66d3c..d4bcc6831d 100644 --- a/plugins/explore/CHANGELOG.md +++ b/plugins/explore/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-explore +## 0.4.12-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/frontend-plugin-api@0.3.0-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-explore-react@0.0.33-next.0 + - @backstage/plugin-search-react@1.7.2-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + - @backstage/plugin-explore-common@0.0.2 + - @backstage/plugin-search-common@1.2.7 + ## 0.4.11 ### Patch Changes diff --git a/plugins/explore/package.json b/plugins/explore/package.json index 435c5df84d..d8602fd74d 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.11", + "version": "0.4.12-next.0", "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 ef28aa04c6..4fb7bf8ad2 100644 --- a/plugins/firehydrant/CHANGELOG.md +++ b/plugins/firehydrant/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-firehydrant +## 0.2.10-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + ## 0.2.9 ### Patch Changes diff --git a/plugins/firehydrant/package.json b/plugins/firehydrant/package.json index ed723f71cf..994660f424 100644 --- a/plugins/firehydrant/package.json +++ b/plugins/firehydrant/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-firehydrant", "description": "A Backstage plugin that integrates towards FireHydrant", - "version": "0.2.9", + "version": "0.2.10-next.0", "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 099ab5f5a4..ca79919fe4 100644 --- a/plugins/fossa/CHANGELOG.md +++ b/plugins/fossa/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-fossa +## 0.2.58-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + ## 0.2.57 ### Patch Changes diff --git a/plugins/fossa/package.json b/plugins/fossa/package.json index 6c08f3d4fd..07f32f9af9 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.57", + "version": "0.2.58-next.0", "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 f9ac25d7f6..6e4d9d5b19 100644 --- a/plugins/gcalendar/CHANGELOG.md +++ b/plugins/gcalendar/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-gcalendar +## 0.3.20-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/errors@1.2.3 + ## 0.3.19 ### Patch Changes diff --git a/plugins/gcalendar/package.json b/plugins/gcalendar/package.json index d84850677b..94435b49b5 100644 --- a/plugins/gcalendar/package.json +++ b/plugins/gcalendar/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-gcalendar", - "version": "0.3.19", + "version": "0.3.20-next.0", "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 5a2c289a94..756714b370 100644 --- a/plugins/gcp-projects/CHANGELOG.md +++ b/plugins/gcp-projects/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-gcp-projects +## 0.3.43-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + ## 0.3.42 ### Patch Changes diff --git a/plugins/gcp-projects/package.json b/plugins/gcp-projects/package.json index 24bb9a99fa..50d16b45b8 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.42", + "version": "0.3.43-next.0", "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 a91f49bbe1..2b568b3f9a 100644 --- a/plugins/git-release-manager/CHANGELOG.md +++ b/plugins/git-release-manager/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-git-release-manager +## 0.3.39-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/integration@1.7.1 + ## 0.3.38 ### Patch Changes diff --git a/plugins/git-release-manager/package.json b/plugins/git-release-manager/package.json index 2c0ce60f6a..866eb37c8c 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.38", + "version": "0.3.39-next.0", "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 f5e9f1bc4c..4b36c5df29 100644 --- a/plugins/github-actions/CHANGELOG.md +++ b/plugins/github-actions/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-github-actions +## 0.6.7-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/integration-react@1.1.21-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/integration@1.7.1 + - @backstage/catalog-model@1.4.3 + ## 0.6.6 ### Patch Changes diff --git a/plugins/github-actions/package.json b/plugins/github-actions/package.json index ec0d9a03db..d32858250d 100644 --- a/plugins/github-actions/package.json +++ b/plugins/github-actions/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-github-actions", "description": "A Backstage plugin that integrates towards GitHub Actions", - "version": "0.6.6", + "version": "0.6.7-next.0", "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 e44c124264..48a7d5cbbf 100644 --- a/plugins/github-deployments/CHANGELOG.md +++ b/plugins/github-deployments/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-github-deployments +## 0.1.57-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/integration-react@1.1.21-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/integration@1.7.1 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + ## 0.1.56 ### Patch Changes diff --git a/plugins/github-deployments/package.json b/plugins/github-deployments/package.json index 4833a4df8a..5e966f89d2 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.56", + "version": "0.1.57-next.0", "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 11901150bb..520680f50d 100644 --- a/plugins/github-issues/CHANGELOG.md +++ b/plugins/github-issues/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-github-issues +## 0.2.15-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/integration@1.7.1 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + ## 0.2.14 ### Patch Changes diff --git a/plugins/github-issues/package.json b/plugins/github-issues/package.json index f942ca50bc..1bd8c8eceb 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.14", + "version": "0.2.15-next.0", "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 8721accd79..574bb77405 100644 --- a/plugins/github-pull-requests-board/CHANGELOG.md +++ b/plugins/github-pull-requests-board/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-github-pull-requests-board +## 0.1.20-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/integration@1.7.1 + - @backstage/catalog-model@1.4.3 + ## 0.1.19 ### Patch Changes diff --git a/plugins/github-pull-requests-board/package.json b/plugins/github-pull-requests-board/package.json index 2c985beda7..02ff243382 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.19", + "version": "0.1.20-next.0", "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 f254fd8eac..11102c9c71 100644 --- a/plugins/gitops-profiles/CHANGELOG.md +++ b/plugins/gitops-profiles/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-gitops-profiles +## 0.3.42-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/config@1.1.1 + ## 0.3.41 ### Patch Changes diff --git a/plugins/gitops-profiles/package.json b/plugins/gitops-profiles/package.json index 5511f1f4fa..298981cabb 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.41", + "version": "0.3.42-next.0", "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 be089e60a5..5d8808e7ad 100644 --- a/plugins/gocd/CHANGELOG.md +++ b/plugins/gocd/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-gocd +## 0.1.32-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + ## 0.1.31 ### Patch Changes diff --git a/plugins/gocd/package.json b/plugins/gocd/package.json index c2f60d7eb6..a9979f9c55 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.31", + "version": "0.1.32-next.0", "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 dea81e130c..faa69543ec 100644 --- a/plugins/graphiql/CHANGELOG.md +++ b/plugins/graphiql/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-graphiql +## 0.3.0-next.0 + +### Minor Changes + +- 57fda44b90: Upgrade to GraphiQL to 3.0.6 + +### Patch Changes + +- 68fc9dc60e: Updated alpha exports according to routing changes in `@backstage/frontend-plugin-api`. +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/frontend-plugin-api@0.3.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + ## 0.2.55 ### Patch Changes diff --git a/plugins/graphiql/package.json b/plugins/graphiql/package.json index 409b3e99f7..71687f03b9 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.55", + "version": "0.3.0-next.0", "publishConfig": { "access": "public" }, diff --git a/plugins/graphql-backend/CHANGELOG.md b/plugins/graphql-backend/CHANGELOG.md index dcf6b8f243..83b9464b38 100644 --- a/plugins/graphql-backend/CHANGELOG.md +++ b/plugins/graphql-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-graphql-backend +## 0.2.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-graphql@0.4.1-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/config@1.1.1 + ## 0.2.0 ### Minor Changes diff --git a/plugins/graphql-backend/package.json b/plugins/graphql-backend/package.json index c0b89ef0ce..b5ef102734 100644 --- a/plugins/graphql-backend/package.json +++ b/plugins/graphql-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-graphql-backend", "description": "Deprecated, consider using @frontside/backstage-plugin-graphql-backend instead", - "version": "0.2.0", + "version": "0.2.1-next.0", "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 20130f64dd..750561ae80 100644 --- a/plugins/graphql-voyager/CHANGELOG.md +++ b/plugins/graphql-voyager/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-graphql-voyager +## 0.1.9-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + ## 0.1.8 ### Patch Changes diff --git a/plugins/graphql-voyager/package.json b/plugins/graphql-voyager/package.json index 51b7020154..5c26365a88 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.8", + "version": "0.1.9-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/home-react/CHANGELOG.md b/plugins/home-react/CHANGELOG.md index 8124f70308..fa1705caa0 100644 --- a/plugins/home-react/CHANGELOG.md +++ b/plugins/home-react/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-home-react +## 0.1.5-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + ## 0.1.4 ### Patch Changes diff --git a/plugins/home-react/package.json b/plugins/home-react/package.json index 5c56caf71b..2ca237038b 100644 --- a/plugins/home-react/package.json +++ b/plugins/home-react/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-home-react", "description": "A Backstage plugin that contains react components helps you build a home page", - "version": "0.1.4", + "version": "0.1.5-next.0", "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 cd27145f6c..36e2e52f11 100644 --- a/plugins/home/CHANGELOG.md +++ b/plugins/home/CHANGELOG.md @@ -1,5 +1,25 @@ # @backstage/plugin-home +## 0.5.10-next.0 + +### Patch Changes + +- 3fdffbb699: Remove the duplicate versions of `@rjsf/*` as they're no longer needed +- 6c2b872153: Add official support for React 18. +- 5b364984bf: Added experimental support for declarative integration via the `/alpha` subpath. +- cc0e8d0b51: Temporarily pin the `react-grid-layout` sub-dependency to version `1.3.4` while the horizontal resizing of the latest version is not fixed. For more details, see [#20712](https://github.com/backstage/backstage/issues/20712). +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/frontend-plugin-api@0.3.0-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/core-app-api@1.11.1-next.0 + - @backstage/plugin-home-react@0.1.5-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + ## 0.5.9 ### Patch Changes diff --git a/plugins/home/package.json b/plugins/home/package.json index 5db7347f7c..9ab37dd580 100644 --- a/plugins/home/package.json +++ b/plugins/home/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-home", "description": "A Backstage plugin that helps you build a home page", - "version": "0.5.9", + "version": "0.5.10-next.0", "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 8e07fa787f..f11a5dfcd1 100644 --- a/plugins/ilert/CHANGELOG.md +++ b/plugins/ilert/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-ilert +## 0.2.15-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + ## 0.2.14 ### Patch Changes diff --git a/plugins/ilert/package.json b/plugins/ilert/package.json index 42d6a33ab1..e015bba7b8 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.14", + "version": "0.2.15-next.0", "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 27af4041da..fe59d2d719 100644 --- a/plugins/jenkins-backend/CHANGELOG.md +++ b/plugins/jenkins-backend/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-jenkins-backend +## 0.3.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.1-next.0 + - @backstage/plugin-catalog-node@1.4.8-next.0 + - @backstage/plugin-jenkins-common@0.1.20 + - @backstage/plugin-permission-common@0.7.9 + - @backstage/plugin-permission-node@0.7.18-next.0 + ## 0.3.0 ### Minor Changes diff --git a/plugins/jenkins-backend/package.json b/plugins/jenkins-backend/package.json index 740ef8710a..29bdfa7dfa 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.3.0", + "version": "0.3.1-next.0", "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 5878d16f47..c22cae3af2 100644 --- a/plugins/jenkins/CHANGELOG.md +++ b/plugins/jenkins/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-jenkins +## 0.9.1-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + - @backstage/plugin-jenkins-common@0.1.20 + ## 0.9.0 ### Minor Changes diff --git a/plugins/jenkins/package.json b/plugins/jenkins/package.json index 8be847f002..3515936abf 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.9.0", + "version": "0.9.1-next.0", "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 573be0062f..e33a3c0f14 100644 --- a/plugins/kafka-backend/CHANGELOG.md +++ b/plugins/kafka-backend/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-kafka-backend +## 0.3.5-next.0 + +### Patch Changes + +- 8613ba3928: Switched to using `"exports"` field for `/alpha` subpath export. +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + ## 0.3.3 ### Patch Changes diff --git a/plugins/kafka-backend/package.json b/plugins/kafka-backend/package.json index 8533f54b35..6626a21412 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.3.3", + "version": "0.3.5-next.0", "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 d24a6db0e2..db25947985 100644 --- a/plugins/kafka/CHANGELOG.md +++ b/plugins/kafka/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-kafka +## 0.3.26-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + ## 0.3.25 ### Patch Changes diff --git a/plugins/kafka/package.json b/plugins/kafka/package.json index 1580caa124..d43e58f97c 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.25", + "version": "0.3.26-next.0", "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 138b47b345..b53e5adab2 100644 --- a/plugins/kubernetes-backend/CHANGELOG.md +++ b/plugins/kubernetes-backend/CHANGELOG.md @@ -1,5 +1,25 @@ # @backstage/plugin-kubernetes-backend +## 0.13.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration-aws-node@0.1.7 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.1-next.0 + - @backstage/plugin-catalog-node@1.4.8-next.0 + - @backstage/plugin-kubernetes-common@0.7.1-next.0 + - @backstage/plugin-kubernetes-node@0.1.1-next.0 + - @backstage/plugin-permission-common@0.7.9 + - @backstage/plugin-permission-node@0.7.18-next.0 + ## 0.13.0 ### Minor Changes diff --git a/plugins/kubernetes-backend/package.json b/plugins/kubernetes-backend/package.json index cc0b5016e4..4500db50de 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.13.0", + "version": "0.13.1-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/kubernetes-cluster/CHANGELOG.md b/plugins/kubernetes-cluster/CHANGELOG.md index fbb762282e..c8903b1a93 100644 --- a/plugins/kubernetes-cluster/CHANGELOG.md +++ b/plugins/kubernetes-cluster/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-kubernetes-cluster +## 0.0.2-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-kubernetes-react@0.1.1-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-kubernetes-common@0.7.1-next.0 + ## 0.0.1 ### Patch Changes diff --git a/plugins/kubernetes-cluster/package.json b/plugins/kubernetes-cluster/package.json index 1949941d47..5df8c4f32c 100644 --- a/plugins/kubernetes-cluster/package.json +++ b/plugins/kubernetes-cluster/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-kubernetes-cluster", "description": "A Backstage plugin that shows details of Kubernetes clusters", - "version": "0.0.1", + "version": "0.0.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/kubernetes-common/CHANGELOG.md b/plugins/kubernetes-common/CHANGELOG.md index 4db1264d6b..e1c8e1b684 100644 --- a/plugins/kubernetes-common/CHANGELOG.md +++ b/plugins/kubernetes-common/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-kubernetes-common +## 0.7.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.9 + ## 0.7.0 ### Minor Changes diff --git a/plugins/kubernetes-common/package.json b/plugins/kubernetes-common/package.json index 9fe232e68f..9430b190fc 100644 --- a/plugins/kubernetes-common/package.json +++ b/plugins/kubernetes-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-kubernetes-common", "description": "Common functionalities for kubernetes, to be shared between kubernetes and kubernetes-backend plugin", - "version": "0.7.0", + "version": "0.7.1-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/kubernetes-node/CHANGELOG.md b/plugins/kubernetes-node/CHANGELOG.md index cc128fcd7f..ed31d1ec9a 100644 --- a/plugins/kubernetes-node/CHANGELOG.md +++ b/plugins/kubernetes-node/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-kubernetes-node +## 0.1.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/plugin-kubernetes-common@0.7.1-next.0 + ## 0.1.0 ### Minor Changes diff --git a/plugins/kubernetes-node/package.json b/plugins/kubernetes-node/package.json index 6f63ba1364..6f36abffa2 100644 --- a/plugins/kubernetes-node/package.json +++ b/plugins/kubernetes-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-kubernetes-node", "description": "Node.js library for the kubernetes plugin", - "version": "0.1.0", + "version": "0.1.1-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/kubernetes-react/CHANGELOG.md b/plugins/kubernetes-react/CHANGELOG.md index 13c23a75bf..f3850e88de 100644 --- a/plugins/kubernetes-react/CHANGELOG.md +++ b/plugins/kubernetes-react/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-kubernetes-react +## 0.1.1-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-kubernetes-common@0.7.1-next.0 + ## 0.1.0 ### Minor Changes diff --git a/plugins/kubernetes-react/package.json b/plugins/kubernetes-react/package.json index 03f647cfb2..772ca48cc2 100644 --- a/plugins/kubernetes-react/package.json +++ b/plugins/kubernetes-react/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-kubernetes-react", "description": "Web library for the kubernetes-react plugin", - "version": "0.1.0", + "version": "0.1.1-next.0", "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 e208c83b06..c6bc0f7fab 100644 --- a/plugins/kubernetes/CHANGELOG.md +++ b/plugins/kubernetes/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-kubernetes +## 0.11.1-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-kubernetes-react@0.1.1-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-kubernetes-common@0.7.1-next.0 + ## 0.11.0 ### Minor Changes diff --git a/plugins/kubernetes/package.json b/plugins/kubernetes/package.json index ed2dfd35ec..47fd25542d 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.11.0", + "version": "0.11.1-next.0", "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 76b12fb1f4..95d3f58194 100644 --- a/plugins/lighthouse-backend/CHANGELOG.md +++ b/plugins/lighthouse-backend/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-lighthouse-backend +## 0.3.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-node@1.4.8-next.0 + - @backstage/plugin-lighthouse-common@0.1.4 + ## 0.3.3 ### Patch Changes diff --git a/plugins/lighthouse-backend/package.json b/plugins/lighthouse-backend/package.json index e5306695cc..d6acb8facb 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.3.3", + "version": "0.3.4-next.0", "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 0b9130363f..b66e678aab 100644 --- a/plugins/lighthouse/CHANGELOG.md +++ b/plugins/lighthouse/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-lighthouse +## 0.4.11-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/plugin-lighthouse-common@0.1.4 + ## 0.4.10 ### Patch Changes diff --git a/plugins/lighthouse/package.json b/plugins/lighthouse/package.json index c039ae6b30..d08b41d483 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.10", + "version": "0.4.11-next.0", "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 74a4eb35a6..c55eaf79f5 100644 --- a/plugins/linguist-backend/CHANGELOG.md +++ b/plugins/linguist-backend/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-linguist-backend +## 0.5.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.1-next.0 + - @backstage/plugin-catalog-node@1.4.8-next.0 + - @backstage/plugin-linguist-common@0.1.2 + ## 0.5.3 ### Patch Changes diff --git a/plugins/linguist-backend/package.json b/plugins/linguist-backend/package.json index 78aa0868d4..78cdcf7bf5 100644 --- a/plugins/linguist-backend/package.json +++ b/plugins/linguist-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-linguist-backend", - "version": "0.5.3", + "version": "0.5.4-next.0", "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 85db830a62..fec35925de 100644 --- a/plugins/linguist/CHANGELOG.md +++ b/plugins/linguist/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-linguist +## 0.1.11-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + - @backstage/plugin-linguist-common@0.1.2 + ## 0.1.10 ### Patch Changes diff --git a/plugins/linguist/package.json b/plugins/linguist/package.json index 3d101548a2..e6b95a3076 100644 --- a/plugins/linguist/package.json +++ b/plugins/linguist/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-linguist", - "version": "0.1.10", + "version": "0.1.11-next.0", "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 9e8f04b435..94140da499 100644 --- a/plugins/microsoft-calendar/CHANGELOG.md +++ b/plugins/microsoft-calendar/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-microsoft-calendar +## 0.1.9-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/errors@1.2.3 + ## 0.1.8 ### Patch Changes diff --git a/plugins/microsoft-calendar/package.json b/plugins/microsoft-calendar/package.json index 57c4a75c39..82016c58e6 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.8", + "version": "0.1.9-next.0", "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 1c1a8bc5bf..14e9cbbda3 100644 --- a/plugins/newrelic-dashboard/CHANGELOG.md +++ b/plugins/newrelic-dashboard/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-newrelic-dashboard +## 0.3.1-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + ## 0.3.0 ### Minor Changes diff --git a/plugins/newrelic-dashboard/package.json b/plugins/newrelic-dashboard/package.json index 15f25d6cc7..6d79b0fda4 100644 --- a/plugins/newrelic-dashboard/package.json +++ b/plugins/newrelic-dashboard/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-newrelic-dashboard", - "version": "0.3.0", + "version": "0.3.1-next.0", "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 65d2aad766..a0e8b98414 100644 --- a/plugins/newrelic/CHANGELOG.md +++ b/plugins/newrelic/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-newrelic +## 0.3.42-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + ## 0.3.41 ### Patch Changes diff --git a/plugins/newrelic/package.json b/plugins/newrelic/package.json index c4da950dee..db7bc65590 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.41", + "version": "0.3.42-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/nomad-backend/CHANGELOG.md b/plugins/nomad-backend/CHANGELOG.md index b5661c4b40..ade1a26f2c 100644 --- a/plugins/nomad-backend/CHANGELOG.md +++ b/plugins/nomad-backend/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-nomad-backend +## 0.1.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + ## 0.1.8 ### Patch Changes diff --git a/plugins/nomad-backend/package.json b/plugins/nomad-backend/package.json index 60ba974467..5c0bd03fac 100644 --- a/plugins/nomad-backend/package.json +++ b/plugins/nomad-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-nomad-backend", - "version": "0.1.8", + "version": "0.1.9-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/nomad/CHANGELOG.md b/plugins/nomad/CHANGELOG.md index b6dff83c44..6e88468d5f 100644 --- a/plugins/nomad/CHANGELOG.md +++ b/plugins/nomad/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-nomad +## 0.1.7-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + ## 0.1.6 ### Patch Changes diff --git a/plugins/nomad/package.json b/plugins/nomad/package.json index 617c8e2c5a..d08551da04 100644 --- a/plugins/nomad/package.json +++ b/plugins/nomad/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-nomad", - "version": "0.1.6", + "version": "0.1.7-next.0", "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 64b61be538..bf5857ed7a 100644 --- a/plugins/octopus-deploy/CHANGELOG.md +++ b/plugins/octopus-deploy/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-octopus-deploy +## 0.2.8-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + ## 0.2.7 ### Patch Changes diff --git a/plugins/octopus-deploy/package.json b/plugins/octopus-deploy/package.json index 3da25dc2c3..6949d1c035 100644 --- a/plugins/octopus-deploy/package.json +++ b/plugins/octopus-deploy/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-octopus-deploy", - "version": "0.2.7", + "version": "0.2.8-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/opencost/CHANGELOG.md b/plugins/opencost/CHANGELOG.md index b20b34b9c4..8ef77dee1f 100644 --- a/plugins/opencost/CHANGELOG.md +++ b/plugins/opencost/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-opencost +## 0.2.2-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + ## 0.2.1 ### Patch Changes diff --git a/plugins/opencost/package.json b/plugins/opencost/package.json index f751ed3ba5..a7f298ab19 100644 --- a/plugins/opencost/package.json +++ b/plugins/opencost/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-opencost", - "version": "0.2.1", + "version": "0.2.2-next.0", "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 1b39333288..f442dd89fd 100644 --- a/plugins/org-react/CHANGELOG.md +++ b/plugins/org-react/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-org-react +## 0.1.15-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + ## 0.1.14 ### Patch Changes diff --git a/plugins/org-react/package.json b/plugins/org-react/package.json index 2097c7658a..1d6e88a94f 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.14", + "version": "0.1.15-next.0", "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 1faaf20dbb..d29d37c94e 100644 --- a/plugins/org/CHANGELOG.md +++ b/plugins/org/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-org +## 0.6.16-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + ## 0.6.15 ### Patch Changes diff --git a/plugins/org/package.json b/plugins/org/package.json index b9bf7f0c02..9ad92192b5 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.15", + "version": "0.6.16-next.0", "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 457905f993..8d00f36ada 100644 --- a/plugins/pagerduty/CHANGELOG.md +++ b/plugins/pagerduty/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-pagerduty +## 0.6.7-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-home-react@0.1.5-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + ## 0.6.6 ### Patch Changes diff --git a/plugins/pagerduty/package.json b/plugins/pagerduty/package.json index 0130724cfa..6ad44ac45b 100644 --- a/plugins/pagerduty/package.json +++ b/plugins/pagerduty/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-pagerduty", "description": "A Backstage plugin that integrates towards PagerDuty", - "version": "0.6.6", + "version": "0.6.7-next.0", "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 03f74fb422..23f65db9d7 100644 --- a/plugins/periskop-backend/CHANGELOG.md +++ b/plugins/periskop-backend/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-periskop-backend +## 0.2.5-next.0 + +### Patch Changes + +- 8613ba3928: Switched to using `"exports"` field for `/alpha` subpath export. +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/config@1.1.1 + ## 0.2.3 ### Patch Changes diff --git a/plugins/periskop-backend/package.json b/plugins/periskop-backend/package.json index 73977e626d..dc6da1c706 100644 --- a/plugins/periskop-backend/package.json +++ b/plugins/periskop-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-periskop-backend", - "version": "0.2.3", + "version": "0.2.5-next.0", "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 26c40e8b97..6ad4fa1051 100644 --- a/plugins/periskop/CHANGELOG.md +++ b/plugins/periskop/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-periskop +## 0.1.24-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + ## 0.1.23 ### Patch Changes diff --git a/plugins/periskop/package.json b/plugins/periskop/package.json index 9ec13e9ce1..8f7d424ac7 100644 --- a/plugins/periskop/package.json +++ b/plugins/periskop/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-periskop", - "version": "0.1.23", + "version": "0.1.24-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/permission-backend-module-policy-allow-all/CHANGELOG.md b/plugins/permission-backend-module-policy-allow-all/CHANGELOG.md index 63e6e54cc2..e9ea97f2fc 100644 --- a/plugins/permission-backend-module-policy-allow-all/CHANGELOG.md +++ b/plugins/permission-backend-module-policy-allow-all/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-permission-backend-module-allow-all-policy +## 0.1.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/plugin-auth-node@0.4.1-next.0 + - @backstage/plugin-permission-common@0.7.9 + - @backstage/plugin-permission-node@0.7.18-next.0 + ## 0.1.3 ### Patch Changes diff --git a/plugins/permission-backend-module-policy-allow-all/package.json b/plugins/permission-backend-module-policy-allow-all/package.json index 6ae8cc459d..048ebc8c4a 100644 --- a/plugins/permission-backend-module-policy-allow-all/package.json +++ b/plugins/permission-backend-module-policy-allow-all/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-permission-backend-module-allow-all-policy", "description": "Allow all policy backend module for the permission plugin.", - "version": "0.1.3", + "version": "0.1.4-next.0", "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 a26b60baaf..c84ab82a94 100644 --- a/plugins/permission-backend/CHANGELOG.md +++ b/plugins/permission-backend/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-permission-backend +## 0.5.30-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.1-next.0 + - @backstage/plugin-permission-common@0.7.9 + - @backstage/plugin-permission-node@0.7.18-next.0 + ## 0.5.29 ### Patch Changes diff --git a/plugins/permission-backend/package.json b/plugins/permission-backend/package.json index f222d51451..70f2bcc3fd 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.29", + "version": "0.5.30-next.0", "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 222399e878..45fd417987 100644 --- a/plugins/permission-node/CHANGELOG.md +++ b/plugins/permission-node/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-permission-node +## 0.7.18-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.1-next.0 + - @backstage/plugin-permission-common@0.7.9 + ## 0.7.17 ### Patch Changes diff --git a/plugins/permission-node/package.json b/plugins/permission-node/package.json index 4ed3ceb7ae..ccdcd9b6b9 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.17", + "version": "0.7.18-next.0", "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 493ee440b6..c7aa0a2e81 100644 --- a/plugins/permission-react/CHANGELOG.md +++ b/plugins/permission-react/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-permission-react +## 0.4.17-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-permission-common@0.7.9 + ## 0.4.16 ### Patch Changes diff --git a/plugins/permission-react/package.json b/plugins/permission-react/package.json index 9a9650e762..7e432821b2 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.16", + "version": "0.4.17-next.0", "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 2fa8f35268..0d147a9029 100644 --- a/plugins/playlist-backend/CHANGELOG.md +++ b/plugins/playlist-backend/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-playlist-backend +## 0.3.11-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-auth-node@0.4.1-next.0 + - @backstage/plugin-permission-common@0.7.9 + - @backstage/plugin-permission-node@0.7.18-next.0 + - @backstage/plugin-playlist-common@0.1.11 + ## 0.3.10 ### Patch Changes diff --git a/plugins/playlist-backend/package.json b/plugins/playlist-backend/package.json index d5b6a5bdaf..0173864dce 100644 --- a/plugins/playlist-backend/package.json +++ b/plugins/playlist-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-playlist-backend", - "version": "0.3.10", + "version": "0.3.11-next.0", "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 16c0f02912..07a09f24dd 100644 --- a/plugins/playlist/CHANGELOG.md +++ b/plugins/playlist/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-playlist +## 0.1.18-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-permission-react@0.4.17-next.0 + - @backstage/plugin-search-react@1.7.2-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-common@1.0.17 + - @backstage/plugin-permission-common@0.7.9 + - @backstage/plugin-playlist-common@0.1.11 + ## 0.1.17 ### Patch Changes diff --git a/plugins/playlist/package.json b/plugins/playlist/package.json index de53e9fafe..0fbb73f48c 100644 --- a/plugins/playlist/package.json +++ b/plugins/playlist/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-playlist", - "version": "0.1.17", + "version": "0.1.18-next.0", "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 6137545f06..ce965487d9 100644 --- a/plugins/proxy-backend/CHANGELOG.md +++ b/plugins/proxy-backend/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-proxy-backend +## 0.4.5-next.0 + +### Patch Changes + +- 8613ba3928: Switched to using `"exports"` field for `/alpha` subpath export. +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/config@1.1.1 + ## 0.4.3 ### Patch Changes diff --git a/plugins/proxy-backend/package.json b/plugins/proxy-backend/package.json index 4506f62107..77f68dd628 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.4.3", + "version": "0.4.5-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/puppetdb/CHANGELOG.md b/plugins/puppetdb/CHANGELOG.md index 2d184e7a48..91059ae37e 100644 --- a/plugins/puppetdb/CHANGELOG.md +++ b/plugins/puppetdb/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-puppetdb +## 0.1.9-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + ## 0.1.8 ### Patch Changes diff --git a/plugins/puppetdb/package.json b/plugins/puppetdb/package.json index 89cd83fcde..fdc460ffc6 100644 --- a/plugins/puppetdb/package.json +++ b/plugins/puppetdb/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-puppetdb", "description": "Backstage plugin to visualize resource information and Puppet facts from PuppetDB.", - "version": "0.1.8", + "version": "0.1.9-next.0", "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 dd2df54811..3e427756d8 100644 --- a/plugins/rollbar-backend/CHANGELOG.md +++ b/plugins/rollbar-backend/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-rollbar-backend +## 0.1.52-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/config@1.1.1 + ## 0.1.51 ### Patch Changes diff --git a/plugins/rollbar-backend/package.json b/plugins/rollbar-backend/package.json index e5dbd3a997..0a8539fa81 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.51", + "version": "0.1.52-next.0", "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 46d27e8bad..7d62bc1c6c 100644 --- a/plugins/rollbar/CHANGELOG.md +++ b/plugins/rollbar/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-rollbar +## 0.4.26-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + ## 0.4.25 ### Patch Changes diff --git a/plugins/rollbar/package.json b/plugins/rollbar/package.json index d82402c03e..4c19c02d27 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.25", + "version": "0.4.26-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-backend-module-confluence-to-markdown/CHANGELOG.md b/plugins/scaffolder-backend-module-confluence-to-markdown/CHANGELOG.md index 2b931dd7da..e57d942c2b 100644 --- a/plugins/scaffolder-backend-module-confluence-to-markdown/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-confluence-to-markdown/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-scaffolder-backend-module-confluence-to-markdown +## 0.2.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.2.8-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + ## 0.2.7 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-confluence-to-markdown/package.json b/plugins/scaffolder-backend-module-confluence-to-markdown/package.json index 9d506d824b..c18d1ae21c 100644 --- a/plugins/scaffolder-backend-module-confluence-to-markdown/package.json +++ b/plugins/scaffolder-backend-module-confluence-to-markdown/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder-backend-module-confluence-to-markdown", "description": "The confluence-to-markdown module for @backstage/plugin-scaffolder-backend", - "version": "0.2.7", + "version": "0.2.8-next.0", "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 9c68b53d40..8929694ace 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.31-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.2.8-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + ## 0.2.30 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-cookiecutter/package.json b/plugins/scaffolder-backend-module-cookiecutter/package.json index 60d9f19a70..f46dac12a9 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.30", + "version": "0.2.31-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-backend-module-gitlab/CHANGELOG.md b/plugins/scaffolder-backend-module-gitlab/CHANGELOG.md index 2582ed3227..c7fe774851 100644 --- a/plugins/scaffolder-backend-module-gitlab/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-gitlab/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-scaffolder-backend-module-gitlab +## 0.2.10-next.0 + +### Patch Changes + +- 26ca97ebaa: Add examples for `gitlab:projectAccessToken:create` scaffolder action & improve related tests +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.2.8-next.0 + - @backstage/integration@1.7.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + ## 0.2.9 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-gitlab/package.json b/plugins/scaffolder-backend-module-gitlab/package.json index deecc3b333..7973fa4806 100644 --- a/plugins/scaffolder-backend-module-gitlab/package.json +++ b/plugins/scaffolder-backend-module-gitlab/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-scaffolder-backend-module-gitlab", - "version": "0.2.9", + "version": "0.2.10-next.0", "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 70af7932b8..daa3a74d8d 100644 --- a/plugins/scaffolder-backend-module-rails/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-rails/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-scaffolder-backend-module-rails +## 0.4.24-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.2.8-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + ## 0.4.23 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-rails/package.json b/plugins/scaffolder-backend-module-rails/package.json index 0763690d7c..b1da603d4e 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.23", + "version": "0.4.24-next.0", "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 9e0bd8734b..9e0a389114 100644 --- a/plugins/scaffolder-backend-module-sentry/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-sentry/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-scaffolder-backend-module-sentry +## 0.1.15-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.2.8-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + ## 0.1.14 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-sentry/package.json b/plugins/scaffolder-backend-module-sentry/package.json index ce1b8247f8..abad17cda8 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.14", + "version": "0.1.15-next.0", "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 fa7774558a..dc01bd58d0 100644 --- a/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-scaffolder-backend-module-yeoman +## 0.2.28-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.2.8-next.0 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + ## 0.2.27 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-yeoman/package.json b/plugins/scaffolder-backend-module-yeoman/package.json index 36b8c4e76b..63591cc05e 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.27", + "version": "0.2.28-next.0", "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 f2258517a6..107b707183 100644 --- a/plugins/scaffolder-backend/CHANGELOG.md +++ b/plugins/scaffolder-backend/CHANGELOG.md @@ -1,5 +1,37 @@ # @backstage/plugin-scaffolder-backend +## 1.19.0-next.0 + +### Minor Changes + +- 5e4127c18e: Allow setting `update: true` in `publish:github:pull-request` scaffolder action + +### Patch Changes + +- 0920fd02ac: Add examples for `github:environment:create` scaffolder action & improve related tests +- 8613ba3928: Switched to using `"exports"` field for `/alpha` subpath export. +- 99d4936f6c: Add examples for `github:webhook` scaffolder action & improve related tests +- f8727ad228: Add examples for `publish:github:pull-request` scaffolder action & improve related tests +- Updated dependencies + - @backstage/plugin-scaffolder-common@1.4.3-next.0 + - @backstage/plugin-catalog-backend@1.15.0-next.0 + - @backstage/plugin-scaffolder-node@0.2.8-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.1-next.0 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.4-next.0 + - @backstage/plugin-catalog-common@1.0.17 + - @backstage/plugin-catalog-node@1.4.8-next.0 + - @backstage/plugin-permission-common@0.7.9 + - @backstage/plugin-permission-node@0.7.18-next.0 + ## 1.18.0 ### Minor Changes diff --git a/plugins/scaffolder-backend/package.json b/plugins/scaffolder-backend/package.json index 20c56e9a8d..430cdc84e1 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.18.0", + "version": "1.19.0-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-common/CHANGELOG.md b/plugins/scaffolder-common/CHANGELOG.md index 6e81966514..3e116696f3 100644 --- a/plugins/scaffolder-common/CHANGELOG.md +++ b/plugins/scaffolder-common/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-scaffolder-common +## 1.4.3-next.0 + +### Patch Changes + +- 2e0cef42ab: Add missing required property `type` in `Template.v1beta3.schema.json` schema +- Updated dependencies + - @backstage/catalog-model@1.4.3 + - @backstage/types@1.1.1 + - @backstage/plugin-permission-common@0.7.9 + ## 1.4.2 ### Patch Changes diff --git a/plugins/scaffolder-common/package.json b/plugins/scaffolder-common/package.json index 0d9ef37999..123adc0956 100644 --- a/plugins/scaffolder-common/package.json +++ b/plugins/scaffolder-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder-common", "description": "Common functionalities for the scaffolder, to be shared between scaffolder and scaffolder-backend plugin", - "version": "1.4.2", + "version": "1.4.3-next.0", "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 33bf8dd380..1c5a99bff8 100644 --- a/plugins/scaffolder-node/CHANGELOG.md +++ b/plugins/scaffolder-node/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-scaffolder-node +## 0.2.8-next.0 + +### Patch Changes + +- 8613ba3928: Switched to using `"exports"` field for `/alpha` subpath export. +- Updated dependencies + - @backstage/plugin-scaffolder-common@1.4.3-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + ## 0.2.6 ### Patch Changes diff --git a/plugins/scaffolder-node/package.json b/plugins/scaffolder-node/package.json index 8e887b480b..bb02ce31f4 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.2.6", + "version": "0.2.8-next.0", "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 2aed192d7d..ed16201173 100644 --- a/plugins/scaffolder-react/CHANGELOG.md +++ b/plugins/scaffolder-react/CHANGELOG.md @@ -1,5 +1,32 @@ # @backstage/plugin-scaffolder-react +## 1.6.0-next.0 + +### Minor Changes + +- 3fdffbb699: Release design improvements for the `Scaffolder` plugin and support v5 of `@rjsf/*` libraries. + + This change should be non-breaking. If you're seeing typescript issues after migrating please [open an issue](https://github.com/backstage/backstage/issues/new/choose) + + The `next` versions like `createNextFieldExtension` and `NextScaffolderPage` have been promoted to the public interface under `createScaffolderFieldExtension` and `ScaffolderPage`, so any older imports which are no longer found will need updating from `@backstage/plugin-scaffolder/alpha` or `@backstage/plugin-scaffolder-react/alpha` will need to be imported from `@backstage/plugin-scaffolder` and `@backstage/plugin-scaffolder-react` respectively. + + The legacy versions are now available in `/alpha` under `createLegacyFieldExtension` and `LegacyScaffolderPage` if you're running into issues, but be aware that these will be removed in a next mainline release. + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-scaffolder-common@1.4.3-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/version-bridge@1.0.7-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + ## 1.5.6 ### Patch Changes diff --git a/plugins/scaffolder-react/package.json b/plugins/scaffolder-react/package.json index 5f29f96946..f53c643710 100644 --- a/plugins/scaffolder-react/package.json +++ b/plugins/scaffolder-react/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder-react", "description": "A frontend library that helps other Backstage plugins interact with the Scaffolder", - "version": "1.5.6", + "version": "1.6.0-next.0", "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 2f681837ea..8ee2a6638c 100644 --- a/plugins/scaffolder/CHANGELOG.md +++ b/plugins/scaffolder/CHANGELOG.md @@ -1,5 +1,37 @@ # @backstage/plugin-scaffolder +## 1.16.0-next.0 + +### Minor Changes + +- 3fdffbb699: Release design improvements for the `Scaffolder` plugin and support v5 of `@rjsf/*` libraries. + + This change should be non-breaking. If you're seeing typescript issues after migrating please [open an issue](https://github.com/backstage/backstage/issues/new/choose) + + The `next` versions like `createNextFieldExtension` and `NextScaffolderPage` have been promoted to the public interface under `createScaffolderFieldExtension` and `ScaffolderPage`, so any older imports which are no longer found will need updating from `@backstage/plugin-scaffolder/alpha` or `@backstage/plugin-scaffolder-react/alpha` will need to be imported from `@backstage/plugin-scaffolder` and `@backstage/plugin-scaffolder-react` respectively. + + The legacy versions are now available in `/alpha` under `createLegacyFieldExtension` and `LegacyScaffolderPage` if you're running into issues, but be aware that these will be removed in a next mainline release. + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-scaffolder-common@1.4.3-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/integration-react@1.1.21-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-permission-react@0.4.17-next.0 + - @backstage/plugin-scaffolder-react@1.6.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/integration@1.7.1 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-common@1.0.17 + ## 1.15.1 ### Patch Changes diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json index d36ce86acc..e5a29ae563 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.15.1", + "version": "1.16.0-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search-backend-module-catalog/CHANGELOG.md b/plugins/search-backend-module-catalog/CHANGELOG.md index c65b3a119c..78f60eae4c 100644 --- a/plugins/search-backend-module-catalog/CHANGELOG.md +++ b/plugins/search-backend-module-catalog/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-search-backend-module-catalog +## 0.1.11-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-search-backend-node@1.2.11-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-common@1.0.17 + - @backstage/plugin-catalog-node@1.4.8-next.0 + - @backstage/plugin-permission-common@0.7.9 + - @backstage/plugin-search-common@1.2.7 + ## 0.1.10 ### Patch Changes diff --git a/plugins/search-backend-module-catalog/package.json b/plugins/search-backend-module-catalog/package.json index 4bcdf8f53b..41face5383 100644 --- a/plugins/search-backend-module-catalog/package.json +++ b/plugins/search-backend-module-catalog/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-backend-module-catalog", "description": "A module for the search backend that exports catalog modules", - "version": "0.1.10", + "version": "0.1.11-next.0", "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 94727e88a2..47bc95fe4b 100644 --- a/plugins/search-backend-module-elasticsearch/CHANGELOG.md +++ b/plugins/search-backend-module-elasticsearch/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-search-backend-module-elasticsearch +## 1.3.10-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-search-backend-node@1.2.11-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration-aws-node@0.1.7 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-search-common@1.2.7 + ## 1.3.9 ### Patch Changes diff --git a/plugins/search-backend-module-elasticsearch/package.json b/plugins/search-backend-module-elasticsearch/package.json index ef15b13290..838f226387 100644 --- a/plugins/search-backend-module-elasticsearch/package.json +++ b/plugins/search-backend-module-elasticsearch/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-backend-module-elasticsearch", "description": "A module for the search backend that implements search using ElasticSearch", - "version": "1.3.9", + "version": "1.3.10-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search-backend-module-explore/CHANGELOG.md b/plugins/search-backend-module-explore/CHANGELOG.md index f4b64f07c8..ddf571771e 100644 --- a/plugins/search-backend-module-explore/CHANGELOG.md +++ b/plugins/search-backend-module-explore/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-search-backend-module-explore +## 0.1.11-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-search-backend-node@1.2.11-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-explore-common@0.0.2 + - @backstage/plugin-search-common@1.2.7 + ## 0.1.10 ### Patch Changes diff --git a/plugins/search-backend-module-explore/package.json b/plugins/search-backend-module-explore/package.json index 41a390d773..9fedd97985 100644 --- a/plugins/search-backend-module-explore/package.json +++ b/plugins/search-backend-module-explore/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-backend-module-explore", "description": "A module for the search backend that exports explore modules", - "version": "0.1.10", + "version": "0.1.11-next.0", "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 3f8d5adeb7..fb14cb5beb 100644 --- a/plugins/search-backend-module-pg/CHANGELOG.md +++ b/plugins/search-backend-module-pg/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-search-backend-module-pg +## 0.5.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-search-backend-node@1.2.11-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-search-common@1.2.7 + ## 0.5.15 ### Patch Changes diff --git a/plugins/search-backend-module-pg/package.json b/plugins/search-backend-module-pg/package.json index 2bdea9b391..774429b2a6 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.15", + "version": "0.5.16-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search-backend-module-stack-overflow-collator/CHANGELOG.md b/plugins/search-backend-module-stack-overflow-collator/CHANGELOG.md new file mode 100644 index 0000000000..482f74f31f --- /dev/null +++ b/plugins/search-backend-module-stack-overflow-collator/CHANGELOG.md @@ -0,0 +1,17 @@ +# @backstage/plugin-search-backend-module-stack-overflow-collator + +## 0.1.0-next.0 + +### Minor Changes + +- 46f0f1700e: Extract a package for the Stack Overflow new backend system plugin. + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-search-backend-node@1.2.11-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-search-common@1.2.7 diff --git a/plugins/search-backend-module-stack-overflow-collator/package.json b/plugins/search-backend-module-stack-overflow-collator/package.json index 14e547de8e..cc531219fa 100644 --- a/plugins/search-backend-module-stack-overflow-collator/package.json +++ b/plugins/search-backend-module-stack-overflow-collator/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-backend-module-stack-overflow-collator", "description": "A module for the search backend that exports stack overflow modules", - "version": "0.0.0", + "version": "0.1.0-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search-backend-module-techdocs/CHANGELOG.md b/plugins/search-backend-module-techdocs/CHANGELOG.md index fa8997a990..0ede11b81c 100644 --- a/plugins/search-backend-module-techdocs/CHANGELOG.md +++ b/plugins/search-backend-module-techdocs/CHANGELOG.md @@ -1,5 +1,24 @@ # @backstage/plugin-search-backend-module-techdocs +## 0.1.11-next.0 + +### Patch Changes + +- c437253b7a: The process of adding or modifying fields in the techdocs search index has been simplified. For more details, see [How to customize fields in the Software Catalog or TechDocs index](https://backstage.io/docs/features/search/how-to-guides.md#how-to-customize-fields-in-the-software-catalog-or-techdocs-index). +- Updated dependencies + - @backstage/plugin-search-backend-node@1.2.11-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-common@1.0.17 + - @backstage/plugin-catalog-node@1.4.8-next.0 + - @backstage/plugin-permission-common@0.7.9 + - @backstage/plugin-search-common@1.2.7 + - @backstage/plugin-techdocs-node@1.9.1-next.0 + ## 0.1.10 ### Patch Changes diff --git a/plugins/search-backend-module-techdocs/package.json b/plugins/search-backend-module-techdocs/package.json index aa888a3d8a..9be4fa5246 100644 --- a/plugins/search-backend-module-techdocs/package.json +++ b/plugins/search-backend-module-techdocs/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-backend-module-techdocs", "description": "A module for the search backend that exports techdocs modules", - "version": "0.1.10", + "version": "0.1.11-next.0", "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 c2767e6463..b6fc82c798 100644 --- a/plugins/search-backend-node/CHANGELOG.md +++ b/plugins/search-backend-node/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-search-backend-node +## 1.2.11-next.0 + +### Patch Changes + +- b168d7e7ea: Fix highlighting for non-string fields on the `Lunr` search engine implementation. +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-permission-common@0.7.9 + - @backstage/plugin-search-common@1.2.7 + ## 1.2.10 ### Patch Changes diff --git a/plugins/search-backend-node/package.json b/plugins/search-backend-node/package.json index 78d693466d..e0f07c15fb 100644 --- a/plugins/search-backend-node/package.json +++ b/plugins/search-backend-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-backend-node", "description": "A library for Backstage backend plugins that want to interact with the search backend plugin", - "version": "1.2.10", + "version": "1.2.11-next.0", "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 94f8c5d605..69305a8a7f 100644 --- a/plugins/search-backend/CHANGELOG.md +++ b/plugins/search-backend/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-search-backend +## 1.4.7-next.0 + +### Patch Changes + +- 6694b369a3: Update the OpenAPI spec with more complete error responses and request bodies using Optic. Also, updates the test cases to use the new `supertest` pass through from `@backstage/backend-openapi-utils`. +- Updated dependencies + - @backstage/plugin-search-backend-node@1.2.11-next.0 + - @backstage/backend-openapi-utils@0.1.0-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.1-next.0 + - @backstage/plugin-permission-common@0.7.9 + - @backstage/plugin-permission-node@0.7.18-next.0 + - @backstage/plugin-search-common@1.2.7 + ## 1.4.6 ### Patch Changes diff --git a/plugins/search-backend/package.json b/plugins/search-backend/package.json index cd3c16efe2..84da308624 100644 --- a/plugins/search-backend/package.json +++ b/plugins/search-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-backend", "description": "The Backstage backend plugin that provides your backstage app with search", - "version": "1.4.6", + "version": "1.4.7-next.0", "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 91ec2e4421..49e259950c 100644 --- a/plugins/search-react/CHANGELOG.md +++ b/plugins/search-react/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-search-react +## 1.7.2-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- f75caf9f3d: Fixed a rare occurrence where a race in the search bar could throw away user input or cause the clear button not to work. +- 71c97e7d73: The filter options passed to `SearchResultGroupLayout` are now always explicitly rendered as strings by default. +- e7c09c4f4b: Use default extensions boundary and suspense on the alpha declarative `createSearchResultListItem` extension factory. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/frontend-plugin-api@0.3.0-next.0 + - @backstage/frontend-app-api@0.3.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/version-bridge@1.0.7-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/types@1.1.1 + - @backstage/plugin-search-common@1.2.7 + ## 1.7.1 ### Patch Changes diff --git a/plugins/search-react/package.json b/plugins/search-react/package.json index c2c181f657..25ed360a89 100644 --- a/plugins/search-react/package.json +++ b/plugins/search-react/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-search-react", - "version": "1.7.1", + "version": "1.7.2-next.0", "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 ff8d87c347..3251137a28 100644 --- a/plugins/search/CHANGELOG.md +++ b/plugins/search/CHANGELOG.md @@ -1,5 +1,27 @@ # @backstage/plugin-search +## 1.4.2-next.0 + +### Patch Changes + +- 68fc9dc60e: Updated alpha exports according to routing changes in `@backstage/frontend-plugin-api`. +- 6c2b872153: Add official support for React 18. +- fa11120050: Fixed incorrect plugin ID in `/alpha` export. +- 71c97e7d73: Minor internal code cleanup. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/frontend-plugin-api@0.3.0-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/version-bridge@1.0.7-next.0 + - @backstage/plugin-search-react@1.7.2-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-search-common@1.2.7 + ## 1.4.1 ### Patch Changes diff --git a/plugins/search/package.json b/plugins/search/package.json index 23abaefa1d..31dd51d8bc 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.4.1", + "version": "1.4.2-next.0", "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 77895eb2f1..78027d462a 100644 --- a/plugins/sentry/CHANGELOG.md +++ b/plugins/sentry/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-sentry +## 0.5.11-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + ## 0.5.10 ### Patch Changes diff --git a/plugins/sentry/package.json b/plugins/sentry/package.json index 3856270628..f570259201 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.10", + "version": "0.5.11-next.0", "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 6774c7eaf2..093dd70505 100644 --- a/plugins/shortcuts/CHANGELOG.md +++ b/plugins/shortcuts/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-shortcuts +## 0.3.16-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/types@1.1.1 + ## 0.3.15 ### Patch Changes diff --git a/plugins/shortcuts/package.json b/plugins/shortcuts/package.json index c38125d561..6bd14faa1e 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.15", + "version": "0.3.16-next.0", "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 caf2a677c1..b5e03c7bc8 100644 --- a/plugins/sonarqube-backend/CHANGELOG.md +++ b/plugins/sonarqube-backend/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-sonarqube-backend +## 0.2.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + ## 0.2.8 ### Patch Changes diff --git a/plugins/sonarqube-backend/package.json b/plugins/sonarqube-backend/package.json index 63592380db..50fbbc590f 100644 --- a/plugins/sonarqube-backend/package.json +++ b/plugins/sonarqube-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-sonarqube-backend", - "version": "0.2.8", + "version": "0.2.9-next.0", "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 af370f6d1a..5bdedc7354 100644 --- a/plugins/sonarqube-react/CHANGELOG.md +++ b/plugins/sonarqube-react/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-sonarqube-react +## 0.1.10-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/catalog-model@1.4.3 + ## 0.1.9 ### Patch Changes diff --git a/plugins/sonarqube-react/package.json b/plugins/sonarqube-react/package.json index c643df3702..bfcd061497 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.9", + "version": "0.1.10-next.0", "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 3ed88667a9..18e618d42f 100644 --- a/plugins/sonarqube/CHANGELOG.md +++ b/plugins/sonarqube/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-sonarqube +## 0.7.8-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- 8613ba3928: Switched to using `"exports"` field for `/alpha` subpath export. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-sonarqube-react@0.1.10-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + ## 0.7.6 ### Patch Changes diff --git a/plugins/sonarqube/package.json b/plugins/sonarqube/package.json index 4244c74759..eb00a9736a 100644 --- a/plugins/sonarqube/package.json +++ b/plugins/sonarqube/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-sonarqube", "description": "", - "version": "0.7.6", + "version": "0.7.8-next.0", "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 4b1ac632d1..c98ccdbeb4 100644 --- a/plugins/splunk-on-call/CHANGELOG.md +++ b/plugins/splunk-on-call/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-splunk-on-call +## 0.4.15-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + ## 0.4.14 ### Patch Changes diff --git a/plugins/splunk-on-call/package.json b/plugins/splunk-on-call/package.json index e07a08254f..3a971fd613 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.14", + "version": "0.4.15-next.0", "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 bb83becff1..33ede5165e 100644 --- a/plugins/stack-overflow-backend/CHANGELOG.md +++ b/plugins/stack-overflow-backend/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-stack-overflow-backend +## 0.2.11-next.0 + +### Patch Changes + +- b168d7e7ea: Deprecate package in favor of the new `@backstage/plugin-search-backend-module-stack-overflow-collator` module. + + The search collator `requestParams` option is optional now, so its default value is `{ order: 'desc', sort: 'activity', site: 'stackoverflow' }` as defined in the `Try It` section on the [official Stack Overflow API documentation](https://api.stackexchange.com/docs/questions). + +- Updated dependencies + - @backstage/plugin-search-backend-module-stack-overflow-collator@0.1.0-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-search-common@1.2.7 + ## 0.2.10 ### Patch Changes diff --git a/plugins/stack-overflow-backend/package.json b/plugins/stack-overflow-backend/package.json index 77ebd8c69e..b397d39d75 100644 --- a/plugins/stack-overflow-backend/package.json +++ b/plugins/stack-overflow-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-stack-overflow-backend", "description": "Deprecated, consider using @backstage/plugin-search-backend-module-stack-overflow-collator instead", - "version": "0.2.10", + "version": "0.2.11-next.0", "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 7ff52c4364..55a046bfad 100644 --- a/plugins/stack-overflow/CHANGELOG.md +++ b/plugins/stack-overflow/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-stack-overflow +## 0.1.22-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- b168d7e7ea: Migrate package to the new Frontend system, the new module is distributed with a `/alpha` subpath. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/frontend-plugin-api@0.3.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-search-react@1.7.2-next.0 + - @backstage/plugin-home-react@0.1.5-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/config@1.1.1 + - @backstage/plugin-search-common@1.2.7 + ## 0.1.21 ### Patch Changes diff --git a/plugins/stack-overflow/package.json b/plugins/stack-overflow/package.json index 431f8a5b80..51a1031e86 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.21", + "version": "0.1.22-next.0", "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 d831792629..88736b62aa 100644 --- a/plugins/stackstorm/CHANGELOG.md +++ b/plugins/stackstorm/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-stackstorm +## 0.1.8-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/errors@1.2.3 + ## 0.1.7 ### Patch Changes diff --git a/plugins/stackstorm/package.json b/plugins/stackstorm/package.json index 76f9958812..bb86be6b13 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.7", + "version": "0.1.8-next.0", "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 f319b515ec..25a5396f0a 100644 --- a/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md +++ b/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-tech-insights-backend-module-jsonfc +## 0.1.39-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-tech-insights-common@0.2.12 + - @backstage/plugin-tech-insights-node@0.4.13-next.0 + ## 0.1.38 ### Patch Changes diff --git a/plugins/tech-insights-backend-module-jsonfc/package.json b/plugins/tech-insights-backend-module-jsonfc/package.json index 17fa4702e3..45e7955366 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.38", + "version": "0.1.39-next.0", "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 fcd5520d29..dc3ce7355d 100644 --- a/plugins/tech-insights-backend/CHANGELOG.md +++ b/plugins/tech-insights-backend/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-tech-insights-backend +## 0.5.21-next.0 + +### Patch Changes + +- 193ad022bb: Add `factRetrieverId` to the fact retriever's logger metadata. +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-tech-insights-common@0.2.12 + - @backstage/plugin-tech-insights-node@0.4.13-next.0 + ## 0.5.20 ### Patch Changes diff --git a/plugins/tech-insights-backend/package.json b/plugins/tech-insights-backend/package.json index 1dda0595f5..ab9fb19b22 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.20", + "version": "0.5.21-next.0", "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 37117bc0d8..6e046eea3b 100644 --- a/plugins/tech-insights-node/CHANGELOG.md +++ b/plugins/tech-insights-node/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-tech-insights-node +## 0.4.13-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/config@1.1.1 + - @backstage/types@1.1.1 + - @backstage/plugin-tech-insights-common@0.2.12 + ## 0.4.12 ### Patch Changes diff --git a/plugins/tech-insights-node/package.json b/plugins/tech-insights-node/package.json index 23863a774d..478125b16c 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.12", + "version": "0.4.13-next.0", "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 83644ecdab..1a19864fbb 100644 --- a/plugins/tech-insights/CHANGELOG.md +++ b/plugins/tech-insights/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-tech-insights +## 0.3.18-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-tech-insights-common@0.2.12 + ## 0.3.17 ### Patch Changes diff --git a/plugins/tech-insights/package.json b/plugins/tech-insights/package.json index 7735fb3719..ff005c0581 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.17", + "version": "0.3.18-next.0", "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 276c50be04..b70e0607e1 100644 --- a/plugins/tech-radar/CHANGELOG.md +++ b/plugins/tech-radar/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-tech-radar +## 0.6.10-next.0 + +### Patch Changes + +- 68fc9dc60e: Updated alpha exports according to routing changes in `@backstage/frontend-plugin-api`. +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/frontend-plugin-api@0.3.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + ## 0.6.9 ### Patch Changes diff --git a/plugins/tech-radar/package.json b/plugins/tech-radar/package.json index 82fd7ca147..63a416ae24 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.9", + "version": "0.6.10-next.0", "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 e215d3d842..7cc7651156 100644 --- a/plugins/techdocs-addons-test-utils/CHANGELOG.md +++ b/plugins/techdocs-addons-test-utils/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-techdocs-addons-test-utils +## 1.0.23-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog@1.15.0-next.0 + - @backstage/plugin-techdocs@1.8.1-next.0 + - @backstage/integration-react@1.1.21-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-techdocs-react@1.1.13-next.0 + - @backstage/core-app-api@1.11.1-next.0 + - @backstage/plugin-search-react@1.7.2-next.0 + - @backstage/test-utils@1.4.5-next.0 + - @backstage/theme@0.4.4-next.0 + ## 1.0.22 ### Patch Changes diff --git a/plugins/techdocs-addons-test-utils/package.json b/plugins/techdocs-addons-test-utils/package.json index b65cc1d2b1..874524528d 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.22", + "version": "1.0.23-next.0", "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 ad2b8f67ed..3d10ddb03c 100644 --- a/plugins/techdocs-backend/CHANGELOG.md +++ b/plugins/techdocs-backend/CHANGELOG.md @@ -1,5 +1,24 @@ # @backstage/plugin-techdocs-backend +## 1.8.1-next.0 + +### Patch Changes + +- c3c5c7e514: Add info about the entity when tech docs fail to build +- Updated dependencies + - @backstage/plugin-search-backend-module-techdocs@0.1.11-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-common@1.0.17 + - @backstage/plugin-permission-common@0.7.9 + - @backstage/plugin-search-common@1.2.7 + - @backstage/plugin-techdocs-node@1.9.1-next.0 + ## 1.8.0 ### Minor Changes diff --git a/plugins/techdocs-backend/package.json b/plugins/techdocs-backend/package.json index c3e2ee0708..ab1f4ab6f6 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.8.0", + "version": "1.8.1-next.0", "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 37b6a46b20..e151635876 100644 --- a/plugins/techdocs-module-addons-contrib/CHANGELOG.md +++ b/plugins/techdocs-module-addons-contrib/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-techdocs-module-addons-contrib +## 1.1.2-next.0 + +### Patch Changes + +- 4728b3960d: Fixed navigation bug that caused users to not be scrolled to the top of a new page. Fixed navigation bug where using backwards and forwards browser navigation did not scroll users to the correct place on the TechDoc page. +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/integration-react@1.1.21-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-techdocs-react@1.1.13-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/integration@1.7.1 + ## 1.1.1 ### Patch Changes diff --git a/plugins/techdocs-module-addons-contrib/package.json b/plugins/techdocs-module-addons-contrib/package.json index cf92b0c969..c67a4aa3a8 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.1.1", + "version": "1.1.2-next.0", "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 2576313037..c10de03d91 100644 --- a/plugins/techdocs-node/CHANGELOG.md +++ b/plugins/techdocs-node/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-techdocs-node +## 1.9.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/integration-aws-node@0.1.7 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-search-common@1.2.7 + ## 1.9.0 ### Minor Changes diff --git a/plugins/techdocs-node/package.json b/plugins/techdocs-node/package.json index 712693f6af..ef2e547a98 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.9.0", + "version": "1.9.1-next.0", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/plugins/techdocs-react/CHANGELOG.md b/plugins/techdocs-react/CHANGELOG.md index 42edbad969..2ed5c503f1 100644 --- a/plugins/techdocs-react/CHANGELOG.md +++ b/plugins/techdocs-react/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-techdocs-react +## 1.1.13-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/version-bridge@1.0.7-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + ## 1.1.12 ### Patch Changes diff --git a/plugins/techdocs-react/package.json b/plugins/techdocs-react/package.json index 79d2b3cc17..eaae848546 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.12", + "version": "1.1.13-next.0", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/plugins/techdocs/CHANGELOG.md b/plugins/techdocs/CHANGELOG.md index 4db98ea055..930997aac3 100644 --- a/plugins/techdocs/CHANGELOG.md +++ b/plugins/techdocs/CHANGELOG.md @@ -1,5 +1,32 @@ # @backstage/plugin-techdocs +## 1.8.1-next.0 + +### Patch Changes + +- 4728b3960d: Fixed navigation bug that caused users to not be scrolled to the top of a new page. Fixed navigation bug where using backwards and forwards browser navigation did not scroll users to the correct place on the TechDoc page. +- a3add7a682: Export alpha routes and nav item extension, only available for applications that uses the new Frontend system. +- 71c97e7d73: The `spec.lifecycle' field in entities will now always be rendered as a string. +- 68fc9dc60e: Updated alpha exports according to routing changes in `@backstage/frontend-plugin-api`. +- 6c2b872153: Add official support for React 18. +- 0bf6ebda88: Added entity page content for the new plugin exported via `/alpha`. +- 67cc85bb14: Switched the conditional `react-dom/client` import to use `import(...)` rather than `require(...)`. +- 38cda52746: Added support for React 18. The new `createRoot` API from `react-dom/client` will now be used if present. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/frontend-plugin-api@0.3.0-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/integration-react@1.1.21-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/plugin-techdocs-react@1.1.13-next.0 + - @backstage/plugin-search-react@1.7.2-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/integration@1.7.1 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-search-common@1.2.7 + ## 1.8.0 ### Minor Changes diff --git a/plugins/techdocs/package.json b/plugins/techdocs/package.json index 3df7399521..d3808c961f 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.8.0", + "version": "1.8.1-next.0", "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 6edbe92aa7..a1ed125e60 100644 --- a/plugins/todo-backend/CHANGELOG.md +++ b/plugins/todo-backend/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-todo-backend +## 0.3.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-openapi-utils@0.1.0-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/catalog-client@1.4.5 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/plugin-catalog-node@1.4.8-next.0 + ## 0.3.4 ### Patch Changes diff --git a/plugins/todo-backend/package.json b/plugins/todo-backend/package.json index d3296b70f0..853e6f20e5 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.3.4", + "version": "0.3.5-next.0", "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 b30c9d259e..11d42ec56a 100644 --- a/plugins/todo/CHANGELOG.md +++ b/plugins/todo/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-todo +## 0.2.30-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- 8613ba3928: Switched to using `"exports"` field for `/alpha` subpath export. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + ## 0.2.28 ### Patch Changes diff --git a/plugins/todo/package.json b/plugins/todo/package.json index 6c230d7a4b..af49ab02cf 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.28", + "version": "0.2.30-next.0", "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 53e8a6f30f..480574d082 100644 --- a/plugins/user-settings-backend/CHANGELOG.md +++ b/plugins/user-settings-backend/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-user-settings-backend +## 0.2.6-next.0 + +### Patch Changes + +- dd0350379b: Added dependency on `@backstage/config` +- 8613ba3928: Switched to using `"exports"` field for `/alpha` subpath export. +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + - @backstage/plugin-auth-node@0.4.1-next.0 + ## 0.2.4 ### Patch Changes diff --git a/plugins/user-settings-backend/package.json b/plugins/user-settings-backend/package.json index cf68c43c3b..4ea98078dd 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.2.4", + "version": "0.2.6-next.0", "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 3353f23a79..6072182b2d 100644 --- a/plugins/user-settings/CHANGELOG.md +++ b/plugins/user-settings/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-user-settings +## 0.7.12-next.0 + +### Patch Changes + +- 68fc9dc60e: Updated alpha exports according to routing changes in `@backstage/frontend-plugin-api`. +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/frontend-plugin-api@0.3.0-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/core-app-api@1.11.1-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/errors@1.2.3 + - @backstage/types@1.1.1 + ## 0.7.11 ### Patch Changes diff --git a/plugins/user-settings/package.json b/plugins/user-settings/package.json index 264521ee45..873cc9bf2a 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.11", + "version": "0.7.12-next.0", "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 d623adcf33..9554b05272 100644 --- a/plugins/vault-backend/CHANGELOG.md +++ b/plugins/vault-backend/CHANGELOG.md @@ -1,5 +1,49 @@ # @backstage/plugin-vault-backend +## 0.4.0-next.0 + +### Minor Changes + +- a873a32a1f: Added support for the [new backend system](https://backstage.io/docs/backend-system/). + + In your `packages/backend/src/index.ts` make the following changes: + + ```diff + import { createBackend } from '@backstage/backend-defaults'; + const backend = createBackend(); + // ... other feature additions + + backend.add(import('@backstage/plugin-vault-backend'); + backend.start(); + ``` + + If you use the new backend system, the token renewal task can be defined via configuration file: + + ```diff + vault: + baseUrl: + token: + schedule: + + frequency: ... + + timeout: ... + + # Other schedule options, such as scope or initialDelay + ``` + + If the `schedule` is omitted or set to `false` no token renewal task will be scheduled. + If the value of `schedule` is set to `true` the renew will be scheduled hourly (the default). + In other cases (like in the diff above), the defined schedule will be used. + + **DEPRECATIONS**: The interface `VaultApi` and the type `VaultSecret` are now deprecated. Import them from `@backstage/plugin-vault-node`. + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-vault-node@0.1.0-next.0 + - @backstage/backend-common@0.19.9-next.0 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/config@1.1.1 + - @backstage/errors@1.2.3 + ## 0.3.11 ### Patch Changes diff --git a/plugins/vault-backend/package.json b/plugins/vault-backend/package.json index 7e061c8cc3..7f9b6a5345 100644 --- a/plugins/vault-backend/package.json +++ b/plugins/vault-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-vault-backend", "description": "A Backstage backend plugin that integrates towards Vault", - "version": "0.3.11", + "version": "0.4.0-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/vault-node/CHANGELOG.md b/plugins/vault-node/CHANGELOG.md new file mode 100644 index 0000000000..696347e9fc --- /dev/null +++ b/plugins/vault-node/CHANGELOG.md @@ -0,0 +1,13 @@ +# @backstage/plugin-vault-node + +## 0.1.0-next.0 + +### Minor Changes + +- 7a41bcf2af: Initial version of the `plugin-vault-node`` package. It contains the extension point definitions + for the vault backend, as well as some types that will be deprecated in the backend plugin. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.7-next.0 diff --git a/plugins/vault-node/package.json b/plugins/vault-node/package.json index a0a821680c..41eb2d8242 100644 --- a/plugins/vault-node/package.json +++ b/plugins/vault-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-vault-node", "description": "Node.js library for the vault plugin", - "version": "0.0.0", + "version": "0.1.0-next.0", "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 37ed1eb14e..ce4fff2c41 100644 --- a/plugins/vault/CHANGELOG.md +++ b/plugins/vault/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-vault +## 0.1.21-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/plugin-catalog-react@1.9.0-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/errors@1.2.3 + ## 0.1.20 ### Patch Changes diff --git a/plugins/vault/package.json b/plugins/vault/package.json index 055d38073a..d1c23fae1c 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.20", + "version": "0.1.21-next.0", "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 9682aa6411..b47889abf8 100644 --- a/plugins/xcmetrics/CHANGELOG.md +++ b/plugins/xcmetrics/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-xcmetrics +## 0.2.45-next.0 + +### Patch Changes + +- 6c2b872153: Add official support for React 18. +- Updated dependencies + - @backstage/core-components@0.13.7-next.0 + - @backstage/core-plugin-api@1.8.0-next.0 + - @backstage/theme@0.4.4-next.0 + - @backstage/errors@1.2.3 + ## 0.2.44 ### Patch Changes diff --git a/plugins/xcmetrics/package.json b/plugins/xcmetrics/package.json index 97887eb2ea..7aeb570996 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.44", + "version": "0.2.45-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/yarn.lock b/yarn.lock index 8561896b24..2a463ed8bb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3687,7 +3687,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/catalog-client@workspace:^, @backstage/catalog-client@workspace:packages/catalog-client": +"@backstage/catalog-client@^1.4.5, @backstage/catalog-client@workspace:^, @backstage/catalog-client@workspace:packages/catalog-client": version: 0.0.0-use.local resolution: "@backstage/catalog-client@workspace:packages/catalog-client" dependencies: @@ -3699,7 +3699,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/catalog-model@^1.1.5, @backstage/catalog-model@^1.4.2, @backstage/catalog-model@workspace:^, @backstage/catalog-model@workspace:packages/catalog-model": +"@backstage/catalog-model@^1.1.5, @backstage/catalog-model@^1.4.2, @backstage/catalog-model@^1.4.3, @backstage/catalog-model@workspace:^, @backstage/catalog-model@workspace:packages/catalog-model": version: 0.0.0-use.local resolution: "@backstage/catalog-model@workspace:packages/catalog-model" dependencies: @@ -3949,7 +3949,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/config@^1.0.6, @backstage/config@^1.0.7, @backstage/config@workspace:^, @backstage/config@workspace:packages/config": +"@backstage/config@^1.0.6, @backstage/config@^1.0.7, @backstage/config@^1.1.1, @backstage/config@workspace:^, @backstage/config@workspace:packages/config": version: 0.0.0-use.local resolution: "@backstage/config@workspace:packages/config" dependencies: @@ -4016,7 +4016,112 @@ __metadata: languageName: unknown linkType: soft -"@backstage/core-components@^0.13.5, @backstage/core-components@workspace:^, @backstage/core-components@workspace:packages/core-components": +"@backstage/core-components@npm:^0.12.3": + version: 0.12.5 + resolution: "@backstage/core-components@npm:0.12.5" + dependencies: + "@backstage/config": ^1.0.7 + "@backstage/core-plugin-api": ^1.5.0 + "@backstage/errors": ^1.1.5 + "@backstage/theme": ^0.2.18 + "@backstage/version-bridge": ^1.0.3 + "@material-table/core": ^3.1.0 + "@material-ui/core": ^4.12.2 + "@material-ui/icons": ^4.9.1 + "@material-ui/lab": 4.0.0-alpha.57 + "@react-hookz/web": ^20.0.0 + "@types/react-sparklines": ^1.7.0 + "@types/react-text-truncate": ^0.14.0 + ansi-regex: ^6.0.1 + classnames: ^2.2.6 + d3-selection: ^3.0.0 + d3-shape: ^3.0.0 + d3-zoom: ^3.0.0 + dagre: ^0.8.5 + history: ^5.0.0 + immer: ^9.0.1 + lodash: ^4.17.21 + pluralize: ^8.0.0 + prop-types: ^15.7.2 + qs: ^6.9.4 + rc-progress: 3.4.1 + react-helmet: 6.1.0 + react-hook-form: ^7.12.2 + react-markdown: ^8.0.0 + react-sparklines: ^1.7.0 + react-syntax-highlighter: ^15.4.5 + react-text-truncate: ^0.19.0 + react-use: ^17.3.2 + react-virtualized-auto-sizer: ^1.0.6 + react-window: ^1.8.6 + remark-gfm: ^3.0.1 + zen-observable: ^0.10.0 + zod: ~3.18.0 + peerDependencies: + "@types/react": ^16.13.1 || ^17.0.0 + react: ^16.13.1 || ^17.0.0 + react-dom: ^16.13.1 || ^17.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + checksum: 8308c1b90247911f6cf22963b530cef169287f508ff29d159d0c83758134dd43bd5acd2113350690a46a02246bc05dca975bcc38325000aefb1c93c80e2f19c7 + languageName: node + linkType: hard + +"@backstage/core-components@npm:^0.13.5, @backstage/core-components@npm:^0.13.6": + version: 0.13.6 + resolution: "@backstage/core-components@npm:0.13.6" + dependencies: + "@backstage/catalog-model": ^1.4.3 + "@backstage/config": ^1.1.1 + "@backstage/core-plugin-api": ^1.7.0 + "@backstage/errors": ^1.2.3 + "@backstage/plugin-catalog-react": ^1.8.5 + "@backstage/theme": ^0.4.3 + "@backstage/version-bridge": ^1.0.6 + "@date-io/core": ^1.3.13 + "@material-table/core": ^3.1.0 + "@material-ui/core": ^4.12.2 + "@material-ui/icons": ^4.9.1 + "@material-ui/lab": 4.0.0-alpha.61 + "@react-hookz/web": ^20.0.0 + "@types/react": ^16.13.1 || ^17.0.0 + "@types/react-sparklines": ^1.7.0 + "@types/react-text-truncate": ^0.14.0 + ansi-regex: ^6.0.1 + classnames: ^2.2.6 + d3-selection: ^3.0.0 + d3-shape: ^3.0.0 + d3-zoom: ^3.0.0 + dagre: ^0.8.5 + history: ^5.0.0 + immer: ^9.0.1 + linkify-react: 4.1.1 + linkifyjs: 4.1.1 + lodash: ^4.17.21 + pluralize: ^8.0.0 + qs: ^6.9.4 + rc-progress: 3.5.1 + react-helmet: 6.1.0 + react-hook-form: ^7.12.2 + react-idle-timer: 5.6.2 + react-markdown: ^8.0.0 + react-sparklines: ^1.7.0 + react-syntax-highlighter: ^15.4.5 + react-text-truncate: ^0.19.0 + react-use: ^17.3.2 + react-virtualized-auto-sizer: ^1.0.11 + react-window: ^1.8.6 + remark-gfm: ^3.0.1 + zen-observable: ^0.10.0 + zod: ^3.21.4 + peerDependencies: + react: ^16.13.1 || ^17.0.0 + react-dom: ^16.13.1 || ^17.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + checksum: 834522177a8df8edda302fdcd9c91fc21210c1623130dd13db07032b9db56028af559c153c44201c9496b767c075bf6e4df6c2eb9ab55092ebd95fc5a399d4ad + languageName: node + linkType: hard + +"@backstage/core-components@workspace:^, @backstage/core-components@workspace:packages/core-components": version: 0.0.0-use.local resolution: "@backstage/core-components@workspace:packages/core-components" dependencies: @@ -4091,57 +4196,25 @@ __metadata: languageName: unknown linkType: soft -"@backstage/core-components@npm:^0.12.3": - version: 0.12.5 - resolution: "@backstage/core-components@npm:0.12.5" +"@backstage/core-plugin-api@npm:^1.3.0, @backstage/core-plugin-api@npm:^1.5.0, @backstage/core-plugin-api@npm:^1.6.0, @backstage/core-plugin-api@npm:^1.7.0": + version: 1.7.0 + resolution: "@backstage/core-plugin-api@npm:1.7.0" dependencies: - "@backstage/config": ^1.0.7 - "@backstage/core-plugin-api": ^1.5.0 - "@backstage/errors": ^1.1.5 - "@backstage/theme": ^0.2.18 - "@backstage/version-bridge": ^1.0.3 - "@material-table/core": ^3.1.0 - "@material-ui/core": ^4.12.2 - "@material-ui/icons": ^4.9.1 - "@material-ui/lab": 4.0.0-alpha.57 - "@react-hookz/web": ^20.0.0 - "@types/react-sparklines": ^1.7.0 - "@types/react-text-truncate": ^0.14.0 - ansi-regex: ^6.0.1 - classnames: ^2.2.6 - d3-selection: ^3.0.0 - d3-shape: ^3.0.0 - d3-zoom: ^3.0.0 - dagre: ^0.8.5 - history: ^5.0.0 - immer: ^9.0.1 - lodash: ^4.17.21 - pluralize: ^8.0.0 - prop-types: ^15.7.2 - qs: ^6.9.4 - rc-progress: 3.4.1 - react-helmet: 6.1.0 - react-hook-form: ^7.12.2 - react-markdown: ^8.0.0 - react-sparklines: ^1.7.0 - react-syntax-highlighter: ^15.4.5 - react-text-truncate: ^0.19.0 - react-use: ^17.3.2 - react-virtualized-auto-sizer: ^1.0.6 - react-window: ^1.8.6 - remark-gfm: ^3.0.1 - zen-observable: ^0.10.0 - zod: ~3.18.0 - peerDependencies: + "@backstage/config": ^1.1.1 + "@backstage/types": ^1.1.1 + "@backstage/version-bridge": ^1.0.6 "@types/react": ^16.13.1 || ^17.0.0 + history: ^5.0.0 + i18next: ^22.4.15 + peerDependencies: react: ^16.13.1 || ^17.0.0 react-dom: ^16.13.1 || ^17.0.0 react-router-dom: 6.0.0-beta.0 || ^6.3.0 - checksum: 8308c1b90247911f6cf22963b530cef169287f508ff29d159d0c83758134dd43bd5acd2113350690a46a02246bc05dca975bcc38325000aefb1c93c80e2f19c7 + checksum: 7b328dac8faf598f4b45c098ba0629f29d1278c204fde11264fe964a82da4e3a72a13551200941b31901d3b0f483bea55deba5264ab55a2c202eae2c6a196ae7 languageName: node linkType: hard -"@backstage/core-plugin-api@^1.3.0, @backstage/core-plugin-api@^1.5.0, @backstage/core-plugin-api@^1.6.0, @backstage/core-plugin-api@workspace:^, @backstage/core-plugin-api@workspace:packages/core-plugin-api": +"@backstage/core-plugin-api@workspace:^, @backstage/core-plugin-api@workspace:packages/core-plugin-api": version: 0.0.0-use.local resolution: "@backstage/core-plugin-api@workspace:packages/core-plugin-api" dependencies: @@ -4239,7 +4312,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/errors@^1.1.5, @backstage/errors@workspace:^, @backstage/errors@workspace:packages/errors": +"@backstage/errors@^1.1.5, @backstage/errors@^1.2.3, @backstage/errors@workspace:^, @backstage/errors@workspace:packages/errors": version: 0.0.0-use.local resolution: "@backstage/errors@workspace:packages/errors" dependencies: @@ -4331,7 +4404,25 @@ __metadata: languageName: unknown linkType: soft -"@backstage/integration-react@^1.1.19, @backstage/integration-react@workspace:^, @backstage/integration-react@workspace:packages/integration-react": +"@backstage/integration-react@npm:^1.1.19": + version: 1.1.20 + resolution: "@backstage/integration-react@npm:1.1.20" + dependencies: + "@backstage/config": ^1.1.1 + "@backstage/core-plugin-api": ^1.7.0 + "@backstage/integration": ^1.7.1 + "@material-ui/core": ^4.12.2 + "@material-ui/icons": ^4.9.1 + "@types/react": ^16.13.1 || ^17.0.0 + peerDependencies: + react: ^16.13.1 || ^17.0.0 + react-dom: ^16.13.1 || ^17.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + checksum: 6d76d58687703ac9fa8d328caf993cf8ae1326254e55cda90701c94418f37d0fb6ee1940050a56d6f47e7ee8468658be2862359b644deb10e686342960435487 + languageName: node + linkType: hard + +"@backstage/integration-react@workspace:^, @backstage/integration-react@workspace:packages/integration-react": version: 0.0.0-use.local resolution: "@backstage/integration-react@workspace:packages/integration-react" dependencies: @@ -4355,7 +4446,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/integration@workspace:^, @backstage/integration@workspace:packages/integration": +"@backstage/integration@^1.7.1, @backstage/integration@workspace:^, @backstage/integration@workspace:packages/integration": version: 0.0.0-use.local resolution: "@backstage/integration@workspace:packages/integration" dependencies: @@ -5764,7 +5855,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-catalog-common@^1.0.10, @backstage/plugin-catalog-common@workspace:^, @backstage/plugin-catalog-common@workspace:plugins/catalog-common": +"@backstage/plugin-catalog-common@^1.0.10, @backstage/plugin-catalog-common@^1.0.17, @backstage/plugin-catalog-common@workspace:^, @backstage/plugin-catalog-common@workspace:plugins/catalog-common": version: 0.0.0-use.local resolution: "@backstage/plugin-catalog-common@workspace:plugins/catalog-common" dependencies: @@ -5900,7 +5991,43 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-catalog-react@^1.2.4, @backstage/plugin-catalog-react@^1.8.4, @backstage/plugin-catalog-react@workspace:^, @backstage/plugin-catalog-react@workspace:plugins/catalog-react": +"@backstage/plugin-catalog-react@npm:^1.2.4, @backstage/plugin-catalog-react@npm:^1.8.4, @backstage/plugin-catalog-react@npm:^1.8.5": + version: 1.8.5 + resolution: "@backstage/plugin-catalog-react@npm:1.8.5" + dependencies: + "@backstage/catalog-client": ^1.4.5 + "@backstage/catalog-model": ^1.4.3 + "@backstage/core-components": ^0.13.6 + "@backstage/core-plugin-api": ^1.7.0 + "@backstage/errors": ^1.2.3 + "@backstage/integration": ^1.7.1 + "@backstage/plugin-catalog-common": ^1.0.17 + "@backstage/plugin-permission-common": ^0.7.9 + "@backstage/plugin-permission-react": ^0.4.16 + "@backstage/theme": ^0.4.3 + "@backstage/types": ^1.1.1 + "@backstage/version-bridge": ^1.0.6 + "@material-ui/core": ^4.12.2 + "@material-ui/icons": ^4.9.1 + "@material-ui/lab": 4.0.0-alpha.61 + "@react-hookz/web": ^23.0.0 + "@types/react": ^16.13.1 || ^17.0.0 + classnames: ^2.2.6 + lodash: ^4.17.21 + material-ui-popup-state: ^1.9.3 + qs: ^6.9.4 + react-use: ^17.2.4 + yaml: ^2.0.0 + zen-observable: ^0.10.0 + peerDependencies: + react: ^16.13.1 || ^17.0.0 + react-dom: ^16.13.1 || ^17.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + checksum: 8badfa1af8d20f93ff162580d62e0ddf91753c91dfc741bbc7e12a6e9c8ebc554797b537ccecd6adac276e404f7d5c20bf64aea44c6b2798bfe5643d251b9b04 + languageName: node + linkType: hard + +"@backstage/plugin-catalog-react@workspace:^, @backstage/plugin-catalog-react@workspace:plugins/catalog-react": version: 0.0.0-use.local resolution: "@backstage/plugin-catalog-react@workspace:plugins/catalog-react" dependencies: @@ -7260,7 +7387,25 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-home-react@^0.1.3, @backstage/plugin-home-react@workspace:^, @backstage/plugin-home-react@workspace:plugins/home-react": +"@backstage/plugin-home-react@npm:^0.1.3": + version: 0.1.4 + resolution: "@backstage/plugin-home-react@npm:0.1.4" + dependencies: + "@backstage/core-components": ^0.13.6 + "@backstage/core-plugin-api": ^1.7.0 + "@material-ui/core": ^4.12.2 + "@material-ui/icons": ^4.9.1 + "@rjsf/utils": 5.13.0 + "@types/react": ^16.13.1 || ^17.0.0 + peerDependencies: + react: ^16.13.1 || ^17.0.0 + react-dom: ^16.13.1 || ^17.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + checksum: 52c528a8af4678308bf4341d85aa5360cfe8d1d90f024c59ca0d9bf9343c6964f025eef9c53c50560e65816b7dce052c27463d41b9609a2e125fa1ac637ac463 + languageName: node + linkType: hard + +"@backstage/plugin-home-react@workspace:^, @backstage/plugin-home-react@workspace:plugins/home-react": version: 0.0.0-use.local resolution: "@backstage/plugin-home-react@workspace:plugins/home-react" dependencies: @@ -8250,7 +8395,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-permission-common@workspace:^, @backstage/plugin-permission-common@workspace:plugins/permission-common": +"@backstage/plugin-permission-common@^0.7.9, @backstage/plugin-permission-common@workspace:^, @backstage/plugin-permission-common@workspace:plugins/permission-common": version: 0.0.0-use.local resolution: "@backstage/plugin-permission-common@workspace:plugins/permission-common" dependencies: @@ -8288,6 +8433,25 @@ __metadata: languageName: unknown linkType: soft +"@backstage/plugin-permission-react@npm:^0.4.16": + version: 0.4.16 + resolution: "@backstage/plugin-permission-react@npm:0.4.16" + dependencies: + "@backstage/config": ^1.1.1 + "@backstage/core-plugin-api": ^1.7.0 + "@backstage/plugin-permission-common": ^0.7.9 + "@types/react": ^16.13.1 || ^17.0.0 + cross-fetch: ^3.1.5 + react-use: ^17.2.4 + swr: ^2.0.0 + peerDependencies: + react: ^16.13.1 || ^17.0.0 + react-dom: ^16.13.1 || ^17.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + checksum: dbf85118d34b29c19424f71cfb3918b63bc0243dd479df32227deec992686c006101395aef5a791887658d6d6543e0dbd9df4c5579fcbfd93284c79876924570 + languageName: node + linkType: hard + "@backstage/plugin-permission-react@workspace:^, @backstage/plugin-permission-react@workspace:plugins/permission-react": version: 0.0.0-use.local resolution: "@backstage/plugin-permission-react@workspace:plugins/permission-react" @@ -10044,7 +10208,35 @@ __metadata: languageName: unknown linkType: soft -"@backstage/theme@^0.4.2, @backstage/theme@workspace:^, @backstage/theme@workspace:packages/theme": +"@backstage/theme@npm:^0.2.16, @backstage/theme@npm:^0.2.18": + version: 0.2.19 + resolution: "@backstage/theme@npm:0.2.19" + dependencies: + "@material-ui/core": ^4.12.2 + peerDependencies: + react: ^16.13.1 || ^17.0.0 + react-dom: ^16.13.1 || ^17.0.0 + checksum: 93ca110a3f953d6d98b4a5f2163beaa1bd1f95adb66a593e85eb523a7012acf654b6148db54008a6434805a4bd9016d67e5c6a317bc56940ee6800aecbb97d6f + languageName: node + linkType: hard + +"@backstage/theme@npm:^0.4.2, @backstage/theme@npm:^0.4.3": + version: 0.4.3 + resolution: "@backstage/theme@npm:0.4.3" + dependencies: + "@emotion/react": ^11.10.5 + "@emotion/styled": ^11.10.5 + "@mui/material": ^5.12.2 + peerDependencies: + "@material-ui/core": ^4.12.2 + "@types/react": ^16.13.1 || ^17.0.0 + react: ^16.13.1 || ^17.0.0 + react-dom: ^16.13.1 || ^17.0.0 + checksum: 8ad491f837803959c22a23e2895d0409bfd8ba58c325c6bcf2a87fbedc4d6076568e7ed2f3a715296e3f6f03f8579df6947831fe983579c777d607826a90b142 + languageName: node + linkType: hard + +"@backstage/theme@workspace:^, @backstage/theme@workspace:packages/theme": version: 0.0.0-use.local resolution: "@backstage/theme@workspace:packages/theme" dependencies: @@ -10061,19 +10253,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/theme@npm:^0.2.16, @backstage/theme@npm:^0.2.18": - version: 0.2.19 - resolution: "@backstage/theme@npm:0.2.19" - dependencies: - "@material-ui/core": ^4.12.2 - peerDependencies: - react: ^16.13.1 || ^17.0.0 - react-dom: ^16.13.1 || ^17.0.0 - checksum: 93ca110a3f953d6d98b4a5f2163beaa1bd1f95adb66a593e85eb523a7012acf654b6148db54008a6434805a4bd9016d67e5c6a317bc56940ee6800aecbb97d6f - languageName: node - linkType: hard - -"@backstage/types@^1.0.2, @backstage/types@workspace:^, @backstage/types@workspace:packages/types": +"@backstage/types@^1.0.2, @backstage/types@^1.1.1, @backstage/types@workspace:^, @backstage/types@workspace:packages/types": version: 0.0.0-use.local resolution: "@backstage/types@workspace:packages/types" dependencies: @@ -10084,7 +10264,20 @@ __metadata: languageName: unknown linkType: soft -"@backstage/version-bridge@^1.0.3, @backstage/version-bridge@workspace:^, @backstage/version-bridge@workspace:packages/version-bridge": +"@backstage/version-bridge@npm:^1.0.3, @backstage/version-bridge@npm:^1.0.6": + version: 1.0.6 + resolution: "@backstage/version-bridge@npm:1.0.6" + dependencies: + "@types/react": ^16.13.1 || ^17.0.0 + peerDependencies: + react: ^16.13.1 || ^17.0.0 + react-dom: ^16.13.1 || ^17.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + checksum: 2923a7723b3e9b6f2a6106ad13e6d7d648f727fa4751482f54bdd181ef7e8d0018b009edcbbfa297c938c3b936b6caba8df814652f5e78a38e8a83a81babce59 + languageName: node + linkType: hard + +"@backstage/version-bridge@workspace:^, @backstage/version-bridge@workspace:packages/version-bridge": version: 0.0.0-use.local resolution: "@backstage/version-bridge@workspace:packages/version-bridge" dependencies: From bb688f7b3befca8d0787a96ada4d77cff59b45e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Tue, 24 Oct 2023 11:43:44 +0200 Subject: [PATCH 066/102] just a few small windows build fixes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/sharp-chefs-attend.md | 5 +++++ packages/app-next/src/App.test.tsx | 4 ++++ .../backend-test-utils/src/filesystem/MockDirectory.ts | 2 +- packages/config-loader/src/sources/ConfigSources.test.ts | 8 ++++---- 4 files changed, 14 insertions(+), 5 deletions(-) create mode 100644 .changeset/sharp-chefs-attend.md diff --git a/.changeset/sharp-chefs-attend.md b/.changeset/sharp-chefs-attend.md new file mode 100644 index 0000000000..2334344928 --- /dev/null +++ b/.changeset/sharp-chefs-attend.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-test-utils': patch +--- + +Ensure recursive deletion of temporary directories in tests diff --git a/packages/app-next/src/App.test.tsx b/packages/app-next/src/App.test.tsx index b3cef58fe1..350daaaecc 100644 --- a/packages/app-next/src/App.test.tsx +++ b/packages/app-next/src/App.test.tsx @@ -21,6 +21,10 @@ jest.mock('@backstage/plugin-graphiql', () => ({ GraphiQLIcon: () => null, })); +// Rarely, and only in windows CI, do these tests take slightly more than the +// default five seconds +jest.setTimeout(15_000); + describe('App', () => { it('should render', async () => { process.env = { diff --git a/packages/backend-test-utils/src/filesystem/MockDirectory.ts b/packages/backend-test-utils/src/filesystem/MockDirectory.ts index b066b9acd5..fff8a35a06 100644 --- a/packages/backend-test-utils/src/filesystem/MockDirectory.ts +++ b/packages/backend-test-utils/src/filesystem/MockDirectory.ts @@ -311,7 +311,7 @@ class MockDirectoryImpl { }; remove = (): void => { - fs.removeSync(this.#root); + fs.rmSync(this.#root, { recursive: true, force: true, maxRetries: 10 }); }; #transformInput(input: MockDirectoryContent[string]): MockEntry[] { diff --git a/packages/config-loader/src/sources/ConfigSources.test.ts b/packages/config-loader/src/sources/ConfigSources.test.ts index f095bbec42..4b14572666 100644 --- a/packages/config-loader/src/sources/ConfigSources.test.ts +++ b/packages/config-loader/src/sources/ConfigSources.test.ts @@ -93,7 +93,7 @@ describe('ConfigSources', () => { targets: [{ type: 'path', target: '/config.yaml' }], }), ), - ).toEqual([{ name: 'FileConfigSource', path: '/config.yaml' }]); + ).toEqual([{ name: 'FileConfigSource', path: `${root}config.yaml` }]); expect( mergeSources( @@ -201,9 +201,9 @@ describe('ConfigSources', () => { ]), ), ).toEqual([ - { name: 'FileConfigSource', path: '/a.yaml' }, - { name: 'FileConfigSource', path: '/b.yaml' }, - { name: 'FileConfigSource', path: '/c.yaml' }, + { name: 'FileConfigSource', path: `${root}a.yaml` }, + { name: 'FileConfigSource', path: `${root}b.yaml` }, + { name: 'FileConfigSource', path: `${root}c.yaml` }, ]); }); From 8f91b281c7c91f83bb443936a3f90f94d39514a1 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 24 Oct 2023 12:55:06 +0200 Subject: [PATCH 067/102] scripts/verify-links: verify links in changesets Signed-off-by: Patrik Oldsberg --- scripts/verify-links.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/scripts/verify-links.js b/scripts/verify-links.js index 7664cadad5..b05dd5eead 100755 --- a/scripts/verify-links.js +++ b/scripts/verify-links.js @@ -77,6 +77,10 @@ async function verifyUrl(basePath, absUrl, docPages) { return undefined; } + if (basePath.startsWith('.changeset/')) { + return { url, basePath, problem: 'out-of-changeset' }; + } + let path = ''; if (url.startsWith('/')) { @@ -195,6 +199,10 @@ async function main() { '', )}`, ); + } else if (problem === 'out-of-changeset') { + console.error('Links in changesets must use absolute URLs'); + console.error(` From: ${basePath}`); + console.error(` To: ${url}`); } else if (problem === 'doc-missing') { const suggestion = docPages.get(url) || From a539643cba48e35aec8f27a6959eb6b76a8d98b0 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 24 Oct 2023 14:17:26 +0200 Subject: [PATCH 068/102] search-react: minor search bar analytics refactor Signed-off-by: Patrik Oldsberg --- .changeset/weak-zebras-cover.md | 5 +++++ .../src/components/SearchTracker/SearchTracker.tsx | 13 ++++++------- 2 files changed, 11 insertions(+), 7 deletions(-) create mode 100644 .changeset/weak-zebras-cover.md diff --git a/.changeset/weak-zebras-cover.md b/.changeset/weak-zebras-cover.md new file mode 100644 index 0000000000..f3290683e2 --- /dev/null +++ b/.changeset/weak-zebras-cover.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-search-react': patch +--- + +Minor refactor of search bar analytics capture diff --git a/plugins/search-react/src/components/SearchTracker/SearchTracker.tsx b/plugins/search-react/src/components/SearchTracker/SearchTracker.tsx index b19af6eef8..6cdfd205fc 100644 --- a/plugins/search-react/src/components/SearchTracker/SearchTracker.tsx +++ b/plugins/search-react/src/components/SearchTracker/SearchTracker.tsx @@ -19,23 +19,22 @@ import { useAnalytics } from '@backstage/core-plugin-api'; import { useSearch } from '../../context'; import usePrevious from 'react-use/lib/usePrevious'; +function useFallingEdge(next: boolean) { + const prev = usePrevious(next); + return prev && !next; +} + /** * Capture search event on term change. */ export const TrackSearch = ({ children }: { children: React.ReactChild }) => { - const useHasChanged = (value: any) => { - const previousVal = usePrevious(value); - return previousVal !== value; - }; - const analytics = useAnalytics(); const { term, result } = useSearch(); const numberOfResults = result.value?.numberOfResults ?? undefined; // Stops the analtyics event from firing before the new search engine response is returned - const hasStartedLoading = useHasChanged(result.loading); - const hasFinishedLoading = hasStartedLoading && !result.loading; + const hasFinishedLoading = useFallingEdge(result.loading); useEffect(() => { if (term && hasFinishedLoading) { From 38e8c5e2c79a8e4b923394f63c16699b2ebe30d3 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 24 Oct 2023 14:29:40 +0200 Subject: [PATCH 069/102] docs/backend-system: update backend system status Signed-off-by: Patrik Oldsberg --- docs/backend-system/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/backend-system/index.md b/docs/backend-system/index.md index 5dde66378a..c74dd34102 100644 --- a/docs/backend-system/index.md +++ b/docs/backend-system/index.md @@ -10,6 +10,6 @@ description: The Backend System ## Status -The new backend system is in alpha, and only a small number of plugins have been migrated so far. It is possible to try it out, but it is not recommended to use this new system in production yet. +The new backend system is in alpha, but many plugins have already been migrated. We recommend all plugins to migrate to the new system, and you can also try it out in your own production deployments. You can find an example backend setup in [the `backend-next` package](https://github.com/backstage/backstage/tree/master/packages/backend-next). From ce617bf47e4961ca0e0988d810d34160fd913636 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Tue, 24 Oct 2023 15:50:50 +0200 Subject: [PATCH 070/102] fix changeset MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/clever-houses-scream.md | 232 +---------------------------- 1 file changed, 1 insertion(+), 231 deletions(-) diff --git a/.changeset/clever-houses-scream.md b/.changeset/clever-houses-scream.md index cc6b4036f7..14a2427dea 100644 --- a/.changeset/clever-houses-scream.md +++ b/.changeset/clever-houses-scream.md @@ -1,235 +1,5 @@ --- -'@backstage/plugin-scaffolder-backend-module-confluence-to-markdown': patch -'@backstage/plugin-catalog-backend-module-scaffolder-entity-model': patch -'@backstage/plugin-catalog-backend-module-incremental-ingestion': patch -'@backstage/plugin-permission-backend-module-allow-all-policy': patch -'@backstage/plugin-catalog-backend-module-bitbucket-server': patch -'@backstage/plugin-auth-backend-module-microsoft-provider': patch -'@backstage/plugin-catalog-backend-module-bitbucket-cloud': patch -'@backstage/plugin-scaffolder-backend-module-cookiecutter': patch -'@backstage/plugin-auth-backend-module-pinniped-provider': patch -'@backstage/plugin-events-backend-module-bitbucket-cloud': patch -'@backstage/plugin-auth-backend-module-gcp-iap-provider': patch -'@backstage/plugin-auth-backend-module-github-provider': patch -'@backstage/plugin-auth-backend-module-gitlab-provider': patch -'@backstage/plugin-auth-backend-module-google-provider': patch -'@backstage/plugin-auth-backend-module-oauth2-provider': patch -'@backstage/plugin-search-backend-module-elasticsearch': patch -'@backstage/plugin-tech-insights-backend-module-jsonfc': patch -'@backstage/plugin-catalog-backend-module-unprocessed': patch -'@backstage/plugin-analytics-module-newrelic-browser': patch -'@backstage/plugin-catalog-backend-module-github-org': patch -'@backstage/plugin-catalog-backend-module-bitbucket': patch -'@backstage/plugin-scaffolder-backend-module-gitlab': patch -'@backstage/plugin-scaffolder-backend-module-sentry': patch -'@backstage/plugin-scaffolder-backend-module-yeoman': patch -'@backstage/plugin-catalog-backend-module-puppetdb': patch -'@backstage/plugin-scaffolder-backend-module-rails': patch -'@backstage/plugin-api-docs-module-protoc-gen-doc': patch -'@backstage/plugin-catalog-backend-module-msgraph': patch -'@backstage/plugin-catalog-backend-module-openapi': patch -'@backstage/plugin-search-backend-module-techdocs': patch -'@backstage/plugin-techdocs-module-addons-contrib': patch -'@backstage/plugin-catalog-backend-module-gerrit': patch -'@backstage/plugin-catalog-backend-module-github': patch -'@backstage/plugin-catalog-backend-module-gitlab': patch -'@backstage/plugin-cicd-statistics-module-gitlab': patch -'@backstage/plugin-events-backend-module-aws-sqs': patch -'@backstage/plugin-search-backend-module-catalog': patch -'@backstage/plugin-search-backend-module-explore': patch -'@backstage/plugin-catalog-backend-module-azure': patch -'@backstage/plugin-catalog-unprocessed-entities': patch -'@backstage/plugin-events-backend-module-gerrit': patch -'@backstage/plugin-events-backend-module-github': patch -'@backstage/plugin-events-backend-module-gitlab': patch -'@backstage/plugin-catalog-backend-module-ldap': patch -'@backstage/plugin-events-backend-module-azure': patch -'@backstage/plugin-catalog-backend-module-aws': patch -'@backstage/plugin-catalog-backend-module-gcp': patch -'@backstage/plugin-github-pull-requests-board': patch -'@backstage/plugin-techdocs-addons-test-utils': patch -'@backstage/plugin-events-backend-test-utils': patch -'@internal/plugin-todo-list-backend': patch -'app-next-example-plugin': patch -'@internal/plugin-todo-list-common': patch -'@backstage/plugin-search-backend-module-pg': patch -'@backstage/backend-plugin-manager': patch -'@backstage/plugin-entity-feedback-backend': patch -'@backstage/backend-openapi-utils': patch -'@backstage/plugin-bitbucket-cloud-common': patch -'@backstage/plugin-stack-overflow-backend': patch -'@backstage/integration-aws-node': patch -'@backstage/plugin-code-coverage-backend': patch -'@backstage/plugin-tech-insights-backend': patch -'@backstage/plugin-user-settings-backend': patch -'@backstage/frontend-plugin-api': patch -'@backstage/plugin-analytics-module-ga4': patch -'@backstage/plugin-azure-devops-backend': patch -'@backstage/backend-plugin-api': patch -'@backstage/backend-test-utils': patch -'@backstage/plugin-analytics-module-ga': patch -'@backstage/plugin-azure-sites-backend': patch -'@backstage/plugin-git-release-manager': patch -'@backstage/plugin-search-backend-node': patch -'@backstage/backend-dev-utils': patch -'@backstage/integration-react': patch -'@backstage/plugin-github-deployments': patch -'@backstage/plugin-kubernetes-backend': patch -'@backstage/plugin-kubernetes-cluster': patch -'@backstage/plugin-lighthouse-backend': patch -'@backstage/plugin-microsoft-calendar': patch -'@backstage/plugin-newrelic-dashboard': patch -'@backstage/plugin-permission-backend': patch -'@backstage/plugin-scaffolder-backend': patch -'@backstage/plugin-tech-insights-node': patch -'@backstage/backend-defaults': patch -'@backstage/frontend-app-api': patch -'@backstage/plugin-entity-validation': patch -'@internal/plugin-todo-list': patch -'@backstage/plugin-kubernetes-common': patch -'@backstage/plugin-lighthouse-common': patch -'@backstage/plugin-permission-common': patch -'@backstage/plugin-scaffolder-common': patch -'@backstage/plugin-sonarqube-backend': patch -'@backstage/backend-app-api': patch -'@backstage/core-components': patch -'@backstage/core-plugin-api': patch -'@backstage/plugin-airbrake-backend': patch -'@backstage/plugin-devtools-backend': patch -'@backstage/plugin-kubernetes-react': patch -'@backstage/plugin-linguist-backend': patch -'@backstage/plugin-periskop-backend': patch -'@backstage/plugin-permission-react': patch -'@backstage/plugin-playlist-backend': patch -'@backstage/plugin-scaffolder-react': patch -'@backstage/plugin-techdocs-backend': patch -'@backstage/backend-common': patch -'@backstage/catalog-client': patch -'@backstage/version-bridge': patch -'@backstage/plugin-apollo-explorer': patch -'@backstage/plugin-catalog-backend': patch -'@backstage/plugin-catalog-graphql': patch -'@backstage/plugin-cicd-statistics': patch -'@backstage/plugin-devtools-common': patch -'@backstage/plugin-entity-feedback': patch -'@backstage/plugin-explore-backend': patch -'@backstage/plugin-gitops-profiles': patch -'@backstage/plugin-graphql-backend': patch -'@backstage/plugin-graphql-voyager': patch -'@backstage/plugin-jenkins-backend': patch -'@backstage/plugin-kubernetes-node': patch -'@backstage/plugin-permission-node': patch -'@backstage/plugin-playlist-common': patch -'@backstage/plugin-rollbar-backend': patch -'@backstage/plugin-scaffolder-node': patch -'@backstage/plugin-sonarqube-react': patch -'@backstage/backend-tasks': patch -'@backstage/catalog-model': patch -'@backstage/config-loader': patch -'@backstage/plugin-apache-airflow': patch -'@backstage/plugin-badges-backend': patch -'@backstage/plugin-bazaar-backend': patch -'@backstage/plugin-catalog-common': patch -'@backstage/plugin-catalog-import': patch -'@backstage/plugin-events-backend': patch -'@backstage/plugin-github-actions': patch -'@backstage/plugin-jenkins-common': patch -'@backstage/plugin-octopus-deploy': patch -'@backstage/plugin-search-backend': patch -'@backstage/plugin-splunk-on-call': patch -'@backstage/plugin-stack-overflow': patch -'@backstage/plugin-techdocs-react': patch -'@backstage/app-defaults': patch -'example-backend-next': patch -'@backstage/core-app-api': patch -'@techdocs/cli': patch -'@backstage/plugin-catalog-graph': patch -'@backstage/plugin-catalog-react': patch -'@backstage/plugin-code-coverage': patch -'@backstage/plugin-config-schema': patch -'@backstage/plugin-cost-insights': patch -'@backstage/plugin-explore-react': patch -'@backstage/plugin-github-issues': patch -'@backstage/plugin-kafka-backend': patch -'@backstage/plugin-nomad-backend': patch -'@backstage/plugin-proxy-backend': patch -'@backstage/plugin-search-common': patch -'@backstage/plugin-tech-insights': patch '@backstage/plugin-techdocs-node': patch -'@backstage/plugin-user-settings': patch -'@backstage/plugin-vault-backend': patch -'@backstage/integration': patch -'@backstage/plugin-auth-backend': patch -'@backstage/plugin-azure-devops': patch -'@backstage/plugin-catalog-node': patch -'@backstage/plugin-code-climate': patch -'@backstage/plugin-gcp-projects': patch -'@backstage/plugin-search-react': patch -'@backstage/plugin-todo-backend': patch -'@backstage/create-app': patch -'@backstage/repo-tools': patch -'@backstage/test-utils': patch -'@backstage/plugin-adr-backend': patch -'@backstage/plugin-app-backend': patch -'@backstage/plugin-azure-sites': patch -'@backstage/plugin-events-node': patch -'@backstage/plugin-firehydrant': patch -'@backstage/dev-utils': patch -'@backstage/plugin-adr-common': patch -'@backstage/plugin-cloudbuild': patch -'@backstage/plugin-home-react': patch -'@backstage/plugin-kubernetes': patch -'@backstage/plugin-lighthouse': patch -'@backstage/plugin-scaffolder': patch -'@backstage/plugin-stackstorm': patch -'@backstage/plugin-tech-radar': patch -'example-app-next': patch -'@backstage/cli-node': patch -'@backstage/plugin-auth-node': patch -'@backstage/plugin-codescene': patch -'@backstage/plugin-dynatrace': patch -'@backstage/plugin-gcalendar': patch -'@backstage/plugin-org-react': patch -'@backstage/plugin-pagerduty': patch -'@backstage/plugin-shortcuts': patch -'@backstage/plugin-sonarqube': patch -'@backstage/plugin-xcmetrics': patch -'@backstage/plugin-airbrake': patch -'@backstage/plugin-api-docs': patch -'@backstage/plugin-app-node': patch -'@backstage/plugin-circleci': patch -'@backstage/plugin-devtools': patch -'@backstage/plugin-graphiql': patch -'@backstage/plugin-linguist': patch -'@backstage/plugin-newrelic': patch -'@backstage/plugin-opencost': patch -'@backstage/plugin-periskop': patch -'@backstage/plugin-playlist': patch -'@backstage/plugin-puppetdb': patch -'@backstage/plugin-techdocs': patch -'@backstage/config': patch -'@backstage/errors': patch -'@backstage/plugin-bitrise': patch -'@backstage/plugin-catalog': patch -'@backstage/plugin-explore': patch -'@backstage/plugin-jenkins': patch -'@backstage/plugin-rollbar': patch -'@backstage/theme': patch -'@backstage/plugin-allure': patch -'@backstage/plugin-badges': patch -'@backstage/plugin-bazaar': patch -'@backstage/plugin-search': patch -'@backstage/plugin-sentry': patch -'@backstage/plugin-fossa': patch -'@backstage/plugin-ilert': patch -'@backstage/plugin-kafka': patch -'@backstage/plugin-nomad': patch -'@backstage/plugin-vault': patch -'@backstage/plugin-gocd': patch -'@backstage/plugin-home': patch -'@backstage/plugin-todo': patch -'@backstage/plugin-adr': patch -'@backstage/plugin-org': patch --- -Update aws-sdk-js-v3 versions per renovate +Switch to `@smithy/node-http-handler` instead of the `@aws-sdk/node-http-handler` From ce3dcca3b20a6d0a64daeb4ad998a90ea3c62001 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 24 Oct 2023 14:14:25 +0000 Subject: [PATCH 071/102] chore(deps): update snyk/actions digest to 39091e6 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/sync_snyk-github-issues.yml | 2 +- .github/workflows/sync_snyk-monitor.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/sync_snyk-github-issues.yml b/.github/workflows/sync_snyk-github-issues.yml index 2be954746b..551ef559a1 100644 --- a/.github/workflows/sync_snyk-github-issues.yml +++ b/.github/workflows/sync_snyk-github-issues.yml @@ -29,7 +29,7 @@ jobs: cache-prefix: ${{ runner.os }}-v18.x - name: Create Snyk report - uses: snyk/actions/node@299cde98a08ff8b1c2bfde1e5a067bce67a6d2b8 # master + uses: snyk/actions/node@39091e69b560da335383b404e50d65b408f4f812 # master continue-on-error: true # Snyk CLI exits with error when vulnerabilities are found with: args: > diff --git a/.github/workflows/sync_snyk-monitor.yml b/.github/workflows/sync_snyk-monitor.yml index 84b2b3387b..3c41aedee3 100644 --- a/.github/workflows/sync_snyk-monitor.yml +++ b/.github/workflows/sync_snyk-monitor.yml @@ -31,7 +31,7 @@ jobs: - uses: actions/checkout@v3.6.0 - name: Monitor and Synchronize Snyk Policies - uses: snyk/actions/node@299cde98a08ff8b1c2bfde1e5a067bce67a6d2b8 # master + uses: snyk/actions/node@39091e69b560da335383b404e50d65b408f4f812 # master with: command: monitor args: > @@ -46,7 +46,7 @@ jobs: # Above we run the `monitor` command, this runs the `test` command which is # the one that generates the SARIF report that we can upload to GitHub. - name: Create Snyk report - uses: snyk/actions/node@299cde98a08ff8b1c2bfde1e5a067bce67a6d2b8 # master + uses: snyk/actions/node@39091e69b560da335383b404e50d65b408f4f812 # master continue-on-error: true # To make sure that SARIF upload gets called with: args: > From 74c57762b2ecc9afafc4d35c801621776204f71e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 24 Oct 2023 14:14:34 +0000 Subject: [PATCH 072/102] chore(deps): update actions/setup-node action to v3.8.2 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/ci.yml | 6 +++--- .github/workflows/deploy_docker-image.yml | 2 +- .github/workflows/deploy_microsite.yml | 2 +- .github/workflows/deploy_nightly.yml | 2 +- .github/workflows/deploy_packages.yml | 4 ++-- .github/workflows/sync_code-formatting.yml | 2 +- .github/workflows/sync_release-manifest.yml | 2 +- .github/workflows/sync_snyk-github-issues.yml | 2 +- .github/workflows/uffizzi-build.yml | 2 +- .github/workflows/verify_accessibility.yml | 2 +- .github/workflows/verify_e2e-kubernetes.yml | 2 +- .github/workflows/verify_e2e-linux.yml | 2 +- .github/workflows/verify_e2e-windows.yml | 2 +- .github/workflows/verify_microsite.yml | 2 +- .github/workflows/verify_storybook.yml | 2 +- .github/workflows/verify_windows.yml | 2 +- 16 files changed, 19 insertions(+), 19 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4e3ec626d7..fd9ec8a415 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,7 +34,7 @@ jobs: - uses: actions/checkout@v3.6.0 - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3.8.1 + uses: actions/setup-node@v3.8.2 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth @@ -70,7 +70,7 @@ jobs: - uses: actions/checkout@v3.6.0 - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3.8.1 + uses: actions/setup-node@v3.8.2 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth @@ -201,7 +201,7 @@ jobs: run: git fetch origin master - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3.8.1 + uses: actions/setup-node@v3.8.2 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth diff --git a/.github/workflows/deploy_docker-image.yml b/.github/workflows/deploy_docker-image.yml index 69776da2d9..8c54ebf23b 100644 --- a/.github/workflows/deploy_docker-image.yml +++ b/.github/workflows/deploy_docker-image.yml @@ -25,7 +25,7 @@ jobs: ref: v${{ github.event.client_payload.version }} - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3.8.1 + uses: actions/setup-node@v3.8.2 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth diff --git a/.github/workflows/deploy_microsite.yml b/.github/workflows/deploy_microsite.yml index f614db31ca..3b8d9a7a80 100644 --- a/.github/workflows/deploy_microsite.yml +++ b/.github/workflows/deploy_microsite.yml @@ -31,7 +31,7 @@ jobs: - uses: actions/checkout@v3.6.0 - name: use node.js 18.x - uses: actions/setup-node@v3.8.1 + uses: actions/setup-node@v3.8.2 with: node-version: 18.x registry-url: https://registry.npmjs.org/ # Needed for auth diff --git a/.github/workflows/deploy_nightly.yml b/.github/workflows/deploy_nightly.yml index 7184557e12..dc2155bcd1 100644 --- a/.github/workflows/deploy_nightly.yml +++ b/.github/workflows/deploy_nightly.yml @@ -22,7 +22,7 @@ jobs: - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 - name: use node.js 18.x - uses: actions/setup-node@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d # v3.8.1 + uses: actions/setup-node@1a4442cacd436585916779262731d5b162bc6ec7 # v3.8.2 with: node-version: 18.x registry-url: https://registry.npmjs.org/ # Needed for auth diff --git a/.github/workflows/deploy_packages.yml b/.github/workflows/deploy_packages.yml index 32f4b139f2..10943ad7b4 100644 --- a/.github/workflows/deploy_packages.yml +++ b/.github/workflows/deploy_packages.yml @@ -63,7 +63,7 @@ jobs: - uses: actions/checkout@v3.6.0 - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3.8.1 + uses: actions/setup-node@v3.8.2 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth @@ -145,7 +145,7 @@ jobs: - uses: actions/checkout@v3.6.0 - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3.8.1 + uses: actions/setup-node@v3.8.2 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth diff --git a/.github/workflows/sync_code-formatting.yml b/.github/workflows/sync_code-formatting.yml index 610ad323e2..90d1925a24 100644 --- a/.github/workflows/sync_code-formatting.yml +++ b/.github/workflows/sync_code-formatting.yml @@ -20,7 +20,7 @@ jobs: fetch-depth: 0 - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3.8.1 + uses: actions/setup-node@v3.8.2 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth diff --git a/.github/workflows/sync_release-manifest.yml b/.github/workflows/sync_release-manifest.yml index 46d5d5382a..bd7c42799b 100644 --- a/.github/workflows/sync_release-manifest.yml +++ b/.github/workflows/sync_release-manifest.yml @@ -13,7 +13,7 @@ jobs: egress-policy: audit # Setup node & install deps before checkout, keeping install quick - - uses: actions/setup-node@v3.8.1 + - uses: actions/setup-node@v3.8.2 with: node-version: 18.x - name: Install dependencies diff --git a/.github/workflows/sync_snyk-github-issues.yml b/.github/workflows/sync_snyk-github-issues.yml index 2be954746b..d958eb3dc4 100644 --- a/.github/workflows/sync_snyk-github-issues.yml +++ b/.github/workflows/sync_snyk-github-issues.yml @@ -19,7 +19,7 @@ jobs: - uses: actions/checkout@v3.6.0 - name: use node.js 18.x - uses: actions/setup-node@v3.8.1 + uses: actions/setup-node@v3.8.2 with: node-version: 18.x registry-url: https://registry.npmjs.org/ # Needed for auth diff --git a/.github/workflows/uffizzi-build.yml b/.github/workflows/uffizzi-build.yml index 375c6bdcd2..2ce2984fff 100644 --- a/.github/workflows/uffizzi-build.yml +++ b/.github/workflows/uffizzi-build.yml @@ -28,7 +28,7 @@ jobs: uses: actions/checkout@v3.6.0 - name: setup-node - uses: actions/setup-node@v3.8.1 + uses: actions/setup-node@v3.8.2 with: node-version: 18.x registry-url: https://registry.npmjs.org/ diff --git a/.github/workflows/verify_accessibility.yml b/.github/workflows/verify_accessibility.yml index f34f2f5506..9669483c1e 100644 --- a/.github/workflows/verify_accessibility.yml +++ b/.github/workflows/verify_accessibility.yml @@ -26,7 +26,7 @@ jobs: - uses: actions/checkout@v3.6.0 - name: Use Node.js 18.x - uses: actions/setup-node@v3.8.1 + uses: actions/setup-node@v3.8.2 with: node-version: 18.x - name: yarn install diff --git a/.github/workflows/verify_e2e-kubernetes.yml b/.github/workflows/verify_e2e-kubernetes.yml index ea77609614..a7f0f19d65 100644 --- a/.github/workflows/verify_e2e-kubernetes.yml +++ b/.github/workflows/verify_e2e-kubernetes.yml @@ -29,7 +29,7 @@ jobs: - uses: actions/checkout@v3.6.0 - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3.8.1 + uses: actions/setup-node@v3.8.2 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth diff --git a/.github/workflows/verify_e2e-linux.yml b/.github/workflows/verify_e2e-linux.yml index 6b61053628..4655a175d4 100644 --- a/.github/workflows/verify_e2e-linux.yml +++ b/.github/workflows/verify_e2e-linux.yml @@ -52,7 +52,7 @@ jobs: git config --global user.name 'GitHub e2e user' - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3.8.1 + uses: actions/setup-node@v3.8.2 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth diff --git a/.github/workflows/verify_e2e-windows.yml b/.github/workflows/verify_e2e-windows.yml index 7ee5e596c5..0e1105e641 100644 --- a/.github/workflows/verify_e2e-windows.yml +++ b/.github/workflows/verify_e2e-windows.yml @@ -50,7 +50,7 @@ jobs: git config --global user.name 'GitHub e2e user' - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3.8.1 + uses: actions/setup-node@v3.8.2 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth diff --git a/.github/workflows/verify_microsite.yml b/.github/workflows/verify_microsite.yml index f0705bedc7..6acaa4a781 100644 --- a/.github/workflows/verify_microsite.yml +++ b/.github/workflows/verify_microsite.yml @@ -31,7 +31,7 @@ jobs: - uses: actions/checkout@v3.6.0 - name: use node.js 18.x - uses: actions/setup-node@v3.8.1 + uses: actions/setup-node@v3.8.2 with: node-version: 18.x diff --git a/.github/workflows/verify_storybook.yml b/.github/workflows/verify_storybook.yml index fe481f9882..6f64d7c5a9 100644 --- a/.github/workflows/verify_storybook.yml +++ b/.github/workflows/verify_storybook.yml @@ -37,7 +37,7 @@ jobs: fetch-depth: 0 # Required to retrieve git history - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3.8.1 + uses: actions/setup-node@v3.8.2 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth diff --git a/.github/workflows/verify_windows.yml b/.github/workflows/verify_windows.yml index f2c61938d8..c40e1c7bc7 100644 --- a/.github/workflows/verify_windows.yml +++ b/.github/workflows/verify_windows.yml @@ -36,7 +36,7 @@ jobs: - uses: actions/checkout@v3.6.0 - name: use node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3.8.1 + uses: actions/setup-node@v3.8.2 with: node-version: ${{ matrix.node-version }} registry-url: https://registry.npmjs.org/ # Needed for auth From 1a40159acb2e435532331b3747a934da6ed1f7e6 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 24 Oct 2023 16:15:31 +0200 Subject: [PATCH 073/102] bazaar: remove unnecessary @backstage/cli dependency Signed-off-by: Patrik Oldsberg --- .changeset/plenty-buckets-float.md | 5 +++++ plugins/bazaar/package.json | 1 - 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 .changeset/plenty-buckets-float.md diff --git a/.changeset/plenty-buckets-float.md b/.changeset/plenty-buckets-float.md new file mode 100644 index 0000000000..c1dbb54e87 --- /dev/null +++ b/.changeset/plenty-buckets-float.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-bazaar': patch +--- + +Removed unnecessary dependency on `@backstage/cli`. diff --git a/plugins/bazaar/package.json b/plugins/bazaar/package.json index 2571f00063..53985979d5 100644 --- a/plugins/bazaar/package.json +++ b/plugins/bazaar/package.json @@ -31,7 +31,6 @@ "dependencies": { "@backstage/catalog-client": "workspace:^", "@backstage/catalog-model": "workspace:^", - "@backstage/cli": "workspace:^", "@backstage/core-components": "workspace:^", "@backstage/core-plugin-api": "workspace:^", "@backstage/errors": "workspace:^", From e5e5bbc6e95be54cae99f017aec0e242303824c0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 20 Oct 2023 17:40:10 +0000 Subject: [PATCH 074/102] fix(deps): update jest monorepo Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 828 +++++++++++++++++++++++++++--------------------------- 1 file changed, 415 insertions(+), 413 deletions(-) diff --git a/yarn.lock b/yarn.lock index 2a463ed8bb..6c821bd291 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3359,7 +3359,7 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.14.0, @babel/traverse@npm:^7.16.8, @babel/traverse@npm:^7.23.0, @babel/traverse@npm:^7.4.5, @babel/traverse@npm:^7.7.2": +"@babel/traverse@npm:^7.14.0, @babel/traverse@npm:^7.16.8, @babel/traverse@npm:^7.23.0, @babel/traverse@npm:^7.4.5": version: 7.23.0 resolution: "@babel/traverse@npm:7.23.0" dependencies: @@ -12799,50 +12799,50 @@ __metadata: languageName: node linkType: hard -"@jest/console@npm:^29.4.3": - version: 29.4.3 - resolution: "@jest/console@npm:29.4.3" +"@jest/console@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/console@npm:29.7.0" dependencies: - "@jest/types": ^29.4.3 + "@jest/types": ^29.6.3 "@types/node": "*" chalk: ^4.0.0 - jest-message-util: ^29.4.3 - jest-util: ^29.4.3 + jest-message-util: ^29.7.0 + jest-util: ^29.7.0 slash: ^3.0.0 - checksum: 8d9b163febe735153b523db527742309f4d598eda22f17f04e030060329bd3da4de7420fc1f7812f7a16f08273654a7de094c4b4e8b81a99dbfc17cfb1629008 + checksum: 0e3624e32c5a8e7361e889db70b170876401b7d70f509a2538c31d5cd50deb0c1ae4b92dc63fe18a0902e0a48c590c21d53787a0df41a52b34fa7cab96c384d6 languageName: node linkType: hard -"@jest/core@npm:^29.4.3": - version: 29.4.3 - resolution: "@jest/core@npm:29.4.3" +"@jest/core@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/core@npm:29.7.0" dependencies: - "@jest/console": ^29.4.3 - "@jest/reporters": ^29.4.3 - "@jest/test-result": ^29.4.3 - "@jest/transform": ^29.4.3 - "@jest/types": ^29.4.3 + "@jest/console": ^29.7.0 + "@jest/reporters": ^29.7.0 + "@jest/test-result": ^29.7.0 + "@jest/transform": ^29.7.0 + "@jest/types": ^29.6.3 "@types/node": "*" ansi-escapes: ^4.2.1 chalk: ^4.0.0 ci-info: ^3.2.0 exit: ^0.1.2 graceful-fs: ^4.2.9 - jest-changed-files: ^29.4.3 - jest-config: ^29.4.3 - jest-haste-map: ^29.4.3 - jest-message-util: ^29.4.3 - jest-regex-util: ^29.4.3 - jest-resolve: ^29.4.3 - jest-resolve-dependencies: ^29.4.3 - jest-runner: ^29.4.3 - jest-runtime: ^29.4.3 - jest-snapshot: ^29.4.3 - jest-util: ^29.4.3 - jest-validate: ^29.4.3 - jest-watcher: ^29.4.3 + jest-changed-files: ^29.7.0 + jest-config: ^29.7.0 + jest-haste-map: ^29.7.0 + jest-message-util: ^29.7.0 + jest-regex-util: ^29.6.3 + jest-resolve: ^29.7.0 + jest-resolve-dependencies: ^29.7.0 + jest-runner: ^29.7.0 + jest-runtime: ^29.7.0 + jest-snapshot: ^29.7.0 + jest-util: ^29.7.0 + jest-validate: ^29.7.0 + jest-watcher: ^29.7.0 micromatch: ^4.0.4 - pretty-format: ^29.4.3 + pretty-format: ^29.7.0 slash: ^3.0.0 strip-ansi: ^6.0.0 peerDependencies: @@ -12850,7 +12850,7 @@ __metadata: peerDependenciesMeta: node-notifier: optional: true - checksum: 4aa10644d66f44f051d5dd9cdcedce27acc71216dbcc5e7adebdea458e27aefe27c78f457d7efd49f58b968c35f42de5a521590876e2013593e675120b9e6ab1 + checksum: af759c9781cfc914553320446ce4e47775ae42779e73621c438feb1e4231a5d4862f84b1d8565926f2d1aab29b3ec3dcfdc84db28608bdf5f29867124ebcfc0d languageName: node linkType: hard @@ -12863,15 +12863,15 @@ __metadata: languageName: node linkType: hard -"@jest/environment@npm:^29.4.3": - version: 29.4.3 - resolution: "@jest/environment@npm:29.4.3" +"@jest/environment@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/environment@npm:29.7.0" dependencies: - "@jest/fake-timers": ^29.4.3 - "@jest/types": ^29.4.3 + "@jest/fake-timers": ^29.7.0 + "@jest/types": ^29.6.3 "@types/node": "*" - jest-mock: ^29.4.3 - checksum: 7c1b0cc4e84b90f8a3bbeca9bbf088882c88aee70a81b3b8e24265dcb1cbc302cd1eee3319089cf65bfd39adbaea344903c712afea106cb8da6c86088d99c5fb + jest-mock: ^29.7.0 + checksum: 6fb398143b2543d4b9b8d1c6dbce83fa5247f84f550330604be744e24c2bd2178bb893657d62d1b97cf2f24baf85c450223f8237cccb71192c36a38ea2272934 languageName: node linkType: hard @@ -12884,61 +12884,61 @@ __metadata: languageName: node linkType: hard -"@jest/expect-utils@npm:^29.4.3": - version: 29.4.3 - resolution: "@jest/expect-utils@npm:29.4.3" +"@jest/expect-utils@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/expect-utils@npm:29.7.0" dependencies: - jest-get-type: ^29.4.3 - checksum: 2bbed39ff2fb59f5acac465a1ce7303e3b4b62b479e4f386261986c9827f7f799ea912761e22629c5daf10addf8513f16733c14a29c2647bb66d4ee625e9ff92 + jest-get-type: ^29.6.3 + checksum: 75eb177f3d00b6331bcaa057e07c0ccb0733a1d0a1943e1d8db346779039cb7f103789f16e502f888a3096fb58c2300c38d1f3748b36a7fa762eb6f6d1b160ed languageName: node linkType: hard -"@jest/expect@npm:^29.4.3": - version: 29.4.3 - resolution: "@jest/expect@npm:29.4.3" +"@jest/expect@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/expect@npm:29.7.0" dependencies: - expect: ^29.4.3 - jest-snapshot: ^29.4.3 - checksum: 08d0d40077ec99a7491fe59d05821dbd31126cfba70875855d8a063698b7126b5f6c309c50811caacc6ae2f727c6e44f51bdcf1d6c1ea832b4f020045ef22d45 + expect: ^29.7.0 + jest-snapshot: ^29.7.0 + checksum: a01cb85fd9401bab3370618f4b9013b90c93536562222d920e702a0b575d239d74cecfe98010aaec7ad464f67cf534a353d92d181646a4b792acaa7e912ae55e languageName: node linkType: hard -"@jest/fake-timers@npm:^29.4.3": - version: 29.4.3 - resolution: "@jest/fake-timers@npm:29.4.3" +"@jest/fake-timers@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/fake-timers@npm:29.7.0" dependencies: - "@jest/types": ^29.4.3 + "@jest/types": ^29.6.3 "@sinonjs/fake-timers": ^10.0.2 "@types/node": "*" - jest-message-util: ^29.4.3 - jest-mock: ^29.4.3 - jest-util: ^29.4.3 - checksum: adaceb9143c395cccf3d7baa0e49b7042c3092a554e8283146df19926247e34c21b5bde5688bb90e9e87b4a02e4587926c5d858ee0a38d397a63175d0a127874 + jest-message-util: ^29.7.0 + jest-mock: ^29.7.0 + jest-util: ^29.7.0 + checksum: caf2bbd11f71c9241b458d1b5a66cbe95debc5a15d96442444b5d5c7ba774f523c76627c6931cca5e10e76f0d08761f6f1f01a608898f4751a0eee54fc3d8d00 languageName: node linkType: hard -"@jest/globals@npm:^29.4.3": - version: 29.4.3 - resolution: "@jest/globals@npm:29.4.3" +"@jest/globals@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/globals@npm:29.7.0" dependencies: - "@jest/environment": ^29.4.3 - "@jest/expect": ^29.4.3 - "@jest/types": ^29.4.3 - jest-mock: ^29.4.3 - checksum: ea76b546ceb4aa5ce2bb3726df12f989b23150b51c9f7664790caa81b943012a657cf3a8525498af1c3518cdb387f54b816cfba1b0ddd22c7b20f03b1d7290b4 + "@jest/environment": ^29.7.0 + "@jest/expect": ^29.7.0 + "@jest/types": ^29.6.3 + jest-mock: ^29.7.0 + checksum: 97dbb9459135693ad3a422e65ca1c250f03d82b2a77f6207e7fa0edd2c9d2015fbe4346f3dc9ebff1678b9d8da74754d4d440b7837497f8927059c0642a22123 languageName: node linkType: hard -"@jest/reporters@npm:^29.4.3": - version: 29.4.3 - resolution: "@jest/reporters@npm:29.4.3" +"@jest/reporters@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/reporters@npm:29.7.0" dependencies: "@bcoe/v8-coverage": ^0.2.3 - "@jest/console": ^29.4.3 - "@jest/test-result": ^29.4.3 - "@jest/transform": ^29.4.3 - "@jest/types": ^29.4.3 - "@jridgewell/trace-mapping": ^0.3.15 + "@jest/console": ^29.7.0 + "@jest/test-result": ^29.7.0 + "@jest/transform": ^29.7.0 + "@jest/types": ^29.6.3 + "@jridgewell/trace-mapping": ^0.3.18 "@types/node": "*" chalk: ^4.0.0 collect-v8-coverage: ^1.0.0 @@ -12946,13 +12946,13 @@ __metadata: glob: ^7.1.3 graceful-fs: ^4.2.9 istanbul-lib-coverage: ^3.0.0 - istanbul-lib-instrument: ^5.1.0 + istanbul-lib-instrument: ^6.0.0 istanbul-lib-report: ^3.0.0 istanbul-lib-source-maps: ^4.0.0 istanbul-reports: ^3.1.3 - jest-message-util: ^29.4.3 - jest-util: ^29.4.3 - jest-worker: ^29.4.3 + jest-message-util: ^29.7.0 + jest-util: ^29.7.0 + jest-worker: ^29.7.0 slash: ^3.0.0 string-length: ^4.0.1 strip-ansi: ^6.0.0 @@ -12962,7 +12962,7 @@ __metadata: peerDependenciesMeta: node-notifier: optional: true - checksum: 7aa2e429c915bd96c3334962addd69d2bbf52065725757ddde26b293f8c4420a1e8c65363cc3e1e5ec89100a5273ccd3771bec58325a2cc0d97afdc81995073a + checksum: 7eadabd62cc344f629024b8a268ecc8367dba756152b761bdcb7b7e570a3864fc51b2a9810cd310d85e0a0173ef002ba4528d5ea0329fbf66ee2a3ada9c40455 languageName: node linkType: hard @@ -12975,7 +12975,7 @@ __metadata: languageName: node linkType: hard -"@jest/schemas@npm:^29.4.3, @jest/schemas@npm:^29.6.3": +"@jest/schemas@npm:^29.6.3": version: 29.6.3 resolution: "@jest/schemas@npm:29.6.3" dependencies: @@ -12984,61 +12984,61 @@ __metadata: languageName: node linkType: hard -"@jest/source-map@npm:^29.4.3": - version: 29.4.3 - resolution: "@jest/source-map@npm:29.4.3" +"@jest/source-map@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/source-map@npm:29.6.3" dependencies: - "@jridgewell/trace-mapping": ^0.3.15 + "@jridgewell/trace-mapping": ^0.3.18 callsites: ^3.0.0 graceful-fs: ^4.2.9 - checksum: 2301d225145f8123540c0be073f35a80fd26a2f5e59550fd68525d8cea580fb896d12bf65106591ffb7366a8a19790076dbebc70e0f5e6ceb51f81827ed1f89c + checksum: bcc5a8697d471396c0003b0bfa09722c3cd879ad697eb9c431e6164e2ea7008238a01a07193dfe3cbb48b1d258eb7251f6efcea36f64e1ebc464ea3c03ae2deb languageName: node linkType: hard -"@jest/test-result@npm:^29.4.3": - version: 29.4.3 - resolution: "@jest/test-result@npm:29.4.3" +"@jest/test-result@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/test-result@npm:29.7.0" dependencies: - "@jest/console": ^29.4.3 - "@jest/types": ^29.4.3 + "@jest/console": ^29.7.0 + "@jest/types": ^29.6.3 "@types/istanbul-lib-coverage": ^2.0.0 collect-v8-coverage: ^1.0.0 - checksum: 164f102b96619ec283c2c39e208b8048e4674f75bf3c3a4f2e95048ae0f9226105add684b25f10d286d91c221625f877e2c1cfc3da46c42d7e1804da239318cb + checksum: 67b6317d526e335212e5da0e768e3b8ab8a53df110361b80761353ad23b6aea4432b7c5665bdeb87658ea373b90fb1afe02ed3611ef6c858c7fba377505057fa languageName: node linkType: hard -"@jest/test-sequencer@npm:^29.4.3": - version: 29.4.3 - resolution: "@jest/test-sequencer@npm:29.4.3" +"@jest/test-sequencer@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/test-sequencer@npm:29.7.0" dependencies: - "@jest/test-result": ^29.4.3 + "@jest/test-result": ^29.7.0 graceful-fs: ^4.2.9 - jest-haste-map: ^29.4.3 + jest-haste-map: ^29.7.0 slash: ^3.0.0 - checksum: 145e1fa9379e5be3587bde6d585b8aee5cf4442b06926928a87e9aec7de5be91b581711d627c6ca13144d244fe05e5d248c13b366b51bedc404f9dcfbfd79e9e + checksum: 73f43599017946be85c0b6357993b038f875b796e2f0950487a82f4ebcb115fa12131932dd9904026b4ad8be131fe6e28bd8d0aa93b1563705185f9804bff8bd languageName: node linkType: hard -"@jest/transform@npm:^29.4.3": - version: 29.4.3 - resolution: "@jest/transform@npm:29.4.3" +"@jest/transform@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/transform@npm:29.7.0" dependencies: "@babel/core": ^7.11.6 - "@jest/types": ^29.4.3 - "@jridgewell/trace-mapping": ^0.3.15 + "@jest/types": ^29.6.3 + "@jridgewell/trace-mapping": ^0.3.18 babel-plugin-istanbul: ^6.1.1 chalk: ^4.0.0 convert-source-map: ^2.0.0 fast-json-stable-stringify: ^2.1.0 graceful-fs: ^4.2.9 - jest-haste-map: ^29.4.3 - jest-regex-util: ^29.4.3 - jest-util: ^29.4.3 + jest-haste-map: ^29.7.0 + jest-regex-util: ^29.6.3 + jest-util: ^29.7.0 micromatch: ^4.0.4 pirates: ^4.0.4 slash: ^3.0.0 write-file-atomic: ^4.0.2 - checksum: 082d74e04044213aa7baa8de29f8383e5010034f867969c8602a2447a4ef2f484cfaf2491eba3179ce42f369f7a0af419cbd087910f7e5caf7aa5d1fe03f2ff9 + checksum: 0f8ac9f413903b3cb6d240102db848f2a354f63971ab885833799a9964999dd51c388162106a807f810071f864302cdd8e3f0c241c29ce02d85a36f18f3f40ab languageName: node linkType: hard @@ -13069,17 +13069,17 @@ __metadata: languageName: node linkType: hard -"@jest/types@npm:^29.4.3": - version: 29.4.3 - resolution: "@jest/types@npm:29.4.3" +"@jest/types@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/types@npm:29.6.3" dependencies: - "@jest/schemas": ^29.4.3 + "@jest/schemas": ^29.6.3 "@types/istanbul-lib-coverage": ^2.0.0 "@types/istanbul-reports": ^3.0.0 "@types/node": "*" "@types/yargs": ^17.0.8 chalk: ^4.0.0 - checksum: 1756f4149d360f98567f56f434144f7af23ed49a2c42889261a314df6b6654c2de70af618fb2ee0ee39cadaf10835b885845557184509503646c9cb9dcc02bac + checksum: a0bcf15dbb0eca6bdd8ce61a3fb055349d40268622a7670a3b2eb3c3dbafe9eb26af59938366d520b86907b9505b0f9b29b85cec11579a9e580694b87cd90fcc languageName: node linkType: hard @@ -13101,10 +13101,10 @@ __metadata: languageName: node linkType: hard -"@jridgewell/resolve-uri@npm:3.1.0, @jridgewell/resolve-uri@npm:^3.0.3": - version: 3.1.0 - resolution: "@jridgewell/resolve-uri@npm:3.1.0" - checksum: b5ceaaf9a110fcb2780d1d8f8d4a0bfd216702f31c988d8042e5f8fbe353c55d9b0f55a1733afdc64806f8e79c485d2464680ac48a0d9fcadb9548ee6b81d267 +"@jridgewell/resolve-uri@npm:^3.0.3, @jridgewell/resolve-uri@npm:^3.1.0": + version: 3.1.1 + resolution: "@jridgewell/resolve-uri@npm:3.1.1" + checksum: f5b441fe7900eab4f9155b3b93f9800a916257f4e8563afbcd3b5a5337b55e52bd8ae6735453b1b745457d9f6cdb16d74cd6220bbdd98cf153239e13f6cbb653 languageName: node linkType: hard @@ -13125,14 +13125,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/sourcemap-codec@npm:1.4.14": - version: 1.4.14 - resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" - checksum: 61100637b6d173d3ba786a5dff019e1a74b1f394f323c1fee337ff390239f053b87266c7a948777f4b1ee68c01a8ad0ab61e5ff4abb5a012a0b091bec391ab97 - languageName: node - linkType: hard - -"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.13": +"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.13, @jridgewell/sourcemap-codec@npm:^1.4.14": version: 1.4.15 resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" checksum: b881c7e503db3fc7f3c1f35a1dd2655a188cc51a3612d76efc8a6eb74728bef5606e6758ee77423e564092b4a518aba569bbb21c9bac5ab7a35b0c6ae7e344c8 @@ -13149,13 +13142,13 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.15, @jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.9": - version: 0.3.17 - resolution: "@jridgewell/trace-mapping@npm:0.3.17" +"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.9": + version: 0.3.20 + resolution: "@jridgewell/trace-mapping@npm:0.3.20" dependencies: - "@jridgewell/resolve-uri": 3.1.0 - "@jridgewell/sourcemap-codec": 1.4.14 - checksum: 9d703b859cff5cd83b7308fd457a431387db5db96bd781a63bf48e183418dd9d3d44e76b9e4ae13237f6abeeb25d739ec9215c1d5bfdd08f66f750a50074a339 + "@jridgewell/resolve-uri": ^3.1.0 + "@jridgewell/sourcemap-codec": ^1.4.14 + checksum: cd1a7353135f385909468ff0cf20bdd37e59f2ee49a13a966dedf921943e222082c583ade2b579ff6cd0d8faafcb5461f253e1bf2a9f48fec439211fdbe788f5 languageName: node linkType: hard @@ -18826,12 +18819,12 @@ __metadata: linkType: hard "@types/jest@npm:*, @types/jest@npm:^29.0.0": - version: 29.4.0 - resolution: "@types/jest@npm:29.4.0" + version: 29.5.6 + resolution: "@types/jest@npm:29.5.6" dependencies: expect: ^29.0.0 pretty-format: ^29.0.0 - checksum: 23760282362a252e6690314584d83a47512d4cd61663e957ed3398ecf98195fe931c45606ee2f9def12f8ed7d8aa102d492ec42d26facdaf8b78094a31e6568e + checksum: fa13a27bd1c8efd0381a419478769d0d6d3a8e93e1952d7ac3a16274e8440af6f73ed6f96ac1ff00761198badf2ee226b5ab5583a5d87a78d609ea78da5c5a24 languageName: node linkType: hard @@ -19348,13 +19341,6 @@ __metadata: languageName: node linkType: hard -"@types/prettier@npm:^2.1.5": - version: 2.4.3 - resolution: "@types/prettier@npm:2.4.3" - checksum: b240434daabac54700c862b0bb52a83fec396e0e9c847447119ba41fd8404d79aadfa174e6306fb094b29efadac586344b7606c3a71c286b71755ab2579d54df - languageName: node - linkType: hard - "@types/prop-types@npm:*, @types/prop-types@npm:^15.0.0, @types/prop-types@npm:^15.7.3, @types/prop-types@npm:^15.7.7": version: 15.7.8 resolution: "@types/prop-types@npm:15.7.8" @@ -21784,20 +21770,20 @@ __metadata: languageName: node linkType: hard -"babel-jest@npm:^29.4.3": - version: 29.4.3 - resolution: "babel-jest@npm:29.4.3" +"babel-jest@npm:^29.7.0": + version: 29.7.0 + resolution: "babel-jest@npm:29.7.0" dependencies: - "@jest/transform": ^29.4.3 + "@jest/transform": ^29.7.0 "@types/babel__core": ^7.1.14 babel-plugin-istanbul: ^6.1.1 - babel-preset-jest: ^29.4.3 + babel-preset-jest: ^29.6.3 chalk: ^4.0.0 graceful-fs: ^4.2.9 slash: ^3.0.0 peerDependencies: "@babel/core": ^7.8.0 - checksum: a1a95937adb5e717dbffc2eb9e583fa6d26c7e5d5b07bb492a2d7f68631510a363e9ff097eafb642ad642dfac9dc2b13872b584f680e166a4f0922c98ea95853 + checksum: ee6f8e0495afee07cac5e4ee167be705c711a8cc8a737e05a587a131fdae2b3c8f9aa55dfd4d9c03009ac2d27f2de63d8ba96d3e8460da4d00e8af19ef9a83f7 languageName: node linkType: hard @@ -21814,15 +21800,15 @@ __metadata: languageName: node linkType: hard -"babel-plugin-jest-hoist@npm:^29.4.3": - version: 29.4.3 - resolution: "babel-plugin-jest-hoist@npm:29.4.3" +"babel-plugin-jest-hoist@npm:^29.6.3": + version: 29.6.3 + resolution: "babel-plugin-jest-hoist@npm:29.6.3" dependencies: "@babel/template": ^7.3.3 "@babel/types": ^7.3.3 "@types/babel__core": ^7.1.14 "@types/babel__traverse": ^7.0.6 - checksum: c8702a6db6b30ec39dfb9f8e72b501c13895231ed80b15ed2648448f9f0c7b7cc4b1529beac31802ae655f63479a05110ca612815aa25fb1b0e6c874e1589137 + checksum: 51250f22815a7318f17214a9d44650ba89551e6d4f47a2dc259128428324b52f5a73979d010cefd921fd5a720d8c1d55ad74ff601cd94c7bd44d5f6292fde2d1 languageName: node linkType: hard @@ -21972,15 +21958,15 @@ __metadata: languageName: node linkType: hard -"babel-preset-jest@npm:^29.4.3": - version: 29.4.3 - resolution: "babel-preset-jest@npm:29.4.3" +"babel-preset-jest@npm:^29.6.3": + version: 29.6.3 + resolution: "babel-preset-jest@npm:29.6.3" dependencies: - babel-plugin-jest-hoist: ^29.4.3 + babel-plugin-jest-hoist: ^29.6.3 babel-preset-current-node-syntax: ^1.0.0 peerDependencies: "@babel/core": ^7.0.0 - checksum: a091721861ea2f8d969ace8fe06570cff8f2e847dbc6e4800abacbe63f72131abde615ce0a3b6648472c97e55a5be7f8bf7ae381e2b194ad2fa1737096febcf5 + checksum: aa4ff2a8a728d9d698ed521e3461a109a1e66202b13d3494e41eea30729a5e7cc03b3a2d56c594423a135429c37bf63a9fa8b0b9ce275298be3095a88c69f6fb languageName: node linkType: hard @@ -24346,6 +24332,23 @@ __metadata: languageName: node linkType: hard +"create-jest@npm:^29.7.0": + version: 29.7.0 + resolution: "create-jest@npm:29.7.0" + dependencies: + "@jest/types": ^29.6.3 + chalk: ^4.0.0 + exit: ^0.1.2 + graceful-fs: ^4.2.9 + jest-config: ^29.7.0 + jest-util: ^29.7.0 + prompts: ^2.0.1 + bin: + create-jest: bin/create-jest.js + checksum: 1427d49458adcd88547ef6fa39041e1fe9033a661293aa8d2c3aa1b4967cb5bf4f0c00436c7a61816558f28ba2ba81a94d5c962e8022ea9a883978fc8e1f2945 + languageName: node + linkType: hard + "create-require@npm:^1.1.0, create-require@npm:^1.1.1": version: 1.1.1 resolution: "create-require@npm:1.1.1" @@ -25186,10 +25189,15 @@ __metadata: languageName: node linkType: hard -"dedent@npm:^0.7.0": - version: 0.7.0 - resolution: "dedent@npm:0.7.0" - checksum: 87de191050d9a40dd70cad01159a0bcf05ecb59750951242070b6abf9569088684880d00ba92a955b4058804f16eeaf91d604f283929b4f614d181cd7ae633d2 +"dedent@npm:^1.0.0": + version: 1.5.1 + resolution: "dedent@npm:1.5.1" + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + checksum: c3c300a14edf1bdf5a873f9e4b22e839d62490bc5c8d6169c1f15858a1a76733d06a9a56930e963d677a2ceeca4b6b0894cc5ea2f501aa382ca5b92af3413c2a languageName: node linkType: hard @@ -27584,16 +27592,16 @@ __metadata: languageName: node linkType: hard -"expect@npm:^29.0.0, expect@npm:^29.4.3": - version: 29.4.3 - resolution: "expect@npm:29.4.3" +"expect@npm:^29.0.0, expect@npm:^29.7.0": + version: 29.7.0 + resolution: "expect@npm:29.7.0" dependencies: - "@jest/expect-utils": ^29.4.3 - jest-get-type: ^29.4.3 - jest-matcher-utils: ^29.4.3 - jest-message-util: ^29.4.3 - jest-util: ^29.4.3 - checksum: ff9dd8c50c0c6fd4b2b00f6dbd7ab0e2063fe1953be81a8c10ae1c005c7f5667ba452918e2efb055504b72b701a4f82575a081a0a7158efb16d87991b0366feb + "@jest/expect-utils": ^29.7.0 + jest-get-type: ^29.6.3 + jest-matcher-utils: ^29.7.0 + jest-message-util: ^29.7.0 + jest-util: ^29.7.0 + checksum: 9257f10288e149b81254a0fda8ffe8d54a7061cd61d7515779998b012579d2b8c22354b0eb901daf0145f347403da582f75f359f4810c007182ad3fb318b5c0c languageName: node linkType: hard @@ -31495,7 +31503,7 @@ __metadata: languageName: node linkType: hard -"istanbul-lib-instrument@npm:^5.0.4, istanbul-lib-instrument@npm:^5.1.0": +"istanbul-lib-instrument@npm:^5.0.4": version: 5.1.0 resolution: "istanbul-lib-instrument@npm:5.1.0" dependencies: @@ -31508,6 +31516,19 @@ __metadata: languageName: node linkType: hard +"istanbul-lib-instrument@npm:^6.0.0": + version: 6.0.1 + resolution: "istanbul-lib-instrument@npm:6.0.1" + dependencies: + "@babel/core": ^7.12.3 + "@babel/parser": ^7.14.7 + "@istanbuljs/schema": ^0.1.2 + istanbul-lib-coverage: ^3.2.0 + semver: ^7.5.4 + checksum: fb23472e739cfc9b027cefcd7d551d5e7ca7ff2817ae5150fab99fe42786a7f7b56a29a2aa8309c37092e18297b8003f9c274f50ca4360949094d17fbac81472 + languageName: node + linkType: hard + "istanbul-lib-report@npm:^3.0.0": version: 3.0.0 resolution: "istanbul-lib-report@npm:3.0.0" @@ -31603,58 +31624,59 @@ __metadata: languageName: node linkType: hard -"jest-changed-files@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-changed-files@npm:29.4.3" +"jest-changed-files@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-changed-files@npm:29.7.0" dependencies: execa: ^5.0.0 + jest-util: ^29.7.0 p-limit: ^3.1.0 - checksum: 9a70bd8e92b37e18ad26d8bea97c516f41119fb7046b4255a13c76d557b0e54fa0629726de5a093fadfd6a0a08ce45da65a57086664d505b8db4b3133133e141 + checksum: 963e203893c396c5dfc75e00a49426688efea7361b0f0e040035809cecd2d46b3c01c02be2d9e8d38b1138357d2de7719ea5b5be21f66c10f2e9685a5a73bb99 languageName: node linkType: hard -"jest-circus@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-circus@npm:29.4.3" +"jest-circus@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-circus@npm:29.7.0" dependencies: - "@jest/environment": ^29.4.3 - "@jest/expect": ^29.4.3 - "@jest/test-result": ^29.4.3 - "@jest/types": ^29.4.3 + "@jest/environment": ^29.7.0 + "@jest/expect": ^29.7.0 + "@jest/test-result": ^29.7.0 + "@jest/types": ^29.6.3 "@types/node": "*" chalk: ^4.0.0 co: ^4.6.0 - dedent: ^0.7.0 + dedent: ^1.0.0 is-generator-fn: ^2.0.0 - jest-each: ^29.4.3 - jest-matcher-utils: ^29.4.3 - jest-message-util: ^29.4.3 - jest-runtime: ^29.4.3 - jest-snapshot: ^29.4.3 - jest-util: ^29.4.3 + jest-each: ^29.7.0 + jest-matcher-utils: ^29.7.0 + jest-message-util: ^29.7.0 + jest-runtime: ^29.7.0 + jest-snapshot: ^29.7.0 + jest-util: ^29.7.0 p-limit: ^3.1.0 - pretty-format: ^29.4.3 + pretty-format: ^29.7.0 + pure-rand: ^6.0.0 slash: ^3.0.0 stack-utils: ^2.0.3 - checksum: 2739bef9c888743b49ff3fe303131381618e5d2f250f613a91240d9c86e19e6874fc904cbd8bcb02ec9ec59a84e5dae4ffec929f0c6171e87ddbc05508a137f4 + checksum: 349437148924a5a109c9b8aad6d393a9591b4dac1918fc97d81b7fc515bc905af9918495055071404af1fab4e48e4b04ac3593477b1d5dcf48c4e71b527c70a7 languageName: node linkType: hard -"jest-cli@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-cli@npm:29.4.3" +"jest-cli@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-cli@npm:29.7.0" dependencies: - "@jest/core": ^29.4.3 - "@jest/test-result": ^29.4.3 - "@jest/types": ^29.4.3 + "@jest/core": ^29.7.0 + "@jest/test-result": ^29.7.0 + "@jest/types": ^29.6.3 chalk: ^4.0.0 + create-jest: ^29.7.0 exit: ^0.1.2 - graceful-fs: ^4.2.9 import-local: ^3.0.2 - jest-config: ^29.4.3 - jest-util: ^29.4.3 - jest-validate: ^29.4.3 - prompts: ^2.0.1 + jest-config: ^29.7.0 + jest-util: ^29.7.0 + jest-validate: ^29.7.0 yargs: ^17.3.1 peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -31663,34 +31685,34 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: f4c9f6d76cde2c60a4169acbebb3f862728be03bcf3fe0077d2e55da7f9f3c3e9483cfa6e936832d35eabf96ee5ebf0300c4b0bd43cffff099801793466bfdd8 + checksum: 664901277a3f5007ea4870632ed6e7889db9da35b2434e7cb488443e6bf5513889b344b7fddf15112135495b9875892b156faeb2d7391ddb9e2a849dcb7b6c36 languageName: node linkType: hard -"jest-config@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-config@npm:29.4.3" +"jest-config@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-config@npm:29.7.0" dependencies: "@babel/core": ^7.11.6 - "@jest/test-sequencer": ^29.4.3 - "@jest/types": ^29.4.3 - babel-jest: ^29.4.3 + "@jest/test-sequencer": ^29.7.0 + "@jest/types": ^29.6.3 + babel-jest: ^29.7.0 chalk: ^4.0.0 ci-info: ^3.2.0 deepmerge: ^4.2.2 glob: ^7.1.3 graceful-fs: ^4.2.9 - jest-circus: ^29.4.3 - jest-environment-node: ^29.4.3 - jest-get-type: ^29.4.3 - jest-regex-util: ^29.4.3 - jest-resolve: ^29.4.3 - jest-runner: ^29.4.3 - jest-util: ^29.4.3 - jest-validate: ^29.4.3 + jest-circus: ^29.7.0 + jest-environment-node: ^29.7.0 + jest-get-type: ^29.6.3 + jest-regex-util: ^29.6.3 + jest-resolve: ^29.7.0 + jest-runner: ^29.7.0 + jest-util: ^29.7.0 + jest-validate: ^29.7.0 micromatch: ^4.0.4 parse-json: ^5.2.0 - pretty-format: ^29.4.3 + pretty-format: ^29.7.0 slash: ^3.0.0 strip-json-comments: ^3.1.1 peerDependencies: @@ -31701,7 +31723,7 @@ __metadata: optional: true ts-node: optional: true - checksum: 92f9a9c6850b18682cb01892774a33967472af23a5844438d8c68077d5f2a29b15b665e4e4db7de3d74002a6dca158cd5b2cb9f5debfd2cce5e1aee6c74e3873 + checksum: 4cabf8f894c180cac80b7df1038912a3fc88f96f2622de33832f4b3314f83e22b08fb751da570c0ab2b7988f21604bdabade95e3c0c041068ac578c085cf7dff languageName: node linkType: hard @@ -31726,72 +31748,72 @@ __metadata: languageName: node linkType: hard -"jest-diff@npm:^29.2.0, jest-diff@npm:^29.4.3": - version: 29.6.3 - resolution: "jest-diff@npm:29.6.3" +"jest-diff@npm:^29.2.0, jest-diff@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-diff@npm:29.7.0" dependencies: chalk: ^4.0.0 diff-sequences: ^29.6.3 jest-get-type: ^29.6.3 - pretty-format: ^29.6.3 - checksum: 23b0a88efeab36566386f059f3da340754d2860969cbc34805154e2377714e37e3130e21a791fc68008fb460bbf5edd7ec43c16d96d15797b32ccfae5160fe37 + pretty-format: ^29.7.0 + checksum: 08e24a9dd43bfba1ef07a6374e5af138f53137b79ec3d5cc71a2303515335898888fa5409959172e1e05de966c9e714368d15e8994b0af7441f0721ee8e1bb77 languageName: node linkType: hard -"jest-docblock@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-docblock@npm:29.4.3" +"jest-docblock@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-docblock@npm:29.7.0" dependencies: detect-newline: ^3.0.0 - checksum: e0e9df1485bb8926e5b33478cdf84b3387d9caf3658e7dc1eaa6dc34cb93dea0d2d74797f6e940f0233a88f3dadd60957f2288eb8f95506361f85b84bf8661df + checksum: 66390c3e9451f8d96c5da62f577a1dad701180cfa9b071c5025acab2f94d7a3efc2515cfa1654ebe707213241541ce9c5530232cdc8017c91ed64eea1bd3b192 languageName: node linkType: hard -"jest-each@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-each@npm:29.4.3" +"jest-each@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-each@npm:29.7.0" dependencies: - "@jest/types": ^29.4.3 + "@jest/types": ^29.6.3 chalk: ^4.0.0 - jest-get-type: ^29.4.3 - jest-util: ^29.4.3 - pretty-format: ^29.4.3 - checksum: 1f72738338399efab0139eaea18bc198be0c6ed889770c8cbfa70bf9c724e8171fe1d3a29a94f9f39b8493ee6b2529bb350fb7c7c75e0d7eddfd28c253c79f9d + jest-get-type: ^29.6.3 + jest-util: ^29.7.0 + pretty-format: ^29.7.0 + checksum: e88f99f0184000fc8813f2a0aa79e29deeb63700a3b9b7928b8a418d7d93cd24933608591dbbdea732b473eb2021c72991b5cc51a17966842841c6e28e6f691c languageName: node linkType: hard "jest-environment-jsdom@npm:^29.0.2": - version: 29.4.3 - resolution: "jest-environment-jsdom@npm:29.4.3" + version: 29.7.0 + resolution: "jest-environment-jsdom@npm:29.7.0" dependencies: - "@jest/environment": ^29.4.3 - "@jest/fake-timers": ^29.4.3 - "@jest/types": ^29.4.3 + "@jest/environment": ^29.7.0 + "@jest/fake-timers": ^29.7.0 + "@jest/types": ^29.6.3 "@types/jsdom": ^20.0.0 "@types/node": "*" - jest-mock: ^29.4.3 - jest-util: ^29.4.3 + jest-mock: ^29.7.0 + jest-util: ^29.7.0 jsdom: ^20.0.0 peerDependencies: canvas: ^2.5.0 peerDependenciesMeta: canvas: optional: true - checksum: 3fb29bb4b472e05a38fdb235aa936ad469dfa2f6c1cab97fe3d1a7c585351976d05c7bbbd715b9747f070a225dcf10a9166df1461e0fb838ea7a377a8e64bed4 + checksum: 559aac134c196fccc1dfc794d8fc87377e9f78e894bb13012b0831d88dec0abd7ece99abec69da564b8073803be4f04a9eb4f4d1bb80e29eec0cb252c254deb8 languageName: node linkType: hard -"jest-environment-node@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-environment-node@npm:29.4.3" +"jest-environment-node@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-environment-node@npm:29.7.0" dependencies: - "@jest/environment": ^29.4.3 - "@jest/fake-timers": ^29.4.3 - "@jest/types": ^29.4.3 + "@jest/environment": ^29.7.0 + "@jest/fake-timers": ^29.7.0 + "@jest/types": ^29.6.3 "@types/node": "*" - jest-mock: ^29.4.3 - jest-util: ^29.4.3 - checksum: 3c7362edfdbd516e83af7367c95dde35761a482b174de9735c07633405486ec73e19624e9bea4333fca33c24e8d65eaa1aa6594e0cb6bfeeeb564ccc431ee61d + jest-mock: ^29.7.0 + jest-util: ^29.7.0 + checksum: 501a9966292cbe0ca3f40057a37587cb6def25e1e0c5e39ac6c650fe78d3c70a2428304341d084ac0cced5041483acef41c477abac47e9a290d5545fd2f15646 languageName: node linkType: hard @@ -31802,66 +31824,43 @@ __metadata: languageName: node linkType: hard -"jest-get-type@npm:^29.4.3, jest-get-type@npm:^29.6.3": +"jest-get-type@npm:^29.6.3": version: 29.6.3 resolution: "jest-get-type@npm:29.6.3" checksum: 88ac9102d4679d768accae29f1e75f592b760b44277df288ad76ce5bf038c3f5ce3719dea8aa0f035dac30e9eb034b848ce716b9183ad7cc222d029f03e92205 languageName: node linkType: hard -"jest-haste-map@npm:29.4.3": - version: 29.4.3 - resolution: "jest-haste-map@npm:29.4.3" +"jest-haste-map@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-haste-map@npm:29.7.0" dependencies: - "@jest/types": ^29.4.3 + "@jest/types": ^29.6.3 "@types/graceful-fs": ^4.1.3 "@types/node": "*" anymatch: ^3.0.3 fb-watchman: ^2.0.0 fsevents: ^2.3.2 graceful-fs: ^4.2.9 - jest-regex-util: ^29.4.3 - jest-util: ^29.4.3 - jest-worker: ^29.4.3 + jest-regex-util: ^29.6.3 + jest-util: ^29.7.0 + jest-worker: ^29.7.0 micromatch: ^4.0.4 walker: ^1.0.8 dependenciesMeta: fsevents: optional: true - checksum: c7a83ebe6008b3fe96a96235e8153092e54b14df68e0f4205faedec57450df26b658578495a71c6d82494c01fbb44bca98c1506a6b2b9c920696dcc5d2e2bc59 + checksum: c2c8f2d3e792a963940fbdfa563ce14ef9e14d4d86da645b96d3cd346b8d35c5ce0b992ee08593939b5f718cf0a1f5a90011a056548a1dbf58397d4356786f01 languageName: node linkType: hard -"jest-haste-map@patch:jest-haste-map@npm%3A29.4.3#./.yarn/patches/jest-haste-map-npm-29.4.3-19b03fcef3.patch::locator=root%40workspace%3A.": - version: 29.4.3 - resolution: "jest-haste-map@patch:jest-haste-map@npm%3A29.4.3#./.yarn/patches/jest-haste-map-npm-29.4.3-19b03fcef3.patch::version=29.4.3&hash=1e431f&locator=root%40workspace%3A." +"jest-leak-detector@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-leak-detector@npm:29.7.0" dependencies: - "@jest/types": ^29.4.3 - "@types/graceful-fs": ^4.1.3 - "@types/node": "*" - anymatch: ^3.0.3 - fb-watchman: ^2.0.0 - fsevents: ^2.3.2 - graceful-fs: ^4.2.9 - jest-regex-util: ^29.4.3 - jest-util: ^29.4.3 - jest-worker: ^29.4.3 - micromatch: ^4.0.4 - walker: ^1.0.8 - dependenciesMeta: - fsevents: - optional: true - checksum: a25fd71cc650acac4295172b2b84212872c4100a0b8e627e1f4b70a7e74d895a20274a4b0449aafdcb8273da055013fdc8765e55cbcf6dc46ae0351e974ed0c2 - languageName: node - linkType: hard - -"jest-leak-detector@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-leak-detector@npm:29.4.3" - dependencies: - jest-get-type: ^29.4.3 - pretty-format: ^29.4.3 - checksum: ec2b45e6f0abce81bd0dd0f6fd06b433c24d1ec865267af7640fae540ec868b93752598e407a9184d9c7419cbf32e8789007cc8c1be1a84f8f7321a0f8ad01f1 + jest-get-type: ^29.6.3 + pretty-format: ^29.7.0 + checksum: e3950e3ddd71e1d0c22924c51a300a1c2db6cf69ec1e51f95ccf424bcc070f78664813bef7aed4b16b96dfbdeea53fe358f8aeaaea84346ae15c3735758f1605 languageName: node linkType: hard @@ -31877,15 +31876,15 @@ __metadata: languageName: node linkType: hard -"jest-matcher-utils@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-matcher-utils@npm:29.4.3" +"jest-matcher-utils@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-matcher-utils@npm:29.7.0" dependencies: chalk: ^4.0.0 - jest-diff: ^29.4.3 - jest-get-type: ^29.4.3 - pretty-format: ^29.4.3 - checksum: 9e13cbe42d2113bab2691110c7c3ba5cec3b94abad2727e1de90929d0f67da444e9b2066da3b476b5bf788df53a8ede0e0a950cfb06a04e4d6d566d115ee4f1d + jest-diff: ^29.7.0 + jest-get-type: ^29.6.3 + pretty-format: ^29.7.0 + checksum: d7259e5f995d915e8a37a8fd494cb7d6af24cd2a287b200f831717ba0d015190375f9f5dc35393b8ba2aae9b2ebd60984635269c7f8cff7d85b077543b7744cd languageName: node linkType: hard @@ -31906,31 +31905,31 @@ __metadata: languageName: node linkType: hard -"jest-message-util@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-message-util@npm:29.4.3" +"jest-message-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-message-util@npm:29.7.0" dependencies: "@babel/code-frame": ^7.12.13 - "@jest/types": ^29.4.3 + "@jest/types": ^29.6.3 "@types/stack-utils": ^2.0.0 chalk: ^4.0.0 graceful-fs: ^4.2.9 micromatch: ^4.0.4 - pretty-format: ^29.4.3 + pretty-format: ^29.7.0 slash: ^3.0.0 stack-utils: ^2.0.3 - checksum: 64f06b9550021e68da0059020bea8691283cf818918810bb67192d7b7fb9b691c7eadf55c2ca3cd04df5394918f2327245077095cdc0d6b04be3532d2c7d0ced + checksum: a9d025b1c6726a2ff17d54cc694de088b0489456c69106be6b615db7a51b7beb66788bea7a59991a019d924fbf20f67d085a445aedb9a4d6760363f4d7d09930 languageName: node linkType: hard -"jest-mock@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-mock@npm:29.4.3" +"jest-mock@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-mock@npm:29.7.0" dependencies: - "@jest/types": ^29.4.3 + "@jest/types": ^29.6.3 "@types/node": "*" - jest-util: ^29.4.3 - checksum: 8eb4a29b02d2cd03faac0290b6df6d23b4ffa43f72b21c7fff3c7dd04a2797355b1e85862b70b15341dd33ee3a693b17db5520a6f6e6b81ee75601987de6a1a2 + jest-util: ^29.7.0 + checksum: 81ba9b68689a60be1482212878973700347cb72833c5e5af09895882b9eb5c4e02843a1bbdf23f94c52d42708bab53a30c45a3482952c9eec173d1eaac5b86c5 languageName: node linkType: hard @@ -31946,128 +31945,124 @@ __metadata: languageName: node linkType: hard -"jest-regex-util@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-regex-util@npm:29.4.3" - checksum: 96fc7fc28cd4dd73a63c13a526202c4bd8b351d4e5b68b1a2a2c88da3308c2a16e26feaa593083eb0bac38cca1aa9dd05025412e7de013ba963fb8e66af22b8a +"jest-regex-util@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-regex-util@npm:29.6.3" + checksum: 0518beeb9bf1228261695e54f0feaad3606df26a19764bc19541e0fc6e2a3737191904607fb72f3f2ce85d9c16b28df79b7b1ec9443aa08c3ef0e9efda6f8f2a languageName: node linkType: hard -"jest-resolve-dependencies@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-resolve-dependencies@npm:29.4.3" +"jest-resolve-dependencies@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-resolve-dependencies@npm:29.7.0" dependencies: - jest-regex-util: ^29.4.3 - jest-snapshot: ^29.4.3 - checksum: 3ad934cd2170c9658d8800f84a975dafc866ec85b7ce391c640c09c3744ced337787620d8667dc8d1fa5e0b1493f973caa1a1bb980e4e6a50b46a1720baf0bd1 + jest-regex-util: ^29.6.3 + jest-snapshot: ^29.7.0 + checksum: aeb75d8150aaae60ca2bb345a0d198f23496494677cd6aefa26fc005faf354061f073982175daaf32b4b9d86b26ca928586344516e3e6969aa614cb13b883984 languageName: node linkType: hard -"jest-resolve@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-resolve@npm:29.4.3" +"jest-resolve@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-resolve@npm:29.7.0" dependencies: chalk: ^4.0.0 graceful-fs: ^4.2.9 - jest-haste-map: ^29.4.3 + jest-haste-map: ^29.7.0 jest-pnp-resolver: ^1.2.2 - jest-util: ^29.4.3 - jest-validate: ^29.4.3 + jest-util: ^29.7.0 + jest-validate: ^29.7.0 resolve: ^1.20.0 resolve.exports: ^2.0.0 slash: ^3.0.0 - checksum: 056a66beccf833f3c7e5a8fc9bfec218886e87b0b103decdbdf11893669539df489d1490cd6d5f0eea35731e8be0d2e955a6710498f970d2eae734da4df029dc + checksum: 0ca218e10731aa17920526ec39deaec59ab9b966237905ffc4545444481112cd422f01581230eceb7e82d86f44a543d520a71391ec66e1b4ef1a578bd5c73487 languageName: node linkType: hard -"jest-runner@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-runner@npm:29.4.3" +"jest-runner@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-runner@npm:29.7.0" dependencies: - "@jest/console": ^29.4.3 - "@jest/environment": ^29.4.3 - "@jest/test-result": ^29.4.3 - "@jest/transform": ^29.4.3 - "@jest/types": ^29.4.3 + "@jest/console": ^29.7.0 + "@jest/environment": ^29.7.0 + "@jest/test-result": ^29.7.0 + "@jest/transform": ^29.7.0 + "@jest/types": ^29.6.3 "@types/node": "*" chalk: ^4.0.0 emittery: ^0.13.1 graceful-fs: ^4.2.9 - jest-docblock: ^29.4.3 - jest-environment-node: ^29.4.3 - jest-haste-map: ^29.4.3 - jest-leak-detector: ^29.4.3 - jest-message-util: ^29.4.3 - jest-resolve: ^29.4.3 - jest-runtime: ^29.4.3 - jest-util: ^29.4.3 - jest-watcher: ^29.4.3 - jest-worker: ^29.4.3 + jest-docblock: ^29.7.0 + jest-environment-node: ^29.7.0 + jest-haste-map: ^29.7.0 + jest-leak-detector: ^29.7.0 + jest-message-util: ^29.7.0 + jest-resolve: ^29.7.0 + jest-runtime: ^29.7.0 + jest-util: ^29.7.0 + jest-watcher: ^29.7.0 + jest-worker: ^29.7.0 p-limit: ^3.1.0 source-map-support: 0.5.13 - checksum: c41108e5da01e0b8fdc2a06c5042eb49bb1d8db0e0d4651769fd1b9fe84ab45188617c11a3a8e1c83748b29bfe57dd77001ec57e86e3e3c30f3534e0314f8882 + checksum: f0405778ea64812bf9b5c50b598850d94ccf95d7ba21f090c64827b41decd680ee19fcbb494007cdd7f5d0d8906bfc9eceddd8fa583e753e736ecd462d4682fb languageName: node linkType: hard -"jest-runtime@npm:^29.0.2, jest-runtime@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-runtime@npm:29.4.3" +"jest-runtime@npm:^29.0.2, jest-runtime@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-runtime@npm:29.7.0" dependencies: - "@jest/environment": ^29.4.3 - "@jest/fake-timers": ^29.4.3 - "@jest/globals": ^29.4.3 - "@jest/source-map": ^29.4.3 - "@jest/test-result": ^29.4.3 - "@jest/transform": ^29.4.3 - "@jest/types": ^29.4.3 + "@jest/environment": ^29.7.0 + "@jest/fake-timers": ^29.7.0 + "@jest/globals": ^29.7.0 + "@jest/source-map": ^29.6.3 + "@jest/test-result": ^29.7.0 + "@jest/transform": ^29.7.0 + "@jest/types": ^29.6.3 "@types/node": "*" chalk: ^4.0.0 cjs-module-lexer: ^1.0.0 collect-v8-coverage: ^1.0.0 glob: ^7.1.3 graceful-fs: ^4.2.9 - jest-haste-map: ^29.4.3 - jest-message-util: ^29.4.3 - jest-mock: ^29.4.3 - jest-regex-util: ^29.4.3 - jest-resolve: ^29.4.3 - jest-snapshot: ^29.4.3 - jest-util: ^29.4.3 + jest-haste-map: ^29.7.0 + jest-message-util: ^29.7.0 + jest-mock: ^29.7.0 + jest-regex-util: ^29.6.3 + jest-resolve: ^29.7.0 + jest-snapshot: ^29.7.0 + jest-util: ^29.7.0 slash: ^3.0.0 strip-bom: ^4.0.0 - checksum: b99f8a910d1a38e7476058ba04ad44dfd3d93e837bb7c301d691e646a1085412fde87f06fbe271c9145f0e72d89400bfa7f6994bc30d456c7742269f37d0f570 + checksum: d19f113d013e80691e07047f68e1e3448ef024ff2c6b586ce4f90cd7d4c62a2cd1d460110491019719f3c59bfebe16f0e201ed005ef9f80e2cf798c374eed54e languageName: node linkType: hard -"jest-snapshot@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-snapshot@npm:29.4.3" +"jest-snapshot@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-snapshot@npm:29.7.0" dependencies: "@babel/core": ^7.11.6 "@babel/generator": ^7.7.2 "@babel/plugin-syntax-jsx": ^7.7.2 "@babel/plugin-syntax-typescript": ^7.7.2 - "@babel/traverse": ^7.7.2 "@babel/types": ^7.3.3 - "@jest/expect-utils": ^29.4.3 - "@jest/transform": ^29.4.3 - "@jest/types": ^29.4.3 - "@types/babel__traverse": ^7.0.6 - "@types/prettier": ^2.1.5 + "@jest/expect-utils": ^29.7.0 + "@jest/transform": ^29.7.0 + "@jest/types": ^29.6.3 babel-preset-current-node-syntax: ^1.0.0 chalk: ^4.0.0 - expect: ^29.4.3 + expect: ^29.7.0 graceful-fs: ^4.2.9 - jest-diff: ^29.4.3 - jest-get-type: ^29.4.3 - jest-haste-map: ^29.4.3 - jest-matcher-utils: ^29.4.3 - jest-message-util: ^29.4.3 - jest-util: ^29.4.3 + jest-diff: ^29.7.0 + jest-get-type: ^29.6.3 + jest-matcher-utils: ^29.7.0 + jest-message-util: ^29.7.0 + jest-util: ^29.7.0 natural-compare: ^1.4.0 - pretty-format: ^29.4.3 - semver: ^7.3.5 - checksum: 79ba52f2435e23ce72b1309be4b17fdbcb299d1c2ce97ebb61df9a62711e9463035f63b4c849181b2fe5aa17b3e09d30ee4668cc25fb3c6f59511c010b4d9494 + pretty-format: ^29.7.0 + semver: ^7.5.3 + checksum: 86821c3ad0b6899521ce75ee1ae7b01b17e6dfeff9166f2cf17f012e0c5d8c798f30f9e4f8f7f5bed01ea7b55a6bc159f5eda778311162cbfa48785447c237ad languageName: node linkType: hard @@ -32085,47 +32080,47 @@ __metadata: languageName: node linkType: hard -"jest-util@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-util@npm:29.4.3" +"jest-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-util@npm:29.7.0" dependencies: - "@jest/types": ^29.4.3 + "@jest/types": ^29.6.3 "@types/node": "*" chalk: ^4.0.0 ci-info: ^3.2.0 graceful-fs: ^4.2.9 picomatch: ^2.2.3 - checksum: 606b3e6077895baf8fb4ad4d08c134f37a6b81d5ba77ae654c942b1ae4b7294ab3b5a0eb93db34f129407b367970cf3b76bf5c80897b30f215f2bc8bf20a5f3f + checksum: 042ab4980f4ccd4d50226e01e5c7376a8556b472442ca6091a8f102488c0f22e6e8b89ea874111d2328a2080083bf3225c86f3788c52af0bd0345a00eb57a3ca languageName: node linkType: hard -"jest-validate@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-validate@npm:29.4.3" +"jest-validate@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-validate@npm:29.7.0" dependencies: - "@jest/types": ^29.4.3 + "@jest/types": ^29.6.3 camelcase: ^6.2.0 chalk: ^4.0.0 - jest-get-type: ^29.4.3 + jest-get-type: ^29.6.3 leven: ^3.1.0 - pretty-format: ^29.4.3 - checksum: 983e56430d86bed238448cae031535c1d908f760aa312cd4a4ec0e92f3bc1b6675415ddf57cdeceedb8ad9c698e5bcd10f0a856dfc93a8923bdecc7733f4ba80 + pretty-format: ^29.7.0 + checksum: 191fcdc980f8a0de4dbdd879fa276435d00eb157a48683af7b3b1b98b0f7d9de7ffe12689b617779097ff1ed77601b9f7126b0871bba4f776e222c40f62e9dae languageName: node linkType: hard -"jest-watcher@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-watcher@npm:29.4.3" +"jest-watcher@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-watcher@npm:29.7.0" dependencies: - "@jest/test-result": ^29.4.3 - "@jest/types": ^29.4.3 + "@jest/test-result": ^29.7.0 + "@jest/types": ^29.6.3 "@types/node": "*" ansi-escapes: ^4.2.1 chalk: ^4.0.0 emittery: ^0.13.1 - jest-util: ^29.4.3 + jest-util: ^29.7.0 string-length: ^4.0.1 - checksum: 44b64991b3414db853c3756f14690028f4edef7aebfb204a4291cc1901c2239fa27a8687c5c5abbecc74bf613e0bb9b1378bf766430c9febcc71e9c0cb5ad8fc + checksum: 67e6e7fe695416deff96b93a14a561a6db69389a0667e9489f24485bb85e5b54e12f3b2ba511ec0b777eca1e727235b073e3ebcdd473d68888650489f88df92f languageName: node linkType: hard @@ -32170,26 +32165,26 @@ __metadata: languageName: node linkType: hard -"jest-worker@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-worker@npm:29.4.3" +"jest-worker@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-worker@npm:29.7.0" dependencies: "@types/node": "*" - jest-util: ^29.4.3 + jest-util: ^29.7.0 merge-stream: ^2.0.0 supports-color: ^8.0.0 - checksum: c99ae66f257564613e72c5797c3a68f21a22e1c1fb5f30d14695ff5b508a0d2405f22748f13a3df8d1015b5e16abb130170f81f047ff68f58b6b1d2ff6ebc51b + checksum: 30fff60af49675273644d408b650fc2eb4b5dcafc5a0a455f238322a8f9d8a98d847baca9d51ff197b6747f54c7901daa2287799230b856a0f48287d131f8c13 languageName: node linkType: hard "jest@npm:^29.0.2": - version: 29.4.3 - resolution: "jest@npm:29.4.3" + version: 29.7.0 + resolution: "jest@npm:29.7.0" dependencies: - "@jest/core": ^29.4.3 - "@jest/types": ^29.4.3 + "@jest/core": ^29.7.0 + "@jest/types": ^29.6.3 import-local: ^3.0.2 - jest-cli: ^29.4.3 + jest-cli: ^29.7.0 peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: @@ -32197,7 +32192,7 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: 084d10d1ceaade3c40e6d3bbd71b9b71b8919ba6fbd6f1f6699bdc259a6ba2f7350c7ccbfa10c11f7e3e01662853650a6244210179542fe4ba87e77dc3f3109f + checksum: 17ca8d67504a7dbb1998cf3c3077ec9031ba3eb512da8d71cb91bcabb2b8995c4e4b292b740cb9bf1cbff5ce3e110b3f7c777b0cefb6f41ab05445f248d0ee0b languageName: node linkType: hard @@ -38625,14 +38620,14 @@ __metadata: languageName: node linkType: hard -"pretty-format@npm:^29.0.0, pretty-format@npm:^29.4.3, pretty-format@npm:^29.6.3": - version: 29.6.3 - resolution: "pretty-format@npm:29.6.3" +"pretty-format@npm:^29.0.0, pretty-format@npm:^29.7.0": + version: 29.7.0 + resolution: "pretty-format@npm:29.7.0" dependencies: "@jest/schemas": ^29.6.3 ansi-styles: ^5.0.0 react-is: ^18.0.0 - checksum: 4e1c0db48e65571c22e80ff92123925ff8b3a2a89b71c3a1683cfde711004d492de32fe60c6bc10eea8bf6c678e5cbe544ac6c56cb8096e1eb7caf856928b1c4 + checksum: 032c1602383e71e9c0c02a01bbd25d6759d60e9c7cf21937dde8357aa753da348fcec5def5d1002c9678a8524d5fe099ad98861286550ef44de8808cc61e43b6 languageName: node linkType: hard @@ -38967,6 +38962,13 @@ __metadata: languageName: node linkType: hard +"pure-rand@npm:^6.0.0": + version: 6.0.4 + resolution: "pure-rand@npm:6.0.4" + checksum: e1c4e69f8bf7303e5252756d67c3c7551385cd34d94a1f511fe099727ccbab74c898c03a06d4c4a24a89b51858781057b83ebbfe740d984240cdc04fead36068 + languageName: node + linkType: hard + "pvtsutils@npm:^1.3.2": version: 1.3.2 resolution: "pvtsutils@npm:1.3.2" From 4a08c79101b1de9a3037c2644b8206c9aca124e4 Mon Sep 17 00:00:00 2001 From: David Festal Date: Tue, 24 Oct 2023 11:51:44 +0200 Subject: [PATCH 075/102] fix: avoid watching too many files This fixes issue #20644 Signed-off-by: David Festal --- packages/backend-plugin-manager/api-report.md | 2 +- .../backend-plugin-manager/src/manager/plugin-manager.ts | 6 +++--- .../backend-plugin-manager/src/scanner/plugin-scanner.ts | 2 ++ 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/backend-plugin-manager/api-report.md b/packages/backend-plugin-manager/api-report.md index 9617dc1096..b4221007ae 100644 --- a/packages/backend-plugin-manager/api-report.md +++ b/packages/backend-plugin-manager/api-report.md @@ -174,7 +174,7 @@ export class PluginManager implements BackendPluginProvider { config: Config, logger: LoggerService, preferAlpha?: boolean, - mooduleLoader?: ModuleLoader, + moduleLoader?: ModuleLoader, ): Promise; // (undocumented) readonly plugins: DynamicPlugin[]; diff --git a/packages/backend-plugin-manager/src/manager/plugin-manager.ts b/packages/backend-plugin-manager/src/manager/plugin-manager.ts index 89ea144426..ad76c7529e 100644 --- a/packages/backend-plugin-manager/src/manager/plugin-manager.ts +++ b/packages/backend-plugin-manager/src/manager/plugin-manager.ts @@ -49,7 +49,7 @@ export class PluginManager implements BackendPluginProvider { config: Config, logger: LoggerService, preferAlpha: boolean = false, - mooduleLoader: ModuleLoader = new CommonJSModuleLoader(logger), + moduleLoader: ModuleLoader = new CommonJSModuleLoader(logger), ): Promise { /* eslint-disable-next-line no-restricted-syntax */ const backstageRoot = findPaths(__dirname).targetRoot; @@ -61,7 +61,7 @@ export class PluginManager implements BackendPluginProvider { ); const scannedPlugins = await scanner.scanRoot(); scanner.trackChanges(); - const manager = new PluginManager(logger, scannedPlugins, mooduleLoader); + const manager = new PluginManager(logger, scannedPlugins, moduleLoader); const dynamicPluginsPaths = scannedPlugins.map(p => fs.realpathSync( @@ -73,7 +73,7 @@ export class PluginManager implements BackendPluginProvider { ), ); - mooduleLoader.bootstrap(backstageRoot, dynamicPluginsPaths); + moduleLoader.bootstrap(backstageRoot, dynamicPluginsPaths); scanner.subscribeToRootDirectoryChange(async () => { manager._availablePackages = await scanner.scanRoot(); diff --git a/packages/backend-plugin-manager/src/scanner/plugin-scanner.ts b/packages/backend-plugin-manager/src/scanner/plugin-scanner.ts index e226a1a8ad..51e38002e9 100644 --- a/packages/backend-plugin-manager/src/scanner/plugin-scanner.ts +++ b/packages/backend-plugin-manager/src/scanner/plugin-scanner.ts @@ -217,6 +217,8 @@ export class PluginScanner { .watch(this._rootDirectory, { ignoreInitial: true, followSymlinks: true, + depth: 1, + disableGlobbing: true, }) .on( 'all', From 62c3f1a120f9c3fba7d30f241b42baf3dc708c77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Tue, 24 Oct 2023 17:07:02 +0200 Subject: [PATCH 076/102] fix types and api reports MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- packages/cli/cli-report.md | 6 ++++++ packages/repo-tools/package.json | 1 + yarn.lock | 8 ++++++++ 3 files changed, 15 insertions(+) diff --git a/packages/cli/cli-report.md b/packages/cli/cli-report.md index 9292f2ea37..9a471e2ca6 100644 --- a/packages/cli/cli-report.md +++ b/packages/cli/cli-report.md @@ -343,11 +343,13 @@ Options: --notifyMode -o, --onlyChanged -f, --onlyFailures + --openHandlesTimeout --outputFile --passWithNoTests --preset --prettierPath --projects + --randomize --reporters --resetMocks --resetModules @@ -391,6 +393,7 @@ Options: --watchAll --watchPathIgnorePatterns --watchman + --workerThreads ``` ### `backstage-cli repo` @@ -535,11 +538,13 @@ Options: --notifyMode -o, --onlyChanged -f, --onlyFailures + --openHandlesTimeout --outputFile --passWithNoTests --preset --prettierPath --projects + --randomize --reporters --resetMocks --resetModules @@ -583,6 +588,7 @@ Options: --watchAll --watchPathIgnorePatterns --watchman + --workerThreads ``` ### `backstage-cli versions:bump` diff --git a/packages/repo-tools/package.json b/packages/repo-tools/package.json index d67a7cf816..663695a764 100644 --- a/packages/repo-tools/package.json +++ b/packages/repo-tools/package.json @@ -66,6 +66,7 @@ "@types/is-glob": "^4.0.2", "@types/mock-fs": "^4.13.0", "@types/node": "^18.17.8", + "@types/prettier": "^2.0.0", "mock-fs": "^5.2.0" }, "peerDependencies": { diff --git a/yarn.lock b/yarn.lock index 6c821bd291..fc594fded8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10151,6 +10151,7 @@ __metadata: "@types/is-glob": ^4.0.2 "@types/mock-fs": ^4.13.0 "@types/node": ^18.17.8 + "@types/prettier": ^2.0.0 chalk: ^4.0.0 codeowners-utils: ^1.0.2 commander: ^9.1.0 @@ -19341,6 +19342,13 @@ __metadata: languageName: node linkType: hard +"@types/prettier@npm:^2.0.0": + version: 2.7.3 + resolution: "@types/prettier@npm:2.7.3" + checksum: 705384209cea6d1433ff6c187c80dcc0b95d99d5c5ce21a46a9a58060c527973506822e428789d842761e0280d25e3359300f017fbe77b9755bc772ab3dc2f83 + languageName: node + linkType: hard + "@types/prop-types@npm:*, @types/prop-types@npm:^15.0.0, @types/prop-types@npm:^15.7.3, @types/prop-types@npm:^15.7.7": version: 15.7.8 resolution: "@types/prop-types@npm:15.7.8" From c1f357715cbbe2d7f1bb8e569540c9616e732e41 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 24 Oct 2023 15:09:12 +0000 Subject: [PATCH 077/102] chore(deps): update actions/setup-python action to v4.7.1 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/verify_e2e-techdocs.yml | 2 +- .github/workflows/verify_e2e-windows.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/verify_e2e-techdocs.yml b/.github/workflows/verify_e2e-techdocs.yml index 94f08a491f..de43a4f5ac 100644 --- a/.github/workflows/verify_e2e-techdocs.yml +++ b/.github/workflows/verify_e2e-techdocs.yml @@ -35,7 +35,7 @@ jobs: egress-policy: audit - uses: actions/checkout@v3.6.0 - - uses: actions/setup-python@v4.7.0 + - uses: actions/setup-python@v4.7.1 with: python-version: '3.9' diff --git a/.github/workflows/verify_e2e-windows.yml b/.github/workflows/verify_e2e-windows.yml index 7ee5e596c5..7eba130ed8 100644 --- a/.github/workflows/verify_e2e-windows.yml +++ b/.github/workflows/verify_e2e-windows.yml @@ -56,7 +56,7 @@ jobs: registry-url: https://registry.npmjs.org/ # Needed for auth - name: setup python - uses: actions/setup-python@v4.7.0 + uses: actions/setup-python@v4.7.1 with: python-version: '3.10' From 81efdd56abbd9d05710c7c8c2a05d36589fb7150 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 24 Oct 2023 16:39:55 +0000 Subject: [PATCH 078/102] chore(deps): update dependency @types/archiver to v5.3.4 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 79972afd0b..74e8bb1262 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18102,11 +18102,11 @@ __metadata: linkType: hard "@types/archiver@npm:^5.1.0, @types/archiver@npm:^5.3.1": - version: 5.3.3 - resolution: "@types/archiver@npm:5.3.3" + version: 5.3.4 + resolution: "@types/archiver@npm:5.3.4" dependencies: "@types/readdir-glob": "*" - checksum: e660465ac9a622570ddbad86a306c7234c3272cb28eafe9c3ad7229f06e499dfadae9f0cb0caf41443318eea559b75ef662ea276ae64f19695e72018dae37ee7 + checksum: 4ef27b99091ada9b8f13017d5b9e6d42a439e35a7858b30e040c408e081d98d8db6307b0762500288b5da38cab9823c4756b6abae1fdd2658d42bfb09eb7c5fb languageName: node linkType: hard From 8292f34e209a386c340ee540ad0dd00f1fddcceb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 24 Oct 2023 16:40:25 +0000 Subject: [PATCH 079/102] chore(deps): update dependency @types/aws4 to v1.11.5 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 79972afd0b..9ca654b935 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18132,11 +18132,11 @@ __metadata: linkType: hard "@types/aws4@npm:^1.5.1": - version: 1.11.4 - resolution: "@types/aws4@npm:1.11.4" + version: 1.11.5 + resolution: "@types/aws4@npm:1.11.5" dependencies: "@types/node": "*" - checksum: 8b2576843488b31fdb080369eaff6af539ded60feab4eeeb429481ec0c209c0a7a8d7011747eb71e1b2bc86a455b105dd91fe86add5c2aa1584b6f4821fbf0e7 + checksum: ffc1e7d4fb36c8da6e074ad946c78358baa9744fca729cccfa91349f7565b5ba3d6f30e14ea37d4926217b0b0991e57e2b328dc080465cf12b15f047c3a2b6bb languageName: node linkType: hard From b99e29ab8fa22da9d6a04dfacf3937037591792a Mon Sep 17 00:00:00 2001 From: Phil Kuang Date: Tue, 24 Oct 2023 13:06:05 -0400 Subject: [PATCH 080/102] refactor(techdocs): deprecate ShouldBuildParameters type Signed-off-by: Phil Kuang --- .changeset/two-jars-melt.md | 2 +- plugins/techdocs-backend/api-report.md | 6 ++++-- plugins/techdocs-backend/src/index.ts | 8 +++++--- .../src/service/DefaultDocsBuildStrategy.ts | 8 +++----- plugins/techdocs-node/api-report.md | 7 +------ plugins/techdocs-node/src/techdocsTypes.ts | 11 +---------- 6 files changed, 15 insertions(+), 27 deletions(-) diff --git a/.changeset/two-jars-melt.md b/.changeset/two-jars-melt.md index d6f0166885..2789157065 100644 --- a/.changeset/two-jars-melt.md +++ b/.changeset/two-jars-melt.md @@ -3,4 +3,4 @@ '@backstage/plugin-techdocs-node': minor --- -Expose an extension point to set a custom build strategy and move `DocsBuildStrategy` and `ShouldBuildParameters` types to `@backstage/plugin-techdocs-node` +Expose an extension point to set a custom build strategy. Also move `DocsBuildStrategy` type to `@backstage/plugin-techdocs-node` and deprecate `ShouldBuildParameters` type. diff --git a/plugins/techdocs-backend/api-report.md b/plugins/techdocs-backend/api-report.md index e449ddc459..9e9a42c388 100644 --- a/plugins/techdocs-backend/api-report.md +++ b/plugins/techdocs-backend/api-report.md @@ -8,6 +8,7 @@ import { CatalogClient } from '@backstage/catalog-client'; import { Config } from '@backstage/config'; import { DefaultTechDocsCollatorFactory as DefaultTechDocsCollatorFactory_2 } from '@backstage/plugin-search-backend-module-techdocs'; import { DocsBuildStrategy as DocsBuildStrategy_2 } from '@backstage/plugin-techdocs-node'; +import { Entity } from '@backstage/catalog-model'; import express from 'express'; import { GeneratorBuilder } from '@backstage/plugin-techdocs-node'; import { Knex } from 'knex'; @@ -17,7 +18,6 @@ import { PluginCacheManager } from '@backstage/backend-common'; import { PluginEndpointDiscovery } from '@backstage/backend-common'; import { PreparerBuilder } from '@backstage/plugin-techdocs-node'; import { PublisherBase } from '@backstage/plugin-techdocs-node'; -import { ShouldBuildParameters as ShouldBuildParameters_2 } from '@backstage/plugin-techdocs-node'; import type { TechDocsCollatorFactoryOptions as TechDocsCollatorFactoryOptions_2 } from '@backstage/plugin-search-backend-module-techdocs'; import { TechDocsDocument as TechDocsDocument_2 } from '@backstage/plugin-techdocs-node'; import { TokenManager } from '@backstage/backend-common'; @@ -85,7 +85,9 @@ export type RouterOptions = | OutOfTheBoxDeploymentOptions; // @public @deprecated (undocumented) -export type ShouldBuildParameters = ShouldBuildParameters_2; +export type ShouldBuildParameters = { + entity: Entity; +}; // @public @deprecated (undocumented) export type TechDocsCollatorFactoryOptions = TechDocsCollatorFactoryOptions_2; diff --git a/plugins/techdocs-backend/src/index.ts b/plugins/techdocs-backend/src/index.ts index f9634528f9..6dc68a4d44 100644 --- a/plugins/techdocs-backend/src/index.ts +++ b/plugins/techdocs-backend/src/index.ts @@ -20,9 +20,9 @@ * @packageDocumentation */ +import { Entity } from '@backstage/catalog-model'; import { DocsBuildStrategy as _DocsBuildStrategy, - ShouldBuildParameters as _ShouldBuildParameters, TechDocsDocument as _TechDocsDocument, } from '@backstage/plugin-techdocs-node'; @@ -49,9 +49,11 @@ export type { export type DocsBuildStrategy = _DocsBuildStrategy; /** * @public - * @deprecated import from `@backstage/plugin-techdocs-node` instead + * @deprecated use direct type definition instead */ -export type ShouldBuildParameters = _ShouldBuildParameters; +export type ShouldBuildParameters = { + entity: Entity; +}; /** * @public * @deprecated import from `@backstage/plugin-techdocs-node` instead diff --git a/plugins/techdocs-backend/src/service/DefaultDocsBuildStrategy.ts b/plugins/techdocs-backend/src/service/DefaultDocsBuildStrategy.ts index fe0f5206ba..bc2c586c82 100644 --- a/plugins/techdocs-backend/src/service/DefaultDocsBuildStrategy.ts +++ b/plugins/techdocs-backend/src/service/DefaultDocsBuildStrategy.ts @@ -13,11 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import { Entity } from '@backstage/catalog-model'; import { Config } from '@backstage/config'; -import { - DocsBuildStrategy, - ShouldBuildParameters, -} from '@backstage/plugin-techdocs-node'; +import { DocsBuildStrategy } from '@backstage/plugin-techdocs-node'; export class DefaultDocsBuildStrategy implements DocsBuildStrategy { private readonly config: Config; @@ -30,7 +28,7 @@ export class DefaultDocsBuildStrategy implements DocsBuildStrategy { return new DefaultDocsBuildStrategy(config); } - async shouldBuild(_: ShouldBuildParameters): Promise { + async shouldBuild(_: { entity: Entity }): Promise { return this.config.getString('techdocs.builder') === 'local'; } } diff --git a/plugins/techdocs-node/api-report.md b/plugins/techdocs-node/api-report.md index 3ce422cbc5..c267574642 100644 --- a/plugins/techdocs-node/api-report.md +++ b/plugins/techdocs-node/api-report.md @@ -28,7 +28,7 @@ export class DirectoryPreparer implements PreparerBase { // @public export interface DocsBuildStrategy { // (undocumented) - shouldBuild(params: ShouldBuildParameters): Promise; + shouldBuild(params: { entity: Entity }): Promise; } // @public @@ -233,11 +233,6 @@ export type ReadinessResponse = { // @public export type RemoteProtocol = 'url' | 'dir'; -// @public -export type ShouldBuildParameters = { - entity: Entity; -}; - // @public export type SupportedGeneratorKey = 'techdocs' | string; diff --git a/plugins/techdocs-node/src/techdocsTypes.ts b/plugins/techdocs-node/src/techdocsTypes.ts index 6fc3ffc65f..6a5ee522e1 100644 --- a/plugins/techdocs-node/src/techdocsTypes.ts +++ b/plugins/techdocs-node/src/techdocsTypes.ts @@ -48,20 +48,11 @@ export interface TechDocsDocument extends IndexableDocument { path: string; } -/** - * Parameters passed to the shouldBuild method on the DocsBuildStrategy interface - * - * @public - */ -export type ShouldBuildParameters = { - entity: Entity; -}; - /** * A strategy for when to build TechDocs locally, and when to skip building TechDocs (allowing for an external build) * * @public */ export interface DocsBuildStrategy { - shouldBuild(params: ShouldBuildParameters): Promise; + shouldBuild(params: { entity: Entity }): Promise; } From 6d1f5fcc5e872b51e8fd92b262fa1dfaa9fe076e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 25 Oct 2023 00:27:43 +0000 Subject: [PATCH 081/102] chore(deps): update dependency @types/base64-stream to v1.0.4 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 9ca654b935..731956aeff 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18182,11 +18182,11 @@ __metadata: linkType: hard "@types/base64-stream@npm:^1.0.2": - version: 1.0.3 - resolution: "@types/base64-stream@npm:1.0.3" + version: 1.0.4 + resolution: "@types/base64-stream@npm:1.0.4" dependencies: "@types/node": "*" - checksum: 4c0328ad7540d57e0f7ddf0135941adc0d1902e6b0f5d6f93537b417d82ae8f996389e14269c67e7c29f9eb6fc717f2f47ffa3f7e35f9a8096e84c3ee7b9853f + checksum: 498dc3a71f9e6a598761616749697621c1b70f5ae79d24bb7f1b88a924c9865d82ac910eff5a41912194c4834e93e0b7da075418ebb61356c0d3dc4806e8007e languageName: node linkType: hard From eb935f195108b47998c5912c339c4f0bbcf69b05 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 25 Oct 2023 01:39:02 +0000 Subject: [PATCH 082/102] chore(deps): update dependency @types/body-parser to v1.19.4 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 731956aeff..8011382c8c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18204,12 +18204,12 @@ __metadata: linkType: hard "@types/body-parser@npm:*, @types/body-parser@npm:^1.19.0": - version: 1.19.3 - resolution: "@types/body-parser@npm:1.19.3" + version: 1.19.4 + resolution: "@types/body-parser@npm:1.19.4" dependencies: "@types/connect": "*" "@types/node": "*" - checksum: 932fa71437c275023799123680ef26ffd90efd37f51a1abe405e6ae6e5b4ad9511b7a3a8f5a12877ed1444a02b6286c0a137a98e914b3c61932390c83643cc2c + checksum: 10accc30773319bd49af7d12d2cd5faf9a0293ea4764345297f26ba6ef31d5caa7609da7619584d6c61279e09b89d3ab13d28c5cb644807c5d9c722ae1454778 languageName: node linkType: hard From 5266644a2c265217b4b701f9936ddde65a69eef4 Mon Sep 17 00:00:00 2001 From: Camila Belo Date: Wed, 25 Oct 2023 08:46:55 +0200 Subject: [PATCH 083/102] test(home): react grid layout version Signed-off-by: Camila Belo --- plugins/home/src/plugin.test.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/plugins/home/src/plugin.test.ts b/plugins/home/src/plugin.test.ts index 920a9076f4..1526bd0c61 100644 --- a/plugins/home/src/plugin.test.ts +++ b/plugins/home/src/plugin.test.ts @@ -13,10 +13,19 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + +import packageJson from '../package.json'; import { homePlugin } from './plugin'; describe('home', () => { it('should export plugin', () => { expect(homePlugin).toBeDefined(); }); + + // Temporarily ensure we are installing a working version of the react-grid-layout library + // For more details, see: https://github.com/react-grid-layout/react-grid-layout/issues/1959 + // TODO(@backstage/discoverability-maintainers): Delete this once the sub-dependency issue has been resolved. + it('should pin react-grid-layout version to 1.3.4', async () => { + expect(packageJson.dependencies['react-grid-layout']).toBe('1.3.4'); + }); }); From 90310ed807c76e0af07f1a0e2b91e0647bc2cf83 Mon Sep 17 00:00:00 2001 From: Camila Belo Date: Wed, 25 Oct 2023 08:48:37 +0200 Subject: [PATCH 084/102] test(example-app): home page grid layout Signed-off-by: Camila Belo --- packages/app/e2e-tests/HomePage.test.ts | 74 +++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 packages/app/e2e-tests/HomePage.test.ts diff --git a/packages/app/e2e-tests/HomePage.test.ts b/packages/app/e2e-tests/HomePage.test.ts new file mode 100644 index 0000000000..0b1459935f --- /dev/null +++ b/packages/app/e2e-tests/HomePage.test.ts @@ -0,0 +1,74 @@ +/* + * Copyright 2021 The 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 { test, expect } from '@playwright/test'; + +test('Should not throw `ResizeObserver loop completed with undelivered notifications`', async ({ + page, +}) => { + await page.goto('/'); + + const enterButton = page.getByRole('button', { name: 'Enter' }); + await expect(enterButton).toBeVisible(); + await enterButton.click(); + + await page.goto('/home'); + await expect( + page + .frameLocator('#webpack-dev-server-client-overlay') + .getByText( + /ResizeObserver loop completed with undelivered notifications/, + ), + ).not.toBeVisible(); +}); + +test('Should resize widgets vertically and horizontally', async ({ page }) => { + await page.goto('/'); + + const enterButton = page.getByRole('button', { name: 'Enter' }); + await expect(enterButton).toBeVisible(); + await enterButton.click(); + + await page.goto('/home'); + await expect(page.getByText('Backstage Example App')).toBeVisible(); + + // Start editing mode + await page.getByRole('button', { name: /Edit/ }).click(); + await expect(page.getByRole('button', { name: /Save/ })).toBeVisible(); + + // Resize the last installed widget + const widgetElement = await page.locator('.react-grid-item:nth-child(3)'); + const defaultWidgetBox = { x: 1, y: 1, width: 1, height: 1 }; + const widgetBoxBefore = + (await widgetElement.boundingBox()) ?? defaultWidgetBox; + const widgetResizeHandle = await widgetElement.locator( + '.react-resizable-handle', + ); + await widgetResizeHandle.hover(); + await page.mouse.down(); + await page.mouse.move(widgetBoxBefore.width / 2, widgetBoxBefore.height / 2); + await page.mouse.up(); + const widgetBoxAfter = + (await widgetElement.boundingBox()) ?? defaultWidgetBox; + + // Ensure that both height and width was reduced + expect(widgetBoxAfter.width).toBeLessThan(widgetBoxBefore.width); + expect(widgetBoxAfter.height).toBeLessThan(widgetBoxBefore.height); + + // Exit editing mode + await page.getByRole('button', { name: 'Save' }).click(); + await expect(page.getByRole('button', { name: /Edit/ })).toBeVisible(); +}); From ad7d38c4b68823cfff5c5ddadcc7050130573149 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Wed, 25 Oct 2023 11:26:57 +0200 Subject: [PATCH 085/102] fix tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- ...aultAzureDevOpsCredentialsProvider.test.ts | 78 ++++++++----------- .../src/service/KubernetesProxy.test.ts | 1 - plugins/vault/src/api.test.ts | 2 - 3 files changed, 31 insertions(+), 50 deletions(-) diff --git a/packages/integration/src/azure/DefaultAzureDevOpsCredentialsProvider.test.ts b/packages/integration/src/azure/DefaultAzureDevOpsCredentialsProvider.test.ts index 8f66d5742d..6e171eff77 100644 --- a/packages/integration/src/azure/DefaultAzureDevOpsCredentialsProvider.test.ts +++ b/packages/integration/src/azure/DefaultAzureDevOpsCredentialsProvider.test.ts @@ -49,6 +49,19 @@ const MockedDefaultAzureCredential = DefaultAzureCredential as jest.MockedClass< jest.mock('@azure/identity'); describe('DefaultAzureDevOpsCredentialProvider', () => { + const fromAzureDevOpsCredential = jest.spyOn( + CachedAzureDevOpsCredentialsProvider, + 'fromAzureDevOpsCredential', + ); + const fromTokenCredential = jest.spyOn( + CachedAzureDevOpsCredentialsProvider, + 'fromTokenCredential', + ); + const fromPersonalAccessTokenCredential = jest.spyOn( + CachedAzureDevOpsCredentialsProvider, + 'fromPersonalAccessTokenCredential', + ); + const buildProvider = (azureIntegrations: AzureIntegrationConfigLike[]) => DefaultAzureDevOpsCredentialsProvider.fromIntegrations( ScmIntegrations.fromConfig( @@ -61,8 +74,7 @@ describe('DefaultAzureDevOpsCredentialProvider', () => { ); beforeEach(() => { - jest.resetAllMocks(); - + jest.clearAllMocks(); MockedClientSecretCredential.prototype.getToken.mockImplementation(() => Promise.resolve({ expiresOnTimestamp: DateTime.local().plus({ days: 1 }).toSeconds(), @@ -83,18 +95,6 @@ describe('DefaultAzureDevOpsCredentialProvider', () => { token: 'fake-default-azure-credential-token', } as AccessToken), ); - - jest.spyOn( - CachedAzureDevOpsCredentialsProvider, - 'fromAzureDevOpsCredential', - ); - - jest.spyOn(CachedAzureDevOpsCredentialsProvider, 'fromTokenCredential'); - - jest.spyOn( - CachedAzureDevOpsCredentialsProvider, - 'fromPersonalAccessTokenCredential', - ); }); describe('fromIntegrations', () => { @@ -111,9 +111,7 @@ describe('DefaultAzureDevOpsCredentialProvider', () => { ]); expect(provider).toBeDefined(); - expect( - CachedAzureDevOpsCredentialsProvider.fromAzureDevOpsCredential, - ).toHaveBeenCalledTimes(1); + expect(fromAzureDevOpsCredential).toHaveBeenCalledTimes(1); }); it('Should create a single credential provider per credential', async () => { @@ -134,9 +132,7 @@ describe('DefaultAzureDevOpsCredentialProvider', () => { ]); expect(provider).toBeDefined(); - expect( - CachedAzureDevOpsCredentialsProvider.fromAzureDevOpsCredential, - ).toHaveBeenCalledTimes(2); + expect(fromAzureDevOpsCredential).toHaveBeenCalledTimes(2); }); it('Should create a default credential provider for Azure DevOps when no credential is specified', async () => { @@ -148,13 +144,11 @@ describe('DefaultAzureDevOpsCredentialProvider', () => { ]); expect(provider).toBeDefined(); - expect( - CachedAzureDevOpsCredentialsProvider.fromTokenCredential, - ).toHaveBeenCalledTimes(1); + expect(fromTokenCredential).toHaveBeenCalledTimes(1); - expect( - CachedAzureDevOpsCredentialsProvider.fromTokenCredential, - ).toHaveBeenCalledWith(new DefaultAzureCredential()); + expect(fromTokenCredential).toHaveBeenCalledWith( + new DefaultAzureCredential(), + ); }); it('Should create a default credential provider for Azure DevOps when no default credential is specified', async () => { @@ -173,13 +167,11 @@ describe('DefaultAzureDevOpsCredentialProvider', () => { ]); expect(provider).toBeDefined(); - expect( - CachedAzureDevOpsCredentialsProvider.fromTokenCredential, - ).toHaveBeenCalledTimes(2); + expect(fromTokenCredential).toHaveBeenCalledTimes(2); - expect( - CachedAzureDevOpsCredentialsProvider.fromTokenCredential, - ).toHaveBeenCalledWith(new DefaultAzureCredential()); + expect(fromTokenCredential).toHaveBeenCalledWith( + new DefaultAzureCredential(), + ); }); it('Should not create a default credential provider for Azure DevOps when another default credential is specified', async () => { @@ -197,13 +189,11 @@ describe('DefaultAzureDevOpsCredentialProvider', () => { ]); expect(provider).toBeDefined(); - expect( - CachedAzureDevOpsCredentialsProvider.fromTokenCredential, - ).toHaveBeenCalledTimes(1); + expect(fromTokenCredential).toHaveBeenCalledTimes(1); - expect( - CachedAzureDevOpsCredentialsProvider.fromTokenCredential, - ).toHaveBeenCalledWith(expect.any(ClientSecretCredential)); + expect(fromTokenCredential).toHaveBeenCalledWith( + expect.any(ClientSecretCredential), + ); }); it('Should not create a default credential provider for on-premise Azure DevOps server when no credential is specified', async () => { @@ -215,18 +205,12 @@ describe('DefaultAzureDevOpsCredentialProvider', () => { ]); expect(provider).toBeDefined(); - expect( - CachedAzureDevOpsCredentialsProvider.fromAzureDevOpsCredential, - ).toHaveBeenCalledTimes(0); + expect(fromAzureDevOpsCredential).toHaveBeenCalledTimes(0); // expect 1 call because the Azure integration adds a default integration for dev.azure.com when it is not configured - expect( - CachedAzureDevOpsCredentialsProvider.fromTokenCredential, - ).toHaveBeenCalledTimes(1); + expect(fromTokenCredential).toHaveBeenCalledTimes(1); - expect( - CachedAzureDevOpsCredentialsProvider.fromPersonalAccessTokenCredential, - ).toHaveBeenCalledTimes(0); + expect(fromPersonalAccessTokenCredential).toHaveBeenCalledTimes(0); }); }); diff --git a/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts b/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts index 27d57cd854..9bee21867d 100644 --- a/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts +++ b/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts @@ -123,7 +123,6 @@ describe('KubernetesProxy', () => { }; beforeEach(() => { - jest.resetAllMocks(); authStrategy = { getCredential: jest .fn< diff --git a/plugins/vault/src/api.test.ts b/plugins/vault/src/api.test.ts index eb122a92d1..7ecd09b6f4 100644 --- a/plugins/vault/src/api.test.ts +++ b/plugins/vault/src/api.test.ts @@ -68,8 +68,6 @@ describe('api', () => { }; beforeEach(() => { - jest.resetAllMocks(); - setupHandlers(); api = new VaultClient({ discoveryApi, fetchApi }); From 5fadbd6e2de3dc16074edb71a53cab29b33899d4 Mon Sep 17 00:00:00 2001 From: Mitchell Hentges Date: Wed, 25 Oct 2023 11:46:16 +0200 Subject: [PATCH 086/102] docs: backstage-deploy - clarify why Pulumi is needed, downgrade warning This will make it more clear why users need to install Pulumi. The "Ensure Docker is running" warning is downgraded to a tip because "warning" felt a little too aggressive :) Signed-off-by: Mitchell Hentges --- docs/deployment/backstage-deploy/aws.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/deployment/backstage-deploy/aws.md b/docs/deployment/backstage-deploy/aws.md index 957dc27437..818850a6f5 100644 --- a/docs/deployment/backstage-deploy/aws.md +++ b/docs/deployment/backstage-deploy/aws.md @@ -107,7 +107,9 @@ $ export AWS_SECRET_ACCESS_KEY=.... (second secret value) ## Configuring the Pulumi CLI -Second, install the [Pulumi CLI](https://www.pulumi.com/docs/get-started/install/). +Second, install the [Pulumi CLI](https://www.pulumi.com/docs/get-started/install/) - `backstage-deploy` uses it to +simplify the management of cloud resources (Pulumi allows us to simply specify the desired "target cloud state", and +Pulumi will intelligently create/modify/delete resources to reach that state. Nice!). Then we need to execute the following commands, to set Pulumi up: @@ -126,9 +128,9 @@ By using `pulumi login --local` we are making sure that Pulumi stores our state ## Deploying your instance on Lightsail -:::warning +:::tip -Make sure that [Docker](https://docs.docker.com/) is running before you start this section. +Make sure that [Docker](https://docs.docker.com/) is running on your machine before you start this section. ::: From d6170b2912d97798d58ad028de482deef7826b99 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 25 Oct 2023 10:11:37 +0000 Subject: [PATCH 087/102] chore(deps): update dependency @types/color to v3.0.5 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 900a5280e1..0b86c2a955 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18286,11 +18286,11 @@ __metadata: linkType: hard "@types/color@npm:^3.0.1": - version: 3.0.4 - resolution: "@types/color@npm:3.0.4" + version: 3.0.5 + resolution: "@types/color@npm:3.0.5" dependencies: "@types/color-convert": "*" - checksum: 46935626ddeb8ae8877488b1f8f2f71b17a529c113673301a1dd7a64d917cb7a748545ac34ed30c188d66a2cd09c33abc24c87bd5b3a80d520cf1f35aaa2e476 + checksum: 82cce7cb132b5c0898dd69b92a4663e34ad8f19db6a009bef7ef79d4840ddb4d5f7e793e2e64e3b4a60da92dc2ae33d1aa498981d0fcf0562917c9550603a99d languageName: node linkType: hard From 389d7fc2ffb6cdcaf941cb417c2fccd5c12449e9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 25 Oct 2023 10:56:20 +0000 Subject: [PATCH 088/102] chore(deps): update dependency @types/command-exists to v1.2.2 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 0b86c2a955..106ff4a616 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18295,9 +18295,9 @@ __metadata: linkType: hard "@types/command-exists@npm:^1.2.0": - version: 1.2.1 - resolution: "@types/command-exists@npm:1.2.1" - checksum: 51e5d13cb06b9a5780e85e0612b924eda01d00919a75b6645fbdc7344c610ac19e8e122e2da9db5e91473cf88a3d71cfd93a294f1c31f2beabb835b6ab7e85d1 + version: 1.2.2 + resolution: "@types/command-exists@npm:1.2.2" + checksum: 75ce30dc03c5a9b26a8c0fcbe903d5189d7470aef713c5bf73d6d284be0f5cd4d8b388f30aedf81eb5b9f9b788ccc9ed775a13e21c25837017bb2d086b1bb06e languageName: node linkType: hard From e16e2602d0cd9a3b619e80245e07df9f2b2ac235 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 25 Oct 2023 11:40:15 +0000 Subject: [PATCH 089/102] chore(deps): update dependency @types/compression to v1.7.4 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 106ff4a616..57f052ea76 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18311,11 +18311,11 @@ __metadata: linkType: hard "@types/compression@npm:^1.7.0, @types/compression@npm:^1.7.2": - version: 1.7.3 - resolution: "@types/compression@npm:1.7.3" + version: 1.7.4 + resolution: "@types/compression@npm:1.7.4" dependencies: "@types/express": "*" - checksum: 9a65519e8cc894246466fc8828a82045d0d3db97a3d7367381855c8fd10080d752ac10c2274de4668985225c72f3124bf5aeee75656b992837a21c64f8eb1789 + checksum: 0994e68158ae991d1839f950c553141cf95606a2660bcedf11d68eeb7609caf21b03f256aed1ea4243e89cf8adf358d0a2920513316ea2ec6a2d3e2eacfa02c7 languageName: node linkType: hard From 67838547efd86ff7f6515192119224e01fc09d57 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 25 Oct 2023 12:46:06 +0000 Subject: [PATCH 090/102] chore(deps): update dependency @types/concat-stream to v2.0.1 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 57f052ea76..29b6606eb8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18320,11 +18320,11 @@ __metadata: linkType: hard "@types/concat-stream@npm:^2.0.0": - version: 2.0.0 - resolution: "@types/concat-stream@npm:2.0.0" + version: 2.0.1 + resolution: "@types/concat-stream@npm:2.0.1" dependencies: "@types/node": "*" - checksum: d82ace5cb92f9fc91660ae1a101fa0a6b6159da59b0351c28627b24c317670267bc527f24ef4fa2c08d00404b49882ca66bf5c75d47d2b5f48d2fd85f9c2ea4d + checksum: 5cbcaf6b0499a58674b0ada4c6c55a31a6907e515b141d75e2e96790cbda0bb32416d4f513fefc17dc08bd400bbb4687081d9046896a64569335ca39a9ad9fff languageName: node linkType: hard From 5aeb14f03578ca7bd8a1790ab1bea5c7adc03f9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Wed, 25 Oct 2023 15:33:14 +0200 Subject: [PATCH 091/102] mistakenly changed secret marker MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/real-apes-build.md | 5 +++++ plugins/auth-backend-module-microsoft-provider/config.d.ts | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/real-apes-build.md diff --git a/.changeset/real-apes-build.md b/.changeset/real-apes-build.md new file mode 100644 index 0000000000..5481bebf3a --- /dev/null +++ b/.changeset/real-apes-build.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-auth-backend-module-microsoft-provider': patch +--- + +Correctly mark the client secret in configuration as secret diff --git a/plugins/auth-backend-module-microsoft-provider/config.d.ts b/plugins/auth-backend-module-microsoft-provider/config.d.ts index 5f1fa958e5..c58178d6eb 100644 --- a/plugins/auth-backend-module-microsoft-provider/config.d.ts +++ b/plugins/auth-backend-module-microsoft-provider/config.d.ts @@ -21,10 +21,10 @@ export interface Config { microsoft?: { [authEnv: string]: { clientId: string; + tenantId: string; /** * @visibility secret */ - tenantId: string; clientSecret: string; callbackUrl?: string; }; From 13fd639b2958dd385df8ed5ded65bec04ca90dd5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 25 Oct 2023 13:41:37 +0000 Subject: [PATCH 092/102] chore(deps): update dependency @types/cookie-parser to v1.4.5 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 29b6606eb8..7d6dbb8c53 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18348,11 +18348,11 @@ __metadata: linkType: hard "@types/cookie-parser@npm:^1.4.2": - version: 1.4.4 - resolution: "@types/cookie-parser@npm:1.4.4" + version: 1.4.5 + resolution: "@types/cookie-parser@npm:1.4.5" dependencies: "@types/express": "*" - checksum: 5c81ac4b7d90a567e0c7a904ecbc09c82c43e30c6b5b507aee5147bc06bc8c6418e6719d63fcf68e6a83c71870485ab3fc579a30891b56a0be05d64753e3f74a + checksum: 45855721706d6a57bb0441db11fb59db407414ea83a0000a0df80d19230447cc3bcc43c436397bfb8998ec78db222265fa8083456b00c5b5054a0c03d06f0086 languageName: node linkType: hard From 0964c2f81372ff1e43b3e90374e9108973b87ab4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 25 Oct 2023 14:23:27 +0000 Subject: [PATCH 093/102] chore(deps): update dependency @types/core-js to v2.5.7 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 29b6606eb8..b31a56bf04 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18371,9 +18371,9 @@ __metadata: linkType: hard "@types/core-js@npm:^2.5.4": - version: 2.5.6 - resolution: "@types/core-js@npm:2.5.6" - checksum: 05cfeea4c918c88afcff5949e05a66c9c6cccd67f3de80732609d2546da0fdbd4350d6ecb415d4301f877e5ae1073c8afc0d500233f2b8826dd66d14c6e0c854 + version: 2.5.7 + resolution: "@types/core-js@npm:2.5.7" + checksum: a5ddeaa7103772eaee156d0182779f11e98983cbd76f1b1784dc919b9d59fa4575c608c8e7a31bfe08035e1890d6686b82ee9484a1def17402a1b8983e22ffaf languageName: node linkType: hard From 77fd578ab1a2440f13834bca75418fdc6c0df35f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 25 Oct 2023 14:36:45 +0000 Subject: [PATCH 094/102] chore(deps): update dependency @types/cross-spawn to v6.0.4 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 7d6dbb8c53..87ba229c5d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18397,11 +18397,11 @@ __metadata: linkType: hard "@types/cross-spawn@npm:^6.0.2": - version: 6.0.3 - resolution: "@types/cross-spawn@npm:6.0.3" + version: 6.0.4 + resolution: "@types/cross-spawn@npm:6.0.4" dependencies: "@types/node": "*" - checksum: 06d50fa1e1370ef60b9c9085b76adec7d7bc20728fbb02b3c2061d4d922312acf1ba56a7c94d88c27a22fc6241ab6b970c936f3294038a9c97a719fbc8eb8a76 + checksum: 45624a955c064dda167f8aae5560918307110e3a1221989b5957c52842208c2ee29e099c9120615b1dde66afe7a7c3db627c754e328f574a0ae313644e43ceef languageName: node linkType: hard From 507891226a1f5f44143c19adb8189c2330efbd02 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 25 Oct 2023 15:21:34 +0000 Subject: [PATCH 095/102] chore(deps): update dependency @types/d3-force to v3.0.7 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 1c7d335f57..758d8deaa8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18435,9 +18435,9 @@ __metadata: linkType: hard "@types/d3-force@npm:^3.0.0": - version: 3.0.6 - resolution: "@types/d3-force@npm:3.0.6" - checksum: 092d7a4efc1bef06de4a087e1bdb609e21588429ba2ce978785bb13e1ed7371dd08692408379d9582e03ed945c6cf117dff3b3ed1dd2141d94aac9e12994498d + version: 3.0.7 + resolution: "@types/d3-force@npm:3.0.7" + checksum: fd846e5d79dabd8d375b68c64cd218b4867e229eb6cb584b302ed9b96105cb267300fee63b0cd762417c28168d0a64047b7e6eff2acc8b5c561fded74f86fa8c languageName: node linkType: hard From c875e2db99bc00bdff00346298c948efc0c7a7ce Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 25 Oct 2023 15:31:24 +0000 Subject: [PATCH 096/102] chore(deps): update dependency @types/d3-selection to v3.0.8 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 38f54f7fbb..710fc49f31 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18474,9 +18474,9 @@ __metadata: linkType: hard "@types/d3-selection@npm:*, @types/d3-selection@npm:^3.0.1": - version: 3.0.7 - resolution: "@types/d3-selection@npm:3.0.7" - checksum: 715a0c7a78732650ae70b3487b3b6432b063482c1937bcd52c8b7a201563103170fdaa1f8c0ace882062521ac009f07fefb41198c8c43c5d3c518f8368c459d6 + version: 3.0.8 + resolution: "@types/d3-selection@npm:3.0.8" + checksum: 5655584116a97876d22c68387551d6e029d306894ca15c5b71635c2cc528288bddee67799ae2c677b028f2f26f99fcc8d598e47f5a67d5c1e3dd9b5507771f90 languageName: node linkType: hard From 8b4d44ed9d0b7a13d118c98fcd1013a242007952 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 25 Oct 2023 16:24:43 +0000 Subject: [PATCH 097/102] chore(deps): update dependency @types/d3-shape to v3.1.4 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/yarn.lock b/yarn.lock index 710fc49f31..b8cebef446 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18481,20 +18481,20 @@ __metadata: linkType: hard "@types/d3-shape@npm:^1": - version: 1.3.9 - resolution: "@types/d3-shape@npm:1.3.9" + version: 1.3.10 + resolution: "@types/d3-shape@npm:1.3.10" dependencies: "@types/d3-path": ^1 - checksum: a4df0c09df4f97a017fbb229a096af6e25fe84e331dfb8c9b1f248a7f3df6f07c871879fabb31050cbec78f34127397a8134a16f2a2359ff681ec846cf886754 + checksum: c5fcb5da6388ffe5b0594d001940bf88589e174ca1b6cb6ffe3367fb8157b7bd70f15a555642abfa1acdf679860e0c1247bbc1f59395fcded29255638f661b55 languageName: node linkType: hard "@types/d3-shape@npm:^3.0.1, @types/d3-shape@npm:^3.1.0": - version: 3.1.3 - resolution: "@types/d3-shape@npm:3.1.3" + version: 3.1.4 + resolution: "@types/d3-shape@npm:3.1.4" dependencies: "@types/d3-path": "*" - checksum: ad17781ab4ce4b796954b86de7e14566c731726d39a1db7d73eaf50668a71e996d715450a0ff9f2720755e1b8643c3e88d47d45101a75c9d4ddbef51a636f6a0 + checksum: 3d529cc96127d8d58da05bc602e51bb7946171bdae96dcce9dae81c1549d3fd3f226a4e651c3302951a1ebf7803e86388c4afcdd654b0d40d203219ce68eb383 languageName: node linkType: hard From 042d58a31f224e3d8d70d969a64b3899411f4a0b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 25 Oct 2023 17:00:04 +0000 Subject: [PATCH 098/102] chore(deps): update dependency @types/d3-zoom to v3.0.6 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 710fc49f31..f479fe8c9b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18513,12 +18513,12 @@ __metadata: linkType: hard "@types/d3-zoom@npm:^3.0.1": - version: 3.0.5 - resolution: "@types/d3-zoom@npm:3.0.5" + version: 3.0.6 + resolution: "@types/d3-zoom@npm:3.0.6" dependencies: "@types/d3-interpolate": "*" "@types/d3-selection": "*" - checksum: acff15a30b2b81a99b46692c7aacc110c635a272e8d7e87af6aa5a01ebe9ebcafcaf475399d79ec73461a5ef037041dade49a6371d7587b759710123539b81b0 + checksum: 6b0ad10b6a7bab3acfdc92b0cd34c74698305a71e2fefb20eae1e3bac95cbf70c6434be5ea2c1c71bbe9fcb134c66da44fdd75673437199e9a90aea8aea0f7e7 languageName: node linkType: hard From b7f36ead90323d07b545afb0147f657130a836b1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 25 Oct 2023 17:00:18 +0000 Subject: [PATCH 099/102] chore(deps): update actions/checkout action to v4 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/automate_changeset_feedback.yml | 2 +- .github/workflows/automate_merge_message.yml | 2 +- .github/workflows/ci.yml | 6 +++--- .github/workflows/deploy_docker-image.yml | 2 +- .github/workflows/deploy_microsite.yml | 2 +- .github/workflows/deploy_nightly.yml | 2 +- .github/workflows/deploy_packages.yml | 4 ++-- .github/workflows/scorecard.yml | 2 +- .github/workflows/sync_code-formatting.yml | 2 +- .github/workflows/sync_dependabot-changesets.yml | 2 +- .github/workflows/sync_release-manifest.yml | 4 ++-- .github/workflows/sync_renovate-changesets.yml | 2 +- .github/workflows/sync_snyk-github-issues.yml | 2 +- .github/workflows/sync_snyk-monitor.yml | 2 +- .github/workflows/sync_version-packages.yml | 2 +- .github/workflows/uffizzi-build.yml | 4 ++-- .github/workflows/verify_accessibility.yml | 2 +- .github/workflows/verify_codeql.yml | 2 +- .github/workflows/verify_docs-quality.yml | 2 +- .github/workflows/verify_e2e-kubernetes.yml | 2 +- .github/workflows/verify_e2e-linux.yml | 2 +- .github/workflows/verify_e2e-techdocs.yml | 2 +- .github/workflows/verify_e2e-windows.yml | 2 +- .github/workflows/verify_fossa.yml | 2 +- .github/workflows/verify_microsite.yml | 2 +- .github/workflows/verify_storybook.yml | 2 +- .github/workflows/verify_windows.yml | 2 +- 27 files changed, 32 insertions(+), 32 deletions(-) diff --git a/.github/workflows/automate_changeset_feedback.yml b/.github/workflows/automate_changeset_feedback.yml index eac020cb8e..56aa3f58f8 100644 --- a/.github/workflows/automate_changeset_feedback.yml +++ b/.github/workflows/automate_changeset_feedback.yml @@ -27,7 +27,7 @@ jobs: with: egress-policy: audit - - uses: actions/checkout@v3.6.0 + - uses: actions/checkout@v4.1.1 with: # Fetch the commit that's merged into the base rather than the target ref # This will let us diff only the contents of the PR, without fetching more history diff --git a/.github/workflows/automate_merge_message.yml b/.github/workflows/automate_merge_message.yml index 4cbf6c69a2..c7a02db354 100644 --- a/.github/workflows/automate_merge_message.yml +++ b/.github/workflows/automate_merge_message.yml @@ -28,7 +28,7 @@ jobs: with: egress-policy: audit - - uses: actions/checkout@v3.6.0 + - uses: actions/checkout@v4.1.1 with: ref: '${{ github.event.pull_request.merge_commit_sha }}' diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4e3ec626d7..bd5a0385fc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -31,7 +31,7 @@ jobs: with: egress-policy: audit - - uses: actions/checkout@v3.6.0 + - uses: actions/checkout@v4.1.1 - name: use node.js ${{ matrix.node-version }} uses: actions/setup-node@v3.8.1 @@ -67,7 +67,7 @@ jobs: with: egress-policy: audit - - uses: actions/checkout@v3.6.0 + - uses: actions/checkout@v4.1.1 - name: use node.js ${{ matrix.node-version }} uses: actions/setup-node@v3.8.1 @@ -196,7 +196,7 @@ jobs: INTEGRATION_TEST_AZURE_TOKEN: ${{ secrets.INTEGRATION_TEST_AZURE_TOKEN }} steps: - - uses: actions/checkout@v3.6.0 + - uses: actions/checkout@v4.1.1 - name: fetch branch master run: git fetch origin master diff --git a/.github/workflows/deploy_docker-image.yml b/.github/workflows/deploy_docker-image.yml index 69776da2d9..68dfe9419a 100644 --- a/.github/workflows/deploy_docker-image.yml +++ b/.github/workflows/deploy_docker-image.yml @@ -19,7 +19,7 @@ jobs: egress-policy: audit - name: checkout - uses: actions/checkout@v3.6.0 + uses: actions/checkout@v4.1.1 with: path: backstage ref: v${{ github.event.client_payload.version }} diff --git a/.github/workflows/deploy_microsite.yml b/.github/workflows/deploy_microsite.yml index f614db31ca..7012a34205 100644 --- a/.github/workflows/deploy_microsite.yml +++ b/.github/workflows/deploy_microsite.yml @@ -28,7 +28,7 @@ jobs: with: egress-policy: audit - - uses: actions/checkout@v3.6.0 + - uses: actions/checkout@v4.1.1 - name: use node.js 18.x uses: actions/setup-node@v3.8.1 diff --git a/.github/workflows/deploy_nightly.yml b/.github/workflows/deploy_nightly.yml index 7184557e12..721278b89a 100644 --- a/.github/workflows/deploy_nightly.yml +++ b/.github/workflows/deploy_nightly.yml @@ -19,7 +19,7 @@ jobs: with: egress-policy: audit - - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: use node.js 18.x uses: actions/setup-node@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d # v3.8.1 diff --git a/.github/workflows/deploy_packages.yml b/.github/workflows/deploy_packages.yml index 32f4b139f2..595d8f0792 100644 --- a/.github/workflows/deploy_packages.yml +++ b/.github/workflows/deploy_packages.yml @@ -60,7 +60,7 @@ jobs: INTEGRATION_TEST_AZURE_TOKEN: ${{ secrets.INTEGRATION_TEST_AZURE_TOKEN }} steps: - - uses: actions/checkout@v3.6.0 + - uses: actions/checkout@v4.1.1 - name: use node.js ${{ matrix.node-version }} uses: actions/setup-node@v3.8.1 @@ -142,7 +142,7 @@ jobs: with: egress-policy: audit - - uses: actions/checkout@v3.6.0 + - uses: actions/checkout@v4.1.1 - name: use node.js ${{ matrix.node-version }} uses: actions/setup-node@v3.8.1 diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 0f99453bba..3b017e759c 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -34,7 +34,7 @@ jobs: egress-policy: audit - name: 'Checkout code' - uses: actions/checkout@v3.6.0 + uses: actions/checkout@v4.1.1 with: persist-credentials: false diff --git a/.github/workflows/sync_code-formatting.yml b/.github/workflows/sync_code-formatting.yml index 610ad323e2..af94d58d5a 100644 --- a/.github/workflows/sync_code-formatting.yml +++ b/.github/workflows/sync_code-formatting.yml @@ -14,7 +14,7 @@ jobs: with: egress-policy: audit - - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: # Fetch changes to previous commit - required for 'only_changed' in Prettier action fetch-depth: 0 diff --git a/.github/workflows/sync_dependabot-changesets.yml b/.github/workflows/sync_dependabot-changesets.yml index 2ac6d7f0d0..40886015ca 100644 --- a/.github/workflows/sync_dependabot-changesets.yml +++ b/.github/workflows/sync_dependabot-changesets.yml @@ -16,7 +16,7 @@ jobs: egress-policy: audit - name: Checkout - uses: actions/checkout@v3.6.0 + uses: actions/checkout@v4.1.1 with: fetch-depth: 2 ref: ${{ github.head_ref }} diff --git a/.github/workflows/sync_release-manifest.yml b/.github/workflows/sync_release-manifest.yml index 46d5d5382a..d56137412d 100644 --- a/.github/workflows/sync_release-manifest.yml +++ b/.github/workflows/sync_release-manifest.yml @@ -21,7 +21,7 @@ jobs: run: npm install semver@7.3.5 fs-extra@10.0.0 @manypkg/get-packages@1.1.1 - name: Checkout - uses: actions/checkout@v3.6.0 + uses: actions/checkout@v4.1.1 with: path: backstage # 'v' prefix is added here for the tag, we keep it out of the manifest logic @@ -29,7 +29,7 @@ jobs: # Checkout backstage/versions into /backstage/versions, which is where store the output - name: Checkout versions - uses: actions/checkout@v3.6.0 + uses: actions/checkout@v4.1.1 with: repository: backstage/versions path: backstage/versions diff --git a/.github/workflows/sync_renovate-changesets.yml b/.github/workflows/sync_renovate-changesets.yml index 738abcf773..88b1430784 100644 --- a/.github/workflows/sync_renovate-changesets.yml +++ b/.github/workflows/sync_renovate-changesets.yml @@ -16,7 +16,7 @@ jobs: egress-policy: audit - name: Checkout - uses: actions/checkout@v3.6.0 + uses: actions/checkout@v4.1.1 with: fetch-depth: 2 ref: ${{ github.head_ref }} diff --git a/.github/workflows/sync_snyk-github-issues.yml b/.github/workflows/sync_snyk-github-issues.yml index 551ef559a1..aecf64a1f4 100644 --- a/.github/workflows/sync_snyk-github-issues.yml +++ b/.github/workflows/sync_snyk-github-issues.yml @@ -16,7 +16,7 @@ jobs: with: egress-policy: audit - - uses: actions/checkout@v3.6.0 + - uses: actions/checkout@v4.1.1 - name: use node.js 18.x uses: actions/setup-node@v3.8.1 diff --git a/.github/workflows/sync_snyk-monitor.yml b/.github/workflows/sync_snyk-monitor.yml index 3c41aedee3..9268fc4975 100644 --- a/.github/workflows/sync_snyk-monitor.yml +++ b/.github/workflows/sync_snyk-monitor.yml @@ -29,7 +29,7 @@ jobs: with: egress-policy: audit - - uses: actions/checkout@v3.6.0 + - uses: actions/checkout@v4.1.1 - name: Monitor and Synchronize Snyk Policies uses: snyk/actions/node@39091e69b560da335383b404e50d65b408f4f812 # master with: diff --git a/.github/workflows/sync_version-packages.yml b/.github/workflows/sync_version-packages.yml index 929fb9cc89..4ff6ce94f3 100644 --- a/.github/workflows/sync_version-packages.yml +++ b/.github/workflows/sync_version-packages.yml @@ -18,7 +18,7 @@ jobs: with: egress-policy: audit - - uses: actions/checkout@v3.6.0 + - uses: actions/checkout@v4.1.1 with: fetch-depth: 20000 fetch-tags: true diff --git a/.github/workflows/uffizzi-build.yml b/.github/workflows/uffizzi-build.yml index 375c6bdcd2..c53083307b 100644 --- a/.github/workflows/uffizzi-build.yml +++ b/.github/workflows/uffizzi-build.yml @@ -25,7 +25,7 @@ jobs: egress-policy: audit - name: checkout - uses: actions/checkout@v3.6.0 + uses: actions/checkout@v4.1.1 - name: setup-node uses: actions/setup-node@v3.8.1 @@ -87,7 +87,7 @@ jobs: egress-policy: audit - name: Checkout git repo - uses: actions/checkout@v3.6.0 + uses: actions/checkout@v4.1.1 - name: Render Compose File run: | BACKSTAGE_IMAGE=$(echo ${{ needs.build-backstage.outputs.tags }}) diff --git a/.github/workflows/verify_accessibility.yml b/.github/workflows/verify_accessibility.yml index f34f2f5506..ba85fcdb19 100644 --- a/.github/workflows/verify_accessibility.yml +++ b/.github/workflows/verify_accessibility.yml @@ -24,7 +24,7 @@ jobs: with: egress-policy: audit - - uses: actions/checkout@v3.6.0 + - uses: actions/checkout@v4.1.1 - name: Use Node.js 18.x uses: actions/setup-node@v3.8.1 with: diff --git a/.github/workflows/verify_codeql.yml b/.github/workflows/verify_codeql.yml index fb29fb78e1..59aa41ff55 100644 --- a/.github/workflows/verify_codeql.yml +++ b/.github/workflows/verify_codeql.yml @@ -47,7 +47,7 @@ jobs: egress-policy: audit - name: Checkout repository - uses: actions/checkout@v3.6.0 + uses: actions/checkout@v4.1.1 with: # We must fetch at least the immediate parents so that if this is # a pull request then we can checkout the head. diff --git a/.github/workflows/verify_docs-quality.yml b/.github/workflows/verify_docs-quality.yml index ce457a234f..f1932d5afa 100644 --- a/.github/workflows/verify_docs-quality.yml +++ b/.github/workflows/verify_docs-quality.yml @@ -16,7 +16,7 @@ jobs: with: egress-policy: audit - - uses: actions/checkout@v3.6.0 + - uses: actions/checkout@v4.1.1 # Vale does not support file excludes, so we use the script to generate a list of files instead # The action also does not allow args or a local config file to be passed in, so the files array diff --git a/.github/workflows/verify_e2e-kubernetes.yml b/.github/workflows/verify_e2e-kubernetes.yml index ea77609614..2491282a13 100644 --- a/.github/workflows/verify_e2e-kubernetes.yml +++ b/.github/workflows/verify_e2e-kubernetes.yml @@ -26,7 +26,7 @@ jobs: with: egress-policy: audit - - uses: actions/checkout@v3.6.0 + - uses: actions/checkout@v4.1.1 - name: use node.js ${{ matrix.node-version }} uses: actions/setup-node@v3.8.1 diff --git a/.github/workflows/verify_e2e-linux.yml b/.github/workflows/verify_e2e-linux.yml index 6b61053628..9ec1672d0b 100644 --- a/.github/workflows/verify_e2e-linux.yml +++ b/.github/workflows/verify_e2e-linux.yml @@ -44,7 +44,7 @@ jobs: with: egress-policy: audit - - uses: actions/checkout@v3.6.0 + - uses: actions/checkout@v4.1.1 - name: Configure Git run: | diff --git a/.github/workflows/verify_e2e-techdocs.yml b/.github/workflows/verify_e2e-techdocs.yml index de43a4f5ac..96645c9b0b 100644 --- a/.github/workflows/verify_e2e-techdocs.yml +++ b/.github/workflows/verify_e2e-techdocs.yml @@ -34,7 +34,7 @@ jobs: with: egress-policy: audit - - uses: actions/checkout@v3.6.0 + - uses: actions/checkout@v4.1.1 - uses: actions/setup-python@v4.7.1 with: python-version: '3.9' diff --git a/.github/workflows/verify_e2e-windows.yml b/.github/workflows/verify_e2e-windows.yml index 7eba130ed8..fa3568974a 100644 --- a/.github/workflows/verify_e2e-windows.yml +++ b/.github/workflows/verify_e2e-windows.yml @@ -42,7 +42,7 @@ jobs: git config --global core.autocrlf false git config --global core.eol lf - - uses: actions/checkout@v3.6.0 + - uses: actions/checkout@v4.1.1 - name: Configure Git run: | diff --git a/.github/workflows/verify_fossa.yml b/.github/workflows/verify_fossa.yml index 393bcf9631..7918efe333 100644 --- a/.github/workflows/verify_fossa.yml +++ b/.github/workflows/verify_fossa.yml @@ -19,7 +19,7 @@ jobs: egress-policy: audit - name: Checkout - uses: actions/checkout@v3.6.0 + uses: actions/checkout@v4.1.1 - name: Install Fossa run: "curl -H 'Cache-Control: no-cache' https://raw.githubusercontent.com/fossas/fossa-cli/master/install.sh | bash" diff --git a/.github/workflows/verify_microsite.yml b/.github/workflows/verify_microsite.yml index f0705bedc7..e69ca1fd3e 100644 --- a/.github/workflows/verify_microsite.yml +++ b/.github/workflows/verify_microsite.yml @@ -28,7 +28,7 @@ jobs: with: egress-policy: audit - - uses: actions/checkout@v3.6.0 + - uses: actions/checkout@v4.1.1 - name: use node.js 18.x uses: actions/setup-node@v3.8.1 diff --git a/.github/workflows/verify_storybook.yml b/.github/workflows/verify_storybook.yml index fe481f9882..3cf7e7e194 100644 --- a/.github/workflows/verify_storybook.yml +++ b/.github/workflows/verify_storybook.yml @@ -32,7 +32,7 @@ jobs: with: egress-policy: audit - - uses: actions/checkout@v3.6.0 + - uses: actions/checkout@v4.1.1 with: fetch-depth: 0 # Required to retrieve git history diff --git a/.github/workflows/verify_windows.yml b/.github/workflows/verify_windows.yml index f2c61938d8..cbe312ed38 100644 --- a/.github/workflows/verify_windows.yml +++ b/.github/workflows/verify_windows.yml @@ -33,7 +33,7 @@ jobs: with: egress-policy: audit - - uses: actions/checkout@v3.6.0 + - uses: actions/checkout@v4.1.1 - name: use node.js ${{ matrix.node-version }} uses: actions/setup-node@v3.8.1 From 3b9821cfa30774057e20e43c7fce89af78f3e790 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 25 Oct 2023 18:28:44 +0000 Subject: [PATCH 100/102] chore(deps): update dependency @types/dagre to v0.7.51 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 710fc49f31..b613014db0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18523,9 +18523,9 @@ __metadata: linkType: hard "@types/dagre@npm:^0.7.44": - version: 0.7.50 - resolution: "@types/dagre@npm:0.7.50" - checksum: a128048b5202c501a4595bbc17288aafbef90f3535e79385ddaf0842237e69aa5998dbc12bc2867244eefe3fb6c5026d9785bfdedea46d813f006066e06e8f44 + version: 0.7.51 + resolution: "@types/dagre@npm:0.7.51" + checksum: 6a23cc406082fe867dc0be0a117ae0c493bcfb6e08b83ea55a09b4f43e6eb5efc34a102d1a039fa82d2df700d55ee5481c0c3febdf710b972bb345c8a7f6c316 languageName: node linkType: hard From 1956882a3615b8cb4b45e9adfc3c7585acce5371 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 25 Oct 2023 19:00:25 +0000 Subject: [PATCH 101/102] chore(deps): update dependency @types/diff to v5.0.7 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index f479fe8c9b..8ba4eb6db7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18539,9 +18539,9 @@ __metadata: linkType: hard "@types/diff@npm:^5.0.0": - version: 5.0.6 - resolution: "@types/diff@npm:5.0.6" - checksum: 8ce79492a89d568b54792a8491d01b1ff69526e19560670ef2de078c467738cdc0aae81fc4f895e49f915a2b9bbf694f6f95a2e5544e7c0989448956eba9ff66 + version: 5.0.7 + resolution: "@types/diff@npm:5.0.7" + checksum: 38cad7b1e19789a11bfab2428409476ea204705e92c39dd13a9ba26b604930efcffb553352512296cb179adfb028e2d95e51f9df2b7443bb0a6ba306c8bc84d0 languageName: node linkType: hard From 08aa1d0dbee30cf06b30fe7e687c6b69418d6f99 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 25 Oct 2023 21:11:33 +0000 Subject: [PATCH 102/102] chore(deps): update dependency @types/event-source-polyfill to v1.0.3 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 344d73fbb2..95a36da1e6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18625,9 +18625,9 @@ __metadata: linkType: hard "@types/event-source-polyfill@npm:^1.0.0": - version: 1.0.2 - resolution: "@types/event-source-polyfill@npm:1.0.2" - checksum: f0813edfee0af768e6e0994b48f9f618df7a5d9023c383a8f35e9e805dec560222dc40fc583d5f1404977febb7353c27c1d0606c67d948a2d18634c18ae437a9 + version: 1.0.3 + resolution: "@types/event-source-polyfill@npm:1.0.3" + checksum: ba525e521ff82de5dad727066174c61fc59680a5703324c4c62cbb11c0a14fbabeabf4d17e6d5051ef995c232a40ff43a8d1f4cea0dde9564bf28c92bb361726 languageName: node linkType: hard