@backstage/plugin-scaffolder 1.31.1-next.1 → 1.32.0-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,5 +1,33 @@
1
1
  # @backstage/plugin-scaffolder
2
2
 
3
+ ## 1.32.0-next.2
4
+
5
+ ### Minor Changes
6
+
7
+ - 3c59ece: **New Frontend System Only:**
8
+ The `Scaffolder` plugin is now responsible for providing an entity icon link extension to launch templates from the catalog entity page.
9
+
10
+ ### Patch Changes
11
+
12
+ - b00c160: Remove React import form notification and scaffolder plugin
13
+ - 95a1d72: Added appropriate message when global templating function metadata is absent.
14
+ - Updated dependencies
15
+ - @backstage/core-components@0.17.3-next.0
16
+ - @backstage/plugin-catalog-react@1.19.0-next.2
17
+ - @backstage/frontend-plugin-api@0.10.3-next.1
18
+ - @backstage/integration-react@1.2.7
19
+ - @backstage/plugin-scaffolder-react@1.16.1-next.2
20
+ - @backstage/catalog-client@1.10.1-next.0
21
+ - @backstage/catalog-model@1.7.4
22
+ - @backstage/core-compat-api@0.4.3-next.2
23
+ - @backstage/core-plugin-api@1.10.7
24
+ - @backstage/errors@1.2.7
25
+ - @backstage/integration@1.17.0
26
+ - @backstage/types@1.2.1
27
+ - @backstage/plugin-catalog-common@1.1.4
28
+ - @backstage/plugin-permission-react@0.4.34
29
+ - @backstage/plugin-scaffolder-common@1.5.11
30
+
3
31
  ## 1.31.1-next.1
4
32
 
5
33
  ### Patch Changes
@@ -0,0 +1,33 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { DEFAULT_NAMESPACE } from '@backstage/catalog-model';
3
+ import { useApp, useRouteRef } from '@backstage/core-plugin-api';
4
+ import { useEntity } from '@backstage/plugin-catalog-react';
5
+ import CreateComponentIcon from '@material-ui/icons/AddCircleOutline';
6
+ import { taskCreatePermission } from '@backstage/plugin-scaffolder-common/alpha';
7
+ import { usePermission } from '@backstage/plugin-permission-react';
8
+ import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
9
+ import { scaffolderTranslationRef } from '../../translation.esm.js';
10
+ import { selectedTemplateRouteRef } from '../../routes.esm.js';
11
+
12
+ function useScaffolderTemplateIconLinkProps() {
13
+ const app = useApp();
14
+ const { entity } = useEntity();
15
+ const templateRoute = useRouteRef(selectedTemplateRouteRef);
16
+ const { t } = useTranslationRef(scaffolderTranslationRef);
17
+ const Icon = app.getSystemIcon("scaffolder") ?? CreateComponentIcon;
18
+ const { allowed: canCreateTemplateTask } = usePermission({
19
+ permission: taskCreatePermission
20
+ });
21
+ return {
22
+ label: t("aboutCard.launchTemplate"),
23
+ icon: /* @__PURE__ */ jsx(Icon, {}),
24
+ disabled: !templateRoute || !canCreateTemplateTask,
25
+ href: templateRoute && templateRoute({
26
+ templateName: entity.metadata.name,
27
+ namespace: entity.metadata.namespace || DEFAULT_NAMESPACE
28
+ })
29
+ };
30
+ }
31
+
32
+ export { useScaffolderTemplateIconLinkProps };
33
+ //# sourceMappingURL=useScaffolderTemplateIconLinkProps.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useScaffolderTemplateIconLinkProps.esm.js","sources":["../../../src/alpha/hooks/useScaffolderTemplateIconLinkProps.tsx"],"sourcesContent":["/*\n * Copyright 2025 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 { DEFAULT_NAMESPACE } from '@backstage/catalog-model';\nimport { useApp, useRouteRef } from '@backstage/core-plugin-api';\nimport { useEntity } from '@backstage/plugin-catalog-react';\n\nimport CreateComponentIcon from '@material-ui/icons/AddCircleOutline';\nimport { taskCreatePermission } from '@backstage/plugin-scaffolder-common/alpha';\nimport { usePermission } from '@backstage/plugin-permission-react';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\n\nimport { scaffolderTranslationRef } from '../../translation';\nimport { selectedTemplateRouteRef } from '../../routes';\n\n// Note: If you update this hook, please also update the \"useScaffolderTemplateIconLinkProps\" hook\n// in the \"plugins/catalog/src/components/AboutCard/AboutCard.tsx\" file\n/** @alpha */\nexport function useScaffolderTemplateIconLinkProps() {\n const app = useApp();\n const { entity } = useEntity();\n const templateRoute = useRouteRef(selectedTemplateRouteRef);\n const { t } = useTranslationRef(scaffolderTranslationRef);\n const Icon = app.getSystemIcon('scaffolder') ?? CreateComponentIcon;\n const { allowed: canCreateTemplateTask } = usePermission({\n permission: taskCreatePermission,\n });\n\n return {\n label: t('aboutCard.launchTemplate'),\n icon: <Icon />,\n disabled: !templateRoute || !canCreateTemplateTask,\n href:\n templateRoute &&\n templateRoute({\n templateName: entity.metadata.name,\n namespace: entity.metadata.namespace || DEFAULT_NAMESPACE,\n }),\n };\n}\n"],"names":[],"mappings":";;;;;;;;;;;AA+BO,SAAS,kCAAqC,GAAA;AACnD,EAAA,MAAM,MAAM,MAAO,EAAA;AACnB,EAAM,MAAA,EAAE,MAAO,EAAA,GAAI,SAAU,EAAA;AAC7B,EAAM,MAAA,aAAA,GAAgB,YAAY,wBAAwB,CAAA;AAC1D,EAAA,MAAM,EAAE,CAAA,EAAM,GAAA,iBAAA,CAAkB,wBAAwB,CAAA;AACxD,EAAA,MAAM,IAAO,GAAA,GAAA,CAAI,aAAc,CAAA,YAAY,CAAK,IAAA,mBAAA;AAChD,EAAA,MAAM,EAAE,OAAA,EAAS,qBAAsB,EAAA,GAAI,aAAc,CAAA;AAAA,IACvD,UAAY,EAAA;AAAA,GACb,CAAA;AAED,EAAO,OAAA;AAAA,IACL,KAAA,EAAO,EAAE,0BAA0B,CAAA;AAAA,IACnC,IAAA,sBAAO,IAAK,EAAA,EAAA,CAAA;AAAA,IACZ,QAAA,EAAU,CAAC,aAAA,IAAiB,CAAC,qBAAA;AAAA,IAC7B,IAAA,EACE,iBACA,aAAc,CAAA;AAAA,MACZ,YAAA,EAAc,OAAO,QAAS,CAAA,IAAA;AAAA,MAC9B,SAAA,EAAW,MAAO,CAAA,QAAA,CAAS,SAAa,IAAA;AAAA,KACzC;AAAA,GACL;AACF;;;;"}
@@ -2,10 +2,20 @@ import { convertLegacyRouteRefs } from '@backstage/core-compat-api';
2
2
  import { createFrontendPlugin } from '@backstage/frontend-plugin-api';
