@backstage/plugin-scaffolder 1.35.2 → 1.35.3-next.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,16 +1,69 @@
1
1
  # @backstage/plugin-scaffolder
2
2
 
3
- ## 1.35.2
3
+ ## 1.35.3-next.2
4
4
 
5
5
  ### Patch Changes
6
6
 
7
- - 5683c85: Bump to latest zod to ensure it has the latest features
7
+ - 7feb83b: Adjusted to use the new `@backstage/filter-predicates` types for predicate expressions.
8
+ - b9d90a7: Added `@backstage/frontend-test-utils` as a dev dependency for mock API usage in tests.
9
+ - a7e0d50: Prepare for React Router v7 migration by updating to v6.30.2 across all NFS packages and enabling v7 future flags. Convert routes from splat paths to parent/child structure with Outlet components.
8
10
  - Updated dependencies
9
- - @backstage/frontend-plugin-api@0.13.4
10
- - @backstage/core-components@0.18.6
11
- - @backstage/core-plugin-api@1.12.2
12
- - @backstage/plugin-scaffolder-react@1.19.6
13
- - @backstage/plugin-catalog-react@1.21.6
11
+ - @backstage/integration@1.20.0-next.2
12
+ - @backstage/plugin-catalog-react@2.0.0-next.2
13
+ - @backstage/catalog-client@1.12.2-next.0
14
+ - @backstage/plugin-scaffolder-react@1.19.7-next.2
15
+ - @backstage/frontend-plugin-api@0.14.0-next.2
16
+ - @backstage/integration-react@1.2.15-next.2
17
+ - @backstage/core-components@0.18.7-next.2
18
+ - @backstage/core-plugin-api@1.12.3-next.1
19
+ - @backstage/plugin-permission-react@0.4.40-next.1
20
+ - @backstage/plugin-techdocs-react@1.3.8-next.1
21
+
22
+ ## 1.35.3-next.1
23
+
24
+ ### Patch Changes
25
+
26
+ - 4e581a6: Updated the browser tab title on the template wizard page to display the specific template title instead of the generic "Create a new component" text.
27
+ - Updated dependencies
28
+ - @backstage/plugin-catalog-react@1.22.0-next.1
29
+ - @backstage/integration@1.20.0-next.1
30
+ - @backstage/frontend-plugin-api@0.14.0-next.1
31
+ - @backstage/plugin-scaffolder-react@1.19.7-next.1
32
+ - @backstage/core-components@0.18.7-next.1
33
+ - @backstage/plugin-techdocs-react@1.3.8-next.0
34
+ - @backstage/integration-react@1.2.15-next.1
35
+ - @backstage/plugin-scaffolder-common@1.7.6-next.1
36
+
37
+ ## 1.35.2-next.0
38
+
39
+ ### Patch Changes
40
+
41
+ - 7455dae: Use node prefix on native imports
42
+ - 2eeca03: Scaffolder form fields in the new frontend system now use a Utility API pattern instead of multiple attachment points. The `FormFieldBlueprint` now uses this new approach, and while form fields created with older versions still work, they will produce a deprecation warning and will stop working in a future release.
43
+
44
+ As part of this change, the following alpha exports were removed:
45
+
46
+ - `formFieldsApiRef`
47
+ - `ScaffolderFormFieldsApi`
48
+
49
+ - 69d880e: Bump to latest zod to ensure it has the latest features
50
+ - Updated dependencies
51
+ - @backstage/plugin-catalog-react@1.21.6-next.0
52
+ - @backstage/core-components@0.18.6-next.0
53
+ - @backstage/integration@1.19.3-next.0
54
+ - @backstage/frontend-plugin-api@0.14.0-next.0
55
+ - @backstage/plugin-scaffolder-react@1.19.6-next.0
56
+ - @backstage/core-plugin-api@1.12.2-next.0
57
+ - @backstage/plugin-techdocs-react@1.3.8-next.0
58
+ - @backstage/catalog-client@1.12.1
59
+ - @backstage/catalog-model@1.7.6
60
+ - @backstage/errors@1.2.7
61
+ - @backstage/integration-react@1.2.15-next.0
62
+ - @backstage/types@1.2.2
63
+ - @backstage/plugin-catalog-common@1.1.8-next.0
64
+ - @backstage/plugin-permission-react@0.4.40-next.0
65
+ - @backstage/plugin-scaffolder-common@1.7.6-next.0
66
+ - @backstage/plugin-techdocs-common@0.1.1
14
67
 
15
68
  ## 1.35.1
16
69
 
