@backstage/plugin-scaffolder 1.37.0-next.2 → 1.37.0
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 +79 -0
- package/dist/alpha/extensions.esm.js +4 -10
- package/dist/alpha/extensions.esm.js.map +1 -1
- package/dist/alpha/plugin.esm.js +1 -2
- package/dist/alpha/plugin.esm.js.map +1 -1
- package/dist/alpha.d.ts +0 -21
- package/dist/plugins/scaffolder/package.json.esm.js +1 -1
- package/package.json +27 -27
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,84 @@
|
|
|
1
1
|
# @backstage/plugin-scaffolder
|
|
2
2
|
|
|
3
|
+
## 1.37.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- dbeb7aa: Added experimental BUI (Backstage UI) form theme for scaffolder forms. All default field extensions render BUI variants when enabled.
|
|
8
|
+
|
|
9
|
+
**Extension config:**
|
|
10
|
+
|
|
11
|
+
```yaml
|
|
12
|
+
app:
|
|
13
|
+
extensions:
|
|
14
|
+
- sub-page:scaffolder/templates:
|
|
15
|
+
config:
|
|
16
|
+
enableBackstageUi: true
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
**JSX props:**
|
|
20
|
+
|
|
21
|
+
```tsx
|
|
22
|
+
<ScaffolderPage formProps={{ EXPERIMENTAL_theme: 'bui' }} />
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
- 8006acf: Promoted `formDecoratorsApiRef`, `ScaffolderFormDecoratorsApi`,
|
|
26
|
+
`DefaultScaffolderFormDecoratorsApi`, and `formDecoratorsApi` from `@alpha`
|
|
27
|
+
to `@public`.
|
|
28
|
+
- d09c21c: The `sub-page:scaffolder/templates` extension now accepts a `groups` config
|
|
29
|
+
field that lets you define template groups on the template list page. Each group
|
|
30
|
+
has a `title` and a `filter` predicate. Templates not matched by any
|
|
31
|
+
configured group fall into an automatically appended "Other Templates" group.
|
|
32
|
+
With no groups configured, the page renders a single "Templates" group as
|
|
33
|
+
before.
|
|
34
|
+
|
|
35
|
+
Example:
|
|
36
|
+
|
|
37
|
+
```yaml
|
|
38
|
+
app:
|
|
39
|
+
extensions:
|
|
40
|
+
- sub-page:scaffolder/templates:
|
|
41
|
+
config:
|
|
42
|
+
groups:
|
|
43
|
+
- title: Recommended Services
|
|
44
|
+
filter:
|
|
45
|
+
spec.type: service
|
|
46
|
+
- title: Documentation
|
|
47
|
+
filter:
|
|
48
|
+
spec.type: documentation
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Patch Changes
|
|
52
|
+
|
|
53
|
+
- 1ecc3ca: Fixed spelling mistakes in internal code
|
|
54
|
+
- f635139: Limited `@remixicon/react` dependency to versions below 4.9.0 due to a license change in that release.
|
|
55
|
+
- 415e30b: Simplified the `OwnerEntityColumn` in the task list to rely on `EntityRefLink` and the entity presentation API instead of manually fetching entities from the catalog.
|
|
56
|
+
- 44d77e9: Removed separate nav item extensions. Sidebar entries are now provided via `title` and `icon` on each plugin's page extension.
|
|
57
|
+
- 8006acf: Form decorator input is now parsed against the zod schema configured on the
|
|
58
|
+
decorator before the decorator runs, so defaults declared via `.default()`
|
|
59
|
+
are applied and invalid input is reported through the error API instead of
|
|
60
|
+
silently passing through.
|
|
61
|
+
- 8006acf: The template wizard now reads form decorators from the new
|
|
62
|
+
`spec.formDecorators` field on a template, falling back to the deprecated
|
|
63
|
+
`spec.EXPERIMENTAL_formDecorators` for templates that have not been migrated.
|
|
64
|
+
- Updated dependencies
|
|
65
|
+
- @backstage/catalog-model@1.9.0
|
|
66
|
+
- @backstage/core-components@0.18.10
|
|
67
|
+
- @backstage/ui@0.15.0
|
|
68
|
+
- @backstage/errors@1.3.1
|
|
69
|
+
- @backstage/plugin-scaffolder-react@2.0.0
|
|
70
|
+
- @backstage/frontend-plugin-api@0.17.0
|
|
71
|
+
- @backstage/core-plugin-api@1.12.6
|
|
72
|
+
- @backstage/filter-predicates@0.1.3
|
|
73
|
+
- @backstage/integration@2.0.2
|
|
74
|
+
- @backstage/plugin-catalog-react@3.0.0
|
|
75
|
+
- @backstage/plugin-techdocs-react@1.3.11
|
|
76
|
+
- @backstage/plugin-scaffolder-common@2.2.0
|
|
77
|
+
- @backstage/catalog-client@1.15.1
|
|
78
|
+
- @backstage/integration-react@1.2.18
|
|
79
|
+
- @backstage/plugin-catalog-common@1.1.10
|
|
80
|
+
- @backstage/plugin-permission-react@0.5.1
|
|
81
|
+
|
|
3
82
|
## 1.37.0-next.2
|
|
4
83
|
|
|
5
84
|
### Minor Changes
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { PageBlueprint, createExtensionInput, SubPageBlueprint,
|
|
2
|
+
import { PageBlueprint, createExtensionInput, SubPageBlueprint, ApiBlueprint, identityApiRef, fetchApiRef, discoveryApiRef } from '@backstage/frontend-plugin-api';
|
|
3
3
|
import { z } from 'zod/v4';
|
|
4
4
|
import { filterPredicateToFilterFunction, createZodV4FilterPredicateSchema } from '@backstage/filter-predicates';
|
|
5
5
|
import { rootRouteRef } from '../routes.esm.js';
|
|
@@ -19,7 +19,8 @@ const scaffolderPage = PageBlueprint.makeWithOverrides({
|
|
|
19
19
|
return originalFactory({
|
|
20
20
|
routeRef: rootRouteRef,
|
|
21
21
|
path: "/create",
|
|
22
|
-
title: "Create"
|
|
22
|
+
title: "Create",
|
|
23
|
+
icon: /* @__PURE__ */ jsx(CreateComponentIcon, { fontSize: "inherit" })
|
|
23
24
|
});
|
|
24
25
|
}
|
|
25
26
|
});
|
|
@@ -99,13 +100,6 @@ const scaffolderTemplatingExtensionsSubPage = SubPageBlueprint.make({
|
|
|
99
100
|
]).then(([m, { Content }]) => /* @__PURE__ */ jsx(Content, { children: /* @__PURE__ */ jsx(m.TemplatingExtensionsPageContent, { linkLocal: true }) }))
|
|
100
101
|
}
|
|
101
102
|
});
|
|
102
|
-
const scaffolderNavItem = NavItemBlueprint.make({
|
|
103
|
-
params: {
|
|
104
|
-
routeRef: rootRouteRef,
|
|
105
|
-
title: "Create...",
|
|
106
|
-
icon: CreateComponentIcon
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
103
|
const repoUrlPickerFormField = FormFieldBlueprint.make({
|
|
110
104
|
name: "repo-url-picker",
|
|
111
105
|
params: {
|
|
@@ -184,5 +178,5 @@ const scaffolderApi = ApiBlueprint.make({
|
|
|
184
178
|
})
|
|
185
179
|
});
|
|
186
180
|
|
|
187
|
-
export { entityNamePickerFormField, entityPickerFormField, entityTagsPickerFormField, multiEntityPickerFormField, myGroupsPickerFormField, ownedEntityPickerFormField, ownerPickerFormField, repoBranchPickerFormField, repoOwnerPickerFormField, repoUrlPickerFormField, scaffolderActionsSubPage, scaffolderApi, scaffolderEditorSubPage,
|
|
181
|
+
export { entityNamePickerFormField, entityPickerFormField, entityTagsPickerFormField, multiEntityPickerFormField, myGroupsPickerFormField, ownedEntityPickerFormField, ownerPickerFormField, repoBranchPickerFormField, repoOwnerPickerFormField, repoUrlPickerFormField, scaffolderActionsSubPage, scaffolderApi, scaffolderEditorSubPage, scaffolderPage, scaffolderTasksSubPage, scaffolderTemplatesSubPage, scaffolderTemplatingExtensionsSubPage };
|
|
188
182
|
//# sourceMappingURL=extensions.esm.js.map
|
|
@@ -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 SubPageBlueprint,\n} from '@backstage/frontend-plugin-api';\nimport { z } from 'zod/v4';\nimport {\n createZodV4FilterPredicateSchema,\n filterPredicateToFilterFunction,\n} from '@backstage/filter-predicates';\nimport { rootRouteRef } from '../routes';\nimport CreateComponentIcon from '@material-ui/icons/AddCircleOutline';\nimport {\n FormFieldBlueprint,\n formFieldsApiRef,\n} from '@backstage/plugin-scaffolder-react/alpha';\nimport { scmIntegrationsApiRef } from '@backstage/integration-react';\nimport {\n scaffolderApiRef,\n TemplateGroupFilter,\n} 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) {\n return originalFactory({\n routeRef: rootRouteRef,\n path: '/create',\n title: 'Create',\n });\n },\n});\n\nexport const scaffolderTemplatesSubPage = SubPageBlueprint.makeWithOverrides({\n name: 'templates',\n configSchema: {\n enableBackstageUi: z.boolean().optional().default(false),\n groups: z\n .array(\n z.object({\n title: z.string(),\n filter: createZodV4FilterPredicateSchema(),\n }),\n )\n .optional(),\n },\n factory(originalFactory, { apis, config }) {\n const formFieldsApi = apis.get(formFieldsApiRef);\n\n const groups: TemplateGroupFilter[] | undefined = config.groups?.map(\n group => ({\n title: group.title,\n filter: filterPredicateToFilterFunction(group.filter),\n }),\n );\n\n return originalFactory({\n path: 'templates',\n title: 'Templates',\n loader: async () => {\n const formFields = (await formFieldsApi?.loadFormFields()) ?? [];\n\n return import('./components/TemplatesSubPage').then(m => (\n <m.TemplatesSubPage\n formFields={formFields}\n groups={groups}\n formProps={{\n EXPERIMENTAL_theme: config.enableBackstageUi ? 'bui' : 'mui',\n }}\n />\n ));\n },\n });\n },\n});\n\nexport const scaffolderTasksSubPage = SubPageBlueprint.make({\n name: 'tasks',\n params: {\n path: 'tasks',\n title: 'Tasks',\n loader: () =>\n import('./components/TasksSubPage').then(m => <m.TasksSubPage />),\n },\n});\n\nexport const scaffolderActionsSubPage = SubPageBlueprint.make({\n name: 'actions',\n params: {\n path: 'actions',\n title: 'Actions',\n loader: () =>\n Promise.all([\n import('../components/ActionsPage'),\n import('@backstage/core-components'),\n ]).then(([m, { Content }]) => (\n <Content>\n <m.ActionPageContent />\n </Content>\n )),\n },\n});\n\nexport const scaffolderEditorSubPage = SubPageBlueprint.make({\n name: 'editor',\n params: {\n path: 'edit',\n title: 'Template Editor',\n loader: () =>\n import('./components/EditorSubPage').then(m => <m.EditorSubPage />),\n },\n});\n\nexport const scaffolderTemplatingExtensionsSubPage = SubPageBlueprint.make({\n name: 'templating-extensions',\n params: {\n path: 'templating-extensions',\n title: 'Templating Extensions',\n loader: () =>\n Promise.all([\n import('../components/TemplatingExtensionsPage'),\n import('@backstage/core-components'),\n ]).then(([m, { Content }]) => (\n <Content>\n <m.TemplatingExtensionsPageContent linkLocal />\n </Content>\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":"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"}
|
|
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 PageBlueprint,\n SubPageBlueprint,\n} from '@backstage/frontend-plugin-api';\nimport { z } from 'zod/v4';\nimport {\n createZodV4FilterPredicateSchema,\n filterPredicateToFilterFunction,\n} from '@backstage/filter-predicates';\nimport { rootRouteRef } from '../routes';\nimport CreateComponentIcon from '@material-ui/icons/AddCircleOutline';\nimport {\n FormFieldBlueprint,\n formFieldsApiRef,\n} from '@backstage/plugin-scaffolder-react/alpha';\nimport { scmIntegrationsApiRef } from '@backstage/integration-react';\nimport {\n scaffolderApiRef,\n TemplateGroupFilter,\n} 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) {\n return originalFactory({\n routeRef: rootRouteRef,\n path: '/create',\n title: 'Create',\n icon: <CreateComponentIcon fontSize=\"inherit\" />,\n });\n },\n});\n\nexport const scaffolderTemplatesSubPage = SubPageBlueprint.makeWithOverrides({\n name: 'templates',\n configSchema: {\n enableBackstageUi: z.boolean().optional().default(false),\n groups: z\n .array(\n z.object({\n title: z.string(),\n filter: createZodV4FilterPredicateSchema(),\n }),\n )\n .optional(),\n },\n factory(originalFactory, { apis, config }) {\n const formFieldsApi = apis.get(formFieldsApiRef);\n\n const groups: TemplateGroupFilter[] | undefined = config.groups?.map(\n group => ({\n title: group.title,\n filter: filterPredicateToFilterFunction(group.filter),\n }),\n );\n\n return originalFactory({\n path: 'templates',\n title: 'Templates',\n loader: async () => {\n const formFields = (await formFieldsApi?.loadFormFields()) ?? [];\n\n return import('./components/TemplatesSubPage').then(m => (\n <m.TemplatesSubPage\n formFields={formFields}\n groups={groups}\n formProps={{\n EXPERIMENTAL_theme: config.enableBackstageUi ? 'bui' : 'mui',\n }}\n />\n ));\n },\n });\n },\n});\n\nexport const scaffolderTasksSubPage = SubPageBlueprint.make({\n name: 'tasks',\n params: {\n path: 'tasks',\n title: 'Tasks',\n loader: () =>\n import('./components/TasksSubPage').then(m => <m.TasksSubPage />),\n },\n});\n\nexport const scaffolderActionsSubPage = SubPageBlueprint.make({\n name: 'actions',\n params: {\n path: 'actions',\n title: 'Actions',\n loader: () =>\n Promise.all([\n import('../components/ActionsPage'),\n import('@backstage/core-components'),\n ]).then(([m, { Content }]) => (\n <Content>\n <m.ActionPageContent />\n </Content>\n )),\n },\n});\n\nexport const scaffolderEditorSubPage = SubPageBlueprint.make({\n name: 'editor',\n params: {\n path: 'edit',\n title: 'Template Editor',\n loader: () =>\n import('./components/EditorSubPage').then(m => <m.EditorSubPage />),\n },\n});\n\nexport const scaffolderTemplatingExtensionsSubPage = SubPageBlueprint.make({\n name: 'templating-extensions',\n params: {\n path: 'templating-extensions',\n title: 'Templating Extensions',\n loader: () =>\n Promise.all([\n import('../components/TemplatingExtensionsPage'),\n import('@backstage/core-components'),\n ]).then(([m, { Content }]) => (\n <Content>\n <m.TemplatingExtensionsPageContent linkLocal />\n </Content>\n )),\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":"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"}
|
package/dist/alpha/plugin.esm.js
CHANGED
|
@@ -2,7 +2,7 @@ import { jsx } from 'react/jsx-runtime';
|
|
|
2
2
|
import { createFrontendPlugin } from '@backstage/frontend-plugin-api';
|
|
3
3
|
import CreateComponentIcon from '@material-ui/icons/AddCircleOutline';
|
|
4
4
|
import { viewTechDocRouteRef, registerComponentRouteRef, templatingExtensionsRouteRef, editRouteRef, scaffolderListTaskRouteRef, actionsRouteRef, scaffolderTaskRouteRef, selectedTemplateRouteRef, rootRouteRef } from '../routes.esm.js';
|
|
5
|
-
import { scaffolderApi, scaffolderPage, scaffolderTemplatesSubPage, scaffolderTasksSubPage, scaffolderActionsSubPage, scaffolderEditorSubPage, scaffolderTemplatingExtensionsSubPage,
|
|
5
|
+
import { scaffolderApi, scaffolderPage, scaffolderTemplatesSubPage, scaffolderTasksSubPage, scaffolderActionsSubPage, scaffolderEditorSubPage, scaffolderTemplatingExtensionsSubPage, repoUrlPickerFormField, entityNamePickerFormField, entityPickerFormField, ownerPickerFormField, entityTagsPickerFormField, multiEntityPickerFormField, myGroupsPickerFormField, ownedEntityPickerFormField, repoBranchPickerFormField, repoOwnerPickerFormField } from './extensions.esm.js';
|
|
6
6
|
import { isTemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common';
|
|
7
7
|
import { formFieldsApi } from './formFieldsApi.esm.js';
|
|
8
8
|
import './api/ref.esm.js';
|
|
@@ -43,7 +43,6 @@ var plugin = createFrontendPlugin({
|
|
|
43
43
|
scaffolderActionsSubPage,
|
|
44
44
|
scaffolderEditorSubPage,
|
|
45
45
|
scaffolderTemplatingExtensionsSubPage,
|
|
46
|
-
scaffolderNavItem,
|
|
47
46
|
scaffolderEntityIconLink,
|
|
48
47
|
formDecoratorsApi,
|
|
49
48
|
formFieldsApi,
|
|
@@ -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 CreateComponentIcon from '@material-ui/icons/AddCircleOutline';\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
|
|
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 CreateComponentIcon from '@material-ui/icons/AddCircleOutline';\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 scaffolderPage,\n scaffolderTemplatesSubPage,\n scaffolderTasksSubPage,\n scaffolderActionsSubPage,\n scaffolderEditorSubPage,\n scaffolderTemplatingExtensionsSubPage,\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 title: 'Create',\n icon: <CreateComponentIcon fontSize=\"inherit\" />,\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 scaffolderTemplatesSubPage,\n scaffolderTasksSubPage,\n scaffolderActionsSubPage,\n scaffolderEditorSubPage,\n scaffolderTemplatingExtensionsSubPage,\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":";;;;;;;;;;;;AAuDA,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,KAAA,EAAO,QAAA;AAAA,EACP,IAAA,kBAAM,GAAA,CAAC,mBAAA,EAAA,EAAoB,QAAA,EAAS,SAAA,EAAU,CAAA;AAAA,EAC9C,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,0BAAA;AAAA,IACA,sBAAA;AAAA,IACA,wBAAA;AAAA,IACA,uBAAA;AAAA,IACA,qCAAA;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
|
@@ -190,27 +190,6 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
190
190
|
filter?: _backstage_filter_predicates.FilterPredicate | ((entity: _backstage_catalog_model.Entity) => boolean);
|
|
191
191
|
};
|
|
192
192
|
}>;
|
|
193
|
-
"nav-item:scaffolder": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
194
|
-
kind: "nav-item";
|
|
195
|
-
name: undefined;
|
|
196
|
-
config: {
|
|
197
|
-
title: string | undefined;
|
|
198
|
-
};
|
|
199
|
-
configInput: {
|
|
200
|
-
title?: string | undefined;
|
|
201
|
-
};
|
|
202
|
-
output: _backstage_frontend_plugin_api.ExtensionDataRef<{
|
|
203
|
-
title: string;
|
|
204
|
-
icon: _backstage_frontend_plugin_api.IconComponent;
|
|
205
|
-
routeRef: _backstage_frontend_plugin_api.RouteRef<undefined>;
|
|
206
|
-
}, "core.nav-item.target", {}>;
|
|
207
|
-
inputs: {};
|
|
208
|
-
params: {
|
|
209
|
-
title: string;
|
|
210
|
-
icon: _backstage_frontend_plugin_api.IconComponent;
|
|
211
|
-
routeRef: _backstage_frontend_plugin_api.RouteRef<undefined>;
|
|
212
|
-
};
|
|
213
|
-
}>;
|
|
214
193
|
"page:scaffolder": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
215
194
|
config: {
|
|
216
195
|
path: string | undefined;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@backstage/plugin-scaffolder",
|
|
3
|
-
"version": "1.37.0
|
|
3
|
+
"version": "1.37.0",
|
|
4
4
|
"description": "The Backstage plugin that helps you create new things",
|
|
5
5
|
"backstage": {
|
|
6
6
|
"role": "frontend-plugin",
|
|
@@ -70,24 +70,24 @@
|
|
|
70
70
|
"test": "backstage-cli package test"
|
|
71
71
|
},
|
|
72
72
|
"dependencies": {
|
|
73
|
-
"@backstage/catalog-client": "1.15.1
|
|
74
|
-
"@backstage/catalog-model": "1.
|
|
75
|
-
"@backstage/core-components": "0.18.10
|
|
76
|
-
"@backstage/core-plugin-api": "1.12.6
|
|
77
|
-
"@backstage/errors": "1.3.1
|
|
78
|
-
"@backstage/filter-predicates": "0.1.3
|
|
79
|
-
"@backstage/frontend-plugin-api": "0.17.0
|
|
80
|
-
"@backstage/integration": "2.0.2
|
|
81
|
-
"@backstage/integration-react": "1.2.18
|
|
82
|
-
"@backstage/plugin-catalog-common": "1.1.10
|
|
83
|
-
"@backstage/plugin-catalog-react": "
|
|
84
|
-
"@backstage/plugin-permission-react": "0.5.1
|
|
85
|
-
"@backstage/plugin-scaffolder-common": "2.2.0
|
|
86
|
-
"@backstage/plugin-scaffolder-react": "
|
|
87
|
-
"@backstage/plugin-techdocs-common": "0.1.1",
|
|
88
|
-
"@backstage/plugin-techdocs-react": "1.3.11
|
|
89
|
-
"@backstage/types": "1.2.2",
|
|
90
|
-
"@backstage/ui": "0.15.0
|
|
73
|
+
"@backstage/catalog-client": "^1.15.1",
|
|
74
|
+
"@backstage/catalog-model": "^1.9.0",
|
|
75
|
+
"@backstage/core-components": "^0.18.10",
|
|
76
|
+
"@backstage/core-plugin-api": "^1.12.6",
|
|
77
|
+
"@backstage/errors": "^1.3.1",
|
|
78
|
+
"@backstage/filter-predicates": "^0.1.3",
|
|
79
|
+
"@backstage/frontend-plugin-api": "^0.17.0",
|
|
80
|
+
"@backstage/integration": "^2.0.2",
|
|
81
|
+
"@backstage/integration-react": "^1.2.18",
|
|
82
|
+
"@backstage/plugin-catalog-common": "^1.1.10",
|
|
83
|
+
"@backstage/plugin-catalog-react": "^3.0.0",
|
|
84
|
+
"@backstage/plugin-permission-react": "^0.5.1",
|
|
85
|
+
"@backstage/plugin-scaffolder-common": "^2.2.0",
|
|
86
|
+
"@backstage/plugin-scaffolder-react": "^2.0.0",
|
|
87
|
+
"@backstage/plugin-techdocs-common": "^0.1.1",
|
|
88
|
+
"@backstage/plugin-techdocs-react": "^1.3.11",
|
|
89
|
+
"@backstage/types": "^1.2.2",
|
|
90
|
+
"@backstage/ui": "^0.15.0",
|
|
91
91
|
"@codemirror/language": "^6.0.0",
|
|
92
92
|
"@codemirror/legacy-modes": "^6.1.0",
|
|
93
93
|
"@codemirror/view": "^6.0.0",
|
|
@@ -121,14 +121,14 @@
|
|
|
121
121
|
"zod-to-json-schema": "^3.25.1"
|
|
122
122
|
},
|
|
123
123
|
"devDependencies": {
|
|
124
|
-
"@backstage/cli": "0.36.2
|
|
125
|
-
"@backstage/core-app-api": "1.20.1
|
|
126
|
-
"@backstage/dev-utils": "1.1.23
|
|
127
|
-
"@backstage/frontend-test-utils": "0.
|
|
128
|
-
"@backstage/plugin-catalog": "2.0.5
|
|
129
|
-
"@backstage/plugin-permission-common": "0.9.9
|
|
130
|
-
"@backstage/plugin-techdocs": "1.17.6
|
|
131
|
-
"@backstage/test-utils": "1.7.18
|
|
124
|
+
"@backstage/cli": "^0.36.2",
|
|
125
|
+
"@backstage/core-app-api": "^1.20.1",
|
|
126
|
+
"@backstage/dev-utils": "^1.1.23",
|
|
127
|
+
"@backstage/frontend-test-utils": "^0.6.0",
|
|
128
|
+
"@backstage/plugin-catalog": "^2.0.5",
|
|
129
|
+
"@backstage/plugin-permission-common": "^0.9.9",
|
|
130
|
+
"@backstage/plugin-techdocs": "^1.17.6",
|
|
131
|
+
"@backstage/test-utils": "^1.7.18",
|
|
132
132
|
"@testing-library/dom": "^10.0.0",
|
|
133
133
|
"@testing-library/jest-dom": "^6.0.0",
|
|
134
134
|
"@testing-library/react": "^16.0.0",
|