diff --git a/plugins/scaffolder/alpha-api-report.md b/plugins/scaffolder/alpha-api-report.md
new file mode 100644
index 0000000000..bf37acafc3
--- /dev/null
+++ b/plugins/scaffolder/alpha-api-report.md
@@ -0,0 +1,70 @@
+## API Report File for "@backstage/plugin-scaffolder"
+
+> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
+
+```ts
+///
+
+import { Entity } from '@backstage/catalog-model';
+import { FormProps as FormProps_2 } from '@backstage/plugin-scaffolder-react/alpha';
+import type { FormProps as FormProps_3 } from '@rjsf/core-v5';
+import { PathParams } from '@backstage/core-plugin-api';
+import { PropsWithChildren } from 'react';
+import { default as React_2 } from 'react';
+import { RouteRef } from '@backstage/core-plugin-api';
+import { ScaffolderTaskOutput } from '@backstage/plugin-scaffolder-react';
+import { SubRouteRef } from '@backstage/core-plugin-api';
+import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common';
+
+// @alpha @deprecated
+export type FormProps = Pick<
+ FormProps_3,
+ 'transformErrors' | 'noHtml5Validate'
+>;
+
+// @alpha (undocumented)
+export const nextRouteRef: RouteRef;
+
+// @alpha
+export type NextRouterProps = {
+ components?: {
+ TemplateCardComponent?: React_2.ComponentType<{
+ template: TemplateEntityV1beta3;
+ }>;
+ TaskPageComponent?: React_2.ComponentType<{}>;
+ TemplateOutputsComponent?: React_2.ComponentType<{
+ output?: ScaffolderTaskOutput;
+ }>;
+ };
+ groups?: TemplateGroupFilter[];
+ FormProps?: FormProps_2;
+ contextMenu?: {
+ editor?: boolean;
+ actions?: boolean;
+ tasks?: boolean;
+ };
+};
+
+// @alpha
+export const NextScaffolderPage: (
+ props: PropsWithChildren,
+) => JSX.Element;
+
+// @alpha (undocumented)
+export const nextScaffolderTaskRouteRef: SubRouteRef<
+ PathParams<'/tasks/:taskId'>
+>;
+
+// @alpha (undocumented)
+export const nextSelectedTemplateRouteRef: SubRouteRef<
+ PathParams<'/templates/:namespace/:templateName'>
+>;
+
+// @alpha (undocumented)
+export type TemplateGroupFilter = {
+ title?: React_2.ReactNode;
+ filter: (entity: Entity) => boolean;
+};
+
+// (No @packageDocumentation comment for this package)
+```
diff --git a/plugins/scaffolder/api-report.md b/plugins/scaffolder/api-report.md
index 43b885b81a..7030affeea 100644
--- a/plugins/scaffolder/api-report.md
+++ b/plugins/scaffolder/api-report.md
@@ -21,8 +21,6 @@ import { FieldExtensionComponent as FieldExtensionComponent_2 } from '@backstage
import { FieldExtensionComponentProps as FieldExtensionComponentProps_2 } from '@backstage/plugin-scaffolder-react';
import { FieldExtensionOptions as FieldExtensionOptions_2 } from '@backstage/plugin-scaffolder-react';
import { FieldValidation } from '@rjsf/core';
-import { FormProps as FormProps_2 } from '@backstage/plugin-scaffolder-react';
-import type { FormProps as FormProps_3 } from '@rjsf/core-v5';
import { IdentityApi } from '@backstage/core-plugin-api';
import { JsonObject } from '@backstage/types';
import { LayoutOptions as LayoutOptions_2 } from '@backstage/plugin-scaffolder-react';
@@ -31,7 +29,6 @@ import { ListActionsResponse as ListActionsResponse_2 } from '@backstage/plugin-
import { LogEvent as LogEvent_2 } from '@backstage/plugin-scaffolder-react';
import { Observable } from '@backstage/types';
import { PathParams } from '@backstage/core-plugin-api';
-import { PropsWithChildren } from 'react';
import { default as React_2 } from 'react';
import { ReactNode } from 'react';
import { RouteRef } from '@backstage/core-plugin-api';
@@ -112,9 +109,9 @@ export type EntityPickerUiOptions =
export const EntityTagsPickerFieldExtension: FieldExtensionComponent_2<
string[],
{
- showCounts?: boolean | undefined;
- kinds?: string[] | undefined;
helperText?: string | undefined;
+ kinds?: string[] | undefined;
+ showCounts?: boolean | undefined;
}
>;
@@ -122,9 +119,9 @@ export const EntityTagsPickerFieldExtension: FieldExtensionComponent_2<
export const EntityTagsPickerFieldSchema: FieldSchema<
string[],
{
- showCounts?: boolean | undefined;
- kinds?: string[] | undefined;
helperText?: string | undefined;
+ kinds?: string[] | undefined;
+ showCounts?: boolean | undefined;
}
>;
@@ -155,12 +152,6 @@ export interface FieldSchema {
readonly uiOptionsType: TUiOptions;
}
-// @alpha @deprecated
-export type FormProps = Pick<
- FormProps_3,
- 'transformErrors' | 'noHtml5Validate'
->;
-
// @public @deprecated (undocumented)
export type LayoutOptions = LayoutOptions_2;
@@ -187,44 +178,6 @@ export function makeFieldSchemaFromZod<
: never
>;
-// @alpha (undocumented)
-export const nextRouteRef: RouteRef;
-
-// @alpha
-export type NextRouterProps = {
- components?: {
- TemplateCardComponent?: React_2.ComponentType<{
- template: TemplateEntityV1beta3;
- }>;
- TaskPageComponent?: React_2.ComponentType<{}>;
- TemplateOutputsComponent?: React_2.ComponentType<{
- output?: ScaffolderTaskOutput_2;
- }>;
- };
- groups?: TemplateGroupFilter[];
- FormProps?: FormProps_2;
- contextMenu?: {
- editor?: boolean;
- actions?: boolean;
- tasks?: boolean;
- };
-};
-
-// @alpha
-export const NextScaffolderPage: (
- props: PropsWithChildren,
-) => JSX.Element;
-
-// @alpha (undocumented)
-export const nextScaffolderTaskRouteRef: SubRouteRef<
- PathParams<'/tasks/:taskId'>
->;
-
-// @alpha (undocumented)
-export const nextSelectedTemplateRouteRef: SubRouteRef<
- PathParams<'/templates/:namespace/:templateName'>
->;
-
// @public
export const OwnedEntityPickerFieldExtension: FieldExtensionComponent_2<
string,
@@ -306,8 +259,8 @@ export const RepoUrlPickerFieldExtension: FieldExtensionComponent_2<
| {
azure?: string[] | undefined;
github?: string[] | undefined;
- gitlab?: string[] | undefined;
bitbucket?: string[] | undefined;
+ gitlab?: string[] | undefined;
gerrit?: string[] | undefined;
}
| undefined;
@@ -332,8 +285,8 @@ export const RepoUrlPickerFieldSchema: FieldSchema<
| {
azure?: string[] | undefined;
github?: string[] | undefined;
- gitlab?: string[] | undefined;
bitbucket?: string[] | undefined;
+ gitlab?: string[] | undefined;
gerrit?: string[] | undefined;
}
| undefined;
@@ -514,12 +467,6 @@ export type TaskPageProps = {
loadingText?: string;
};
-// @alpha (undocumented)
-export type TemplateGroupFilter = {
- title?: React_2.ReactNode;
- filter: (entity: Entity) => boolean;
-};
-
// @public @deprecated (undocumented)
export type TemplateParameterSchema = TemplateParameterSchema_2;
diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json
index 5eac3c7a0d..b4fb81fb9c 100644
--- a/plugins/scaffolder/package.json
+++ b/plugins/scaffolder/package.json
@@ -6,10 +6,21 @@
"types": "src/index.ts",
"license": "Apache-2.0",
"publishConfig": {
- "access": "public",
- "main": "dist/index.esm.js",
- "types": "dist/index.d.ts",
- "alphaTypes": "dist/index.alpha.d.ts"
+ "access": "public"
+ },
+ "exports": {
+ ".": "./src/index.ts",
+ "./alpha": "./src/alpha.ts"
+ },
+ "typesVersions": {
+ "*": {
+ "*": [
+ "src/index.ts"
+ ],
+ "alpha": [
+ "src/alpha.ts"
+ ]
+ }
},
"backstage": {
"role": "frontend-plugin"
@@ -24,7 +35,7 @@
"backstage"
],
"scripts": {
- "build": "backstage-cli package build --experimental-type-build",
+ "build": "backstage-cli package build",
"start": "backstage-cli package start",
"lint": "backstage-cli package lint",
"test": "backstage-cli package test",
@@ -99,7 +110,6 @@
"msw": "^0.49.0"
},
"files": [
- "dist",
- "alpha"
+ "dist"
]
}
diff --git a/plugins/scaffolder/src/alpha.ts b/plugins/scaffolder/src/alpha.ts
new file mode 100644
index 0000000000..a460b0d7cc
--- /dev/null
+++ b/plugins/scaffolder/src/alpha.ts
@@ -0,0 +1,25 @@
+/*
+ * 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 { NextScaffolderPage } from './plugin';
+export {
+ nextRouteRef,
+ nextScaffolderTaskRouteRef,
+ nextSelectedTemplateRouteRef,
+ type TemplateGroupFilter,
+ type NextRouterProps,
+ type FormProps,
+} from './next';
diff --git a/plugins/scaffolder/src/components/MultistepJsonForm/MultistepJsonForm.tsx b/plugins/scaffolder/src/components/MultistepJsonForm/MultistepJsonForm.tsx
index a74b65b885..0924c4f2e6 100644
--- a/plugins/scaffolder/src/components/MultistepJsonForm/MultistepJsonForm.tsx
+++ b/plugins/scaffolder/src/components/MultistepJsonForm/MultistepJsonForm.tsx
@@ -37,11 +37,9 @@ import cloneDeep from 'lodash/cloneDeep';
import * as fieldOverrides from './FieldOverrides';
import { ReviewStepProps } from '../types';
import { ReviewStep } from './ReviewStep';
-import {
- extractSchemaFromStep,
- type LayoutOptions,
-} from '@backstage/plugin-scaffolder-react';
+import { extractSchemaFromStep } from '@backstage/plugin-scaffolder-react/alpha';
import { selectedTemplateRouteRef } from '../../routes';
+import { LayoutOptions } from '@backstage/plugin-scaffolder-react';
const Form = withTheme(MuiTheme);
diff --git a/plugins/scaffolder/src/index.ts b/plugins/scaffolder/src/index.ts
index aa78874f9d..bc56629a2c 100644
--- a/plugins/scaffolder/src/index.ts
+++ b/plugins/scaffolder/src/index.ts
@@ -34,14 +34,3 @@ export {
export * from './components';
export * from './deprecated';
-
-/** next exports */
-export { NextScaffolderPage } from './plugin';
-export {
- nextRouteRef,
- nextScaffolderTaskRouteRef,
- nextSelectedTemplateRouteRef,
- type TemplateGroupFilter,
- type NextRouterProps,
- type FormProps,
-} from './next';
diff --git a/plugins/scaffolder/src/next/OngoingTask/OngoingTask.tsx b/plugins/scaffolder/src/next/OngoingTask/OngoingTask.tsx
index a68df01ed5..d0aaf4b838 100644
--- a/plugins/scaffolder/src/next/OngoingTask/OngoingTask.tsx
+++ b/plugins/scaffolder/src/next/OngoingTask/OngoingTask.tsx
@@ -25,10 +25,8 @@ import { nextSelectedTemplateRouteRef } from '../routes';
import { useRouteRef } from '@backstage/core-plugin-api';
import qs from 'qs';
import { ContextMenu } from './ContextMenu';
-import {
- DefaultTemplateOutputs,
- ScaffolderTaskOutput,
-} from '@backstage/plugin-scaffolder-react';
+import { ScaffolderTaskOutput } from '@backstage/plugin-scaffolder-react';
+import { DefaultTemplateOutputs } from '@backstage/plugin-scaffolder-react/alpha';
const useStyles = makeStyles({
contentWrapper: {
diff --git a/plugins/scaffolder/src/next/Router/Router.tsx b/plugins/scaffolder/src/next/Router/Router.tsx
index ded344b048..5e199cae9b 100644
--- a/plugins/scaffolder/src/next/Router/Router.tsx
+++ b/plugins/scaffolder/src/next/Router/Router.tsx
@@ -19,11 +19,13 @@ import { TemplateListPage } from '../TemplateListPage';
import { TemplateWizardPage } from '../TemplateWizardPage';
import {
NextFieldExtensionOptions,
+ FormProps,
+} from '@backstage/plugin-scaffolder-react/alpha';
+import {
ScaffolderTaskOutput,
SecretsContextProvider,
useCustomFieldExtensions,
useCustomLayouts,
- type FormProps,
} from '@backstage/plugin-scaffolder-react';
import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common';
diff --git a/plugins/scaffolder/src/next/TemplateEditorPage/CustomFieldExplorer.tsx b/plugins/scaffolder/src/next/TemplateEditorPage/CustomFieldExplorer.tsx
index d0852a6a31..823d5b164a 100644
--- a/plugins/scaffolder/src/next/TemplateEditorPage/CustomFieldExplorer.tsx
+++ b/plugins/scaffolder/src/next/TemplateEditorPage/CustomFieldExplorer.tsx
@@ -34,7 +34,7 @@ import yaml from 'yaml';
import {
NextFieldExtensionOptions,
Form,
-} from '@backstage/plugin-scaffolder-react';
+} from '@backstage/plugin-scaffolder-react/alpha';
import { TemplateEditorForm } from './TemplateEditorForm';
import validator from '@rjsf/validator-ajv8';
diff --git a/plugins/scaffolder/src/next/TemplateEditorPage/TemplateEditor.tsx b/plugins/scaffolder/src/next/TemplateEditorPage/TemplateEditor.tsx
index 4cdd383f83..16067e8095 100644
--- a/plugins/scaffolder/src/next/TemplateEditorPage/TemplateEditor.tsx
+++ b/plugins/scaffolder/src/next/TemplateEditorPage/TemplateEditor.tsx
@@ -15,10 +15,8 @@
*/
import { makeStyles } from '@material-ui/core';
import React, { useState } from 'react';
-import type {
- LayoutOptions,
- NextFieldExtensionOptions,
-} from '@backstage/plugin-scaffolder-react';
+import type { LayoutOptions } from '@backstage/plugin-scaffolder-react';
+import { NextFieldExtensionOptions } from '@backstage/plugin-scaffolder-react/alpha';
import { TemplateDirectoryAccess } from '../../lib/filesystem';
import { DirectoryEditorProvider } from '../../components/TemplateEditorPage/DirectoryEditorContext';
import { DryRunProvider } from '../../components/TemplateEditorPage/DryRunContext';
diff --git a/plugins/scaffolder/src/next/TemplateEditorPage/TemplateEditorForm.tsx b/plugins/scaffolder/src/next/TemplateEditorPage/TemplateEditorForm.tsx
index 5dc841cf20..898487e200 100644
--- a/plugins/scaffolder/src/next/TemplateEditorPage/TemplateEditorForm.tsx
+++ b/plugins/scaffolder/src/next/TemplateEditorPage/TemplateEditorForm.tsx
@@ -21,10 +21,12 @@ import useDebounce from 'react-use/lib/useDebounce';
import yaml from 'yaml';
import {
LayoutOptions,
- NextFieldExtensionOptions,
- Stepper,
TemplateParameterSchema,
} from '@backstage/plugin-scaffolder-react';
+import {
+ NextFieldExtensionOptions,
+ Stepper,
+} from '@backstage/plugin-scaffolder-react/alpha';
import { useDryRun } from '../../components/TemplateEditorPage/DryRunContext';
import { useDirectoryEditor } from '../../components/TemplateEditorPage/DirectoryEditorContext';
diff --git a/plugins/scaffolder/src/next/TemplateEditorPage/TemplateEditorPage.tsx b/plugins/scaffolder/src/next/TemplateEditorPage/TemplateEditorPage.tsx
index 92387fd69d..9863e99c73 100644
--- a/plugins/scaffolder/src/next/TemplateEditorPage/TemplateEditorPage.tsx
+++ b/plugins/scaffolder/src/next/TemplateEditorPage/TemplateEditorPage.tsx
@@ -22,10 +22,8 @@ import {
import { CustomFieldExplorer } from './CustomFieldExplorer';
import { TemplateEditor } from './TemplateEditor';
import { TemplateFormPreviewer } from './TemplateFormPreviewer';
-import {
- NextFieldExtensionOptions,
- type LayoutOptions,
-} from '@backstage/plugin-scaffolder-react';
+import { type LayoutOptions } from '@backstage/plugin-scaffolder-react';
+import { NextFieldExtensionOptions } from '@backstage/plugin-scaffolder-react/alpha';
import { TemplateEditorIntro } from '../../components/TemplateEditorPage/TemplateEditorIntro';
type Selection =
diff --git a/plugins/scaffolder/src/next/TemplateEditorPage/TemplateFormPreviewer.tsx b/plugins/scaffolder/src/next/TemplateEditorPage/TemplateFormPreviewer.tsx
index 1476cda2d0..2aa1cc764d 100644
--- a/plugins/scaffolder/src/next/TemplateEditorPage/TemplateFormPreviewer.tsx
+++ b/plugins/scaffolder/src/next/TemplateEditorPage/TemplateFormPreviewer.tsx
@@ -32,10 +32,8 @@ import CloseIcon from '@material-ui/icons/Close';
import React, { useCallback, useState } from 'react';
import useAsync from 'react-use/lib/useAsync';
import yaml from 'yaml';
-import {
- NextFieldExtensionOptions,
- type LayoutOptions,
-} from '@backstage/plugin-scaffolder-react';
+import { type LayoutOptions } from '@backstage/plugin-scaffolder-react';
+import { NextFieldExtensionOptions } from '@backstage/plugin-scaffolder-react/alpha';
import { TemplateEditorForm } from './TemplateEditorForm';
import { TemplateEditorTextArea } from '../../components/TemplateEditorPage/TemplateEditorTextArea';
diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateGroups.test.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateGroups.test.tsx
index f76c1a4ab6..19a9728f37 100644
--- a/plugins/scaffolder/src/next/TemplateListPage/TemplateGroups.test.tsx
+++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateGroups.test.tsx
@@ -27,7 +27,7 @@ import { useEntityList } from '@backstage/plugin-catalog-react';
import { TemplateGroups } from './TemplateGroups';
import { renderInTestApp, TestApiProvider } from '@backstage/test-utils';
import { errorApiRef } from '@backstage/core-plugin-api';
-import { TemplateGroup } from '@backstage/plugin-scaffolder-react';
+import { TemplateGroup } from '@backstage/plugin-scaffolder-react/alpha';
import { nextRouteRef } from '../routes';
describe('TemplateGroups', () => {
diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateGroups.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateGroups.tsx
index 485b0e40cd..590ef802bd 100644
--- a/plugins/scaffolder/src/next/TemplateListPage/TemplateGroups.tsx
+++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateGroups.tsx
@@ -30,7 +30,7 @@ import {
useApp,
useRouteRef,
} from '@backstage/core-plugin-api';
-import { TemplateGroup } from '@backstage/plugin-scaffolder-react';
+import { TemplateGroup } from '@backstage/plugin-scaffolder-react/alpha';
import { viewTechDocRouteRef } from '../../routes';
import { nextSelectedTemplateRouteRef } from '../routes';
import { useNavigate } from 'react-router-dom';
diff --git a/plugins/scaffolder/src/next/TemplateWizardPage/TemplateWizardPage.tsx b/plugins/scaffolder/src/next/TemplateWizardPage/TemplateWizardPage.tsx
index b71d0bd7a3..4825715fcb 100644
--- a/plugins/scaffolder/src/next/TemplateWizardPage/TemplateWizardPage.tsx
+++ b/plugins/scaffolder/src/next/TemplateWizardPage/TemplateWizardPage.tsx
@@ -25,13 +25,13 @@ import {
import {
scaffolderApiRef,
useTemplateSecrets,
- Workflow,
type LayoutOptions,
} from '@backstage/plugin-scaffolder-react';
import {
- NextFieldExtensionOptions,
FormProps,
-} from '@backstage/plugin-scaffolder-react';
+ Workflow,
+ NextFieldExtensionOptions,
+} from '@backstage/plugin-scaffolder-react/alpha';
import { JsonValue } from '@backstage/types';
import { Header, Page } from '@backstage/core-components';
import {