From 3562d2b111323b8da710756791aca3bef9134a6e Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 10 Dec 2024 12:29:42 +0100 Subject: [PATCH] chore: fix up the api-reports Signed-off-by: blam --- plugins/scaffolder-react/report-alpha.api.md | 38 +++++++++++ plugins/scaffolder-react/report.api.md | 2 +- .../src/hooks/useCustomFieldExtensions.ts | 14 +++- .../src/next/api/FormFieldsApi.ts | 1 + plugins/scaffolder/report-alpha.api.md | 64 ++++++++----------- 5 files changed, 80 insertions(+), 39 deletions(-) diff --git a/plugins/scaffolder-react/report-alpha.api.md b/plugins/scaffolder-react/report-alpha.api.md index 2cc8416b3c..4f9f86d1ac 100644 --- a/plugins/scaffolder-react/report-alpha.api.md +++ b/plugins/scaffolder-react/report-alpha.api.md @@ -5,13 +5,17 @@ ```ts /// +import { AnyApiFactory } from '@backstage/frontend-plugin-api'; import { AnyApiRef } from '@backstage/core-plugin-api'; import { ApiHolder } from '@backstage/core-plugin-api'; +import { ApiRef } from '@backstage/frontend-plugin-api'; import { ComponentType } from 'react'; import { ConfigurableExtensionDataRef } from '@backstage/frontend-plugin-api'; import { CustomFieldValidator } from '@backstage/plugin-scaffolder-react'; import { Dispatch } from 'react'; import { ExtensionBlueprint } from '@backstage/frontend-plugin-api'; +import { ExtensionDefinition } from '@backstage/frontend-plugin-api'; +import { ExtensionInput } from '@backstage/frontend-plugin-api'; import { FieldExtensionComponentProps } from '@backstage/plugin-scaffolder-react'; import { FieldExtensionOptions } from '@backstage/plugin-scaffolder-react'; import { FieldSchema } from '@backstage/plugin-scaffolder-react'; @@ -171,6 +175,34 @@ export type FormFieldExtensionData< schema?: FieldSchema, z.output>; }; +// @alpha (undocumented) +export const formFieldsApi: ExtensionDefinition<{ + config: {}; + configInput: {}; + output: ConfigurableExtensionDataRef; + inputs: { + formFields: ExtensionInput< + ConfigurableExtensionDataRef< + () => Promise, + 'scaffolder.form-field-loader', + {} + >, + { + singleton: false; + optional: false; + } + >; + }; + kind: 'api'; + name: 'form-fields'; + params: { + factory: AnyApiFactory; + }; +}>; + +// @alpha (undocumented) +export const formFieldsApiRef: ApiRef; + // @alpha (undocumented) export type FormValidation = { [name: string]: FieldValidation | FormValidation; @@ -245,6 +277,12 @@ export type ScaffolderFormDecoratorContext< ) => void; }; +// @alpha (undocumented) +export interface ScaffolderFormFieldsApi { + // (undocumented) + getFormFields(): Promise; +} + // @alpha (undocumented) export function ScaffolderPageContextMenu( props: ScaffolderPageContextMenuProps, diff --git a/plugins/scaffolder-react/report.api.md b/plugins/scaffolder-react/report.api.md index 8a6b4739a4..12626580bf 100644 --- a/plugins/scaffolder-react/report.api.md +++ b/plugins/scaffolder-react/report.api.md @@ -550,7 +550,7 @@ export const useCustomFieldExtensions: < TComponentDataType = FieldExtensionOptions, >( outlet: React.ReactNode, -) => TComponentDataType[]; +) => (TComponentDataType | FieldExtensionOptions)[]; // @public export const useCustomLayouts: >( diff --git a/plugins/scaffolder-react/src/hooks/useCustomFieldExtensions.ts b/plugins/scaffolder-react/src/hooks/useCustomFieldExtensions.ts index e100e147ab..44b0a568e3 100644 --- a/plugins/scaffolder-react/src/hooks/useCustomFieldExtensions.ts +++ b/plugins/scaffolder-react/src/hooks/useCustomFieldExtensions.ts @@ -50,5 +50,17 @@ export const useCustomFieldExtensions = < }), ); - return [...blueprintFields, ...outletFields]; + // This should really be a different type moving foward, but we do this to keep type compatibility. + // should probably also move the defaults into the API eventually too, but that will come with the move + // to the new frontend system. + const blueprintsToLegacy: FieldExtensionOptions[] = blueprintFields?.map( + field => ({ + component: field.component, + name: field.name, + validation: field.validation, + schema: field.schema?.schema, + }), + ); + + return [...blueprintsToLegacy, ...outletFields]; }; diff --git a/plugins/scaffolder-react/src/next/api/FormFieldsApi.ts b/plugins/scaffolder-react/src/next/api/FormFieldsApi.ts index e921856369..7712b91a18 100644 --- a/plugins/scaffolder-react/src/next/api/FormFieldsApi.ts +++ b/plugins/scaffolder-react/src/next/api/FormFieldsApi.ts @@ -40,6 +40,7 @@ class DefaultScaffolderFormFieldsApi implements ScaffolderFormFieldsApi { } } +/** @alpha */ export const formFieldsApi = ApiBlueprint.makeWithOverrides({ name: 'form-fields', inputs: { diff --git a/plugins/scaffolder/report-alpha.api.md b/plugins/scaffolder/report-alpha.api.md index 15ec32fa49..5f9472486f 100644 --- a/plugins/scaffolder/report-alpha.api.md +++ b/plugins/scaffolder/report-alpha.api.md @@ -14,7 +14,6 @@ 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'; @@ -52,6 +51,33 @@ const _default: FrontendPlugin< }>; }, { + 'api:scaffolder/form-fields': ExtensionDefinition<{ + config: {}; + configInput: {}; + output: ConfigurableExtensionDataRef< + AnyApiFactory, + 'core.api.factory', + {} + >; + inputs: { + formFields: ExtensionInput< + ConfigurableExtensionDataRef< + () => Promise, + 'scaffolder.form-field-loader', + {} + >, + { + singleton: false; + optional: false; + } + >; + }; + kind: 'api'; + name: 'form-fields'; + params: { + factory: AnyApiFactory; + }; + }>; 'page:scaffolder': ExtensionDefinition<{ kind: 'page'; name: undefined; @@ -129,33 +155,6 @@ const _default: FrontendPlugin< factory: AnyApiFactory; }; }>; - 'api:scaffolder/form-fields': ExtensionDefinition<{ - config: {}; - configInput: {}; - output: ConfigurableExtensionDataRef< - AnyApiFactory, - 'core.api.factory', - {} - >; - inputs: { - formFields: ExtensionInput< - ConfigurableExtensionDataRef< - () => Promise, - 'scaffolder.form-field-loader', - {} - >, - { - singleton: false; - optional: false; - } - >; - }; - kind: 'api'; - name: 'form-fields'; - params: { - factory: AnyApiFactory; - }; - }>; } >; export default _default; @@ -175,9 +174,6 @@ export class DefaultScaffolderFormDecoratorsApi // @alpha (undocumented) export const formDecoratorsApiRef: ApiRef; -// @alpha (undocumented) -export const formFieldsApiRef: ApiRef; - // @alpha @deprecated export type FormProps = Pick< FormProps_2, @@ -197,12 +193,6 @@ export interface ScaffolderFormDecoratorsApi { getFormDecorators(): Promise; } -// @alpha (undocumented) -export interface ScaffolderFormFieldsApi { - // (undocumented) - getFormFields(): Promise; -} - // @public (undocumented) export type ScaffolderTemplateEditorClassKey = | 'root'