From 881f4a6d4fd289738de98e43e43af9bf86ff4e02 Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 19 Nov 2024 13:05:37 +0100 Subject: [PATCH] chore: api-reports Signed-off-by: blam --- plugins/catalog-import/report-alpha.api.md | 30 +++---- plugins/catalog/report-alpha.api.md | 30 +++---- plugins/devtools/report-alpha.api.md | 30 +++---- plugins/kubernetes/report-alpha.api.md | 30 +++---- plugins/scaffolder-react/report-alpha.api.md | 53 ++++-------- .../src/next/components/Stepper/Stepper.tsx | 2 +- .../components/Workflow/Workflow.test.tsx | 57 +++++-------- .../src/next/components/Workflow/Workflow.tsx | 5 ++ plugins/scaffolder/report-alpha.api.md | 80 +++++++++++++++---- plugins/scaffolder/src/alpha/api/ref.ts | 2 + plugins/scaffolder/src/alpha/api/types.ts | 2 + plugins/search/report-alpha.api.md | 30 +++---- plugins/techdocs/report-alpha.api.md | 30 +++---- 13 files changed, 204 insertions(+), 177 deletions(-) diff --git a/plugins/catalog-import/report-alpha.api.md b/plugins/catalog-import/report-alpha.api.md index 1706404b94..c13f7a1a4a 100644 --- a/plugins/catalog-import/report-alpha.api.md +++ b/plugins/catalog-import/report-alpha.api.md @@ -18,21 +18,6 @@ const _default: FrontendPlugin< }, {}, { - 'api:catalog-import': ExtensionDefinition<{ - kind: 'api'; - name: undefined; - config: {}; - configInput: {}; - output: ConfigurableExtensionDataRef< - AnyApiFactory, - 'core.api.factory', - {} - >; - inputs: {}; - params: { - factory: AnyApiFactory; - }; - }>; 'page:catalog-import': ExtensionDefinition<{ kind: 'page'; name: undefined; @@ -63,6 +48,21 @@ const _default: FrontendPlugin< routeRef?: RouteRef | undefined; }; }>; + 'api:catalog-import': ExtensionDefinition<{ + kind: 'api'; + name: undefined; + config: {}; + configInput: {}; + output: ConfigurableExtensionDataRef< + AnyApiFactory, + 'core.api.factory', + {} + >; + inputs: {}; + params: { + factory: AnyApiFactory; + }; + }>; } >; export default _default; diff --git a/plugins/catalog/report-alpha.api.md b/plugins/catalog/report-alpha.api.md index 1b1ce54d92..3a9f0c6c33 100644 --- a/plugins/catalog/report-alpha.api.md +++ b/plugins/catalog/report-alpha.api.md @@ -146,21 +146,6 @@ const _default: FrontendPlugin< unregisterRedirect: ExternalRouteRef; }, { - 'api:catalog': ExtensionDefinition<{ - kind: 'api'; - name: undefined; - config: {}; - configInput: {}; - output: ConfigurableExtensionDataRef< - AnyApiFactory, - 'core.api.factory', - {} - >; - inputs: {}; - params: { - factory: AnyApiFactory; - }; - }>; 'nav-item:catalog': ExtensionDefinition<{ kind: 'nav-item'; name: undefined; @@ -182,6 +167,21 @@ const _default: FrontendPlugin< routeRef: RouteRef; }; }>; + 'api:catalog': ExtensionDefinition<{ + kind: 'api'; + name: undefined; + config: {}; + configInput: {}; + output: ConfigurableExtensionDataRef< + AnyApiFactory, + 'core.api.factory', + {} + >; + inputs: {}; + params: { + factory: AnyApiFactory; + }; + }>; 'api:catalog/starred-entities': ExtensionDefinition<{ kind: 'api'; name: 'starred-entities'; diff --git a/plugins/devtools/report-alpha.api.md b/plugins/devtools/report-alpha.api.md index 1b026d1f78..e3261e0f05 100644 --- a/plugins/devtools/report-alpha.api.md +++ b/plugins/devtools/report-alpha.api.md @@ -19,21 +19,6 @@ const _default: FrontendPlugin< }, {}, { - 'api:devtools': ExtensionDefinition<{ - kind: 'api'; - name: undefined; - config: {}; - configInput: {}; - output: ConfigurableExtensionDataRef< - AnyApiFactory, - 'core.api.factory', - {} - >; - inputs: {}; - params: { - factory: AnyApiFactory; - }; - }>; 'page:devtools': ExtensionDefinition<{ kind: 'page'; name: undefined; @@ -85,6 +70,21 @@ const _default: FrontendPlugin< routeRef: RouteRef; }; }>; + 'api:devtools': ExtensionDefinition<{ + kind: 'api'; + name: undefined; + config: {}; + configInput: {}; + output: ConfigurableExtensionDataRef< + AnyApiFactory, + 'core.api.factory', + {} + >; + inputs: {}; + params: { + factory: AnyApiFactory; + }; + }>; } >; export default _default; diff --git a/plugins/kubernetes/report-alpha.api.md b/plugins/kubernetes/report-alpha.api.md index 9ba748577f..4f779df258 100644 --- a/plugins/kubernetes/report-alpha.api.md +++ b/plugins/kubernetes/report-alpha.api.md @@ -21,21 +21,6 @@ const _default: FrontendPlugin< }, {}, { - 'api:kubernetes': ExtensionDefinition<{ - kind: 'api'; - name: undefined; - config: {}; - configInput: {}; - output: ConfigurableExtensionDataRef< - AnyApiFactory, - 'core.api.factory', - {} - >; - inputs: {}; - params: { - factory: AnyApiFactory; - }; - }>; 'page:kubernetes': ExtensionDefinition<{ kind: 'page'; name: undefined; @@ -62,6 +47,21 @@ const _default: FrontendPlugin< routeRef?: RouteRef | undefined; }; }>; + 'api:kubernetes': ExtensionDefinition<{ + kind: 'api'; + name: undefined; + config: {}; + configInput: {}; + output: ConfigurableExtensionDataRef< + AnyApiFactory, + 'core.api.factory', + {} + >; + inputs: {}; + params: { + factory: AnyApiFactory; + }; + }>; 'entity-content:kubernetes/kubernetes': ExtensionDefinition<{ kind: 'entity-content'; name: 'kubernetes'; diff --git a/plugins/scaffolder-react/report-alpha.api.md b/plugins/scaffolder-react/report-alpha.api.md index 092217abe8..2cc8416b3c 100644 --- a/plugins/scaffolder-react/report-alpha.api.md +++ b/plugins/scaffolder-react/report-alpha.api.md @@ -78,13 +78,17 @@ export function createFormField< // @alpha export function createScaffolderFormDecorator< - TDeps extends { - [key in string]: AnyApiRef; - }, TInputSchema extends { [key in string]: (zImpl: typeof z) => z.ZodType; + } = { + [key in string]: (zImpl: typeof z) => z.ZodType; }, - TInput extends {} = { + TDeps extends { + [key in string]: AnyApiRef; + } = { + [key in string]: AnyApiRef; + }, + TInput extends JsonObject = { [key in keyof TInputSchema]: z.infer>; }, >(options: { @@ -93,7 +97,7 @@ export function createScaffolderFormDecorator< input?: TInputSchema; }; deps?: TDeps; - fn: ( + decorator: ( ctx: ScaffolderFormDecoratorContext, deps: TDeps extends { [key in string]: AnyApiRef; @@ -103,7 +107,7 @@ export function createScaffolderFormDecorator< } : never, ) => Promise; -}): ScaffolderFormDecorator; +}): ScaffolderFormDecorator; // @alpha export const DefaultTemplateOutputs: (props: { @@ -221,39 +225,16 @@ export interface ScaffolderFieldProps { } // @alpha (undocumented) -export type ScaffolderFormDecorator< - TInputSchema extends { - [key in string]: (zImpl: typeof z) => z.ZodType; - } = {}, - TDeps extends { - [key in string]: AnyApiRef; - } = { - [key in string]: AnyApiRef; - }, - TInput extends {} = { - [key in keyof TInputSchema]: z.infer>; - }, -> = { - version: 'v1'; - id: string; - schema?: { - input?: TInputSchema; - }; - deps?: TDeps; - fn: ( - ctx: ScaffolderFormDecoratorContext, - deps: TDeps extends { - [key in string]: AnyApiRef; - } - ? { - [key in keyof TDeps]: TDeps[key]['T']; - } - : never, - ) => Promise; +export type ScaffolderFormDecorator = { + readonly $$type: '@backstage/scaffolder/FormDecorator'; + readonly id: string; + readonly TInput: TInput; }; // @alpha (undocumented) -export type ScaffolderFormDecoratorContext = { +export type ScaffolderFormDecoratorContext< + TInput extends JsonObject = JsonObject, +> = { input: TInput; formState: Record; setFormState: ( diff --git a/plugins/scaffolder-react/src/next/components/Stepper/Stepper.tsx b/plugins/scaffolder-react/src/next/components/Stepper/Stepper.tsx index 35bae80ec5..0b4cbbc94a 100644 --- a/plugins/scaffolder-react/src/next/components/Stepper/Stepper.tsx +++ b/plugins/scaffolder-react/src/next/components/Stepper/Stepper.tsx @@ -120,11 +120,11 @@ export const Stepper = (stepperProps: StepperProps) => { reviewButtonText = 'Review', } = components; const analytics = useAnalytics(); + const { presentation, steps } = useTemplateSchema(props.manifest); const apiHolder = useApiHolder(); const [activeStep, setActiveStep] = useState(0); const [isValidating, setIsValidating] = useState(false); const [initialState] = useFormDataFromQuery(props.initialState); - const { presentation, steps } = useTemplateSchema(props.manifest); const [stepsState, setStepsState] = useState>(initialState); diff --git a/plugins/scaffolder-react/src/next/components/Workflow/Workflow.test.tsx b/plugins/scaffolder-react/src/next/components/Workflow/Workflow.test.tsx index b942e5487a..243b9b7e79 100644 --- a/plugins/scaffolder-react/src/next/components/Workflow/Workflow.test.tsx +++ b/plugins/scaffolder-react/src/next/components/Workflow/Workflow.test.tsx @@ -27,12 +27,6 @@ import { analyticsApiRef } from '@backstage/core-plugin-api'; import { ScaffolderApi, scaffolderApiRef } from '../../../api'; import { catalogApiRef } from '@backstage/plugin-catalog-react'; import { catalogApiMock } from '@backstage/plugin-catalog-react/testUtils'; -import { SecretsContextProvider } from '../../../secrets'; - -// eslint-disable-next-line @backstage/no-relative-monorepo-imports -import { ScaffolderFormDecoratorsApi } from '../../../../../scaffolder/src/alpha/api/types'; -// eslint-disable-next-line @backstage/no-relative-monorepo-imports -import { formDecoratorsApiRef } from '../../../../../scaffolder/src/alpha/api/ref'; const scaffolderApiMock: jest.Mocked = { cancelTask: jest.fn(), @@ -45,19 +39,14 @@ const scaffolderApiMock: jest.Mocked = { listTasks: jest.fn(), autocomplete: jest.fn(), }; -const scaffolderDecoratorsMock: jest.Mocked = { - getFormDecorators: jest.fn().mockResolvedValue([]), -}; const catalogApi = catalogApiMock.mock(); const analyticsMock = mockApis.analytics(); const apis = TestApiRegistry.from( [scaffolderApiRef, scaffolderApiMock], - [formDecoratorsApiRef, scaffolderDecoratorsMock], [catalogApiRef, catalogApi], [analyticsApiRef, analyticsMock], - [catalogApiRef, catalogApi], ); describe('', () => { @@ -93,33 +82,31 @@ describe('', () => { }); const { getByRole, getAllByRole, getByText } = await renderInTestApp( - - - + ( -

This is a different wrapper for the review page

- ), - reviewButtonText: Onwards, - createButtonText: Make, - }} - extensions={[]} - /> -
-
, + onCreate={onCreate} + onError={onError} + namespace="default" + templateName="docs-template" + initialState={{ + name: 'prefilled-name', + age: '53', + }} + components={{ + ReviewStateComponent: () => ( +

This is a different wrapper for the review page

+ ), + reviewButtonText: Onwards, + createButtonText: Make, + }} + extensions={[]} + /> + , ); // Test template title is overriden diff --git a/plugins/scaffolder-react/src/next/components/Workflow/Workflow.tsx b/plugins/scaffolder-react/src/next/components/Workflow/Workflow.tsx index 8c202eb3b3..9afc18c438 100644 --- a/plugins/scaffolder-react/src/next/components/Workflow/Workflow.tsx +++ b/plugins/scaffolder-react/src/next/components/Workflow/Workflow.tsx @@ -72,6 +72,7 @@ export type WorkflowProps = { export const Workflow = (workflowProps: WorkflowProps): JSX.Element | null => { const { title, description, namespace, templateName, onCreate, ...props } = workflowProps; + const analytics = useAnalytics(); const styles = useStyles(); const templateRef = stringifyEntityRef({ @@ -79,9 +80,13 @@ export const Workflow = (workflowProps: WorkflowProps): JSX.Element | null => { namespace: namespace, name: templateName, }); + const errorApi = useApi(errorApiRef); + const { loading, manifest, error } = useTemplateParameterSchema(templateRef); + const sortedManifest = useFilteredSchemaProperties(manifest); + const minutesSaved = useTemplateTimeSavedMinutes(templateRef); const workflowOnCreate = useCallback( diff --git a/plugins/scaffolder/report-alpha.api.md b/plugins/scaffolder/report-alpha.api.md index 4253b2b914..13f7189051 100644 --- a/plugins/scaffolder/report-alpha.api.md +++ b/plugins/scaffolder/report-alpha.api.md @@ -7,25 +7,30 @@ import { AnyApiFactory } from '@backstage/frontend-plugin-api'; import { AnyRouteRefParams } from '@backstage/frontend-plugin-api'; +import { ApiRef } from '@backstage/frontend-plugin-api'; import { ConfigurableExtensionDataRef } from '@backstage/frontend-plugin-api'; import { ExtensionDefinition } from '@backstage/frontend-plugin-api'; import { ExtensionInput } from '@backstage/frontend-plugin-api'; import { ExternalRouteRef } from '@backstage/frontend-plugin-api'; import { FieldExtensionOptions } from '@backstage/plugin-scaffolder-react'; import { FormField } from '@internal/scaffolder'; +import { FormFieldExtensionData } from '@backstage/plugin-scaffolder-react/alpha'; import type { FormProps as FormProps_2 } from '@rjsf/core'; import { FormProps as FormProps_3 } from '@backstage/plugin-scaffolder-react'; import { FrontendPlugin } from '@backstage/frontend-plugin-api'; import { IconComponent } from '@backstage/core-plugin-api'; +import { JsonValue } from '@backstage/types'; import { JSX as JSX_2 } from 'react'; import { LayoutOptions } from '@backstage/plugin-scaffolder-react'; import { PathParams } from '@backstage/core-plugin-api'; import { default as React_2 } from 'react'; import { ReviewStepProps } from '@backstage/plugin-scaffolder-react'; import { RouteRef } from '@backstage/frontend-plugin-api'; +import { ScaffolderFormDecorator } from '@backstage/plugin-scaffolder-react/alpha'; import { SubRouteRef } from '@backstage/frontend-plugin-api'; import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common'; import { TemplateGroupFilter } from '@backstage/plugin-scaffolder-react'; +import { TemplateParameterSchema } from '@backstage/plugin-scaffolder-react'; import { TranslationRef } from '@backstage/core-plugin-api/alpha'; // @alpha (undocumented) @@ -49,21 +54,6 @@ const _default: FrontendPlugin< }>; }, { - 'api:scaffolder': ExtensionDefinition<{ - kind: 'api'; - name: undefined; - config: {}; - configInput: {}; - output: ConfigurableExtensionDataRef< - AnyApiFactory, - 'core.api.factory', - {} - >; - inputs: {}; - params: { - factory: AnyApiFactory; - }; - }>; 'page:scaffolder': ExtensionDefinition<{ kind: 'page'; name: undefined; @@ -126,6 +116,21 @@ const _default: FrontendPlugin< field: () => Promise; }; }>; + 'api:scaffolder': ExtensionDefinition<{ + kind: 'api'; + name: undefined; + config: {}; + configInput: {}; + output: ConfigurableExtensionDataRef< + AnyApiFactory, + 'core.api.factory', + {} + >; + inputs: {}; + params: { + factory: AnyApiFactory; + }; + }>; 'api:scaffolder/form-fields': ExtensionDefinition<{ config: {}; configInput: {}; @@ -157,6 +162,24 @@ const _default: FrontendPlugin< >; export default _default; +// @alpha (undocumented) +export class DefaultScaffolderFormDecoratorsApi + implements ScaffolderFormDecoratorsApi +{ + // (undocumented) + static create(options?: { + decorators: ScaffolderFormDecorator[]; + }): DefaultScaffolderFormDecoratorsApi; + // (undocumented) + getFormDecorators(): Promise; +} + +// @alpha (undocumented) +export const formDecoratorsApiRef: ApiRef; + +// @alpha (undocumented) +export const formFieldsApiRef: ApiRef; + // @alpha @deprecated export type FormProps = Pick< FormProps_2, @@ -170,6 +193,18 @@ export type ScaffolderCustomFieldExplorerClassKey = | 'fieldForm' | 'preview'; +// @alpha (undocumented) +export interface ScaffolderFormDecoratorsApi { + // (undocumented) + getFormDecorators(): Promise; +} + +// @alpha (undocumented) +export interface ScaffolderFormFieldsApi { + // (undocumented) + getFormFields(): Promise; +} + // @public (undocumented) export type ScaffolderTemplateEditorClassKey = | 'root' @@ -379,5 +414,20 @@ export type TemplateWizardPageProps = { }; }; +// @alpha (undocumented) +export const useFormDecorators: ({ + manifest, +}: { + manifest?: TemplateParameterSchema | undefined; +}) => { + run: (opts: { + formState: Record; + secrets: Record; + }) => Promise<{ + formState: Record; + secrets: Record; + }>; +}; + // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/scaffolder/src/alpha/api/ref.ts b/plugins/scaffolder/src/alpha/api/ref.ts index 121f394dce..9890a9a9b2 100644 --- a/plugins/scaffolder/src/alpha/api/ref.ts +++ b/plugins/scaffolder/src/alpha/api/ref.ts @@ -17,10 +17,12 @@ import { createApiRef } from '@backstage/frontend-plugin-api'; import { ScaffolderFormFieldsApi, ScaffolderFormDecoratorsApi } from './types'; +/** @alpha */ export const formFieldsApiRef = createApiRef({ id: 'plugin.scaffolder.form-fields', }); +/** @alpha */ export const formDecoratorsApiRef = createApiRef({ id: 'plugin.scaffolder.form-decorators', }); diff --git a/plugins/scaffolder/src/alpha/api/types.ts b/plugins/scaffolder/src/alpha/api/types.ts index 28ce8dab3d..10f97a6a10 100644 --- a/plugins/scaffolder/src/alpha/api/types.ts +++ b/plugins/scaffolder/src/alpha/api/types.ts @@ -19,10 +19,12 @@ import { ScaffolderFormDecorator, } from '@backstage/plugin-scaffolder-react/alpha'; +/** @alpha */ export interface ScaffolderFormFieldsApi { getFormFields(): Promise; } +/** @alpha */ export interface ScaffolderFormDecoratorsApi { getFormDecorators(): Promise; } diff --git a/plugins/search/report-alpha.api.md b/plugins/search/report-alpha.api.md index 9b8f21fa43..d4a016bbe2 100644 --- a/plugins/search/report-alpha.api.md +++ b/plugins/search/report-alpha.api.md @@ -22,21 +22,6 @@ const _default: FrontendPlugin< }, {}, { - 'api:search': ExtensionDefinition<{ - kind: 'api'; - name: undefined; - config: {}; - configInput: {}; - output: ConfigurableExtensionDataRef< - AnyApiFactory, - 'core.api.factory', - {} - >; - inputs: {}; - params: { - factory: AnyApiFactory; - }; - }>; 'nav-item:search': ExtensionDefinition<{ kind: 'nav-item'; name: undefined; @@ -58,6 +43,21 @@ const _default: FrontendPlugin< routeRef: RouteRef; }; }>; + 'api:search': ExtensionDefinition<{ + kind: 'api'; + name: undefined; + config: {}; + configInput: {}; + output: ConfigurableExtensionDataRef< + AnyApiFactory, + 'core.api.factory', + {} + >; + inputs: {}; + params: { + factory: AnyApiFactory; + }; + }>; 'page:search': ExtensionDefinition<{ config: { noTrack: boolean; diff --git a/plugins/techdocs/report-alpha.api.md b/plugins/techdocs/report-alpha.api.md index 63e078dd43..d39c9d31ed 100644 --- a/plugins/techdocs/report-alpha.api.md +++ b/plugins/techdocs/report-alpha.api.md @@ -31,21 +31,6 @@ const _default: FrontendPlugin< }, {}, { - 'api:techdocs': ExtensionDefinition<{ - kind: 'api'; - name: undefined; - config: {}; - configInput: {}; - output: ConfigurableExtensionDataRef< - AnyApiFactory, - 'core.api.factory', - {} - >; - inputs: {}; - params: { - factory: AnyApiFactory; - }; - }>; 'page:techdocs': ExtensionDefinition<{ kind: 'page'; name: undefined; @@ -97,6 +82,21 @@ const _default: FrontendPlugin< routeRef: RouteRef; }; }>; + 'api:techdocs': ExtensionDefinition<{ + kind: 'api'; + name: undefined; + config: {}; + configInput: {}; + output: ConfigurableExtensionDataRef< + AnyApiFactory, + 'core.api.factory', + {} + >; + inputs: {}; + params: { + factory: AnyApiFactory; + }; + }>; 'api:techdocs/storage': ExtensionDefinition<{ kind: 'api'; name: 'storage';