@@ -71,7 +71,9 @@ const TemplateWizardPage = (props) => {
71
71
  /* @__PURE__ */ jsx(
72
72
  Header,
73
73
  {
74
- pageTitleOverride: t("templateWizardPage.pageTitle"),
74
+ pageTitleOverride: manifest?.title ? t("templateWizardPage.templateWithTitle", {
75
+ templateTitle: manifest.title
76
+ }) : t("templateWizardPage.pageTitle"),
75
77
  title: t("templateWizardPage.title"),
76
78
  subtitle: t("templateWizardPage.subtitle"),
77
79
  ...props.headerOptions,
@@ -1 +1 @@
1
- {"version":3,"file":"TemplateWizardPage.esm.js","sources":["../../../../src/alpha/components/TemplateWizardPage/TemplateWizardPage.tsx"],"sourcesContent":["/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ComponentType, useCallback, useState } from 'react';\nimport { Navigate, useNavigate } from 'react-router-dom';\nimport useAsync from 'react-use/esm/useAsync';\nimport {\n stringifyEntityRef,\n ANNOTATION_EDIT_URL,\n} from '@backstage/catalog-model';\nimport {\n AnalyticsContext,\n useApi,\n useRouteRef,\n useRouteRefParams,\n} from '@backstage/core-plugin-api';\nimport {\n scaffolderApiRef,\n useTemplateSecrets,\n type LayoutOptions,\n FormProps,\n FieldExtensionOptions,\n ReviewStepProps,\n} from '@backstage/plugin-scaffolder-react';\nimport { catalogApiRef } from '@backstage/plugin-catalog-react';\n\nimport {\n Workflow,\n useTemplateParameterSchema,\n} from '@backstage/plugin-scaffolder-react/alpha';\nimport { JsonValue } from '@backstage/types';\nimport { Header, Page, Progress } from '@backstage/core-components';\n\nimport {\n rootRouteRef,\n scaffolderTaskRouteRef,\n selectedTemplateRouteRef,\n} from '../../../routes';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { scaffolderTranslationRef } from '../../../translation';\n\nimport { TemplateWizardPageContextMenu } from './TemplateWizardPageContextMenu';\nimport { useFormDecorators } from '../../hooks';\n\n/**\n * @alpha\n */\nexport type TemplateWizardPageProps = {\n customFieldExtensions: FieldExtensionOptions<any, any>[];\n components?: {\n ReviewStepComponent?: ComponentType<ReviewStepProps>;\n };\n layouts?: LayoutOptions[];\n formProps?: FormProps;\n headerOptions?: {\n pageTitleOverride?: string;\n title?: string;\n subtitle?: string;\n };\n};\n\nexport const TemplateWizardPage = (props: TemplateWizardPageProps) => {\n const rootRef = useRouteRef(rootRouteRef);\n const taskRoute = useRouteRef(scaffolderTaskRouteRef);\n const { secrets: contextSecrets } = useTemplateSecrets();\n const scaffolderApi = useApi(scaffolderApiRef);\n const catalogApi = useApi(catalogApiRef);\n const [isCreating, setIsCreating] = useState(false);\n const navigate = useNavigate();\n const { templateName, namespace } = useRouteRefParams(\n selectedTemplateRouteRef,\n );\n const { t } = useTranslationRef(scaffolderTranslationRef);\n\n const templateRef = stringifyEntityRef({\n kind: 'Template',\n namespace,\n name: templateName,\n });\n\n const { manifest } = useTemplateParameterSchema(templateRef);\n const decorators = useFormDecorators();\n\n const { value: editUrl } = useAsync(async () => {\n const data = await catalogApi.getEntityByRef(templateRef);\n return data?.metadata.annotations?.[ANNOTATION_EDIT_URL];\n }, [templateRef, catalogApi]);\n\n const onCreate = useCallback(\n async (initialValues: Record<string, JsonValue>) => {\n if (isCreating) {\n return;\n }\n\n setIsCreating(true);\n\n const { formState: values, secrets } = await decorators.run({\n formState: initialValues,\n secrets: contextSecrets,\n manifest,\n });\n\n const { taskId } = await scaffolderApi.scaffold({\n templateRef,\n values,\n secrets,\n });\n\n navigate(taskRoute({ taskId }));\n },\n [\n contextSecrets,\n decorators,\n isCreating,\n manifest,\n navigate,\n scaffolderApi,\n taskRoute,\n templateRef,\n ],\n );\n\n const onError = useCallback(() => <Navigate to={rootRef()} />, [rootRef]);\n\n return (\n <AnalyticsContext attributes={{ entityRef: templateRef }}>\n <Page themeId=\"website\">\n <Header\n pageTitleOverride={t('templateWizardPage.pageTitle')}\n title={t('templateWizardPage.title')}\n subtitle={t('templateWizardPage.subtitle')}\n {...props.headerOptions}\n >\n <TemplateWizardPageContextMenu editUrl={editUrl} />\n </Header>\n {isCreating && <Progress />}\n <Workflow\n namespace={namespace}\n templateName={templateName}\n onCreate={onCreate}\n components={props.components}\n onError={onError}\n extensions={props.customFieldExtensions}\n formProps={props.formProps}\n layouts={props.layouts}\n />\n </Page>\n </AnalyticsContext>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TemplateWizardPage.esm.js","sources":["../../../../src/alpha/components/TemplateWizardPage/TemplateWizardPage.tsx"],"sourcesContent":["/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ComponentType, useCallback, useState } from 'react';\nimport { Navigate, useNavigate } from 'react-router-dom';\nimport useAsync from 'react-use/esm/useAsync';\nimport {\n stringifyEntityRef,\n ANNOTATION_EDIT_URL,\n} from '@backstage/catalog-model';\nimport {\n AnalyticsContext,\n useApi,\n useRouteRef,\n useRouteRefParams,\n} from '@backstage/core-plugin-api';\nimport {\n scaffolderApiRef,\n useTemplateSecrets,\n type LayoutOptions,\n FormProps,\n FieldExtensionOptions,\n ReviewStepProps,\n} from '@backstage/plugin-scaffolder-react';\nimport { catalogApiRef } from '@backstage/plugin-catalog-react';\n\nimport {\n Workflow,\n useTemplateParameterSchema,\n} from '@backstage/plugin-scaffolder-react/alpha';\nimport { JsonValue } from '@backstage/types';\nimport { Header, Page, Progress } from '@backstage/core-components';\n\nimport {\n rootRouteRef,\n scaffolderTaskRouteRef,\n selectedTemplateRouteRef,\n} from '../../../routes';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { scaffolderTranslationRef } from '../../../translation';\n\nimport { TemplateWizardPageContextMenu } from './TemplateWizardPageContextMenu';\nimport { useFormDecorators } from '../../hooks';\n\n/**\n * @alpha\n */\nexport type TemplateWizardPageProps = {\n customFieldExtensions: FieldExtensionOptions<any, any>[];\n components?: {\n ReviewStepComponent?: ComponentType<ReviewStepProps>;\n };\n layouts?: LayoutOptions[];\n formProps?: FormProps;\n headerOptions?: {\n pageTitleOverride?: string;\n title?: string;\n subtitle?: string;\n };\n};\n\nexport const TemplateWizardPage = (props: TemplateWizardPageProps) => {\n const rootRef = useRouteRef(rootRouteRef);\n const taskRoute = useRouteRef(scaffolderTaskRouteRef);\n const { secrets: contextSecrets } = useTemplateSecrets();\n const scaffolderApi = useApi(scaffolderApiRef);\n const catalogApi = useApi(catalogApiRef);\n const [isCreating, setIsCreating] = useState(false);\n const navigate = useNavigate();\n const { templateName, namespace } = useRouteRefParams(\n selectedTemplateRouteRef,\n );\n const { t } = useTranslationRef(scaffolderTranslationRef);\n\n const templateRef = stringifyEntityRef({\n kind: 'Template',\n namespace,\n name: templateName,\n });\n\n const { manifest } = useTemplateParameterSchema(templateRef);\n const decorators = useFormDecorators();\n\n const { value: editUrl } = useAsync(async () => {\n const data = await catalogApi.getEntityByRef(templateRef);\n return data?.metadata.annotations?.[ANNOTATION_EDIT_URL];\n }, [templateRef, catalogApi]);\n\n const onCreate = useCallback(\n async (initialValues: Record<string, JsonValue>) => {\n if (isCreating) {\n return;\n }\n\n setIsCreating(true);\n\n const { formState: values, secrets } = await decorators.run({\n formState: initialValues,\n secrets: contextSecrets,\n manifest,\n });\n\n const { taskId } = await scaffolderApi.scaffold({\n templateRef,\n values,\n secrets,\n });\n\n navigate(taskRoute({ taskId }));\n },\n [\n contextSecrets,\n decorators,\n isCreating,\n manifest,\n navigate,\n scaffolderApi,\n taskRoute,\n templateRef,\n ],\n );\n\n const onError = useCallback(() => <Navigate to={rootRef()} />, [rootRef]);\n\n return (\n <AnalyticsContext attributes={{ entityRef: templateRef }}>\n <Page themeId=\"website\">\n <Header\n pageTitleOverride={\n manifest?.title\n ? t('templateWizardPage.templateWithTitle', {\n templateTitle: manifest.title,\n })\n : t('templateWizardPage.pageTitle')\n }\n title={t('templateWizardPage.title')}\n subtitle={t('templateWizardPage.subtitle')}\n {...props.headerOptions}\n >\n <TemplateWizardPageContextMenu editUrl={editUrl} />\n </Header>\n {isCreating && <Progress />}\n <Workflow\n namespace={namespace}\n templateName={templateName}\n onCreate={onCreate}\n components={props.components}\n onError={onError}\n extensions={props.customFieldExtensions}\n formProps={props.formProps}\n layouts={props.layouts}\n />\n </Page>\n </AnalyticsContext>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ import { FormFieldBlueprint } from '@backstage/plugin-scaffolder-react/alpha';
6
6
  import { scmIntegrationsApiRef } from '@backstage/integration-react';
7
7
  import { scaffolderApiRef } from '@backstage/plugin-scaffolder-react';
8
8
  import { ScaffolderClient } from '../api.esm.js';
9
+ import { formFieldsApiRef } from './formFieldsApi.esm.js';
9
10
 
10
11
  const scaffolderPage = PageBlueprint.makeWithOverrides({
11
12
  inputs: {
@@ -13,14 +14,22 @@ const scaffolderPage = PageBlueprint.makeWithOverrides({
13
14
  FormFieldBlueprint.dataRefs.formFieldLoader
14
15
  ])
15
16
  },
16
- factory(originalFactory, { inputs }) {
17
- const formFieldLoaders = inputs.formFields.map(
18
- (i) => i.get(FormFieldBlueprint.dataRefs.formFieldLoader)
19
- );
17
+ factory(originalFactory, { apis, inputs }) {
18
+ const formFieldsApi = apis.get(formFieldsApiRef);
20
19
  return originalFactory({
21
20
  routeRef: rootRouteRef,
22
21
  path: "/create",
23
- loader: () => import('../components/Router/Router.esm.js').then((m) => /* @__PURE__ */ jsx(m.InternalRouter, { formFieldLoaders }))
22
+ loader: async () => {
23
+ const apiFormFields = await formFieldsApi?.loadFormFields() ?? [];
24
+ const formFieldLoaders = inputs.formFields.map(
25
+ (output) => output.get(FormFieldBlueprint.dataRefs.formFieldLoader)
26
+ );
27
+ const loadedFormFields = await Promise.all(
28
+ formFieldLoaders.map((loader) => loader())
29
+ );
30
+ const formFields = [...apiFormFields, ...loadedFormFields];
31
+ return import('../components/Router/Router.esm.js').then((m) => /* @__PURE__ */ jsx(m.InternalRouter, { formFields }));
32
+ }
24
33
  });
25
34
  }
26
35
  });
@@ -1 +1 @@
1
- {"version":3,"file":"extensions.esm.js","sources":["../../src/alpha/extensions.tsx"],"sourcesContent":["/*\n * Copyright 2023 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ApiBlueprint,\n createExtensionInput,\n discoveryApiRef,\n fetchApiRef,\n identityApiRef,\n NavItemBlueprint,\n PageBlueprint,\n} from '@backstage/frontend-plugin-api';\nimport { rootRouteRef } from '../routes';\nimport CreateComponentIcon from '@material-ui/icons/AddCircleOutline';\nimport { FormFieldBlueprint } from '@backstage/plugin-scaffolder-react/alpha';\nimport { scmIntegrationsApiRef } from '@backstage/integration-react';\nimport { scaffolderApiRef } from '@backstage/plugin-scaffolder-react';\nimport { ScaffolderClient } from '../api';\n\nexport const scaffolderPage = PageBlueprint.makeWithOverrides({\n inputs: {\n formFields: createExtensionInput([\n FormFieldBlueprint.dataRefs.formFieldLoader,\n ]),\n },\n factory(originalFactory, { inputs }) {\n const formFieldLoaders = inputs.formFields.map(i =>\n i.get(FormFieldBlueprint.dataRefs.formFieldLoader),\n );\n return originalFactory({\n routeRef: rootRouteRef,\n path: '/create',\n loader: () =>\n import('../components/Router/Router').then(m => (\n <m.InternalRouter formFieldLoaders={formFieldLoaders} />\n )),\n });\n },\n});\n\nexport const scaffolderNavItem = NavItemBlueprint.make({\n params: {\n routeRef: rootRouteRef,\n title: 'Create...',\n icon: CreateComponentIcon,\n },\n});\n\nexport const repoUrlPickerFormField = FormFieldBlueprint.make({\n name: 'repo-url-picker',\n params: {\n field: () => import('./fields/RepoUrlPicker').then(m => m.RepoUrlPicker),\n },\n});\n\nexport const entityNamePickerFormField = FormFieldBlueprint.make({\n name: 'entity-name-picker',\n params: {\n field: () =>\n import('./fields/EntityNamePicker').then(m => m.EntityNamePicker),\n },\n});\n\nexport const entityPickerFormField = FormFieldBlueprint.make({\n name: 'entity-picker',\n params: {\n field: () => import('./fields/EntityPicker').then(m => m.EntityPicker),\n },\n});\n\nexport const ownerPickerFormField = FormFieldBlueprint.make({\n name: 'owner-picker',\n params: {\n field: () => import('./fields/OwnerPicker').then(m => m.OwnerPicker),\n },\n});\n\nexport const entityTagsPickerFormField = FormFieldBlueprint.make({\n name: 'entity-tags-picker',\n params: {\n field: () =>\n import('./fields/EntityTagsPicker').then(m => m.EntityTagsPicker),\n },\n});\n\nexport const multiEntityPickerFormField = FormFieldBlueprint.make({\n name: 'multi-entity-picker',\n params: {\n field: () =>\n import('./fields/MultiEntityPicker').then(m => m.MultiEntityPicker),\n },\n});\n\nexport const myGroupsPickerFormField = FormFieldBlueprint.make({\n name: 'my-groups-picker',\n params: {\n field: () => import('./fields/MyGroupsPicker').then(m => m.MyGroupsPicker),\n },\n});\n\nexport const ownedEntityPickerFormField = FormFieldBlueprint.make({\n name: 'owned-entity-picker',\n params: {\n field: () =>\n import('./fields/OwnedEntityPicker').then(m => m.OwnedEntityPicker),\n },\n});\n\nexport const repoBranchPickerFormField = FormFieldBlueprint.make({\n name: 'repo-branch-picker',\n params: {\n field: () =>\n import('./fields/RepoBranchPicker').then(m => m.RepoBranchPicker),\n },\n});\n\nexport const repoOwnerPickerFormField = FormFieldBlueprint.make({\n name: 'repo-owner-picker',\n params: {\n field: () =>\n import('./fields/RepoOwnerPicker').then(m => m.RepoOwnerPicker),\n },\n});\n\nexport const scaffolderApi = ApiBlueprint.make({\n params: defineParams =>\n defineParams({\n api: scaffolderApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n scmIntegrationsApi: scmIntegrationsApiRef,\n fetchApi: fetchApiRef,\n identityApi: identityApiRef,\n },\n factory: ({ discoveryApi, scmIntegrationsApi, fetchApi, identityApi }) =>\n new ScaffolderClient({\n discoveryApi,\n scmIntegrationsApi,\n fetchApi,\n identityApi,\n }),\n }),\n});\n"],"names":[],"mappings":";;;;;;;;;AAgCO,MAAM,cAAA,GAAiB,cAAc,iBAAA,CAAkB;AAAA,EAC5D,MAAA,EAAQ;AAAA,IACN,YAAY,oBAAA,CAAqB;AAAA,MAC/B,mBAAmB,QAAA,CAAS;AAAA,KAC7B;AAAA,GACH;AAAA,EACA,OAAA,CAAQ,eAAA,EAAiB,EAAE,MAAA,EAAO,EAAG;AACnC,IAAA,MAAM,gBAAA,GAAmB,OAAO,UAAA,CAAW,GAAA;AAAA,MAAI,CAAA,CAAA,KAC7C,CAAA,CAAE,GAAA,CAAI,kBAAA,CAAmB,SAAS,eAAe;AAAA,KACnD;AACA,IAAA,OAAO,eAAA,CAAgB;AAAA,MACrB,QAAA,EAAU,YAAA;AAAA,MACV,IAAA,EAAM,SAAA;AAAA,MACN,MAAA,EAAQ,MACN,OAAO,oCAA6B,CAAA,CAAE,IAAA,CAAK,CAAA,CAAA,qBACzC,GAAA,CAAC,CAAA,CAAE,cAAA,EAAF,EAAiB,gBAAA,EAAoC,CACvD;AAAA,KACJ,CAAA;AAAA,EACH;AACF,CAAC;AAEM,MAAM,iBAAA,GAAoB,iBAAiB,IAAA,CAAK;AAAA,EACrD,MAAA,EAAQ;AAAA,IACN,QAAA,EAAU,YAAA;AAAA,IACV,KAAA,EAAO,WAAA;AAAA,IACP,IAAA,EAAM;AAAA;AAEV,CAAC;AAEM,MAAM,sBAAA,GAAyB,mBAAmB,IAAA,CAAK;AAAA,EAC5D,IAAA,EAAM,iBAAA;AAAA,EACN,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,MAAM,OAAO,+BAAwB,EAAE,IAAA,CAAK,CAAA,CAAA,KAAK,EAAE,aAAa;AAAA;AAE3E,CAAC;AAEM,MAAM,yBAAA,GAA4B,mBAAmB,IAAA,CAAK;AAAA,EAC/D,IAAA,EAAM,oBAAA;AAAA,EACN,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,MACL,OAAO,kCAA2B,EAAE,IAAA,CAAK,CAAA,CAAA,KAAK,EAAE,gBAAgB;AAAA;AAEtE,CAAC;AAEM,MAAM,qBAAA,GAAwB,mBAAmB,IAAA,CAAK;AAAA,EAC3D,IAAA,EAAM,eAAA;AAAA,EACN,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,MAAM,OAAO,8BAAuB,EAAE,IAAA,CAAK,CAAA,CAAA,KAAK,EAAE,YAAY;AAAA;AAEzE,CAAC;AAEM,MAAM,oBAAA,GAAuB,mBAAmB,IAAA,CAAK;AAAA,EAC1D,IAAA,EAAM,cAAA;AAAA,EACN,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,MAAM,OAAO,6BAAsB,EAAE,IAAA,CAAK,CAAA,CAAA,KAAK,EAAE,WAAW;AAAA;AAEvE,CAAC;AAEM,MAAM,yBAAA,GAA4B,mBAAmB,IAAA,CAAK;AAAA,EAC/D,IAAA,EAAM,oBAAA;AAAA,EACN,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,MACL,OAAO,kCAA2B,EAAE,IAAA,CAAK,CAAA,CAAA,KAAK,EAAE,gBAAgB;AAAA;AAEtE,CAAC;AAEM,MAAM,0BAAA,GAA6B,mBAAmB,IAAA,CAAK;AAAA,EAChE,IAAA,EAAM,qBAAA;AAAA,EACN,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,MACL,OAAO,mCAA4B,EAAE,IAAA,CAAK,CAAA,CAAA,KAAK,EAAE,iBAAiB;AAAA;AAExE,CAAC;AAEM,MAAM,uBAAA,GAA0B,mBAAmB,IAAA,CAAK;AAAA,EAC7D,IAAA,EAAM,kBAAA;AAAA,EACN,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,MAAM,OAAO,gCAAyB,EAAE,IAAA,CAAK,CAAA,CAAA,KAAK,EAAE,cAAc;AAAA;AAE7E,CAAC;AAEM,MAAM,0BAAA,GAA6B,mBAAmB,IAAA,CAAK;AAAA,EAChE,IAAA,EAAM,qBAAA;AAAA,EACN,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,MACL,OAAO,mCAA4B,EAAE,IAAA,CAAK,CAAA,CAAA,KAAK,EAAE,iBAAiB;AAAA;AAExE,CAAC;AAEM,MAAM,yBAAA,GAA4B,mBAAmB,IAAA,CAAK;AAAA,EAC/D,IAAA,EAAM,oBAAA;AAAA,EACN,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,MACL,OAAO,kCAA2B,EAAE,IAAA,CAAK,CAAA,CAAA,KAAK,EAAE,gBAAgB;AAAA;AAEtE,CAAC;AAEM,MAAM,wBAAA,GAA2B,mBAAmB,IAAA,CAAK;AAAA,EAC9D,IAAA,EAAM,mBAAA;AAAA,EACN,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,MACL,OAAO,iCAA0B,EAAE,IAAA,CAAK,CAAA,CAAA,KAAK,EAAE,eAAe;AAAA;AAEpE,CAAC;AAEM,MAAM,aAAA,GAAgB,aAAa,IAAA,CAAK;AAAA,EAC7C,MAAA,EAAQ,kBACN,YAAA,CAAa;AAAA,IACX,GAAA,EAAK,gBAAA;AAAA,IACL,IAAA,EAAM;AAAA,MACJ,YAAA,EAAc,eAAA;AAAA,MACd,kBAAA,EAAoB,qBAAA;AAAA,MACpB,QAAA,EAAU,WAAA;AAAA,MACV,WAAA,EAAa;AAAA,KACf;AAAA,IACA,OAAA,EAAS,CAAC,EAAE,YAAA,EAAc,oBAAoB,QAAA,EAAU,WAAA,EAAY,KAClE,IAAI,gBAAA,CAAiB;AAAA,MACnB,YAAA;AAAA,MACA,kBAAA;AAAA,MACA,QAAA;AAAA,MACA;AAAA,KACD;AAAA,GACJ;AACL,CAAC;;;;"}
1
+ {"version":3,"file":"extensions.esm.js","sources":["../../src/alpha/extensions.tsx"],"sourcesContent":["/*\n * Copyright 2023 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ApiBlueprint,\n createExtensionInput,\n discoveryApiRef,\n fetchApiRef,\n identityApiRef,\n NavItemBlueprint,\n PageBlueprint,\n} from '@backstage/frontend-plugin-api';\nimport { rootRouteRef } from '../routes';\nimport CreateComponentIcon from '@material-ui/icons/AddCircleOutline';\nimport { FormFieldBlueprint } from '@backstage/plugin-scaffolder-react/alpha';\nimport { scmIntegrationsApiRef } from '@backstage/integration-react';\nimport { scaffolderApiRef } from '@backstage/plugin-scaffolder-react';\nimport { ScaffolderClient } from '../api';\nimport { formFieldsApiRef } from './formFieldsApi';\n\nexport const scaffolderPage = PageBlueprint.makeWithOverrides({\n inputs: {\n formFields: createExtensionInput([\n FormFieldBlueprint.dataRefs.formFieldLoader,\n ]),\n },\n factory(originalFactory, { apis, inputs }) {\n const formFieldsApi = apis.get(formFieldsApiRef);\n\n return originalFactory({\n routeRef: rootRouteRef,\n path: '/create',\n loader: async () => {\n // Merge form fields from the API with old-style direct attachments\n const apiFormFields = (await formFieldsApi?.loadFormFields()) ?? [];\n const formFieldLoaders = inputs.formFields.map(output =>\n output.get(FormFieldBlueprint.dataRefs.formFieldLoader),\n );\n\n // Resolve direct attachments and combine with API form fields\n const loadedFormFields = await Promise.all(\n formFieldLoaders.map(loader => loader()),\n );\n const formFields = [...apiFormFields, ...loadedFormFields];\n\n return import('../components/Router/Router').then(m => (\n <m.InternalRouter formFields={formFields} />\n ));\n },\n });\n },\n});\n\nexport const scaffolderNavItem = NavItemBlueprint.make({\n params: {\n routeRef: rootRouteRef,\n title: 'Create...',\n icon: CreateComponentIcon,\n },\n});\n\nexport const repoUrlPickerFormField = FormFieldBlueprint.make({\n name: 'repo-url-picker',\n params: {\n field: () => import('./fields/RepoUrlPicker').then(m => m.RepoUrlPicker),\n },\n});\n\nexport const entityNamePickerFormField = FormFieldBlueprint.make({\n name: 'entity-name-picker',\n params: {\n field: () =>\n import('./fields/EntityNamePicker').then(m => m.EntityNamePicker),\n },\n});\n\nexport const entityPickerFormField = FormFieldBlueprint.make({\n name: 'entity-picker',\n params: {\n field: () => import('./fields/EntityPicker').then(m => m.EntityPicker),\n },\n});\n\nexport const ownerPickerFormField = FormFieldBlueprint.make({\n name: 'owner-picker',\n params: {\n field: () => import('./fields/OwnerPicker').then(m => m.OwnerPicker),\n },\n});\n\nexport const entityTagsPickerFormField = FormFieldBlueprint.make({\n name: 'entity-tags-picker',\n params: {\n field: () =>\n import('./fields/EntityTagsPicker').then(m => m.EntityTagsPicker),\n },\n});\n\nexport const multiEntityPickerFormField = FormFieldBlueprint.make({\n name: 'multi-entity-picker',\n params: {\n field: () =>\n import('./fields/MultiEntityPicker').then(m => m.MultiEntityPicker),\n },\n});\n\nexport const myGroupsPickerFormField = FormFieldBlueprint.make({\n name: 'my-groups-picker',\n params: {\n field: () => import('./fields/MyGroupsPicker').then(m => m.MyGroupsPicker),\n },\n});\n\nexport const ownedEntityPickerFormField = FormFieldBlueprint.make({\n name: 'owned-entity-picker',\n params: {\n field: () =>\n import('./fields/OwnedEntityPicker').then(m => m.OwnedEntityPicker),\n },\n});\n\nexport const repoBranchPickerFormField = FormFieldBlueprint.make({\n name: 'repo-branch-picker',\n params: {\n field: () =>\n import('./fields/RepoBranchPicker').then(m => m.RepoBranchPicker),\n },\n});\n\nexport const repoOwnerPickerFormField = FormFieldBlueprint.make({\n name: 'repo-owner-picker',\n params: {\n field: () =>\n import('./fields/RepoOwnerPicker').then(m => m.RepoOwnerPicker),\n },\n});\n\nexport const scaffolderApi = ApiBlueprint.make({\n params: defineParams =>\n defineParams({\n api: scaffolderApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n scmIntegrationsApi: scmIntegrationsApiRef,\n fetchApi: fetchApiRef,\n identityApi: identityApiRef,\n },\n factory: ({ discoveryApi, scmIntegrationsApi, fetchApi, identityApi }) =>\n new ScaffolderClient({\n discoveryApi,\n scmIntegrationsApi,\n fetchApi,\n identityApi,\n }),\n }),\n});\n"],"names":[],"mappings":";;;;;;;;;;AAiCO,MAAM,cAAA,GAAiB,cAAc,iBAAA,CAAkB;AAAA,EAC5D,MAAA,EAAQ;AAAA,IACN,YAAY,oBAAA,CAAqB;AAAA,MAC/B,mBAAmB,QAAA,CAAS;AAAA,KAC7B;AAAA,GACH;AAAA,EACA,OAAA,CAAQ,eAAA,EAAiB,EAAE,IAAA,EAAM,QAAO,EAAG;AACzC,IAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,GAAA,CAAI,gBAAgB,CAAA;AAE/C,IAAA,OAAO,eAAA,CAAgB;AAAA,MACrB,QAAA,EAAU,YAAA;AAAA,MACV,IAAA,EAAM,SAAA;AAAA,MACN,QAAQ,YAAY;AAElB,QAAA,MAAM,aAAA,GAAiB,MAAM,aAAA,EAAe,cAAA,MAAqB,EAAC;AAClE,QAAA,MAAM,gBAAA,GAAmB,OAAO,UAAA,CAAW,GAAA;AAAA,UAAI,CAAA,MAAA,KAC7C,MAAA,CAAO,GAAA,CAAI,kBAAA,CAAmB,SAAS,eAAe;AAAA,SACxD;AAGA,QAAA,MAAM,gBAAA,GAAmB,MAAM,OAAA,CAAQ,GAAA;AAAA,UACrC,gBAAA,CAAiB,GAAA,CAAI,CAAA,MAAA,KAAU,MAAA,EAAQ;AAAA,SACzC;AACA,QAAA,MAAM,UAAA,GAAa,CAAC,GAAG,aAAA,EAAe,GAAG,gBAAgB,CAAA;AAEzD,QAAA,OAAO,OAAO,oCAA6B,CAAA,CAAE,IAAA,CAAK,CAAA,CAAA,yBAC/C,CAAA,CAAE,cAAA,EAAF,EAAiB,UAAA,EAAwB,CAC3C,CAAA;AAAA,MACH;AAAA,KACD,CAAA;AAAA,EACH;AACF,CAAC;AAEM,MAAM,iBAAA,GAAoB,iBAAiB,IAAA,CAAK;AAAA,EACrD,MAAA,EAAQ;AAAA,IACN,QAAA,EAAU,YAAA;AAAA,IACV,KAAA,EAAO,WAAA;AAAA,IACP,IAAA,EAAM;AAAA;AAEV,CAAC;AAEM,MAAM,sBAAA,GAAyB,mBAAmB,IAAA,CAAK;AAAA,EAC5D,IAAA,EAAM,iBAAA;AAAA,EACN,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,MAAM,OAAO,+BAAwB,EAAE,IAAA,CAAK,CAAA,CAAA,KAAK,EAAE,aAAa;AAAA;AAE3E,CAAC;AAEM,MAAM,yBAAA,GAA4B,mBAAmB,IAAA,CAAK;AAAA,EAC/D,IAAA,EAAM,oBAAA;AAAA,EACN,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,MACL,OAAO,kCAA2B,EAAE,IAAA,CAAK,CAAA,CAAA,KAAK,EAAE,gBAAgB;AAAA;AAEtE,CAAC;AAEM,MAAM,qBAAA,GAAwB,mBAAmB,IAAA,CAAK;AAAA,EAC3D,IAAA,EAAM,eAAA;AAAA,EACN,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,MAAM,OAAO,8BAAuB,EAAE,IAAA,CAAK,CAAA,CAAA,KAAK,EAAE,YAAY;AAAA;AAEzE,CAAC;AAEM,MAAM,oBAAA,GAAuB,mBAAmB,IAAA,CAAK;AAAA,EAC1D,IAAA,EAAM,cAAA;AAAA,EACN,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,MAAM,OAAO,6BAAsB,EAAE,IAAA,CAAK,CAAA,CAAA,KAAK,EAAE,WAAW;AAAA;AAEvE,CAAC;AAEM,MAAM,yBAAA,GAA4B,mBAAmB,IAAA,CAAK;AAAA,EAC/D,IAAA,EAAM,oBAAA;AAAA,EACN,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,MACL,OAAO,kCAA2B,EAAE,IAAA,CAAK,CAAA,CAAA,KAAK,EAAE,gBAAgB;AAAA;AAEtE,CAAC;AAEM,MAAM,0BAAA,GAA6B,mBAAmB,IAAA,CAAK;AAAA,EAChE,IAAA,EAAM,qBAAA;AAAA,EACN,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,MACL,OAAO,mCAA4B,EAAE,IAAA,CAAK,CAAA,CAAA,KAAK,EAAE,iBAAiB;AAAA;AAExE,CAAC;AAEM,MAAM,uBAAA,GAA0B,mBAAmB,IAAA,CAAK;AAAA,EAC7D,IAAA,EAAM,kBAAA;AAAA,EACN,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,MAAM,OAAO,gCAAyB,EAAE,IAAA,CAAK,CAAA,CAAA,KAAK,EAAE,cAAc;AAAA;AAE7E,CAAC;AAEM,MAAM,0BAAA,GAA6B,mBAAmB,IAAA,CAAK;AAAA,EAChE,IAAA,EAAM,qBAAA;AAAA,EACN,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,MACL,OAAO,mCAA4B,EAAE,IAAA,CAAK,CAAA,CAAA,KAAK,EAAE,iBAAiB;AAAA;AAExE,CAAC;AAEM,MAAM,yBAAA,GAA4B,mBAAmB,IAAA,CAAK;AAAA,EAC/D,IAAA,EAAM,oBAAA;AAAA,EACN,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,MACL,OAAO,kCAA2B,EAAE,IAAA,CAAK,CAAA,CAAA,KAAK,EAAE,gBAAgB;AAAA;AAEtE,CAAC;AAEM,MAAM,wBAAA,GAA2B,mBAAmB,IAAA,CAAK;AAAA,EAC9D,IAAA,EAAM,mBAAA;AAAA,EACN,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,MACL,OAAO,iCAA0B,EAAE,IAAA,CAAK,CAAA,CAAA,KAAK,EAAE,eAAe;AAAA;AAEpE,CAAC;AAEM,MAAM,aAAA,GAAgB,aAAa,IAAA,CAAK;AAAA,EAC7C,MAAA,EAAQ,kBACN,YAAA,CAAa;AAAA,IACX,GAAA,EAAK,gBAAA;AAAA,IACL,IAAA,EAAM;AAAA,MACJ,YAAA,EAAc,eAAA;AAAA,MACd,kBAAA,EAAoB,qBAAA;AAAA,MACpB,QAAA,EAAU,WAAA;AAAA,MACV,WAAA,EAAa;AAAA,KACf;AAAA,IACA,OAAA,EAAS,CAAC,EAAE,YAAA,EAAc,oBAAoB,QAAA,EAAU,WAAA,EAAY,KAClE,IAAI,gBAAA,CAAiB;AAAA,MACnB,YAAA;AAAA,MACA,kBAAA;AAAA,MACA,QAAA;AAAA,MACA;AAAA,KACD;AAAA,GACJ;AACL,CAAC;;;;"}
@@ -0,0 +1,41 @@
1
+ import { createApiRef, ApiBlueprint, createExtensionInput } from '@backstage/frontend-plugin-api';
2
+ import { FormFieldBlueprint } from '@backstage/plugin-scaffolder-react/alpha';
3
+ import { OpaqueFormField } from '../packages/scaffolder-internal/src/wiring/InternalFormField.esm.js';
4
+ import '../packages/scaffolder-internal/src/wiring/InternalFormDecorator.esm.js';
5
+
6
+ const formFieldsApiRef = createApiRef({
7
+ id: "plugin.scaffolder.form-fields-loader"
8
+ });
9
+ const formFieldsApi = ApiBlueprint.makeWithOverrides({
10
+ name: "form-fields",
11
+ inputs: {
12
+ formFields: createExtensionInput([
13
+ FormFieldBlueprint.dataRefs.formFieldLoader
14
+ ])
15
+ },
16
+ factory(originalFactory, { inputs }) {
17
+ const formFieldLoaders = inputs.formFields.map(
18
+ (e) => e.get(FormFieldBlueprint.dataRefs.formFieldLoader)
19
+ );
20
+ return originalFactory(
21
+ (defineParams) => defineParams({
22
+ api: formFieldsApiRef,
23
+ deps: {},
24
+ factory: () => ({
25
+ async loadFormFields() {
26
+ const formFields = await Promise.all(
27
+ formFieldLoaders.map((loader) => loader())
28
+ );
29
+ const internalFormFields = formFields.map(
30
+ OpaqueFormField.toInternal
31
+ );
32
+ return internalFormFields;
33
+ }
34
+ })
35
+ })
36
+ );
37
+ }
38
+ });
39
+
40
+ export { formFieldsApi, formFieldsApiRef };
41
+ //# sourceMappingURL=formFieldsApi.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formFieldsApi.esm.js","sources":["../../src/alpha/formFieldsApi.ts"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ApiBlueprint,\n createApiRef,\n createExtensionInput,\n} from '@backstage/frontend-plugin-api';\nimport { FormFieldBlueprint } from '@backstage/plugin-scaffolder-react/alpha';\nimport { OpaqueFormField } from '@internal/scaffolder';\n\ninterface FormField {\n readonly $$type: '@backstage/scaffolder/FormField';\n}\n\ninterface ScaffolderFormFieldsApi {\n loadFormFields(): Promise<FormField[]>;\n}\n\nconst formFieldsApiRef = createApiRef<ScaffolderFormFieldsApi>({\n id: 'plugin.scaffolder.form-fields-loader',\n});\n\nexport const formFieldsApi = ApiBlueprint.makeWithOverrides({\n name: 'form-fields',\n inputs: {\n formFields: createExtensionInput([\n FormFieldBlueprint.dataRefs.formFieldLoader,\n ]),\n },\n factory(originalFactory, { inputs }) {\n const formFieldLoaders = inputs.formFields.map(e =>\n e.get(FormFieldBlueprint.dataRefs.formFieldLoader),\n );\n\n return originalFactory(defineParams =>\n defineParams({\n api: formFieldsApiRef,\n deps: {},\n factory: () => ({\n async loadFormFields() {\n const formFields = await Promise.all(\n formFieldLoaders.map(loader => loader()),\n );\n\n const internalFormFields = formFields.map(\n OpaqueFormField.toInternal,\n );\n\n return internalFormFields;\n },\n }),\n }),\n );\n },\n});\n\nexport { formFieldsApiRef };\n"],"names":[],"mappings":";;;;;AAgCA,MAAM,mBAAmB,YAAA,CAAsC;AAAA,EAC7D,EAAA,EAAI;AACN,CAAC;AAEM,MAAM,aAAA,GAAgB,aAAa,iBAAA,CAAkB;AAAA,EAC1D,IAAA,EAAM,aAAA;AAAA,EACN,MAAA,EAAQ;AAAA,IACN,YAAY,oBAAA,CAAqB;AAAA,MAC/B,mBAAmB,QAAA,CAAS;AAAA,KAC7B;AAAA,GACH;AAAA,EACA,OAAA,CAAQ,eAAA,EAAiB,EAAE,MAAA,EAAO,EAAG;AACnC,IAAA,MAAM,gBAAA,GAAmB,OAAO,UAAA,CAAW,GAAA;AAAA,MAAI,CAAA,CAAA,KAC7C,CAAA,CAAE,GAAA,CAAI,kBAAA,CAAmB,SAAS,eAAe;AAAA,KACnD;AAEA,IAAA,OAAO,eAAA;AAAA,MAAgB,kBACrB,YAAA,CAAa;AAAA,QACX,GAAA,EAAK,gBAAA;AAAA,QACL,MAAM,EAAC;AAAA,QACP,SAAS,OAAO;AAAA,UACd,MAAM,cAAA,GAAiB;AACrB,YAAA,MAAM,UAAA,GAAa,MAAM,OAAA,CAAQ,GAAA;AAAA,cAC/B,gBAAA,CAAiB,GAAA,CAAI,CAAA,MAAA,KAAU,MAAA,EAAQ;AAAA,aACzC;AAEA,YAAA,MAAM,qBAAqB,UAAA,CAAW,GAAA;AAAA,cACpC,eAAA,CAAgB;AAAA,aAClB;AAEA,YAAA,OAAO,kBAAA;AAAA,UACT;AAAA,SACF;AAAA,OACD;AAAA,KACH;AAAA,EACF;AACF,CAAC;;;;"}
@@ -2,7 +2,7 @@ import { createFrontendPlugin } from '@backstage/frontend-plugin-api';
2
2
  import { viewTechDocRouteRef, registerComponentRouteRef, templatingExtensionsRouteRef, editRouteRef, scaffolderListTaskRouteRef, actionsRouteRef, scaffolderTaskRouteRef, selectedTemplateRouteRef, rootRouteRef } from '../routes.esm.js';
3
3
  import { scaffolderApi, scaffolderPage, scaffolderNavItem, repoUrlPickerFormField, entityNamePickerFormField, entityPickerFormField, ownerPickerFormField, entityTagsPickerFormField, multiEntityPickerFormField, myGroupsPickerFormField, ownedEntityPickerFormField, repoBranchPickerFormField, repoOwnerPickerFormField } from './extensions.esm.js';
4
4
  import { isTemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common';
5
- import { formFieldsApi } from '@backstage/plugin-scaffolder-react/alpha';
5
+ import { formFieldsApi } from './formFieldsApi.esm.js';
6
6
  import './api/ref.esm.js';
7
7
  import { formDecoratorsApi } from './api/FormDecoratorsApi.esm.js';
8
8
  import { EntityIconLinkBlueprint } from '@backstage/plugin-catalog-react/alpha';
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.esm.js","sources":["../../src/alpha/plugin.tsx"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createFrontendPlugin } from '@backstage/frontend-plugin-api';\nimport {\n actionsRouteRef,\n editRouteRef,\n registerComponentRouteRef,\n rootRouteRef,\n scaffolderListTaskRouteRef,\n scaffolderTaskRouteRef,\n selectedTemplateRouteRef,\n templatingExtensionsRouteRef,\n viewTechDocRouteRef,\n} from '../routes';\nimport {\n entityNamePickerFormField,\n entityPickerFormField,\n entityTagsPickerFormField,\n multiEntityPickerFormField,\n myGroupsPickerFormField,\n ownedEntityPickerFormField,\n ownerPickerFormField,\n repoBranchPickerFormField,\n repoOwnerPickerFormField,\n repoUrlPickerFormField,\n scaffolderApi,\n scaffolderNavItem,\n scaffolderPage,\n} from './extensions';\nimport { isTemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common';\nimport { formFieldsApi } from '@backstage/plugin-scaffolder-react/alpha';\nimport { formDecoratorsApi } from './api';\nimport { EntityIconLinkBlueprint } from '@backstage/plugin-catalog-react/alpha';\nimport { useScaffolderTemplateIconLinkProps } from './hooks/useScaffolderTemplateIconLinkProps';\n\n/** @alpha */\nconst scaffolderEntityIconLink = EntityIconLinkBlueprint.make({\n name: 'launch-template',\n params: {\n filter: isTemplateEntityV1beta3,\n useProps: useScaffolderTemplateIconLinkProps,\n },\n});\n\n/** @alpha */\nexport default createFrontendPlugin({\n pluginId: 'scaffolder',\n info: { packageJson: () => import('../../package.json') },\n routes: {\n root: rootRouteRef,\n selectedTemplate: selectedTemplateRouteRef,\n ongoingTask: scaffolderTaskRouteRef,\n actions: actionsRouteRef,\n listTasks: scaffolderListTaskRouteRef,\n edit: editRouteRef,\n templatingExtensions: templatingExtensionsRouteRef,\n },\n externalRoutes: {\n registerComponent: registerComponentRouteRef,\n viewTechDoc: viewTechDocRouteRef,\n },\n extensions: [\n scaffolderApi,\n scaffolderPage,\n scaffolderNavItem,\n scaffolderEntityIconLink,\n formDecoratorsApi,\n formFieldsApi,\n repoUrlPickerFormField,\n entityNamePickerFormField,\n entityPickerFormField,\n ownerPickerFormField,\n entityTagsPickerFormField,\n multiEntityPickerFormField,\n myGroupsPickerFormField,\n ownedEntityPickerFormField,\n repoBranchPickerFormField,\n repoOwnerPickerFormField,\n ],\n});\n"],"names":[],"mappings":";;;;;;;;;;AAkDA,MAAM,wBAAA,GAA2B,wBAAwB,IAAA,CAAK;AAAA,EAC5D,IAAA,EAAM,iBAAA;AAAA,EACN,MAAA,EAAQ;AAAA,IACN,MAAA,EAAQ,uBAAA;AAAA,IACR,QAAA,EAAU;AAAA;AAEd,CAAC,CAAA;AAGD,aAAe,oBAAA,CAAqB;AAAA,EAClC,QAAA,EAAU,YAAA;AAAA,EACV,MAAM,EAAE,WAAA,EAAa,MAAM,OAAO,2CAAoB,CAAA,EAAE;AAAA,EACxD,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,YAAA;AAAA,IACN,gBAAA,EAAkB,wBAAA;AAAA,IAClB,WAAA,EAAa,sBAAA;AAAA,IACb,OAAA,EAAS,eAAA;AAAA,IACT,SAAA,EAAW,0BAAA;AAAA,IACX,IAAA,EAAM,YAAA;AAAA,IACN,oBAAA,EAAsB;AAAA,GACxB;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,iBAAA,EAAmB,yBAAA;AAAA,IACnB,WAAA,EAAa;AAAA,GACf;AAAA,EACA,UAAA,EAAY;AAAA,IACV,aAAA;AAAA,IACA,cAAA;AAAA,IACA,iBAAA;AAAA,IACA,wBAAA;AAAA,IACA,iBAAA;AAAA,IACA,aAAA;AAAA,IACA,sBAAA;AAAA,IACA,yBAAA;AAAA,IACA,qBAAA;AAAA,IACA,oBAAA;AAAA,IACA,yBAAA;AAAA,IACA,0BAAA;AAAA,IACA,uBAAA;AAAA,IACA,0BAAA;AAAA,IACA,yBAAA;AAAA,IACA;AAAA;AAEJ,CAAC,CAAA;;;;"}
1
+ {"version":3,"file":"plugin.esm.js","sources":["../../src/alpha/plugin.tsx"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createFrontendPlugin } from '@backstage/frontend-plugin-api';\nimport {\n actionsRouteRef,\n editRouteRef,\n registerComponentRouteRef,\n rootRouteRef,\n scaffolderListTaskRouteRef,\n scaffolderTaskRouteRef,\n selectedTemplateRouteRef,\n templatingExtensionsRouteRef,\n viewTechDocRouteRef,\n} from '../routes';\nimport {\n entityNamePickerFormField,\n entityPickerFormField,\n entityTagsPickerFormField,\n multiEntityPickerFormField,\n myGroupsPickerFormField,\n ownedEntityPickerFormField,\n ownerPickerFormField,\n repoBranchPickerFormField,\n repoOwnerPickerFormField,\n repoUrlPickerFormField,\n scaffolderApi,\n scaffolderNavItem,\n scaffolderPage,\n} from './extensions';\nimport { isTemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common';\nimport { formFieldsApi } from './formFieldsApi';\nimport { formDecoratorsApi } from './api';\nimport { EntityIconLinkBlueprint } from '@backstage/plugin-catalog-react/alpha';\nimport { useScaffolderTemplateIconLinkProps } from './hooks/useScaffolderTemplateIconLinkProps';\n\n/** @alpha */\nconst scaffolderEntityIconLink = EntityIconLinkBlueprint.make({\n name: 'launch-template',\n params: {\n filter: isTemplateEntityV1beta3,\n useProps: useScaffolderTemplateIconLinkProps,\n },\n});\n\n/** @alpha */\nexport default createFrontendPlugin({\n pluginId: 'scaffolder',\n info: { packageJson: () => import('../../package.json') },\n routes: {\n root: rootRouteRef,\n selectedTemplate: selectedTemplateRouteRef,\n ongoingTask: scaffolderTaskRouteRef,\n actions: actionsRouteRef,\n listTasks: scaffolderListTaskRouteRef,\n edit: editRouteRef,\n templatingExtensions: templatingExtensionsRouteRef,\n },\n externalRoutes: {\n registerComponent: registerComponentRouteRef,\n viewTechDoc: viewTechDocRouteRef,\n },\n extensions: [\n scaffolderApi,\n scaffolderPage,\n scaffolderNavItem,\n scaffolderEntityIconLink,\n formDecoratorsApi,\n formFieldsApi,\n repoUrlPickerFormField,\n entityNamePickerFormField,\n entityPickerFormField,\n ownerPickerFormField,\n entityTagsPickerFormField,\n multiEntityPickerFormField,\n myGroupsPickerFormField,\n ownedEntityPickerFormField,\n repoBranchPickerFormField,\n repoOwnerPickerFormField,\n ],\n});\n"],"names":[],"mappings":";;;;;;;;;;AAkDA,MAAM,wBAAA,GAA2B,wBAAwB,IAAA,CAAK;AAAA,EAC5D,IAAA,EAAM,iBAAA;AAAA,EACN,MAAA,EAAQ;AAAA,IACN,MAAA,EAAQ,uBAAA;AAAA,IACR,QAAA,EAAU;AAAA;AAEd,CAAC,CAAA;AAGD,aAAe,oBAAA,CAAqB;AAAA,EAClC,QAAA,EAAU,YAAA;AAAA,EACV,MAAM,EAAE,WAAA,EAAa,MAAM,OAAO,2CAAoB,CAAA,EAAE;AAAA,EACxD,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,YAAA;AAAA,IACN,gBAAA,EAAkB,wBAAA;AAAA,IAClB,WAAA,EAAa,sBAAA;AAAA,IACb,OAAA,EAAS,eAAA;AAAA,IACT,SAAA,EAAW,0BAAA;AAAA,IACX,IAAA,EAAM,YAAA;AAAA,IACN,oBAAA,EAAsB;AAAA,GACxB;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,iBAAA,EAAmB,yBAAA;AAAA,IACnB,WAAA,EAAa;AAAA,GACf;AAAA,EACA,UAAA,EAAY;AAAA,IACV,aAAA;AAAA,IACA,cAAA;AAAA,IACA,iBAAA;AAAA,IACA,wBAAA;AAAA,IACA,iBAAA;AAAA,IACA,aAAA;AAAA,IACA,sBAAA;AAAA,IACA,yBAAA;AAAA,IACA,qBAAA;AAAA,IACA,oBAAA;AAAA,IACA,yBAAA;AAAA,IACA,0BAAA;AAAA,IACA,uBAAA;AAAA,IACA,0BAAA;AAAA,IACA,yBAAA;AAAA,IACA;AAAA;AAEJ,CAAC,CAAA;;;;"}
package/dist/alpha.d.ts CHANGED
@@ -6,10 +6,9 @@ import { FormProps as FormProps$2 } from '@rjsf/core';
6
6
  import * as _backstage_frontend_plugin_api from '@backstage/frontend-plugin-api';
7
7
  import * as _backstage_plugin_scaffolder_react_alpha from '@backstage/plugin-scaffolder-react/alpha';
8
8
  import { ScaffolderFormDecorator } from '@backstage/plugin-scaffolder-react/alpha';
9
- export { ScaffolderFormFieldsApi, formFieldsApiRef } from '@backstage/plugin-scaffolder-react/alpha';
10
9
  import * as _backstage_core_components from '@backstage/core-components';
11
10
  import * as _backstage_catalog_model from '@backstage/catalog-model';
12
- import * as _backstage_plugin_catalog_react_alpha from '@backstage/plugin-catalog-react/alpha';
11
+ import * as _backstage_filter_predicates from '@backstage/filter-predicates';
13
12
  import * as _backstage_core_plugin_api from '@backstage/core-plugin-api';
14
13
 
15
14
  /** @public */
@@ -146,8 +145,8 @@ declare const scaffolderTranslationRef: _backstage_frontend_plugin_api.Translati
146
145
  readonly "ownerListPicker.options.owned": "Owned";
147
146
  readonly "ongoingTask.title": "Run of";
148
147
  readonly "ongoingTask.contextMenu.cancel": "Cancel";
149
- readonly "ongoingTask.contextMenu.startOver": "Start Over";
150
148
  readonly "ongoingTask.contextMenu.retry": "Retry";
149
+ readonly "ongoingTask.contextMenu.startOver": "Start Over";
151
150
  readonly "ongoingTask.contextMenu.hideLogs": "Hide Logs";
152
151
  readonly "ongoingTask.contextMenu.showLogs": "Show Logs";
153
152
  readonly "ongoingTask.contextMenu.hideButtonBar": "Hide Button Bar";
@@ -168,8 +167,6 @@ declare const scaffolderTranslationRef: _backstage_frontend_plugin_api.Translati
168
167
  readonly "renderSchema.tableCell.description": "Description";
169
168
  readonly "templatingExtensions.content.values.title": "Values";
170
169
  readonly "templatingExtensions.content.values.notAvailable": "There are no global template values defined.";
171
- readonly "templatingExtensions.content.emptyState.title": "No information to display";
172
- readonly "templatingExtensions.content.emptyState.description": "There are no templating extensions available or there was an issue communicating with the backend.";
173
170
  readonly "templatingExtensions.content.filters.title": "Filters";
174
171
  readonly "templatingExtensions.content.filters.schema.input": "Input";
175
172
  readonly "templatingExtensions.content.filters.schema.output": "Output";
@@ -177,13 +174,15 @@ declare const scaffolderTranslationRef: _backstage_frontend_plugin_api.Translati
177
174
  readonly "templatingExtensions.content.filters.examples": "Examples";
178
175
  readonly "templatingExtensions.content.filters.notAvailable": "There are no template filters defined.";
179
176
  readonly "templatingExtensions.content.filters.metadataAbsent": "Filter metadata unavailable";
180
- readonly "templatingExtensions.content.searchFieldPlaceholder": "Search for an extension";
177
+ readonly "templatingExtensions.content.emptyState.title": "No information to display";
178
+ readonly "templatingExtensions.content.emptyState.description": "There are no templating extensions available or there was an issue communicating with the backend.";
181
179
  readonly "templatingExtensions.content.functions.title": "Functions";
182
180
  readonly "templatingExtensions.content.functions.schema.output": "Output";
183
181
  readonly "templatingExtensions.content.functions.schema.arguments": "Arguments";
184
182
  readonly "templatingExtensions.content.functions.examples": "Examples";
185
183
  readonly "templatingExtensions.content.functions.notAvailable": "There are no global template functions defined.";
186
184
  readonly "templatingExtensions.content.functions.metadataAbsent": "Function metadata unavailable";
185
+ readonly "templatingExtensions.content.searchFieldPlaceholder": "Search for an extension";
187
186
  readonly "templatingExtensions.title": "Templating Extensions";
188
187
  readonly "templatingExtensions.subtitle": "This is the collection of available templating extensions";
189
188
  readonly "templatingExtensions.pageTitle": "Templating Extensions";
@@ -239,6 +238,7 @@ declare const scaffolderTranslationRef: _backstage_frontend_plugin_api.Translati
239
238
  readonly "templateWizardPage.title": "Create a new component";
240
239
  readonly "templateWizardPage.subtitle": "Create new software components using standard templates in your organization";
241
240
  readonly "templateWizardPage.pageTitle": "Create a new component";
241
+ readonly "templateWizardPage.templateWithTitle": "Create new {{templateTitle}}";
242
242
  readonly "templateWizardPage.pageContextMenu.editConfigurationTitle": "Edit Configuration";
243
243
  readonly "templateEditorToolbar.customFieldExplorerTooltip": "Custom Fields Explorer";
244
244
  readonly "templateEditorToolbar.installedActionsDocumentationTooltip": "Installed Actions Documentation";
@@ -282,6 +282,7 @@ declare const formDecoratorsApi: _backstage_frontend_plugin_api.OverridableExten
282
282
  formDecorators: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ConfigurableExtensionDataRef<ScaffolderFormDecorator, "scaffolder.form-decorator-loader", {}>, {
283
283
  singleton: false;
284
284
  optional: false;
285
+ internal: false;
285
286
  }>;
286
287
  };
287
288
  kind: "api";
@@ -323,6 +324,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
323
324
  formDecorators: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_plugin_scaffolder_react_alpha.ScaffolderFormDecorator, "scaffolder.form-decorator-loader", {}>, {
324
325
  singleton: false;
325
326
  optional: false;
327
+ internal: false;
326
328
  }>;
327
329
  };
328
330
  kind: "api";
@@ -337,6 +339,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
337
339
  formFields: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ConfigurableExtensionDataRef<() => Promise<_backstage_plugin_scaffolder_react_alpha.FormField>, "scaffolder.form-field-loader", {}>, {
338
340
  singleton: false;
339
341
  optional: false;
342
+ internal: false;
340
343
  }>;
341
344
  };
342
345
  kind: "api";
@@ -349,10 +352,10 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
349
352
  config: {
350
353
  label: string | undefined;
351
354
  title: string | undefined;
352
- filter: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
355
+ filter: _backstage_filter_predicates.FilterPredicate | undefined;
353
356
  };
354
357
  configInput: {
355
- filter?: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
358
+ filter?: _backstage_filter_predicates.FilterPredicate | undefined;
356
359
  label?: string | undefined;
357
360
  title?: string | undefined;
358
361
  };
@@ -364,7 +367,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
364
367
  inputs: {};
365
368
  params: {
366
369
  useProps: () => Omit<_backstage_core_components.IconLinkVerticalProps, "color">;
367
- filter?: _backstage_plugin_catalog_react_alpha.EntityPredicate | ((entity: _backstage_catalog_model.Entity) => boolean);
370
+ filter?: _backstage_filter_predicates.FilterPredicate | ((entity: _backstage_catalog_model.Entity) => boolean);
368
371
  };
369
372
  }>;
370
373
  "nav-item:scaffolder": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
@@ -398,6 +401,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
398
401
  formFields: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ConfigurableExtensionDataRef<() => Promise<_backstage_plugin_scaffolder_react_alpha.FormField>, "scaffolder.form-field-loader", {}>, {
399
402
  singleton: false;
400
403
  optional: false;
404
+ internal: false;
401
405
  }>;
402
406
  };
403
407
  kind: "page";
package/dist/alpha.esm.js CHANGED
@@ -1,6 +1,5 @@
1
1
  export { scaffolderTranslationRef } from './translation.esm.js';
2
2
  export { formDecoratorsApiRef } from './alpha/api/ref.esm.js';
3
3
  export { DefaultScaffolderFormDecoratorsApi, formDecoratorsApi } from './alpha/api/FormDecoratorsApi.esm.js';
4
- export { formFieldsApiRef } from '@backstage/plugin-scaffolder-react/alpha';
5
4
  export { default } from './alpha/plugin.esm.js';
6
5
  //# sourceMappingURL=alpha.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"alpha.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
1
+ {"version":3,"file":"alpha.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
@@ -15,10 +15,8 @@ import { CustomFieldsPage } from '../../alpha/components/TemplateEditorPage/Cust
15
15
  import { RequirePermission } from '@backstage/plugin-permission-react';
16
16
  import { templateManagementPermission } from '@backstage/plugin-scaffolder-common/alpha';
17
17
  import { useApp } from '@backstage/core-plugin-api';
18
- import { useAsync, useMountEffect } from '@react-hookz/web';
19
18
  import { TemplatingExtensionsPage } from '../TemplatingExtensionsPage/TemplatingExtensionsPage.esm.js';
20
19
  import { OpaqueFormField } from '../../packages/scaffolder-internal/src/wiring/InternalFormField.esm.js';
21
- import '../../packages/scaffolder-internal/src/wiring/InternalFormDecorator.esm.js';
22
20
 
23
21
  const InternalRouter = (props) => {
24
22
  const {
@@ -33,12 +31,11 @@ const InternalRouter = (props) => {
33
31
  } = props;
34
32
  const outlet = useOutlet() || props.children;
35
33
  const customFieldExtensions = useCustomFieldExtensions(outlet);
36
- const loadedFieldExtensions = useFormFieldLoaders(props.formFieldLoaders);
37
34
  const app = useApp();
38
35
  const { NotFoundErrorPage } = app.getComponents();
39
36
  const fieldExtensions = [
40
37
  ...customFieldExtensions,
41
- ...loadedFieldExtensions,
38
+ ...props.formFields?.map(OpaqueFormField.toInternal) ?? [],
42
39
  ...DEFAULT_SCAFFOLDER_FIELD_EXTENSIONS.filter(
43
40
  ({ name }) => !customFieldExtensions.some(
44
41
  (customFieldExtension) => customFieldExtension.name === name
@@ -160,16 +157,6 @@ const InternalRouter = (props) => {
160
157
  const Router = (props) => {
161
158
  return /* @__PURE__ */ jsx(InternalRouter, { ...props });
162
159
  };
163
- function useFormFieldLoaders(formFieldLoaders) {
164
- const [{ result: loadedFieldExtensions }, { execute }] = useAsync(async () => {
165
- const loaded = await Promise.all(
166
- (formFieldLoaders ?? []).map((loader) => loader())
167
- );
168
- return loaded.map((f) => OpaqueFormField.toInternal(f));
169
- }, []);
170
- useMountEffect(execute);
171
- return loadedFieldExtensions;
172
- }
173
160
 
174
161
  export { InternalRouter, Router };
175
162
  //# sourceMappingURL=Router.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Router.esm.js","sources":["../../../src/components/Router/Router.tsx"],"sourcesContent":["/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ComponentType, PropsWithChildren } from 'react';\nimport { Routes, Route, useOutlet } from 'react-router-dom';\n\nimport {\n FieldExtensionOptions,\n FormProps,\n ReviewStepProps,\n TemplateGroupFilter,\n} from '@backstage/plugin-scaffolder-react';\nimport {\n ScaffolderTaskOutput,\n SecretsContextProvider,\n useCustomFieldExtensions,\n useCustomLayouts,\n} from '@backstage/plugin-scaffolder-react';\n\nimport { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common';\nimport { DEFAULT_SCAFFOLDER_FIELD_EXTENSIONS } from '../../extensions/default';\n\nimport {\n actionsRouteRef,\n editorRouteRef,\n customFieldsRouteRef,\n editRouteRef,\n scaffolderListTaskRouteRef,\n scaffolderTaskRouteRef,\n selectedTemplateRouteRef,\n templateFormRouteRef,\n templatingExtensionsRouteRef,\n} from '../../routes';\n\nimport { ActionsPage } from '../../components/ActionsPage';\nimport { ListTasksPage } from '../../components/ListTasksPage';\n\nimport {\n TemplateListPageProps,\n TemplateWizardPageProps,\n} from '@backstage/plugin-scaffolder/alpha';\nimport { TemplateListPage, TemplateWizardPage } from '../../alpha/components';\nimport { OngoingTask } from '../OngoingTask';\nimport {\n TemplateFormPage,\n TemplateIntroPage,\n TemplateEditorPage,\n CustomFieldsPage,\n} from '../../alpha/components/TemplateEditorPage';\nimport { RequirePermission } from '@backstage/plugin-permission-react';\nimport { templateManagementPermission } from '@backstage/plugin-scaffolder-common/alpha';\nimport { useApp } from '@backstage/core-plugin-api';\nimport { OpaqueFormField } from '@internal/scaffolder';\nimport { useAsync, useMountEffect } from '@react-hookz/web';\nimport { TemplatingExtensionsPage } from '../TemplatingExtensionsPage';\nimport { FormField } from '@backstage/plugin-scaffolder-react/alpha';\n\n/**\n * The Props for the Scaffolder Router\n *\n * @public\n */\nexport type RouterProps = {\n components?: {\n ReviewStepComponent?: ComponentType<ReviewStepProps>;\n TemplateCardComponent?: ComponentType<{\n template: TemplateEntityV1beta3;\n }>;\n TaskPageComponent?: ComponentType<PropsWithChildren<{}>>;\n EXPERIMENTAL_TemplateOutputsComponent?: ComponentType<{\n output?: ScaffolderTaskOutput;\n }>;\n EXPERIMENTAL_TemplateListPageComponent?: ComponentType<TemplateListPageProps>;\n EXPERIMENTAL_TemplateWizardPageComponent?: ComponentType<TemplateWizardPageProps>;\n };\n groups?: TemplateGroupFilter[];\n templateFilter?: (entity: TemplateEntityV1beta3) => boolean;\n headerOptions?: {\n pageTitleOverride?: string;\n title?: string;\n subtitle?: string;\n };\n defaultPreviewTemplate?: string;\n formProps?: FormProps;\n contextMenu?: {\n /** Whether to show a link to the template editor */\n editor?: boolean;\n /** Whether to show a link to the actions documentation */\n actions?: boolean;\n /** Whether to show a link to the tasks page */\n tasks?: boolean;\n /** Whether to show a link to the create page (on /create subroutes) */\n create?: boolean;\n /** Whether to show a link to the templating extensions page */\n templatingExtensions?: boolean;\n };\n};\n\n/**\n * Internal router with additional props that aren't available in the public API\n * for the old frontend system.\n *\n * @internal\n */\nexport const InternalRouter = (\n props: PropsWithChildren<\n RouterProps & { formFieldLoaders?: Array<() => Promise<FormField>> }\n >,\n) => {\n const {\n components: {\n TemplateCardComponent,\n TaskPageComponent = OngoingTask,\n ReviewStepComponent,\n EXPERIMENTAL_TemplateOutputsComponent: TemplateOutputsComponent,\n EXPERIMENTAL_TemplateListPageComponent:\n TemplateListPageComponent = TemplateListPage,\n EXPERIMENTAL_TemplateWizardPageComponent:\n TemplateWizardPageComponent = TemplateWizardPage,\n } = {},\n } = props;\n const outlet = useOutlet() || props.children;\n const customFieldExtensions = useCustomFieldExtensions(outlet);\n const loadedFieldExtensions = useFormFieldLoaders(props.formFieldLoaders);\n\n const app = useApp();\n const { NotFoundErrorPage } = app.getComponents();\n\n const fieldExtensions = [\n ...customFieldExtensions,\n ...loadedFieldExtensions,\n ...DEFAULT_SCAFFOLDER_FIELD_EXTENSIONS.filter(\n ({ name }) =>\n !customFieldExtensions.some(\n customFieldExtension => customFieldExtension.name === name,\n ),\n ),\n ] as FieldExtensionOptions[];\n\n const customLayouts = useCustomLayouts(outlet);\n\n return (\n <Routes>\n <Route\n path=\"/\"\n element={\n <TemplateListPageComponent\n TemplateCardComponent={TemplateCardComponent}\n contextMenu={props.contextMenu}\n groups={props.groups}\n templateFilter={props.templateFilter}\n headerOptions={props.headerOptions}\n />\n }\n />\n <Route\n path={selectedTemplateRouteRef.path}\n element={\n <SecretsContextProvider>\n <TemplateWizardPageComponent\n headerOptions={props.headerOptions}\n customFieldExtensions={fieldExtensions}\n layouts={customLayouts}\n components={{ ReviewStepComponent }}\n formProps={props.formProps}\n />\n </SecretsContextProvider>\n }\n />\n <Route\n path={scaffolderTaskRouteRef.path}\n element={\n <TaskPageComponent\n TemplateOutputsComponent={TemplateOutputsComponent}\n />\n }\n />\n <Route\n path={editRouteRef.path}\n element={\n <RequirePermission permission={templateManagementPermission}>\n <SecretsContextProvider>\n <TemplateIntroPage />\n </SecretsContextProvider>\n </RequirePermission>\n }\n />\n <Route\n path={customFieldsRouteRef.path}\n element={\n <RequirePermission permission={templateManagementPermission}>\n <SecretsContextProvider>\n <CustomFieldsPage fieldExtensions={fieldExtensions} />\n </SecretsContextProvider>\n </RequirePermission>\n }\n />\n <Route\n path={templateFormRouteRef.path}\n element={\n <RequirePermission permission={templateManagementPermission}>\n <SecretsContextProvider>\n <TemplateFormPage\n layouts={customLayouts}\n formProps={props.formProps}\n fieldExtensions={fieldExtensions}\n />\n </SecretsContextProvider>\n </RequirePermission>\n }\n />\n\n <Route\n path={actionsRouteRef.path}\n element={<ActionsPage contextMenu={props.contextMenu} />}\n />\n <Route\n path={scaffolderListTaskRouteRef.path}\n element={<ListTasksPage contextMenu={props.contextMenu} />}\n />\n <Route\n path={editorRouteRef.path}\n element={\n <RequirePermission permission={templateManagementPermission}>\n <SecretsContextProvider>\n <TemplateEditorPage\n layouts={customLayouts}\n formProps={props.formProps}\n fieldExtensions={fieldExtensions}\n />\n </SecretsContextProvider>\n </RequirePermission>\n }\n />\n <Route\n path={templatingExtensionsRouteRef.path}\n element={<TemplatingExtensionsPage contextMenu={props.contextMenu} />}\n />\n <Route path=\"*\" element={<NotFoundErrorPage />} />\n </Routes>\n );\n};\n\n/**\n * The Scaffolder Router\n *\n * @public\n */\nexport const Router = (props: PropsWithChildren<RouterProps>) => {\n return <InternalRouter {...props} />;\n};\n\nfunction useFormFieldLoaders(\n formFieldLoaders?: Array<() => Promise<FormField>>,\n) {\n const [{ result: loadedFieldExtensions }, { execute }] =\n useAsync(async () => {\n const loaded = await Promise.all(\n (formFieldLoaders ?? []).map(loader => loader()),\n );\n return loaded.map(f => OpaqueFormField.toInternal(f));\n }, []);\n useMountEffect(execute);\n return loadedFieldExtensions;\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Router.esm.js","sources":["../../../src/components/Router/Router.tsx"],"sourcesContent":["/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ComponentType, PropsWithChildren } from 'react';\nimport { Routes, Route, useOutlet } from 'react-router-dom';\n\nimport {\n FieldExtensionOptions,\n FormProps,\n ReviewStepProps,\n TemplateGroupFilter,\n} from '@backstage/plugin-scaffolder-react';\nimport {\n ScaffolderTaskOutput,\n SecretsContextProvider,\n useCustomFieldExtensions,\n useCustomLayouts,\n} from '@backstage/plugin-scaffolder-react';\n\nimport { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common';\nimport { DEFAULT_SCAFFOLDER_FIELD_EXTENSIONS } from '../../extensions/default';\n\nimport {\n actionsRouteRef,\n editorRouteRef,\n customFieldsRouteRef,\n editRouteRef,\n scaffolderListTaskRouteRef,\n scaffolderTaskRouteRef,\n selectedTemplateRouteRef,\n templateFormRouteRef,\n templatingExtensionsRouteRef,\n} from '../../routes';\n\nimport { ActionsPage } from '../../components/ActionsPage';\nimport { ListTasksPage } from '../../components/ListTasksPage';\n\nimport {\n TemplateListPageProps,\n TemplateWizardPageProps,\n} from '@backstage/plugin-scaffolder/alpha';\nimport { TemplateListPage, TemplateWizardPage } from '../../alpha/components';\nimport { OngoingTask } from '../OngoingTask';\nimport {\n TemplateFormPage,\n TemplateIntroPage,\n TemplateEditorPage,\n CustomFieldsPage,\n} from '../../alpha/components/TemplateEditorPage';\nimport { RequirePermission } from '@backstage/plugin-permission-react';\nimport { templateManagementPermission } from '@backstage/plugin-scaffolder-common/alpha';\nimport { useApp } from '@backstage/core-plugin-api';\nimport { OpaqueFormField } from '@internal/scaffolder';\nimport { TemplatingExtensionsPage } from '../TemplatingExtensionsPage';\nimport { FormField } from '@backstage/plugin-scaffolder-react/alpha';\n\n/**\n * The Props for the Scaffolder Router\n *\n * @public\n */\nexport type RouterProps = {\n components?: {\n ReviewStepComponent?: ComponentType<ReviewStepProps>;\n TemplateCardComponent?: ComponentType<{\n template: TemplateEntityV1beta3;\n }>;\n TaskPageComponent?: ComponentType<PropsWithChildren<{}>>;\n EXPERIMENTAL_TemplateOutputsComponent?: ComponentType<{\n output?: ScaffolderTaskOutput;\n }>;\n EXPERIMENTAL_TemplateListPageComponent?: ComponentType<TemplateListPageProps>;\n EXPERIMENTAL_TemplateWizardPageComponent?: ComponentType<TemplateWizardPageProps>;\n };\n groups?: TemplateGroupFilter[];\n templateFilter?: (entity: TemplateEntityV1beta3) => boolean;\n headerOptions?: {\n pageTitleOverride?: string;\n title?: string;\n subtitle?: string;\n };\n defaultPreviewTemplate?: string;\n formProps?: FormProps;\n contextMenu?: {\n /** Whether to show a link to the template editor */\n editor?: boolean;\n /** Whether to show a link to the actions documentation */\n actions?: boolean;\n /** Whether to show a link to the tasks page */\n tasks?: boolean;\n /** Whether to show a link to the create page (on /create subroutes) */\n create?: boolean;\n /** Whether to show a link to the templating extensions page */\n templatingExtensions?: boolean;\n };\n};\n\n/**\n * Internal router with additional props that aren't available in the public API\n * for the old frontend system.\n *\n * @internal\n */\nexport const InternalRouter = (\n props: PropsWithChildren<\n RouterProps & {\n formFields?: Array<FormField>;\n }\n >,\n) => {\n const {\n components: {\n TemplateCardComponent,\n TaskPageComponent = OngoingTask,\n ReviewStepComponent,\n EXPERIMENTAL_TemplateOutputsComponent: TemplateOutputsComponent,\n EXPERIMENTAL_TemplateListPageComponent:\n TemplateListPageComponent = TemplateListPage,\n EXPERIMENTAL_TemplateWizardPageComponent:\n TemplateWizardPageComponent = TemplateWizardPage,\n } = {},\n } = props;\n const outlet = useOutlet() || props.children;\n const customFieldExtensions = useCustomFieldExtensions(outlet);\n\n const app = useApp();\n const { NotFoundErrorPage } = app.getComponents();\n\n const fieldExtensions = [\n ...customFieldExtensions,\n ...(props.formFields?.map(OpaqueFormField.toInternal) ?? []),\n ...DEFAULT_SCAFFOLDER_FIELD_EXTENSIONS.filter(\n ({ name }) =>\n !customFieldExtensions.some(\n customFieldExtension => customFieldExtension.name === name,\n ),\n ),\n ] as FieldExtensionOptions[];\n\n const customLayouts = useCustomLayouts(outlet);\n\n return (\n <Routes>\n <Route\n path=\"/\"\n element={\n <TemplateListPageComponent\n TemplateCardComponent={TemplateCardComponent}\n contextMenu={props.contextMenu}\n groups={props.groups}\n templateFilter={props.templateFilter}\n headerOptions={props.headerOptions}\n />\n }\n />\n <Route\n path={selectedTemplateRouteRef.path}\n element={\n <SecretsContextProvider>\n <TemplateWizardPageComponent\n headerOptions={props.headerOptions}\n customFieldExtensions={fieldExtensions}\n layouts={customLayouts}\n components={{ ReviewStepComponent }}\n formProps={props.formProps}\n />\n </SecretsContextProvider>\n }\n />\n <Route\n path={scaffolderTaskRouteRef.path}\n element={\n <TaskPageComponent\n TemplateOutputsComponent={TemplateOutputsComponent}\n />\n }\n />\n <Route\n path={editRouteRef.path}\n element={\n <RequirePermission permission={templateManagementPermission}>\n <SecretsContextProvider>\n <TemplateIntroPage />\n </SecretsContextProvider>\n </RequirePermission>\n }\n />\n <Route\n path={customFieldsRouteRef.path}\n element={\n <RequirePermission permission={templateManagementPermission}>\n <SecretsContextProvider>\n <CustomFieldsPage fieldExtensions={fieldExtensions} />\n </SecretsContextProvider>\n </RequirePermission>\n }\n />\n <Route\n path={templateFormRouteRef.path}\n element={\n <RequirePermission permission={templateManagementPermission}>\n <SecretsContextProvider>\n <TemplateFormPage\n layouts={customLayouts}\n formProps={props.formProps}\n fieldExtensions={fieldExtensions}\n />\n </SecretsContextProvider>\n </RequirePermission>\n }\n />\n\n <Route\n path={actionsRouteRef.path}\n element={<ActionsPage contextMenu={props.contextMenu} />}\n />\n <Route\n path={scaffolderListTaskRouteRef.path}\n element={<ListTasksPage contextMenu={props.contextMenu} />}\n />\n <Route\n path={editorRouteRef.path}\n element={\n <RequirePermission permission={templateManagementPermission}>\n <SecretsContextProvider>\n <TemplateEditorPage\n layouts={customLayouts}\n formProps={props.formProps}\n fieldExtensions={fieldExtensions}\n />\n </SecretsContextProvider>\n </RequirePermission>\n }\n />\n <Route\n path={templatingExtensionsRouteRef.path}\n element={<TemplatingExtensionsPage contextMenu={props.contextMenu} />}\n />\n <Route path=\"*\" element={<NotFoundErrorPage />} />\n </Routes>\n );\n};\n\n/**\n * The Scaffolder Router\n *\n * @public\n */\nexport const Router = (props: PropsWithChildren<RouterProps>) => {\n return <InternalRouter {...props} />;\n};\n"],"names":[],"mappings":"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"}
@@ -19,7 +19,6 @@ import { RepoBranchPicker } from './components/fields/RepoBranchPicker/RepoBranc
19
19
  import { RepoBranchPickerSchema } from './components/fields/RepoBranchPicker/schema.esm.js';
20
20
  import { formDecoratorsApiRef } from './alpha/api/ref.esm.js';
21
21
  import { DefaultScaffolderFormDecoratorsApi } from './alpha/api/FormDecoratorsApi.esm.js';
22
- import { formFieldsApiRef } from '@backstage/plugin-scaffolder-react/alpha';
23
22
  import { RepoOwnerPicker } from './components/fields/RepoOwnerPicker/RepoOwnerPicker.esm.js';
24
23
  import { RepoOwnerPickerSchema } from './components/fields/RepoOwnerPicker/schema.esm.js';
25
24
  import { EntityPickerSchema } from './components/fields/EntityPicker/schema.esm.js';
@@ -51,11 +50,6 @@ const scaffolderPlugin = createPlugin({
51
50
  api: formDecoratorsApiRef,
52
51
  deps: {},
53
52
  factory: () => DefaultScaffolderFormDecoratorsApi.create()
54
- }),
55
- createApiFactory({
56
- api: formFieldsApiRef,
57
- deps: {},
58
- factory: () => ({ getFormFields: async () => [] })
59
53
  })
60
54
  ],
61
55
  routes: {
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.esm.js","sources":["../src/plugin.tsx"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { scmIntegrationsApiRef } from '@backstage/integration-react';\nimport {\n createScaffolderFieldExtension,\n scaffolderApiRef,\n} from '@backstage/plugin-scaffolder-react';\nimport { ScaffolderClient } from './api';\nimport {\n EntityPicker,\n EntityPickerSchema,\n} from './components/fields/EntityPicker/EntityPicker';\nimport { entityNamePickerValidation } from './components/fields/EntityNamePicker';\nimport {\n EntityNamePicker,\n EntityNamePickerSchema,\n} from './components/fields/EntityNamePicker/EntityNamePicker';\nimport {\n OwnerPicker,\n OwnerPickerSchema,\n} from './components/fields/OwnerPicker/OwnerPicker';\nimport {\n MultiEntityPicker,\n MultiEntityPickerSchema,\n validateMultiEntityPickerValidation,\n} from './components/fields/MultiEntityPicker/MultiEntityPicker';\nimport { repoPickerValidation } from './components/fields/RepoUrlPicker';\nimport {\n RepoUrlPicker,\n RepoUrlPickerSchema,\n} from './components/fields/RepoUrlPicker/RepoUrlPicker';\nimport {\n createApiFactory,\n createPlugin,\n createRoutableExtension,\n discoveryApiRef,\n fetchApiRef,\n identityApiRef,\n} from '@backstage/core-plugin-api';\nimport {\n OwnedEntityPicker,\n OwnedEntityPickerSchema,\n} from './components/fields/OwnedEntityPicker/OwnedEntityPicker';\nimport {\n EntityTagsPicker,\n EntityTagsPickerSchema,\n} from './components/fields/EntityTagsPicker/EntityTagsPicker';\nimport {\n registerComponentRouteRef,\n rootRouteRef,\n viewTechDocRouteRef,\n selectedTemplateRouteRef,\n scaffolderTaskRouteRef,\n scaffolderListTaskRouteRef,\n actionsRouteRef,\n editRouteRef,\n editorRouteRef,\n customFieldsRouteRef,\n templateFormRouteRef,\n templatingExtensionsRouteRef,\n} from './routes';\nimport {\n MyGroupsPicker,\n MyGroupsPickerSchema,\n} from './components/fields/MyGroupsPicker/MyGroupsPicker';\nimport { RepoBranchPicker } from './components/fields/RepoBranchPicker/RepoBranchPicker';\nimport { RepoBranchPickerSchema } from './components/fields/RepoBranchPicker/schema';\nimport { formDecoratorsApiRef } from './alpha/api/ref';\nimport { DefaultScaffolderFormDecoratorsApi } from './alpha/api/FormDecoratorsApi';\nimport { formFieldsApiRef } from '@backstage/plugin-scaffolder-react/alpha';\nimport {\n RepoOwnerPicker,\n RepoOwnerPickerSchema,\n} from './components/fields/RepoOwnerPicker';\n\n/**\n * The main plugin export for the scaffolder.\n * @public\n */\nexport const scaffolderPlugin = createPlugin({\n id: 'scaffolder',\n apis: [\n createApiFactory({\n api: scaffolderApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n scmIntegrationsApi: scmIntegrationsApiRef,\n fetchApi: fetchApiRef,\n identityApi: identityApiRef,\n },\n factory: ({ discoveryApi, scmIntegrationsApi, fetchApi, identityApi }) =>\n new ScaffolderClient({\n discoveryApi,\n scmIntegrationsApi,\n fetchApi,\n identityApi,\n }),\n }),\n createApiFactory({\n api: formDecoratorsApiRef,\n deps: {},\n factory: () => DefaultScaffolderFormDecoratorsApi.create(),\n }),\n createApiFactory({\n api: formFieldsApiRef,\n deps: {},\n factory: () => ({ getFormFields: async () => [] }),\n }),\n ],\n routes: {\n root: rootRouteRef,\n selectedTemplate: selectedTemplateRouteRef,\n ongoingTask: scaffolderTaskRouteRef,\n actions: actionsRouteRef,\n listTasks: scaffolderListTaskRouteRef,\n edit: editRouteRef,\n editor: editorRouteRef,\n customFields: customFieldsRouteRef,\n templateForm: templateFormRouteRef,\n templatingExtensions: templatingExtensionsRouteRef,\n },\n externalRoutes: {\n registerComponent: registerComponentRouteRef,\n viewTechDoc: viewTechDocRouteRef,\n },\n});\n\n/**\n * A field extension for selecting an Entity that exists in the Catalog.\n *\n * @public\n */\nexport const EntityPickerFieldExtension = scaffolderPlugin.provide(\n createScaffolderFieldExtension({\n component: EntityPicker,\n name: 'EntityPicker',\n schema: EntityPickerSchema,\n }),\n);\n\n/**\n * The field extension for selecting a name for a new Entity in the Catalog.\n *\n * @public\n */\nexport const EntityNamePickerFieldExtension = scaffolderPlugin.provide(\n createScaffolderFieldExtension({\n component: EntityNamePicker,\n name: 'EntityNamePicker',\n validation: entityNamePickerValidation,\n schema: EntityNamePickerSchema,\n }),\n);\n\n/**\n * A field extension for selecting multiple entities that exists in the Catalog.\n *\n * @public\n */\nexport const MultiEntityPickerFieldExtension = scaffolderPlugin.provide(\n createScaffolderFieldExtension({\n component: MultiEntityPicker,\n name: 'MultiEntityPicker',\n schema: MultiEntityPickerSchema,\n validation: validateMultiEntityPickerValidation,\n }),\n);\n\n/**\n * The field extension which provides the ability to select a RepositoryUrl.\n * Currently, this is an encoded URL that looks something like the following `github.com?repo=myRepoName&owner=backstage`.\n *\n * @public\n */\nexport const RepoUrlPickerFieldExtension = scaffolderPlugin.provide(\n createScaffolderFieldExtension({\n component: RepoUrlPicker,\n name: 'RepoUrlPicker',\n validation: repoPickerValidation,\n schema: RepoUrlPickerSchema,\n }),\n);\n\n/**\n * A field extension for picking users and groups out of the Catalog.\n *\n * @public\n */\nexport const OwnerPickerFieldExtension = scaffolderPlugin.provide(\n createScaffolderFieldExtension({\n component: OwnerPicker,\n name: 'OwnerPicker',\n schema: OwnerPickerSchema,\n }),\n);\n\n/**\n * A field extension for picking groups a user belongs to out of the catalog.\n *\n * @public\n */\nexport const MyGroupsPickerFieldExtension = scaffolderPlugin.provide(\n createScaffolderFieldExtension({\n component: MyGroupsPicker,\n name: 'MyGroupsPicker',\n schema: MyGroupsPickerSchema,\n }),\n);\n\n/**\n * The Router and main entrypoint to the Scaffolder plugin.\n *\n * @public\n */\nexport const ScaffolderPage = scaffolderPlugin.provide(\n createRoutableExtension({\n name: 'ScaffolderPage',\n component: () => import('./components/Router').then(m => m.Router),\n mountPoint: rootRouteRef,\n }),\n);\n\n/**\n * A field extension to show all the Entities that are owned by the current logged-in User for use in templates.\n *\n * @public\n */\nexport const OwnedEntityPickerFieldExtension = scaffolderPlugin.provide(\n createScaffolderFieldExtension({\n component: OwnedEntityPicker,\n name: 'OwnedEntityPicker',\n schema: OwnedEntityPickerSchema,\n }),\n);\n\n/**\n * EntityTagsPickerFieldExtension\n * @public\n */\nexport const EntityTagsPickerFieldExtension = scaffolderPlugin.provide(\n createScaffolderFieldExtension({\n component: EntityTagsPicker,\n name: 'EntityTagsPicker',\n schema: EntityTagsPickerSchema,\n }),\n);\n\n/**\n * A field extension to select a branch from a repository.\n *\n * @public\n */\nexport const RepoBranchPickerFieldExtension = scaffolderPlugin.provide(\n createScaffolderFieldExtension({\n component: RepoBranchPicker,\n name: 'RepoBranchPicker',\n schema: RepoBranchPickerSchema,\n }),\n);\n\n/**\n * A field extension to select an owner from a repository.\n *\n * @public\n */\nexport const RepoOwnerPickerFieldExtension = scaffolderPlugin.provide(\n createScaffolderFieldExtension({\n component: RepoOwnerPicker,\n name: 'RepoOwnerPicker',\n schema: RepoOwnerPickerSchema,\n }),\n);\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.esm.js","sources":["../src/plugin.tsx"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { scmIntegrationsApiRef } from '@backstage/integration-react';\nimport {\n createScaffolderFieldExtension,\n scaffolderApiRef,\n} from '@backstage/plugin-scaffolder-react';\nimport { ScaffolderClient } from './api';\nimport {\n EntityPicker,\n EntityPickerSchema,\n} from './components/fields/EntityPicker/EntityPicker';\nimport { entityNamePickerValidation } from './components/fields/EntityNamePicker';\nimport {\n EntityNamePicker,\n EntityNamePickerSchema,\n} from './components/fields/EntityNamePicker/EntityNamePicker';\nimport {\n OwnerPicker,\n OwnerPickerSchema,\n} from './components/fields/OwnerPicker/OwnerPicker';\nimport {\n MultiEntityPicker,\n MultiEntityPickerSchema,\n validateMultiEntityPickerValidation,\n} from './components/fields/MultiEntityPicker/MultiEntityPicker';\nimport { repoPickerValidation } from './components/fields/RepoUrlPicker';\nimport {\n RepoUrlPicker,\n RepoUrlPickerSchema,\n} from './components/fields/RepoUrlPicker/RepoUrlPicker';\nimport {\n createApiFactory,\n createPlugin,\n createRoutableExtension,\n discoveryApiRef,\n fetchApiRef,\n identityApiRef,\n} from '@backstage/core-plugin-api';\nimport {\n OwnedEntityPicker,\n OwnedEntityPickerSchema,\n} from './components/fields/OwnedEntityPicker/OwnedEntityPicker';\nimport {\n EntityTagsPicker,\n EntityTagsPickerSchema,\n} from './components/fields/EntityTagsPicker/EntityTagsPicker';\nimport {\n registerComponentRouteRef,\n rootRouteRef,\n viewTechDocRouteRef,\n selectedTemplateRouteRef,\n scaffolderTaskRouteRef,\n scaffolderListTaskRouteRef,\n actionsRouteRef,\n editRouteRef,\n editorRouteRef,\n customFieldsRouteRef,\n templateFormRouteRef,\n templatingExtensionsRouteRef,\n} from './routes';\nimport {\n MyGroupsPicker,\n MyGroupsPickerSchema,\n} from './components/fields/MyGroupsPicker/MyGroupsPicker';\nimport { RepoBranchPicker } from './components/fields/RepoBranchPicker/RepoBranchPicker';\nimport { RepoBranchPickerSchema } from './components/fields/RepoBranchPicker/schema';\nimport { formDecoratorsApiRef } from './alpha/api/ref';\nimport { DefaultScaffolderFormDecoratorsApi } from './alpha/api/FormDecoratorsApi';\nimport {\n RepoOwnerPicker,\n RepoOwnerPickerSchema,\n} from './components/fields/RepoOwnerPicker';\n\n/**\n * The main plugin export for the scaffolder.\n * @public\n */\nexport const scaffolderPlugin = createPlugin({\n id: 'scaffolder',\n apis: [\n createApiFactory({\n api: scaffolderApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n scmIntegrationsApi: scmIntegrationsApiRef,\n fetchApi: fetchApiRef,\n identityApi: identityApiRef,\n },\n factory: ({ discoveryApi, scmIntegrationsApi, fetchApi, identityApi }) =>\n new ScaffolderClient({\n discoveryApi,\n scmIntegrationsApi,\n fetchApi,\n identityApi,\n }),\n }),\n createApiFactory({\n api: formDecoratorsApiRef,\n deps: {},\n factory: () => DefaultScaffolderFormDecoratorsApi.create(),\n }),\n ],\n routes: {\n root: rootRouteRef,\n selectedTemplate: selectedTemplateRouteRef,\n ongoingTask: scaffolderTaskRouteRef,\n actions: actionsRouteRef,\n listTasks: scaffolderListTaskRouteRef,\n edit: editRouteRef,\n editor: editorRouteRef,\n customFields: customFieldsRouteRef,\n templateForm: templateFormRouteRef,\n templatingExtensions: templatingExtensionsRouteRef,\n },\n externalRoutes: {\n registerComponent: registerComponentRouteRef,\n viewTechDoc: viewTechDocRouteRef,\n },\n});\n\n/**\n * A field extension for selecting an Entity that exists in the Catalog.\n *\n * @public\n */\nexport const EntityPickerFieldExtension = scaffolderPlugin.provide(\n createScaffolderFieldExtension({\n component: EntityPicker,\n name: 'EntityPicker',\n schema: EntityPickerSchema,\n }),\n);\n\n/**\n * The field extension for selecting a name for a new Entity in the Catalog.\n *\n * @public\n */\nexport const EntityNamePickerFieldExtension = scaffolderPlugin.provide(\n createScaffolderFieldExtension({\n component: EntityNamePicker,\n name: 'EntityNamePicker',\n validation: entityNamePickerValidation,\n schema: EntityNamePickerSchema,\n }),\n);\n\n/**\n * A field extension for selecting multiple entities that exists in the Catalog.\n *\n * @public\n */\nexport const MultiEntityPickerFieldExtension = scaffolderPlugin.provide(\n createScaffolderFieldExtension({\n component: MultiEntityPicker,\n name: 'MultiEntityPicker',\n schema: MultiEntityPickerSchema,\n validation: validateMultiEntityPickerValidation,\n }),\n);\n\n/**\n * The field extension which provides the ability to select a RepositoryUrl.\n * Currently, this is an encoded URL that looks something like the following `github.com?repo=myRepoName&owner=backstage`.\n *\n * @public\n */\nexport const RepoUrlPickerFieldExtension = scaffolderPlugin.provide(\n createScaffolderFieldExtension({\n component: RepoUrlPicker,\n name: 'RepoUrlPicker',\n validation: repoPickerValidation,\n schema: RepoUrlPickerSchema,\n }),\n);\n\n/**\n * A field extension for picking users and groups out of the Catalog.\n *\n * @public\n */\nexport const OwnerPickerFieldExtension = scaffolderPlugin.provide(\n createScaffolderFieldExtension({\n component: OwnerPicker,\n name: 'OwnerPicker',\n schema: OwnerPickerSchema,\n }),\n);\n\n/**\n * A field extension for picking groups a user belongs to out of the catalog.\n *\n * @public\n */\nexport const MyGroupsPickerFieldExtension = scaffolderPlugin.provide(\n createScaffolderFieldExtension({\n component: MyGroupsPicker,\n name: 'MyGroupsPicker',\n schema: MyGroupsPickerSchema,\n }),\n);\n\n/**\n * The Router and main entrypoint to the Scaffolder plugin.\n *\n * @public\n */\nexport const ScaffolderPage = scaffolderPlugin.provide(\n createRoutableExtension({\n name: 'ScaffolderPage',\n component: () => import('./components/Router').then(m => m.Router),\n mountPoint: rootRouteRef,\n }),\n);\n\n/**\n * A field extension to show all the Entities that are owned by the current logged-in User for use in templates.\n *\n * @public\n */\nexport const OwnedEntityPickerFieldExtension = scaffolderPlugin.provide(\n createScaffolderFieldExtension({\n component: OwnedEntityPicker,\n name: 'OwnedEntityPicker',\n schema: OwnedEntityPickerSchema,\n }),\n);\n\n/**\n * EntityTagsPickerFieldExtension\n * @public\n */\nexport const EntityTagsPickerFieldExtension = scaffolderPlugin.provide(\n createScaffolderFieldExtension({\n component: EntityTagsPicker,\n name: 'EntityTagsPicker',\n schema: EntityTagsPickerSchema,\n }),\n);\n\n/**\n * A field extension to select a branch from a repository.\n *\n * @public\n */\nexport const RepoBranchPickerFieldExtension = scaffolderPlugin.provide(\n createScaffolderFieldExtension({\n component: RepoBranchPicker,\n name: 'RepoBranchPicker',\n schema: RepoBranchPickerSchema,\n }),\n);\n\n/**\n * A field extension to select an owner from a repository.\n *\n * @public\n */\nexport const RepoOwnerPickerFieldExtension = scaffolderPlugin.provide(\n createScaffolderFieldExtension({\n component: RepoOwnerPicker,\n name: 'RepoOwnerPicker',\n schema: RepoOwnerPickerSchema,\n }),\n);\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  var name = "@backstage/plugin-scaffolder";
2
- var version = "1.35.2";
2
+ var version = "1.35.3-next.2";
3
3
  var description = "The Backstage plugin that helps you create new things";
4
4
  var backstage = {
5
5
  role: "frontend-plugin",
@@ -107,6 +107,7 @@ var devDependencies = {
107
107
  "@backstage/cli": "workspace:^",
108
108
  "@backstage/core-app-api": "workspace:^",
109
109
  "@backstage/dev-utils": "workspace:^",
110
+ "@backstage/frontend-test-utils": "workspace:^",
110
111
  "@backstage/plugin-catalog": "workspace:^",
111
112
  "@backstage/plugin-permission-common": "workspace:^",
112
113
  "@backstage/plugin-techdocs": "workspace:^",
@@ -122,14 +123,14 @@ var devDependencies = {
122
123
  "@types/react-window": "^1.8.8",
123
124
  react: "^18.0.2",
124
125
  "react-dom": "^18.0.2",
125
- "react-router-dom": "^6.3.0",
126
+ "react-router-dom": "^6.30.2",
126
127
  swr: "^2.0.0"
127
128
  };
128
129
  var peerDependencies = {
129
130
  "@types/react": "^17.0.0 || ^18.0.0",
130
131
  react: "^17.0.0 || ^18.0.0",
131
132
  "react-dom": "^17.0.0 || ^18.0.0",
132
- "react-router-dom": "^6.3.0"
133
+ "react-router-dom": "^6.30.2"
133
134
  };
134
135
  var peerDependenciesMeta = {
135
136
  "@types/react": {
@@ -1 +1 @@
1
- {"version":3,"file":"package.json.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"package.json.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -325,6 +325,7 @@ const scaffolderTranslationRef = createTranslationRef({
325
325
  title: "Create a new component",
326
326
  subtitle: "Create new software components using standard templates in your organization",
327
327
  pageTitle: "Create a new component",
328
+ templateWithTitle: "Create new {{templateTitle}}",
328
329
  pageContextMenu: {
329
330
  editConfigurationTitle: "Edit Configuration"
330
331
  }
@@ -1 +1 @@
1
- {"version":3,"file":"translation.esm.js","sources":["../src/translation.ts"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createTranslationRef } from '@backstage/core-plugin-api/alpha';\n\n/** @alpha */\nexport const scaffolderTranslationRef = createTranslationRef({\n id: 'scaffolder',\n messages: {\n aboutCard: {\n launchTemplate: 'Launch Template',\n },\n actionsPage: {\n title: 'Installed actions',\n pageTitle: 'Create a New Component',\n subtitle: 'This is the collection of all installed actions',\n content: {\n emptyState: {\n title: 'No information to display',\n description:\n 'There are no actions installed or there was an issue communicating with backend.',\n },\n searchFieldPlaceholder: 'Search for an action',\n },\n action: {\n input: 'Input',\n output: 'Output',\n examples: 'Examples',\n },\n },\n fields: {\n entityNamePicker: {\n title: 'Name',\n description: 'Unique name of the component',\n },\n entityPicker: {\n title: 'Entity',\n description: 'An entity from the catalog',\n },\n entityTagsPicker: {\n title: 'Tags',\n description:\n \"Add any relevant tags, hit 'Enter' to add new tags. Valid format: [a-z0-9+#] separated by [-], at most 63 characters\",\n },\n multiEntityPicker: {\n title: 'Entity',\n description: 'An entity from the catalog',\n },\n myGroupsPicker: {\n title: 'Entity',\n description: 'An entity from the catalog',\n },\n ownedEntityPicker: {\n title: 'Entity',\n description: 'An entity from the catalog',\n },\n ownerPicker: {\n title: 'Owner',\n description: 'The owner of the component',\n },\n azureRepoPicker: {\n organization: {\n title: 'Organization',\n description: 'The Organization that this repo will belong to',\n },\n project: {\n title: 'Project',\n description: 'The Project that this repo will belong to',\n },\n },\n bitbucketRepoPicker: {\n workspaces: {\n title: 'Allowed Workspaces',\n inputTitle: 'Workspaces',\n description: 'The Workspace that this repo will belong to',\n },\n project: {\n title: 'Allowed Projects',\n inputTitle: 'Projects',\n description: 'The Project that this repo will belong to',\n },\n },\n gerritRepoPicker: {\n owner: {\n title: 'Owner',\n description: 'The owner of the project (optional)',\n },\n parent: {\n title: 'Parent',\n description: 'The project parent that the repo will belong to',\n },\n },\n giteaRepoPicker: {\n owner: {\n title: 'Owner Available',\n inputTitle: 'Owner',\n description:\n 'Gitea namespace where this repository will belong to. It can be the name of organization, group, subgroup, user, or the project.',\n },\n },\n githubRepoPicker: {\n owner: {\n title: 'Owner Available',\n inputTitle: 'Owner',\n description:\n 'The organization, user or project that this repo will belong to',\n },\n },\n gitlabRepoPicker: {\n owner: {\n title: 'Owner Available',\n inputTitle: 'Owner',\n description:\n 'GitLab namespace where this repository will belong to. It can be the name of organization, group, subgroup, user, or the project.',\n },\n },\n repoUrlPicker: {\n host: {\n title: 'Host',\n description: 'The host where the repository will be created',\n },\n repository: {\n title: 'Repositories Available',\n inputTitle: 'Repository',\n description: 'The name of the repository',\n },\n },\n repoOwnerPicker: {\n title: 'Owner',\n description: 'The owner of the repository',\n },\n },\n listTaskPage: {\n title: 'List template tasks',\n pageTitle: 'Templates Tasks',\n subtitle: 'All tasks that have been started',\n content: {\n emptyState: {\n title: 'No information to display',\n description:\n 'There are no tasks or there was an issue communicating with backend.',\n },\n tableTitle: 'Tasks',\n tableCell: {\n taskID: 'Task ID',\n template: 'Template',\n created: 'Created',\n owner: 'Owner',\n status: 'Status',\n },\n },\n },\n ownerListPicker: {\n title: 'Task Owner',\n options: {\n owned: 'Owned',\n all: 'All',\n },\n },\n ongoingTask: {\n title: 'Run of',\n pageTitle: {\n hasTemplateName: 'Run of {{templateName}}',\n noTemplateName: 'Scaffolder Run',\n },\n subtitle: 'Task {{taskId}}',\n cancelButtonTitle: 'Cancel',\n retryButtonTitle: 'Retry',\n startOverButtonTitle: 'Start Over',\n hideLogsButtonTitle: 'Hide Logs',\n showLogsButtonTitle: 'Show Logs',\n contextMenu: {\n hideLogs: 'Hide Logs',\n showLogs: 'Show Logs',\n hideButtonBar: 'Hide Button Bar',\n retry: 'Retry',\n showButtonBar: 'Show Button Bar',\n startOver: 'Start Over',\n cancel: 'Cancel',\n },\n },\n templateEditorForm: {\n stepper: {\n emptyText: 'There are no spec parameters in the template to preview.',\n },\n },\n renderSchema: {\n tableCell: {\n name: 'Name',\n title: 'Title',\n description: 'Description',\n type: 'Type',\n },\n undefined: 'No schema defined',\n },\n templatingExtensions: {\n title: 'Templating Extensions',\n pageTitle: 'Templating Extensions',\n subtitle: 'This is the collection of available templating extensions',\n content: {\n emptyState: {\n title: 'No information to display',\n description:\n 'There are no templating extensions available or there was an issue communicating with the backend.',\n },\n searchFieldPlaceholder: 'Search for an extension',\n filters: {\n title: 'Filters',\n notAvailable: 'There are no template filters defined.',\n metadataAbsent: 'Filter metadata unavailable',\n schema: {\n input: 'Input',\n arguments: 'Arguments',\n output: 'Output',\n },\n examples: 'Examples',\n },\n functions: {\n title: 'Functions',\n notAvailable: 'There are no global template functions defined.',\n metadataAbsent: 'Function metadata unavailable',\n schema: {\n arguments: 'Arguments',\n output: 'Output',\n },\n examples: 'Examples',\n },\n values: {\n title: 'Values',\n notAvailable: 'There are no global template values defined.',\n },\n },\n },\n templateTypePicker: {\n title: 'Categories',\n },\n templateIntroPage: {\n title: 'Manage Templates',\n subtitle:\n 'Edit, preview, and try out templates, forms, and custom fields',\n },\n templateFormPage: {\n title: 'Template Editor',\n subtitle: 'Edit, preview, and try out templates forms',\n },\n templateCustomFieldPage: {\n title: 'Custom Field Explorer',\n subtitle: 'Edit, preview, and try out custom fields',\n },\n templateEditorPage: {\n title: 'Template Editor',\n subtitle: 'Edit, preview, and try out templates and template forms',\n dryRunResults: {\n title: 'Dry-run results',\n },\n dryRunResultsList: {\n title: 'Result {{resultId}}',\n downloadButtonTitle: 'Download as .zip',\n deleteButtonTitle: 'Delete result',\n },\n dryRunResultsView: {\n tab: {\n files: 'Files',\n log: 'Log',\n output: 'Output',\n },\n },\n taskStatusStepper: {\n skippedStepTitle: 'Skipped',\n },\n customFieldExplorer: {\n selectFieldLabel: 'Choose Custom Field Extension',\n fieldForm: {\n title: 'Field Options',\n applyButtonTitle: 'Apply',\n },\n fieldPreview: {\n title: 'Field Preview',\n },\n preview: {\n title: 'Template Spec',\n },\n },\n templateEditorBrowser: {\n closeConfirmMessage: 'Are you sure? Unsaved changes will be lost',\n saveIconTooltip: 'Save all files',\n reloadIconTooltip: 'Reload directory',\n closeIconTooltip: 'Close directory',\n },\n templateEditorIntro: {\n title: 'Get started by choosing one of the options below',\n loadLocal: {\n title: 'Load Template Directory',\n description:\n 'Load a local template directory, allowing you to both edit and try executing your own template.',\n unsupportedTooltip:\n 'Only supported in some Chromium-based browsers with the page loaded over HTTPS',\n },\n createLocal: {\n title: 'Create New Template',\n description:\n 'Create a local template directory, allowing you to both edit and try executing your own template.',\n unsupportedTooltip:\n 'Only supported in some Chromium-based browsers with the page loaded over HTTPS',\n },\n formEditor: {\n title: 'Template Form Playground',\n description:\n 'Preview and edit a template form, either using a sample template or by loading a template from the catalog.',\n },\n fieldExplorer: {\n title: 'Custom Field Explorer',\n description:\n 'View and play around with available installed custom field extensions.',\n },\n },\n templateEditorTextArea: {\n saveIconTooltip: 'Save file',\n refreshIconTooltip: 'Reload file',\n emptyStateParagraph: 'Please select an action on the file menu.',\n },\n templateFormPreviewer: {\n title: 'Load Existing Template',\n },\n },\n templateListPage: {\n title: 'Create a new component',\n subtitle:\n 'Create new software components using standard templates in your organization',\n pageTitle: 'Create a new component',\n templateGroups: {\n defaultTitle: 'Templates',\n otherTitle: 'Other Templates',\n },\n contentHeader: {\n registerExistingButtonTitle: 'Register Existing Component',\n supportButtonTitle:\n 'Create new software components using standard templates. Different templates create different kinds of components (services, websites, documentation, ...).',\n },\n additionalLinksForEntity: {\n viewTechDocsTitle: 'View TechDocs',\n },\n },\n templateWizardPage: {\n title: 'Create a new component',\n subtitle:\n 'Create new software components using standard templates in your organization',\n pageTitle: 'Create a new component',\n pageContextMenu: {\n editConfigurationTitle: 'Edit Configuration',\n },\n },\n templateEditorToolbar: {\n customFieldExplorerTooltip: 'Custom Fields Explorer',\n installedActionsDocumentationTooltip: 'Installed Actions Documentation',\n templatingExtensionsDocumentationTooltip:\n 'Templating Extensions Documentation',\n addToCatalogButton: 'Publish',\n addToCatalogDialogTitle: 'Publish changes',\n addToCatalogDialogContent: {\n stepsIntroduction:\n 'Follow the instructions below to create or update a template:',\n stepsListItems:\n 'Save the template files in a local directory\\nCreate a pull request to a new or existing git repository\\nIf the template already exists, the changes will be reflected in the software catalog once the pull request gets merged\\nBut if you are creating a new template, follow the documentation linked below to register the new template repository in software catalog',\n },\n addToCatalogDialogActions: {\n documentationButton: 'Go to the documentation',\n documentationUrl:\n 'https://backstage.io/docs/features/software-templates/adding-templates/',\n },\n },\n templateEditorToolbarFileMenu: {\n button: 'File',\n options: {\n openDirectory: 'Open template directory',\n createDirectory: 'Create template directory',\n closeEditor: 'Close template editor',\n },\n },\n templateEditorToolbarTemplatesMenu: {\n button: 'Templates',\n },\n },\n});\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"translation.esm.js","sources":["../src/translation.ts"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createTranslationRef } from '@backstage/core-plugin-api/alpha';\n\n/** @alpha */\nexport const scaffolderTranslationRef = createTranslationRef({\n id: 'scaffolder',\n messages: {\n aboutCard: {\n launchTemplate: 'Launch Template',\n },\n actionsPage: {\n title: 'Installed actions',\n pageTitle: 'Create a New Component',\n subtitle: 'This is the collection of all installed actions',\n content: {\n emptyState: {\n title: 'No information to display',\n description:\n 'There are no actions installed or there was an issue communicating with backend.',\n },\n searchFieldPlaceholder: 'Search for an action',\n },\n action: {\n input: 'Input',\n output: 'Output',\n examples: 'Examples',\n },\n },\n fields: {\n entityNamePicker: {\n title: 'Name',\n description: 'Unique name of the component',\n },\n entityPicker: {\n title: 'Entity',\n description: 'An entity from the catalog',\n },\n entityTagsPicker: {\n title: 'Tags',\n description:\n \"Add any relevant tags, hit 'Enter' to add new tags. Valid format: [a-z0-9+#] separated by [-], at most 63 characters\",\n },\n multiEntityPicker: {\n title: 'Entity',\n description: 'An entity from the catalog',\n },\n myGroupsPicker: {\n title: 'Entity',\n description: 'An entity from the catalog',\n },\n ownedEntityPicker: {\n title: 'Entity',\n description: 'An entity from the catalog',\n },\n ownerPicker: {\n title: 'Owner',\n description: 'The owner of the component',\n },\n azureRepoPicker: {\n organization: {\n title: 'Organization',\n description: 'The Organization that this repo will belong to',\n },\n project: {\n title: 'Project',\n description: 'The Project that this repo will belong to',\n },\n },\n bitbucketRepoPicker: {\n workspaces: {\n title: 'Allowed Workspaces',\n inputTitle: 'Workspaces',\n description: 'The Workspace that this repo will belong to',\n },\n project: {\n title: 'Allowed Projects',\n inputTitle: 'Projects',\n description: 'The Project that this repo will belong to',\n },\n },\n gerritRepoPicker: {\n owner: {\n title: 'Owner',\n description: 'The owner of the project (optional)',\n },\n parent: {\n title: 'Parent',\n description: 'The project parent that the repo will belong to',\n },\n },\n giteaRepoPicker: {\n owner: {\n title: 'Owner Available',\n inputTitle: 'Owner',\n description:\n 'Gitea namespace where this repository will belong to. It can be the name of organization, group, subgroup, user, or the project.',\n },\n },\n githubRepoPicker: {\n owner: {\n title: 'Owner Available',\n inputTitle: 'Owner',\n description:\n 'The organization, user or project that this repo will belong to',\n },\n },\n gitlabRepoPicker: {\n owner: {\n title: 'Owner Available',\n inputTitle: 'Owner',\n description:\n 'GitLab namespace where this repository will belong to. It can be the name of organization, group, subgroup, user, or the project.',\n },\n },\n repoUrlPicker: {\n host: {\n title: 'Host',\n description: 'The host where the repository will be created',\n },\n repository: {\n title: 'Repositories Available',\n inputTitle: 'Repository',\n description: 'The name of the repository',\n },\n },\n repoOwnerPicker: {\n title: 'Owner',\n description: 'The owner of the repository',\n },\n },\n listTaskPage: {\n title: 'List template tasks',\n pageTitle: 'Templates Tasks',\n subtitle: 'All tasks that have been started',\n content: {\n emptyState: {\n title: 'No information to display',\n description:\n 'There are no tasks or there was an issue communicating with backend.',\n },\n tableTitle: 'Tasks',\n tableCell: {\n taskID: 'Task ID',\n template: 'Template',\n created: 'Created',\n owner: 'Owner',\n status: 'Status',\n },\n },\n },\n ownerListPicker: {\n title: 'Task Owner',\n options: {\n owned: 'Owned',\n all: 'All',\n },\n },\n ongoingTask: {\n title: 'Run of',\n pageTitle: {\n hasTemplateName: 'Run of {{templateName}}',\n noTemplateName: 'Scaffolder Run',\n },\n subtitle: 'Task {{taskId}}',\n cancelButtonTitle: 'Cancel',\n retryButtonTitle: 'Retry',\n startOverButtonTitle: 'Start Over',\n hideLogsButtonTitle: 'Hide Logs',\n showLogsButtonTitle: 'Show Logs',\n contextMenu: {\n hideLogs: 'Hide Logs',\n showLogs: 'Show Logs',\n hideButtonBar: 'Hide Button Bar',\n retry: 'Retry',\n showButtonBar: 'Show Button Bar',\n startOver: 'Start Over',\n cancel: 'Cancel',\n },\n },\n templateEditorForm: {\n stepper: {\n emptyText: 'There are no spec parameters in the template to preview.',\n },\n },\n renderSchema: {\n tableCell: {\n name: 'Name',\n title: 'Title',\n description: 'Description',\n type: 'Type',\n },\n undefined: 'No schema defined',\n },\n templatingExtensions: {\n title: 'Templating Extensions',\n pageTitle: 'Templating Extensions',\n subtitle: 'This is the collection of available templating extensions',\n content: {\n emptyState: {\n title: 'No information to display',\n description:\n 'There are no templating extensions available or there was an issue communicating with the backend.',\n },\n searchFieldPlaceholder: 'Search for an extension',\n filters: {\n title: 'Filters',\n notAvailable: 'There are no template filters defined.',\n metadataAbsent: 'Filter metadata unavailable',\n schema: {\n input: 'Input',\n arguments: 'Arguments',\n output: 'Output',\n },\n examples: 'Examples',\n },\n functions: {\n title: 'Functions',\n notAvailable: 'There are no global template functions defined.',\n metadataAbsent: 'Function metadata unavailable',\n schema: {\n arguments: 'Arguments',\n output: 'Output',\n },\n examples: 'Examples',\n },\n values: {\n title: 'Values',\n notAvailable: 'There are no global template values defined.',\n },\n },\n },\n templateTypePicker: {\n title: 'Categories',\n },\n templateIntroPage: {\n title: 'Manage Templates',\n subtitle:\n 'Edit, preview, and try out templates, forms, and custom fields',\n },\n templateFormPage: {\n title: 'Template Editor',\n subtitle: 'Edit, preview, and try out templates forms',\n },\n templateCustomFieldPage: {\n title: 'Custom Field Explorer',\n subtitle: 'Edit, preview, and try out custom fields',\n },\n templateEditorPage: {\n title: 'Template Editor',\n subtitle: 'Edit, preview, and try out templates and template forms',\n dryRunResults: {\n title: 'Dry-run results',\n },\n dryRunResultsList: {\n title: 'Result {{resultId}}',\n downloadButtonTitle: 'Download as .zip',\n deleteButtonTitle: 'Delete result',\n },\n dryRunResultsView: {\n tab: {\n files: 'Files',\n log: 'Log',\n output: 'Output',\n },\n },\n taskStatusStepper: {\n skippedStepTitle: 'Skipped',\n },\n customFieldExplorer: {\n selectFieldLabel: 'Choose Custom Field Extension',\n fieldForm: {\n title: 'Field Options',\n applyButtonTitle: 'Apply',\n },\n fieldPreview: {\n title: 'Field Preview',\n },\n preview: {\n title: 'Template Spec',\n },\n },\n templateEditorBrowser: {\n closeConfirmMessage: 'Are you sure? Unsaved changes will be lost',\n saveIconTooltip: 'Save all files',\n reloadIconTooltip: 'Reload directory',\n closeIconTooltip: 'Close directory',\n },\n templateEditorIntro: {\n title: 'Get started by choosing one of the options below',\n loadLocal: {\n title: 'Load Template Directory',\n description:\n 'Load a local template directory, allowing you to both edit and try executing your own template.',\n unsupportedTooltip:\n 'Only supported in some Chromium-based browsers with the page loaded over HTTPS',\n },\n createLocal: {\n title: 'Create New Template',\n description:\n 'Create a local template directory, allowing you to both edit and try executing your own template.',\n unsupportedTooltip:\n 'Only supported in some Chromium-based browsers with the page loaded over HTTPS',\n },\n formEditor: {\n title: 'Template Form Playground',\n description:\n 'Preview and edit a template form, either using a sample template or by loading a template from the catalog.',\n },\n fieldExplorer: {\n title: 'Custom Field Explorer',\n description:\n 'View and play around with available installed custom field extensions.',\n },\n },\n templateEditorTextArea: {\n saveIconTooltip: 'Save file',\n refreshIconTooltip: 'Reload file',\n emptyStateParagraph: 'Please select an action on the file menu.',\n },\n templateFormPreviewer: {\n title: 'Load Existing Template',\n },\n },\n templateListPage: {\n title: 'Create a new component',\n subtitle:\n 'Create new software components using standard templates in your organization',\n pageTitle: 'Create a new component',\n templateGroups: {\n defaultTitle: 'Templates',\n otherTitle: 'Other Templates',\n },\n contentHeader: {\n registerExistingButtonTitle: 'Register Existing Component',\n supportButtonTitle:\n 'Create new software components using standard templates. Different templates create different kinds of components (services, websites, documentation, ...).',\n },\n additionalLinksForEntity: {\n viewTechDocsTitle: 'View TechDocs',\n },\n },\n templateWizardPage: {\n title: 'Create a new component',\n subtitle:\n 'Create new software components using standard templates in your organization',\n pageTitle: 'Create a new component',\n templateWithTitle: 'Create new {{templateTitle}}',\n pageContextMenu: {\n editConfigurationTitle: 'Edit Configuration',\n },\n },\n templateEditorToolbar: {\n customFieldExplorerTooltip: 'Custom Fields Explorer',\n installedActionsDocumentationTooltip: 'Installed Actions Documentation',\n templatingExtensionsDocumentationTooltip:\n 'Templating Extensions Documentation',\n addToCatalogButton: 'Publish',\n addToCatalogDialogTitle: 'Publish changes',\n addToCatalogDialogContent: {\n stepsIntroduction:\n 'Follow the instructions below to create or update a template:',\n stepsListItems:\n 'Save the template files in a local directory\\nCreate a pull request to a new or existing git repository\\nIf the template already exists, the changes will be reflected in the software catalog once the pull request gets merged\\nBut if you are creating a new template, follow the documentation linked below to register the new template repository in software catalog',\n },\n addToCatalogDialogActions: {\n documentationButton: 'Go to the documentation',\n documentationUrl:\n 'https://backstage.io/docs/features/software-templates/adding-templates/',\n },\n },\n templateEditorToolbarFileMenu: {\n button: 'File',\n options: {\n openDirectory: 'Open template directory',\n createDirectory: 'Create template directory',\n closeEditor: 'Close template editor',\n },\n },\n templateEditorToolbarTemplatesMenu: {\n button: 'Templates',\n },\n },\n});\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backstage/plugin-scaffolder",
3
- "version": "1.35.2",
3
+ "version": "1.35.3-next.2",
4
4
  "description": "The Backstage plugin that helps you create new things",
5
5
  "backstage": {
6
6
  "role": "frontend-plugin",
@@ -70,22 +70,22 @@
70
70
  "test": "backstage-cli package test"
71
71
  },
72
72
  "dependencies": {
73
- "@backstage/catalog-client": "^1.12.1",
74
- "@backstage/catalog-model": "^1.7.6",
75
- "@backstage/core-components": "^0.18.6",
76
- "@backstage/core-plugin-api": "^1.12.2",
77
- "@backstage/errors": "^1.2.7",
78
- "@backstage/frontend-plugin-api": "^0.13.4",
79
- "@backstage/integration": "^1.19.2",
80
- "@backstage/integration-react": "^1.2.14",
81
- "@backstage/plugin-catalog-common": "^1.1.7",
82
- "@backstage/plugin-catalog-react": "^1.21.6",
83
- "@backstage/plugin-permission-react": "^0.4.39",
84
- "@backstage/plugin-scaffolder-common": "^1.7.5",
85
- "@backstage/plugin-scaffolder-react": "^1.19.6",
86
- "@backstage/plugin-techdocs-common": "^0.1.1",
87
- "@backstage/plugin-techdocs-react": "^1.3.7",
88
- "@backstage/types": "^1.2.2",
73
+ "@backstage/catalog-client": "1.12.2-next.0",
74
+ "@backstage/catalog-model": "1.7.6",
75
+ "@backstage/core-components": "0.18.7-next.2",
76
+ "@backstage/core-plugin-api": "1.12.3-next.1",
77
+ "@backstage/errors": "1.2.7",
78
+ "@backstage/frontend-plugin-api": "0.14.0-next.2",
79
+ "@backstage/integration": "1.20.0-next.2",
80
+ "@backstage/integration-react": "1.2.15-next.2",
81
+ "@backstage/plugin-catalog-common": "1.1.8-next.0",
82
+ "@backstage/plugin-catalog-react": "2.0.0-next.2",
83
+ "@backstage/plugin-permission-react": "0.4.40-next.1",
84
+ "@backstage/plugin-scaffolder-common": "1.7.6-next.1",
85
+ "@backstage/plugin-scaffolder-react": "1.19.7-next.2",
86
+ "@backstage/plugin-techdocs-common": "0.1.1",
87
+ "@backstage/plugin-techdocs-react": "1.3.8-next.1",
88
+ "@backstage/types": "1.2.2",
89
89
  "@codemirror/language": "^6.0.0",
90
90
  "@codemirror/legacy-modes": "^6.1.0",
91
91
  "@codemirror/view": "^6.0.0",
@@ -117,13 +117,14 @@
117
117
  "zod-to-json-schema": "^3.25.1"
118
118
  },
119
119
  "devDependencies": {
120
- "@backstage/cli": "^0.35.3",
121
- "@backstage/core-app-api": "^1.19.4",
122
- "@backstage/dev-utils": "^1.1.19",
123
- "@backstage/plugin-catalog": "^1.32.2",
124
- "@backstage/plugin-permission-common": "^0.9.5",
125
- "@backstage/plugin-techdocs": "^1.16.2",
126
- "@backstage/test-utils": "^1.7.14",
120
+ "@backstage/cli": "0.35.4-next.2",
121
+ "@backstage/core-app-api": "1.19.5-next.1",
122
+ "@backstage/dev-utils": "1.1.20-next.2",
123
+ "@backstage/frontend-test-utils": "0.5.0-next.2",
124
+ "@backstage/plugin-catalog": "1.33.0-next.2",
125
+ "@backstage/plugin-permission-common": "0.9.6-next.0",
126
+ "@backstage/plugin-techdocs": "1.16.3-next.2",
127
+ "@backstage/test-utils": "1.7.15-next.2",
127
128
  "@testing-library/dom": "^10.0.0",
128
129
  "@testing-library/jest-dom": "^6.0.0",
129
130
  "@testing-library/react": "^16.0.0",
@@ -135,14 +136,14 @@
135
136
  "@types/react-window": "^1.8.8",
136
137
  "react": "^18.0.2",
137
138
  "react-dom": "^18.0.2",
138
- "react-router-dom": "^6.3.0",
139
+ "react-router-dom": "^6.30.2",
139
140
  "swr": "^2.0.0"
140
141
  },
141
142
  "peerDependencies": {
142
143
  "@types/react": "^17.0.0 || ^18.0.0",
143
144
  "react": "^17.0.0 || ^18.0.0",
144
145
  "react-dom": "^17.0.0 || ^18.0.0",
145
- "react-router-dom": "^6.3.0"
146
+ "react-router-dom": "^6.30.2"
146
147
  },
147
148
  "peerDependenciesMeta": {
148
149
  "@types/react": {