3
3
  import { rootRouteRef, selectedTemplateRouteRef, scaffolderTaskRouteRef, actionsRouteRef, scaffolderListTaskRouteRef, editRouteRef, templatingExtensionsRouteRef, registerComponentRouteRef, viewTechDocRouteRef } from '../routes.esm.js';
4
4
  import { scaffolderApi, scaffolderPage, scaffolderNavItem, repoUrlPickerFormField } from './extensions.esm.js';
5
+ import { isTemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common';
5
6
  import { formFieldsApi } from '@backstage/plugin-scaffolder-react/alpha';
6
7
  import './api/ref.esm.js';
7
8
  import { formDecoratorsApi } from './api/FormDecoratorsApi.esm.js';
9
+ import { EntityIconLinkBlueprint } from '@backstage/plugin-catalog-react/alpha';
10
+ import { useScaffolderTemplateIconLinkProps } from './hooks/useScaffolderTemplateIconLinkProps.esm.js';
8
11
 
12
+ const scaffolderEntityIconLink = EntityIconLinkBlueprint.make({
13
+ name: "launch-template",
14
+ params: {
15
+ filter: isTemplateEntityV1beta3,
16
+ useProps: useScaffolderTemplateIconLinkProps
17
+ }
18
+ });
9
19
  var plugin = createFrontendPlugin({
10
20
  pluginId: "scaffolder",
11
21
  info: { packageJson: () => import('../plugins/scaffolder/package.json.esm.js') },
@@ -26,6 +36,7 @@ var plugin = createFrontendPlugin({
26
36
  scaffolderApi,
27
37
  scaffolderPage,
28
38
  scaffolderNavItem,
39
+ scaffolderEntityIconLink,
29
40
  formDecoratorsApi,
30
41
  formFieldsApi,
31
42
  repoUrlPickerFormField
@@ -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 { convertLegacyRouteRefs } from '@backstage/core-compat-api';\nimport { createFrontendPlugin } from '@backstage/frontend-plugin-api';\nimport {\n rootRouteRef,\n actionsRouteRef,\n editRouteRef,\n registerComponentRouteRef,\n scaffolderListTaskRouteRef,\n scaffolderTaskRouteRef,\n selectedTemplateRouteRef,\n templatingExtensionsRouteRef,\n viewTechDocRouteRef,\n} from '../routes';\nimport {\n repoUrlPickerFormField,\n scaffolderNavItem,\n scaffolderPage,\n scaffolderApi,\n} from './extensions';\nimport { formFieldsApi } from '@backstage/plugin-scaffolder-react/alpha';\nimport { formDecoratorsApi } from './api';\n\n/** @alpha */\nexport default createFrontendPlugin({\n pluginId: 'scaffolder',\n info: { packageJson: () => import('../../package.json') },\n routes: convertLegacyRouteRefs({\n root: rootRouteRef,\n selectedTemplate: selectedTemplateRouteRef,\n ongoingTask: scaffolderTaskRouteRef,\n actions: actionsRouteRef,\n listTasks: scaffolderListTaskRouteRef,\n edit: editRouteRef,\n templatingExtensions: templatingExtensionsRouteRef,\n }),\n externalRoutes: convertLegacyRouteRefs({\n registerComponent: registerComponentRouteRef,\n viewTechDoc: viewTechDocRouteRef,\n }),\n extensions: [\n scaffolderApi,\n scaffolderPage,\n scaffolderNavItem,\n formDecoratorsApi,\n formFieldsApi,\n repoUrlPickerFormField,\n ],\n});\n"],"names":[],"mappings":";;;;;;;;AAuCA,aAAe,oBAAqB,CAAA;AAAA,EAClC,QAAU,EAAA,YAAA;AAAA,EACV,MAAM,EAAE,WAAA,EAAa,MAAM,OAAO,2CAAoB,CAAE,EAAA;AAAA,EACxD,QAAQ,sBAAuB,CAAA;AAAA,IAC7B,IAAM,EAAA,YAAA;AAAA,IACN,gBAAkB,EAAA,wBAAA;AAAA,IAClB,WAAa,EAAA,sBAAA;AAAA,IACb,OAAS,EAAA,eAAA;AAAA,IACT,SAAW,EAAA,0BAAA;AAAA,IACX,IAAM,EAAA,YAAA;AAAA,IACN,oBAAsB,EAAA;AAAA,GACvB,CAAA;AAAA,EACD,gBAAgB,sBAAuB,CAAA;AAAA,IACrC,iBAAmB,EAAA,yBAAA;AAAA,IACnB,WAAa,EAAA;AAAA,GACd,CAAA;AAAA,EACD,UAAY,EAAA;AAAA,IACV,aAAA;AAAA,IACA,cAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,aAAA;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 { convertLegacyRouteRefs } from '@backstage/core-compat-api';\nimport { createFrontendPlugin } from '@backstage/frontend-plugin-api';\nimport {\n rootRouteRef,\n actionsRouteRef,\n editRouteRef,\n registerComponentRouteRef,\n scaffolderListTaskRouteRef,\n scaffolderTaskRouteRef,\n selectedTemplateRouteRef,\n templatingExtensionsRouteRef,\n viewTechDocRouteRef,\n} from '../routes';\nimport {\n repoUrlPickerFormField,\n scaffolderNavItem,\n scaffolderPage,\n scaffolderApi,\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: convertLegacyRouteRefs({\n root: rootRouteRef,\n selectedTemplate: selectedTemplateRouteRef,\n ongoingTask: scaffolderTaskRouteRef,\n actions: actionsRouteRef,\n listTasks: scaffolderListTaskRouteRef,\n edit: editRouteRef,\n templatingExtensions: templatingExtensionsRouteRef,\n }),\n externalRoutes: convertLegacyRouteRefs({\n registerComponent: registerComponentRouteRef,\n viewTechDoc: viewTechDocRouteRef,\n }),\n extensions: [\n scaffolderApi,\n scaffolderPage,\n scaffolderNavItem,\n scaffolderEntityIconLink,\n formDecoratorsApi,\n formFieldsApi,\n repoUrlPickerFormField,\n ],\n});\n"],"names":[],"mappings":";;;;;;;;;;;AA0CA,MAAM,wBAAA,GAA2B,wBAAwB,IAAK,CAAA;AAAA,EAC5D,IAAM,EAAA,iBAAA;AAAA,EACN,MAAQ,EAAA;AAAA,IACN,MAAQ,EAAA,uBAAA;AAAA,IACR,QAAU,EAAA;AAAA;AAEd,CAAC,CAAA;AAGD,aAAe,oBAAqB,CAAA;AAAA,EAClC,QAAU,EAAA,YAAA;AAAA,EACV,MAAM,EAAE,WAAA,EAAa,MAAM,OAAO,2CAAoB,CAAE,EAAA;AAAA,EACxD,QAAQ,sBAAuB,CAAA;AAAA,IAC7B,IAAM,EAAA,YAAA;AAAA,IACN,gBAAkB,EAAA,wBAAA;AAAA,IAClB,WAAa,EAAA,sBAAA;AAAA,IACb,OAAS,EAAA,eAAA;AAAA,IACT,SAAW,EAAA,0BAAA;AAAA,IACX,IAAM,EAAA,YAAA;AAAA,IACN,oBAAsB,EAAA;AAAA,GACvB,CAAA;AAAA,EACD,gBAAgB,sBAAuB,CAAA;AAAA,IACrC,iBAAmB,EAAA,yBAAA;AAAA,IACnB,WAAa,EAAA;AAAA,GACd,CAAA;AAAA,EACD,UAAY,EAAA;AAAA,IACV,aAAA;AAAA,IACA,cAAA;AAAA,IACA,iBAAA;AAAA,IACA,wBAAA;AAAA,IACA,iBAAA;AAAA,IACA,aAAA;AAAA,IACA;AAAA;AAEJ,CAAC,CAAA;;;;"}
package/dist/alpha.d.ts CHANGED
@@ -8,6 +8,9 @@ import * as _backstage_frontend_plugin_api from '@backstage/frontend-plugin-api'
8
8
  import * as _backstage_plugin_scaffolder_react_alpha from '@backstage/plugin-scaffolder-react/alpha';
9
9
  import { ScaffolderFormDecorator } from '@backstage/plugin-scaffolder-react/alpha';
10
10
  export { ScaffolderFormFieldsApi, formFieldsApiRef } from '@backstage/plugin-scaffolder-react/alpha';
11
+ import * as _backstage_core_components from '@backstage/core-components';
12
+ import * as _backstage_catalog_model from '@backstage/catalog-model';
13
+ import * as _backstage_plugin_catalog_react_alpha from '@backstage/plugin-catalog-react/alpha';
11
14
  import * as _backstage_core_plugin_api from '@backstage/core-plugin-api';
12
15
 
13
16
  /** @public */
@@ -116,6 +119,7 @@ declare const scaffolderTranslationRef: _backstage_core_plugin_api_alpha.Transla
116
119
  readonly "fields.repoUrlPicker.repository.title": "Repositories Available";
117
120
  readonly "fields.repoUrlPicker.repository.description": "The name of the repository";
118
121
  readonly "fields.repoUrlPicker.repository.inputTitle": "Repository";
122
+ readonly "aboutCard.launchTemplate": "Launch Template";
119
123
  readonly "actionsPage.content.emptyState.title": "No information to display";
120
124
  readonly "actionsPage.content.emptyState.description": "There are no actions installed or there was an issue communicating with backend.";
121
125
  readonly "actionsPage.content.searchFieldPlaceholder": "Search for an action";
@@ -178,6 +182,7 @@ declare const scaffolderTranslationRef: _backstage_core_plugin_api_alpha.Transla
178
182
  readonly "templatingExtensions.content.functions.schema.arguments": "Arguments";
179
183
  readonly "templatingExtensions.content.functions.examples": "Examples";
180
184
  readonly "templatingExtensions.content.functions.notAvailable": "There are no global template functions defined.";
185
+ readonly "templatingExtensions.content.functions.metadataAbsent": "Function metadata unavailable";
181
186
  readonly "templatingExtensions.title": "Templating Extensions";
182
187
  readonly "templatingExtensions.subtitle": "This is the collection of available templating extensions";
183
188
  readonly "templatingExtensions.pageTitle": "Templating Extensions";
@@ -368,6 +373,30 @@ declare const _default: _backstage_frontend_plugin_api.FrontendPlugin<{
368
373
  factory: _backstage_frontend_plugin_api.AnyApiFactory;
369
374
  };
370
375
  }>;
376
+ "entity-icon-link:scaffolder/launch-template": _backstage_frontend_plugin_api.ExtensionDefinition<{
377
+ kind: "entity-icon-link";
378
+ name: "launch-template";
379
+ config: {
380
+ label: string | undefined;
381
+ title: string | undefined;
382
+ filter: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
383
+ };
384
+ configInput: {
385
+ filter?: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
386
+ label?: string | undefined;
387
+ title?: string | undefined;
388
+ };
389
+ output: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<(entity: _backstage_catalog_model.Entity) => boolean, "catalog.entity-filter-function", {
390
+ optional: true;
391
+ }> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "catalog.entity-filter-expression", {
392
+ optional: true;
393
+ }> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<() => _backstage_core_components.IconLinkVerticalProps, "entity-icon-link-props", {}>;
394
+ inputs: {};
395
+ params: {
396
+ useProps: () => Omit<_backstage_core_components.IconLinkVerticalProps, "color">;
397
+ filter?: _backstage_plugin_catalog_react_alpha.EntityPredicate | ((entity: _backstage_catalog_model.Entity) => boolean);
398
+ };
399
+ }>;
371
400
  "nav-item:scaffolder": _backstage_frontend_plugin_api.ExtensionDefinition<{
372
401
  kind: "nav-item";
373
402
  name: undefined;
@@ -7,7 +7,7 @@ import Box from '@material-ui/core/Box';
7
7
  import Typography from '@material-ui/core/Typography';
8
8
  import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
9
9
  import classNames from 'classnames';
10
- import React, { useState } from 'react';
10
+ import { cloneElement, useState, Fragment as Fragment$1 } from 'react';
11
11
  import { RenderSchema } from '../RenderSchema/RenderSchema.esm.js';
12
12
  import { ScaffolderUsageExamplesTable } from '../ScaffolderUsageExamplesTable/ScaffolderUsageExamplesTable.esm.js';
13
13
  import { inspectFunctionArgSchema } from './functionArgs.esm.js';
@@ -29,7 +29,7 @@ const FilterDetailContent = ({
29
29
  expanded,
30
30
  headings: [/* @__PURE__ */ jsx(Typography, { variant: "h6", component: "h4" })]
31
31
  };
32
- return /* @__PURE__ */ jsxs(React.Fragment, { children: [
32
+ return /* @__PURE__ */ jsxs(Fragment$1, { children: [
33
33
  filter.description && /* @__PURE__ */ jsx(MarkdownContent, { content: filter.description }),
34
34
  /* @__PURE__ */ jsxs(Box, { pb: 2, children: [
35
35
  /* @__PURE__ */ jsx(Typography, { variant: "h5", component: "h3", children: t("templatingExtensions.content.filters.schema.input") }),
@@ -49,7 +49,7 @@ const FilterDetailContent = ({
49
49
  /* @__PURE__ */ jsx(Typography, { variant: "h5", component: "h3", children: t("templatingExtensions.content.filters.schema.arguments") }),
50
50
  schema.arguments.map((arg, i) => {
51
51
  const [argSchema, required] = inspectFunctionArgSchema(arg);
52
- return /* @__PURE__ */ jsxs(React.Fragment, { children: [
52
+ return /* @__PURE__ */ jsxs(Fragment$1, { children: [
53
53
  /* @__PURE__ */ jsx(
54
54
  "div",
55
55
  {
@@ -120,7 +120,7 @@ const TemplateFilters = ({
120
120
  children: name
121
121
  }
122
122
  ),
123
- React.cloneElement(baseLink, {
123
+ cloneElement(baseLink, {
124
124
  to: `${baseLink.props.to}#${fragment}`
125
125
  }),
126
126
  /* @__PURE__ */ jsx(FilterDetailContent, { ...{ t, classes, name, filter } })
@@ -1 +1 @@
1
- {"version":3,"file":"TemplateFilters.esm.js","sources":["../../../src/components/TemplatingExtensionsPage/TemplateFilters.tsx"],"sourcesContent":["/*\n * Copyright 2025 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 { Link, MarkdownContent } from '@backstage/core-components';\nimport {\n ListTemplatingExtensionsResponse,\n TemplateFilter,\n} from '@backstage/plugin-scaffolder-react';\nimport Accordion from '@material-ui/core/Accordion';\nimport AccordionDetails from '@material-ui/core/AccordionDetails';\nimport AccordionSummary from '@material-ui/core/AccordionSummary';\nimport Box from '@material-ui/core/Box';\nimport { ClassNameMap } from '@material-ui/core/styles/withStyles';\nimport Typography from '@material-ui/core/Typography';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport classNames from 'classnames';\nimport React, { ReactElement, useState } from 'react';\nimport { scaffolderTranslationRef } from '../../translation';\nimport { Expanded, RenderSchema, SchemaRenderContext } from '../RenderSchema';\nimport { ScaffolderUsageExamplesTable } from '../ScaffolderUsageExamplesTable';\nimport { inspectFunctionArgSchema } from './functionArgs';\nimport { Extension, renderFragment } from './navigation';\nimport { StyleClasses, TranslationMessages } from './types';\n\nconst FilterDetailContent = ({\n t,\n classes,\n name,\n filter,\n}: {\n t: TranslationMessages<typeof scaffolderTranslationRef>;\n classes: ClassNameMap;\n name: string;\n filter: TemplateFilter;\n}) => {\n const expanded = useState<Expanded>({});\n if (!Object.keys(filter).length) {\n return (\n <Typography style={{ fontStyle: 'italic' }}>\n {t('templatingExtensions.content.filters.metadataAbsent')}\n </Typography>\n );\n }\n const schema = filter.schema;\n const partialSchemaRenderContext: Omit<SchemaRenderContext, 'parentId'> = {\n classes,\n expanded,\n headings: [<Typography variant=\"h6\" component=\"h4\" />],\n };\n return (\n <React.Fragment key={`${name}.detail`}>\n {filter.description && <MarkdownContent content={filter.description} />}\n <Box pb={2}>\n <Typography variant=\"h5\" component=\"h3\">\n {t('templatingExtensions.content.filters.schema.input')}\n </Typography>\n <RenderSchema\n strategy=\"root\"\n context={{\n parentId: `${name}.input`,\n ...partialSchemaRenderContext,\n }}\n schema={schema?.input ?? {}}\n />\n </Box>\n {schema?.arguments?.length && (\n <Box key={`${name}.args`} pb={2}>\n <Typography variant=\"h5\" component=\"h3\">\n {t('templatingExtensions.content.filters.schema.arguments')}\n </Typography>\n {schema.arguments.map((arg, i) => {\n const [argSchema, required] = inspectFunctionArgSchema(arg);\n\n return (\n <React.Fragment key={i}>\n <div\n className={classNames({ [classes.argRequired]: required })}\n >\n <Typography variant=\"h6\" component=\"h4\">\n {`[${i}]`}\n </Typography>\n </div>\n <RenderSchema\n strategy=\"root\"\n context={{\n parentId: `${name}.arg${i}`,\n ...partialSchemaRenderContext,\n headings: [<Typography variant=\"h6\" component=\"h5\" />],\n }}\n schema={argSchema}\n />\n </React.Fragment>\n );\n })}\n </Box>\n )}\n <Box pb={2}>\n <Typography variant=\"h5\" component=\"h3\">\n {t('templatingExtensions.content.filters.schema.output')}\n </Typography>\n <RenderSchema\n strategy=\"root\"\n context={{\n parentId: `${name}.output`,\n ...partialSchemaRenderContext,\n }}\n schema={schema?.output ?? {}}\n />\n </Box>\n {filter.examples && (\n <Accordion>\n <AccordionSummary expandIcon={<ExpandMoreIcon />}>\n <Typography variant=\"h5\" component=\"h3\">\n {t('templatingExtensions.content.filters.examples')}\n </Typography>\n </AccordionSummary>\n <AccordionDetails>\n <Box pb={2}>\n <ScaffolderUsageExamplesTable examples={filter.examples} />\n </Box>\n </AccordionDetails>\n </Accordion>\n )}\n </React.Fragment>\n );\n};\n\nexport const TemplateFilters = ({\n t,\n classes,\n filters,\n baseLink,\n selectedItem,\n}: {\n t: TranslationMessages<typeof scaffolderTranslationRef>;\n classes: StyleClasses;\n filters: ListTemplatingExtensionsResponse['filters'];\n baseLink: ReactElement<Parameters<typeof Link>[0]>;\n selectedItem: Extension | null;\n}) => {\n if (selectedItem && selectedItem.kind !== 'filter') {\n return <></>;\n }\n if (!Object.keys(filters).length) {\n return (\n <div data-testid=\"no-filters\">\n {t('templatingExtensions.content.filters.notAvailable')}\n </div>\n );\n }\n return (\n <div data-testid=\"filters\">\n {Object.entries(\n selectedItem\n ? { [selectedItem.name]: filters[selectedItem.name] }\n : filters,\n ).map(([name, filter]) => {\n const fragment = renderFragment({ kind: 'filter', name });\n return (\n <Box pb={4} key={name} data-testid={name}>\n <Typography\n id={fragment}\n variant=\"h4\"\n component=\"h2\"\n className={classes.code}\n >\n {name}\n </Typography>\n {React.cloneElement(baseLink, {\n to: `${baseLink.props.to}#${fragment}`,\n })}\n <FilterDetailContent {...{ t, classes, name, filter }} />\n </Box>\n );\n })}\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TemplateFilters.esm.js","sources":["../../../src/components/TemplatingExtensionsPage/TemplateFilters.tsx"],"sourcesContent":["/*\n * Copyright 2025 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 { Link, MarkdownContent } from '@backstage/core-components';\nimport {\n ListTemplatingExtensionsResponse,\n TemplateFilter,\n} from '@backstage/plugin-scaffolder-react';\nimport Accordion from '@material-ui/core/Accordion';\nimport AccordionDetails from '@material-ui/core/AccordionDetails';\nimport AccordionSummary from '@material-ui/core/AccordionSummary';\nimport Box from '@material-ui/core/Box';\nimport { ClassNameMap } from '@material-ui/core/styles/withStyles';\nimport Typography from '@material-ui/core/Typography';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport classNames from 'classnames';\nimport { cloneElement, Fragment, ReactElement, useState } from 'react';\nimport { scaffolderTranslationRef } from '../../translation';\nimport { Expanded, RenderSchema, SchemaRenderContext } from '../RenderSchema';\nimport { ScaffolderUsageExamplesTable } from '../ScaffolderUsageExamplesTable';\nimport { inspectFunctionArgSchema } from './functionArgs';\nimport { Extension, renderFragment } from './navigation';\nimport { StyleClasses, TranslationMessages } from './types';\n\nconst FilterDetailContent = ({\n t,\n classes,\n name,\n filter,\n}: {\n t: TranslationMessages<typeof scaffolderTranslationRef>;\n classes: ClassNameMap;\n name: string;\n filter: TemplateFilter;\n}) => {\n const expanded = useState<Expanded>({});\n if (!Object.keys(filter).length) {\n return (\n <Typography style={{ fontStyle: 'italic' }}>\n {t('templatingExtensions.content.filters.metadataAbsent')}\n </Typography>\n );\n }\n const schema = filter.schema;\n const partialSchemaRenderContext: Omit<SchemaRenderContext, 'parentId'> = {\n classes,\n expanded,\n headings: [<Typography variant=\"h6\" component=\"h4\" />],\n };\n return (\n <Fragment key={`${name}.detail`}>\n {filter.description && <MarkdownContent content={filter.description} />}\n <Box pb={2}>\n <Typography variant=\"h5\" component=\"h3\">\n {t('templatingExtensions.content.filters.schema.input')}\n </Typography>\n <RenderSchema\n strategy=\"root\"\n context={{\n parentId: `${name}.input`,\n ...partialSchemaRenderContext,\n }}\n schema={schema?.input ?? {}}\n />\n </Box>\n {schema?.arguments?.length && (\n <Box key={`${name}.args`} pb={2}>\n <Typography variant=\"h5\" component=\"h3\">\n {t('templatingExtensions.content.filters.schema.arguments')}\n </Typography>\n {schema.arguments.map((arg, i) => {\n const [argSchema, required] = inspectFunctionArgSchema(arg);\n\n return (\n <Fragment key={i}>\n <div\n className={classNames({ [classes.argRequired]: required })}\n >\n <Typography variant=\"h6\" component=\"h4\">\n {`[${i}]`}\n </Typography>\n </div>\n <RenderSchema\n strategy=\"root\"\n context={{\n parentId: `${name}.arg${i}`,\n ...partialSchemaRenderContext,\n headings: [<Typography variant=\"h6\" component=\"h5\" />],\n }}\n schema={argSchema}\n />\n </Fragment>\n );\n })}\n </Box>\n )}\n <Box pb={2}>\n <Typography variant=\"h5\" component=\"h3\">\n {t('templatingExtensions.content.filters.schema.output')}\n </Typography>\n <RenderSchema\n strategy=\"root\"\n context={{\n parentId: `${name}.output`,\n ...partialSchemaRenderContext,\n }}\n schema={schema?.output ?? {}}\n />\n </Box>\n {filter.examples && (\n <Accordion>\n <AccordionSummary expandIcon={<ExpandMoreIcon />}>\n <Typography variant=\"h5\" component=\"h3\">\n {t('templatingExtensions.content.filters.examples')}\n </Typography>\n </AccordionSummary>\n <AccordionDetails>\n <Box pb={2}>\n <ScaffolderUsageExamplesTable examples={filter.examples} />\n </Box>\n </AccordionDetails>\n </Accordion>\n )}\n </Fragment>\n );\n};\n\nexport const TemplateFilters = ({\n t,\n classes,\n filters,\n baseLink,\n selectedItem,\n}: {\n t: TranslationMessages<typeof scaffolderTranslationRef>;\n classes: StyleClasses;\n filters: ListTemplatingExtensionsResponse['filters'];\n baseLink: ReactElement<Parameters<typeof Link>[0]>;\n selectedItem: Extension | null;\n}) => {\n if (selectedItem && selectedItem.kind !== 'filter') {\n return <></>;\n }\n if (!Object.keys(filters).length) {\n return (\n <div data-testid=\"no-filters\">\n {t('templatingExtensions.content.filters.notAvailable')}\n </div>\n );\n }\n return (\n <div data-testid=\"filters\">\n {Object.entries(\n selectedItem\n ? { [selectedItem.name]: filters[selectedItem.name] }\n : filters,\n ).map(([name, filter]) => {\n const fragment = renderFragment({ kind: 'filter', name });\n return (\n <Box pb={4} key={name} data-testid={name}>\n <Typography\n id={fragment}\n variant=\"h4\"\n component=\"h2\"\n className={classes.code}\n >\n {name}\n </Typography>\n {cloneElement(baseLink, {\n to: `${baseLink.props.to}#${fragment}`,\n })}\n <FilterDetailContent {...{ t, classes, name, filter }} />\n </Box>\n );\n })}\n </div>\n );\n};\n"],"names":["Fragment"],"mappings":"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"}
@@ -7,7 +7,7 @@ import Box from '@material-ui/core/Box';
7
7
  import Typography from '@material-ui/core/Typography';
8
8
  import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
9
9
  import classNames from 'classnames';
10
- import React, { useState } from 'react';
10
+ import { cloneElement, useState, Fragment as Fragment$1 } from 'react';
11
11
  import { RenderSchema } from '../RenderSchema/RenderSchema.esm.js';
12
12
  import { ScaffolderUsageExamplesTable } from '../ScaffolderUsageExamplesTable/ScaffolderUsageExamplesTable.esm.js';
13
13
  import { inspectFunctionArgSchema } from './functionArgs.esm.js';
@@ -21,7 +21,14 @@ const FunctionDetailContent = ({
21
21
  }) => {
22
22
  const expanded = useState({});
23
23
  if (!Object.keys(fn).length) {
24
- return /* @__PURE__ */ jsx(Typography, { style: { fontStyle: "italic" }, children: t("templatingExtensions.content.functions.notAvailable") });
24
+ return /* @__PURE__ */ jsx(
25
+ Typography,
26
+ {
27
+ style: { fontStyle: "italic" },
28
+ "data-testid": `${name}.metadataAbsent`,
29
+ children: t("templatingExtensions.content.functions.metadataAbsent")
30
+ }
31
+ );
25
32
  }
26
33
  const schema = fn.schema;
27
34
  const partialSchemaRenderContext = {
@@ -29,13 +36,13 @@ const FunctionDetailContent = ({
29
36
  expanded,
30
37
  headings: [/* @__PURE__ */ jsx(Typography, { variant: "h6", component: "h4" })]
31
38
  };
32
- return /* @__PURE__ */ jsxs(React.Fragment, { children: [
39
+ return /* @__PURE__ */ jsxs(Fragment$1, { children: [
33
40
  fn.description && /* @__PURE__ */ jsx(MarkdownContent, { content: fn.description }),
34
41
  schema?.arguments?.length && /* @__PURE__ */ jsxs(Box, { pb: 2, children: [
35
42
  /* @__PURE__ */ jsx(Typography, { variant: "h5", component: "h3", children: t("templatingExtensions.content.functions.schema.arguments") }),
36
43
  schema.arguments.map((arg, i) => {
37
44
  const [argSchema, required] = inspectFunctionArgSchema(arg);
38
- return /* @__PURE__ */ jsxs(React.Fragment, { children: [
45
+ return /* @__PURE__ */ jsxs(Fragment$1, { children: [
39
46
  /* @__PURE__ */ jsx(
40
47
  "div",
41
48
  {
@@ -113,7 +120,7 @@ const TemplateGlobalFunctions = ({
113
120
  children: name
114
121
  }
115
122
  ),
116
- React.cloneElement(baseLink, {
123
+ cloneElement(baseLink, {
117
124
  to: `${baseLink.props.to}#${fragment}`
118
125
  }),
119
126
  /* @__PURE__ */ jsx(FunctionDetailContent, { ...{ classes, name, fn, t } })
@@ -148,7 +155,7 @@ const TemplateGlobalValues = ({
148
155
  children: name
149
156
  }
150
157
  ),
151
- React.cloneElement(baseLink, {
158
+ cloneElement(baseLink, {
152
159
  to: `${baseLink.props.to}#${fragment}`
153
160
  }),
154
161
  gv.description && /* @__PURE__ */ jsx(MarkdownContent, { content: gv.description }),
@@ -1 +1 @@
1
- {"version":3,"file":"TemplateGlobals.esm.js","sources":["../../../src/components/TemplatingExtensionsPage/TemplateGlobals.tsx"],"sourcesContent":["/*\n * Copyright 2025 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 { CodeSnippet, Link, MarkdownContent } from '@backstage/core-components';\nimport {\n ListTemplatingExtensionsResponse,\n TemplateGlobalFunction,\n} from '@backstage/plugin-scaffolder-react';\nimport Accordion from '@material-ui/core/Accordion';\nimport AccordionDetails from '@material-ui/core/AccordionDetails';\nimport AccordionSummary from '@material-ui/core/AccordionSummary';\nimport Box from '@material-ui/core/Box';\nimport { ClassNameMap } from '@material-ui/core/styles/withStyles';\nimport Typography from '@material-ui/core/Typography';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport classNames from 'classnames';\nimport React, { ReactElement, useState } from 'react';\nimport { scaffolderTranslationRef } from '../../translation';\nimport { Expanded, RenderSchema, SchemaRenderContext } from '../RenderSchema';\nimport { ScaffolderUsageExamplesTable } from '../ScaffolderUsageExamplesTable';\nimport { inspectFunctionArgSchema } from './functionArgs';\nimport { Extension, renderFragment } from './navigation';\nimport { TranslationMessages } from './types';\n\nconst FunctionDetailContent = ({\n classes,\n name,\n fn,\n t,\n}: {\n classes: ClassNameMap;\n name: string;\n fn: TemplateGlobalFunction;\n t: TranslationMessages<typeof scaffolderTranslationRef>;\n}) => {\n const expanded = useState<Expanded>({});\n if (!Object.keys(fn).length) {\n return (\n <Typography style={{ fontStyle: 'italic' }}>\n {t('templatingExtensions.content.functions.notAvailable')}\n </Typography>\n );\n }\n const schema = fn.schema;\n const partialSchemaRenderContext: Omit<SchemaRenderContext, 'parentId'> = {\n classes,\n expanded,\n headings: [<Typography variant=\"h6\" component=\"h4\" />],\n };\n return (\n <React.Fragment key={`${name}.detail`}>\n {fn.description && <MarkdownContent content={fn.description} />}\n {schema?.arguments?.length && (\n <Box key={`${name}.args`} pb={2}>\n <Typography variant=\"h5\" component=\"h3\">\n {t('templatingExtensions.content.functions.schema.arguments')}\n </Typography>\n {schema.arguments.map((arg, i) => {\n const [argSchema, required] = inspectFunctionArgSchema(arg);\n\n return (\n <React.Fragment key={i}>\n <div\n className={classNames({ [classes.argRequired]: required })}\n >\n <Typography\n variant=\"h6\"\n component=\"h4\"\n >{`[${i}]`}</Typography>\n </div>\n <RenderSchema\n strategy=\"root\"\n context={{\n parentId: `${name}.arg${i}`,\n ...partialSchemaRenderContext,\n headings: [<Typography variant=\"h6\" component=\"h5\" />],\n }}\n schema={argSchema}\n />\n </React.Fragment>\n );\n })}\n </Box>\n )}\n <Box pb={2}>\n <Typography variant=\"h5\" component=\"h3\">\n {t('templatingExtensions.content.functions.schema.output')}\n </Typography>\n <RenderSchema\n strategy=\"root\"\n context={{\n parentId: `${name}.output`,\n ...partialSchemaRenderContext,\n }}\n schema={schema?.output ?? {}}\n />\n </Box>\n {fn.examples && (\n <Accordion>\n <AccordionSummary expandIcon={<ExpandMoreIcon />}>\n <Typography variant=\"h5\" component=\"h3\">\n {t('templatingExtensions.content.functions.examples')}\n </Typography>\n </AccordionSummary>\n <AccordionDetails>\n <Box pb={2}>\n <ScaffolderUsageExamplesTable examples={fn.examples} />\n </Box>\n </AccordionDetails>\n </Accordion>\n )}\n </React.Fragment>\n );\n};\n\nexport const TemplateGlobalFunctions = ({\n classes,\n functions,\n t,\n baseLink,\n selectedItem,\n}: {\n classes: ClassNameMap;\n functions: ListTemplatingExtensionsResponse['globals']['functions'];\n t: TranslationMessages<typeof scaffolderTranslationRef>;\n baseLink: ReactElement<Parameters<typeof Link>[0]>;\n selectedItem: Extension | null;\n}) => {\n if (selectedItem && selectedItem.kind !== 'function') {\n return <></>;\n }\n if (!Object.keys(functions).length) {\n return (\n <div data-testid=\"no-functions\">\n {t('templatingExtensions.content.functions.notAvailable')}\n </div>\n );\n }\n return (\n <div data-testid=\"functions\">\n {Object.entries(\n selectedItem\n ? { [selectedItem.name]: functions[selectedItem.name] }\n : functions,\n ).map(([name, fn]) => {\n const fragment = renderFragment({ kind: 'function', name });\n return (\n <Box pb={4} key={name} data-testid={name}>\n <Typography\n id={fragment}\n variant=\"h4\"\n component=\"h2\"\n className={classes.code}\n >\n {name}\n </Typography>\n {React.cloneElement(baseLink, {\n to: `${baseLink.props.to}#${fragment}`,\n })}\n <FunctionDetailContent {...{ classes, name, fn, t }} />\n </Box>\n );\n })}\n </div>\n );\n};\n\nexport const TemplateGlobalValues = ({\n classes,\n t,\n values,\n baseLink,\n selectedItem,\n}: {\n classes: ClassNameMap;\n t: TranslationMessages<typeof scaffolderTranslationRef>;\n values: ListTemplatingExtensionsResponse['globals']['values'];\n baseLink: ReactElement<Parameters<typeof Link>[0]>;\n selectedItem: Extension | null;\n}) => {\n if (selectedItem && selectedItem.kind !== 'value') {\n return <></>;\n }\n if (!Object.keys(values).length) {\n return (\n <div data-testid=\"no-values\">\n {t('templatingExtensions.content.values.notAvailable')}\n </div>\n );\n }\n return (\n <div data-testid=\"values\">\n {Object.entries(\n selectedItem\n ? { [selectedItem.name]: values[selectedItem.name] }\n : values,\n ).map(([name, gv]) => {\n const fragment = renderFragment({ kind: 'value', name });\n return (\n <Box pb={4} key={name} data-testid={name}>\n <Typography\n id={fragment}\n variant=\"h4\"\n component=\"h2\"\n className={classes.code}\n >\n {name}\n </Typography>\n {React.cloneElement(baseLink, {\n to: `${baseLink.props.to}#${fragment}`,\n })}\n {gv.description && <MarkdownContent content={gv.description} />}\n <Box padding={1} data-testid={`${name}.value`}>\n <CodeSnippet\n text={JSON.stringify(gv.value, null, 2)}\n showCopyCodeButton\n language=\"json\"\n />\n </Box>\n </Box>\n );\n })}\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TemplateGlobals.esm.js","sources":["../../../src/components/TemplatingExtensionsPage/TemplateGlobals.tsx"],"sourcesContent":["/*\n * Copyright 2025 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 { CodeSnippet, Link, MarkdownContent } from '@backstage/core-components';\nimport {\n ListTemplatingExtensionsResponse,\n TemplateGlobalFunction,\n} from '@backstage/plugin-scaffolder-react';\nimport Accordion from '@material-ui/core/Accordion';\nimport AccordionDetails from '@material-ui/core/AccordionDetails';\nimport AccordionSummary from '@material-ui/core/AccordionSummary';\nimport Box from '@material-ui/core/Box';\nimport { ClassNameMap } from '@material-ui/core/styles/withStyles';\nimport Typography from '@material-ui/core/Typography';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport classNames from 'classnames';\nimport { cloneElement, Fragment, ReactElement, useState } from 'react';\nimport { scaffolderTranslationRef } from '../../translation';\nimport { Expanded, RenderSchema, SchemaRenderContext } from '../RenderSchema';\nimport { ScaffolderUsageExamplesTable } from '../ScaffolderUsageExamplesTable';\nimport { inspectFunctionArgSchema } from './functionArgs';\nimport { Extension, renderFragment } from './navigation';\nimport { TranslationMessages } from './types';\n\nconst FunctionDetailContent = ({\n classes,\n name,\n fn,\n t,\n}: {\n classes: ClassNameMap;\n name: string;\n fn: TemplateGlobalFunction;\n t: TranslationMessages<typeof scaffolderTranslationRef>;\n}) => {\n const expanded = useState<Expanded>({});\n if (!Object.keys(fn).length) {\n return (\n <Typography\n style={{ fontStyle: 'italic' }}\n data-testid={`${name}.metadataAbsent`}\n >\n {t('templatingExtensions.content.functions.metadataAbsent')}\n </Typography>\n );\n }\n const schema = fn.schema;\n const partialSchemaRenderContext: Omit<SchemaRenderContext, 'parentId'> = {\n classes,\n expanded,\n headings: [<Typography variant=\"h6\" component=\"h4\" />],\n };\n return (\n <Fragment key={`${name}.detail`}>\n {fn.description && <MarkdownContent content={fn.description} />}\n {schema?.arguments?.length && (\n <Box key={`${name}.args`} pb={2}>\n <Typography variant=\"h5\" component=\"h3\">\n {t('templatingExtensions.content.functions.schema.arguments')}\n </Typography>\n {schema.arguments.map((arg, i) => {\n const [argSchema, required] = inspectFunctionArgSchema(arg);\n\n return (\n <Fragment key={i}>\n <div\n className={classNames({ [classes.argRequired]: required })}\n >\n <Typography\n variant=\"h6\"\n component=\"h4\"\n >{`[${i}]`}</Typography>\n </div>\n <RenderSchema\n strategy=\"root\"\n context={{\n parentId: `${name}.arg${i}`,\n ...partialSchemaRenderContext,\n headings: [<Typography variant=\"h6\" component=\"h5\" />],\n }}\n schema={argSchema}\n />\n </Fragment>\n );\n })}\n </Box>\n )}\n <Box pb={2}>\n <Typography variant=\"h5\" component=\"h3\">\n {t('templatingExtensions.content.functions.schema.output')}\n </Typography>\n <RenderSchema\n strategy=\"root\"\n context={{\n parentId: `${name}.output`,\n ...partialSchemaRenderContext,\n }}\n schema={schema?.output ?? {}}\n />\n </Box>\n {fn.examples && (\n <Accordion>\n <AccordionSummary expandIcon={<ExpandMoreIcon />}>\n <Typography variant=\"h5\" component=\"h3\">\n {t('templatingExtensions.content.functions.examples')}\n </Typography>\n </AccordionSummary>\n <AccordionDetails>\n <Box pb={2}>\n <ScaffolderUsageExamplesTable examples={fn.examples} />\n </Box>\n </AccordionDetails>\n </Accordion>\n )}\n </Fragment>\n );\n};\n\nexport const TemplateGlobalFunctions = ({\n classes,\n functions,\n t,\n baseLink,\n selectedItem,\n}: {\n classes: ClassNameMap;\n functions: ListTemplatingExtensionsResponse['globals']['functions'];\n t: TranslationMessages<typeof scaffolderTranslationRef>;\n baseLink: ReactElement<Parameters<typeof Link>[0]>;\n selectedItem: Extension | null;\n}) => {\n if (selectedItem && selectedItem.kind !== 'function') {\n return <></>;\n }\n if (!Object.keys(functions).length) {\n return (\n <div data-testid=\"no-functions\">\n {t('templatingExtensions.content.functions.notAvailable')}\n </div>\n );\n }\n return (\n <div data-testid=\"functions\">\n {Object.entries(\n selectedItem\n ? { [selectedItem.name]: functions[selectedItem.name] }\n : functions,\n ).map(([name, fn]) => {\n const fragment = renderFragment({ kind: 'function', name });\n return (\n <Box pb={4} key={name} data-testid={name}>\n <Typography\n id={fragment}\n variant=\"h4\"\n component=\"h2\"\n className={classes.code}\n >\n {name}\n </Typography>\n {cloneElement(baseLink, {\n to: `${baseLink.props.to}#${fragment}`,\n })}\n <FunctionDetailContent {...{ classes, name, fn, t }} />\n </Box>\n );\n })}\n </div>\n );\n};\n\nexport const TemplateGlobalValues = ({\n classes,\n t,\n values,\n baseLink,\n selectedItem,\n}: {\n classes: ClassNameMap;\n t: TranslationMessages<typeof scaffolderTranslationRef>;\n values: ListTemplatingExtensionsResponse['globals']['values'];\n baseLink: ReactElement<Parameters<typeof Link>[0]>;\n selectedItem: Extension | null;\n}) => {\n if (selectedItem && selectedItem.kind !== 'value') {\n return <></>;\n }\n if (!Object.keys(values).length) {\n return (\n <div data-testid=\"no-values\">\n {t('templatingExtensions.content.values.notAvailable')}\n </div>\n );\n }\n return (\n <div data-testid=\"values\">\n {Object.entries(\n selectedItem\n ? { [selectedItem.name]: values[selectedItem.name] }\n : values,\n ).map(([name, gv]) => {\n const fragment = renderFragment({ kind: 'value', name });\n return (\n <Box pb={4} key={name} data-testid={name}>\n <Typography\n id={fragment}\n variant=\"h4\"\n component=\"h2\"\n className={classes.code}\n >\n {name}\n </Typography>\n {cloneElement(baseLink, {\n to: `${baseLink.props.to}#${fragment}`,\n })}\n {gv.description && <MarkdownContent content={gv.description} />}\n <Box padding={1} data-testid={`${name}.value`}>\n <CodeSnippet\n text={JSON.stringify(gv.value, null, 2)}\n showCopyCodeButton\n language=\"json\"\n />\n </Box>\n </Box>\n );\n })}\n </div>\n );\n};\n"],"names":["Fragment"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  var name = "@backstage/plugin-scaffolder";
2
- var version = "1.31.1-next.1";
2
+ var version = "1.32.0-next.2";
3
3
  var description = "The Backstage plugin that helps you create new things";
4
4
  var backstage = {
5
5
  role: "frontend-plugin",
@@ -3,6 +3,9 @@ import { createTranslationRef } from '@backstage/core-plugin-api/alpha';
3
3
  const scaffolderTranslationRef = createTranslationRef({
4
4
  id: "scaffolder",
5
5
  messages: {
6
+ aboutCard: {
7
+ launchTemplate: "Launch Template"
8
+ },
6
9
  actionsPage: {
7
10
  title: "Installed actions",
8
11
  pageTitle: "Create a New Component",
@@ -200,6 +203,7 @@ const scaffolderTranslationRef = createTranslationRef({
200
203
  functions: {
201
204
  title: "Functions",
202
205
  notAvailable: "There are no global template functions defined.",
206
+ metadataAbsent: "Function metadata unavailable",
203
207
  schema: {
204
208
  arguments: "Arguments",
205
209
  output: "Output"
@@ -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 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 },\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 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 },\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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backstage/plugin-scaffolder",
3
- "version": "1.31.1-next.1",
3
+ "version": "1.32.0-next.2",
4
4
  "description": "The Backstage plugin that helps you create new things",
5
5
  "backstage": {
6
6
  "role": "frontend-plugin",
@@ -72,18 +72,18 @@
72
72
  "dependencies": {
73
73
  "@backstage/catalog-client": "1.10.1-next.0",
74
74
  "@backstage/catalog-model": "1.7.4",
75
- "@backstage/core-compat-api": "0.4.3-next.1",
76
- "@backstage/core-components": "0.17.2",
75
+ "@backstage/core-compat-api": "0.4.3-next.2",
76
+ "@backstage/core-components": "0.17.3-next.0",
77
77
  "@backstage/core-plugin-api": "1.10.7",
78
78
  "@backstage/errors": "1.2.7",
79
- "@backstage/frontend-plugin-api": "0.10.3-next.0",
79
+ "@backstage/frontend-plugin-api": "0.10.3-next.1",
80
80
  "@backstage/integration": "1.17.0",
81
81
  "@backstage/integration-react": "1.2.7",
82
82
  "@backstage/plugin-catalog-common": "1.1.4",
83
- "@backstage/plugin-catalog-react": "1.18.1-next.1",
83
+ "@backstage/plugin-catalog-react": "1.19.0-next.2",
84
84
  "@backstage/plugin-permission-react": "0.4.34",
85
85
  "@backstage/plugin-scaffolder-common": "1.5.11",
86
- "@backstage/plugin-scaffolder-react": "1.16.1-next.1",
86
+ "@backstage/plugin-scaffolder-react": "1.16.1-next.2",
87
87
  "@backstage/types": "1.2.1",
88
88
  "@codemirror/language": "^6.0.0",
89
89
  "@codemirror/legacy-modes": "^6.1.0",
@@ -117,10 +117,10 @@
117
117
  "zod-to-json-schema": "^3.20.4"
118
118
  },
119
119
  "devDependencies": {
120
- "@backstage/cli": "0.32.2-next.0",
120
+ "@backstage/cli": "0.33.0-next.1",
121
121
  "@backstage/core-app-api": "1.17.0",
122
- "@backstage/dev-utils": "1.1.11-next.1",
123
- "@backstage/plugin-catalog": "1.31.0-next.1",
122
+ "@backstage/dev-utils": "1.1.11-next.2",
123
+ "@backstage/plugin-catalog": "1.31.0-next.2",
124
124
  "@backstage/plugin-permission-common": "0.9.0",
125
125
  "@backstage/test-utils": "1.7.8",
126
126
  "@testing-library/dom": "^10.0.0",