@backstage/plugin-scaffolder 1.2.0 → 1.3.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.
@@ -1 +1 @@
1
- {"version":3,"file":"index-d5c1fdb0.esm.js","sources":["../../src/next/TemplateListPage/CategoryPicker.tsx","../../src/next/TemplateListPage/RegisterExistingButton.tsx","../../src/next/TemplateListPage/TemplateCard/CardHeader.tsx","../../src/next/TemplateListPage/TemplateCard/TemplateCard.tsx","../../src/next/TemplateListPage/TemplateGroup.tsx","../../src/next/TemplateListPage/TemplateGroups.tsx","../../src/next/TemplateListPage/TemplateListPage.tsx","../../src/next/TemplateWizardPage/SecretsContext/SecretsContext.tsx","../../src/next/TemplateWizardPage/TemplateWizardPage.tsx","../../src/next/Router/Router.tsx"],"sourcesContent":["/*\n * Copyright 2021 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 React from 'react';\nimport capitalize from 'lodash/capitalize';\nimport { Progress } from '@backstage/core-components';\nimport {\n Box,\n Checkbox,\n FormControlLabel,\n TextField,\n Typography,\n} from '@material-ui/core';\nimport CheckBoxIcon from '@material-ui/icons/CheckBox';\nimport CheckBoxOutlineBlankIcon from '@material-ui/icons/CheckBoxOutlineBlank';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport { Autocomplete } from '@material-ui/lab';\nimport { useEntityTypeFilter } from '@backstage/plugin-catalog-react';\nimport { alertApiRef, useApi } from '@backstage/core-plugin-api';\n\nconst icon = <CheckBoxOutlineBlankIcon fontSize=\"small\" />;\nconst checkedIcon = <CheckBoxIcon fontSize=\"small\" />;\n\n/**\n * The Category Picker that is rendered on the left side for picking\n * categories and filtering the template list.\n */\nexport const CategoryPicker = () => {\n const alertApi = useApi(alertApiRef);\n const { error, loading, availableTypes, selectedTypes, setSelectedTypes } =\n useEntityTypeFilter();\n\n if (loading) return <Progress />;\n\n if (error) {\n alertApi.post({\n message: `Failed to load entity types with error: ${error}`,\n severity: 'error',\n });\n return null;\n }\n\n if (!availableTypes) return null;\n\n return (\n <Box pb={1} pt={1}>\n <Typography variant=\"button\">Categories</Typography>\n <Autocomplete\n multiple\n aria-label=\"Categories\"\n options={availableTypes}\n value={selectedTypes}\n onChange={(_: object, value: string[]) => setSelectedTypes(value)}\n renderOption={(option, { selected }) => (\n <FormControlLabel\n control={\n <Checkbox\n icon={icon}\n checkedIcon={checkedIcon}\n checked={selected}\n />\n }\n label={capitalize(option)}\n />\n )}\n size=\"small\"\n popupIcon={<ExpandMoreIcon />}\n renderInput={params => <TextField {...params} variant=\"outlined\" />}\n />\n </Box>\n );\n};\n","/*\n * Copyright 2021 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 { BackstageTheme } from '@backstage/theme';\nimport Button from '@material-ui/core/Button';\nimport IconButton from '@material-ui/core/IconButton';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport React from 'react';\nimport { Link as RouterLink, LinkProps } from 'react-router-dom';\nimport AddCircleOutline from '@material-ui/icons/AddCircleOutline';\nimport { catalogEntityCreatePermission } from '@backstage/plugin-catalog-common';\nimport { usePermission } from '@backstage/plugin-permission-react';\n\n/**\n * Properties for {@link RegisterExistingButton}\n *\n * @alpha\n */\nexport type RegisterExistingButtonProps = {\n title: string;\n} & Partial<Pick<LinkProps, 'to'>>;\n\n/**\n * A button that helps users to register an existing component.\n * @alpha\n */\nexport const RegisterExistingButton = (props: RegisterExistingButtonProps) => {\n const { title, to } = props;\n const { allowed } = usePermission({\n permission: catalogEntityCreatePermission,\n });\n const isXSScreen = useMediaQuery<BackstageTheme>(theme =>\n theme.breakpoints.down('xs'),\n );\n\n if (!to || !allowed) {\n return null;\n }\n\n return isXSScreen ? (\n <IconButton\n component={RouterLink}\n color=\"primary\"\n title={title}\n size=\"small\"\n to={to}\n >\n <AddCircleOutline />\n </IconButton>\n ) : (\n <Button component={RouterLink} variant=\"contained\" color=\"primary\" to={to}>\n {title}\n </Button>\n );\n};\n","/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport { makeStyles, useTheme } from '@material-ui/core';\nimport { ItemCardHeader } from '@backstage/core-components';\nimport { BackstageTheme } from '@backstage/theme';\nimport { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common';\nimport { FavoriteEntity } from '@backstage/plugin-catalog-react';\n\nconst useStyles = makeStyles<BackstageTheme, { cardBackgroundImage: string }>(\n () => ({\n header: {\n backgroundImage: ({ cardBackgroundImage }) => cardBackgroundImage,\n },\n subtitleWrapper: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n }),\n);\n\n/**\n * Props for the CardHeader component\n */\nexport interface CardHeaderProps {\n template: TemplateEntityV1beta3;\n}\n\n/**\n * The Card Header with the background for the TemplateCard.\n */\nexport const CardHeader = (props: CardHeaderProps) => {\n const {\n template: {\n metadata: { title, name },\n spec: { type },\n },\n } = props;\n const { getPageTheme } = useTheme<BackstageTheme>();\n const themeForType = getPageTheme({ themeId: type });\n\n const styles = useStyles({\n cardBackgroundImage: themeForType.backgroundImage,\n });\n\n const SubtitleComponent = (\n <div className={styles.subtitleWrapper}>\n <div>{type}</div>\n <div>\n <FavoriteEntity entity={props.template} style={{ padding: 0 }} />\n </div>\n </div>\n );\n\n return (\n <ItemCardHeader\n title={title ?? name}\n subtitle={SubtitleComponent}\n classes={{ root: styles.header }}\n />\n );\n};\n","/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport React from 'react';\nimport { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common';\nimport {\n Box,\n Card,\n CardActions,\n CardContent,\n Chip,\n Divider,\n makeStyles,\n} from '@material-ui/core';\nimport { CardHeader } from './CardHeader';\nimport { MarkdownContent, UserIcon, Button } from '@backstage/core-components';\nimport { RELATION_OWNED_BY } from '@backstage/catalog-model';\nimport {\n EntityRefLinks,\n getEntityRelations,\n} from '@backstage/plugin-catalog-react';\nimport { useRouteRef } from '@backstage/core-plugin-api';\nimport { selectedTemplateRouteRef } from '../../../routes';\nimport { BackstageTheme } from '@backstage/theme';\n\nconst useStyles = makeStyles<BackstageTheme>(theme => ({\n box: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n display: '-webkit-box',\n '-webkit-line-clamp': 10,\n '-webkit-box-orient': 'vertical',\n /** to make the styles for React Markdown not leak into the description */\n '& p:first-child': {\n marginTop: 0,\n marginBottom: theme.spacing(2),\n },\n },\n label: {\n color: theme.palette.text.secondary,\n textTransform: 'uppercase',\n fontWeight: 'bold',\n letterSpacing: 0.5,\n lineHeight: 1,\n fontSize: '0.75rem',\n },\n margin: {\n marginBottom: theme.spacing(2),\n },\n footer: {\n display: 'flex',\n justifyContent: 'space-between',\n flex: 1,\n alignItems: 'center',\n },\n ownedBy: {\n display: 'flex',\n alignItems: 'center',\n flex: 1,\n color: theme.palette.link,\n },\n}));\n\n/**\n * The Props for the Template Card component\n * @alpha\n */\nexport interface TemplateCardProps {\n template: TemplateEntityV1beta3;\n deprecated?: boolean;\n}\n\n/**\n * The Template Card component that is rendered in a list for each template\n * @alpha\n */\nexport const TemplateCard = (props: TemplateCardProps) => {\n const { template } = props;\n const styles = useStyles();\n const ownedByRelations = getEntityRelations(template, RELATION_OWNED_BY);\n const templateRoute = useRouteRef(selectedTemplateRouteRef);\n const href = templateRoute({ templateName: template.metadata.name });\n\n return (\n <Card>\n <CardHeader template={template} />\n <CardContent>\n <Box className={styles.box}>\n <MarkdownContent\n content={template.metadata.description ?? 'No description'}\n />\n </Box>\n {(template.metadata.tags?.length ?? 0) > 0 && (\n <>\n <Divider className={styles.margin} />\n <Box>\n {template.metadata.tags?.map(tag => (\n <Chip size=\"small\" label={tag} key={tag} />\n ))}\n </Box>\n </>\n )}\n </CardContent>\n <CardActions>\n <div className={styles.footer}>\n <div className={styles.ownedBy}>\n {ownedByRelations.length > 0 && (\n <>\n <UserIcon />\n <EntityRefLinks\n entityRefs={ownedByRelations}\n defaultKind=\"Group\"\n />\n </>\n )}\n </div>\n <Button size=\"small\" variant=\"outlined\" color=\"primary\" to={href}>\n Choose\n </Button>\n </div>\n </CardActions>\n </Card>\n );\n};\n","/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common';\nimport React from 'react';\nimport {\n Content,\n ContentHeader,\n ItemCardGrid,\n Link,\n} from '@backstage/core-components';\nimport { Typography } from '@material-ui/core';\nimport { TemplateCard, TemplateCardProps } from './TemplateCard';\nimport { stringifyEntityRef } from '@backstage/catalog-model';\n\nexport interface TemplateGroupProps {\n templates: TemplateEntityV1beta3[];\n title: React.ReactNode;\n components?: {\n CardComponent?: React.ComponentType<TemplateCardProps>;\n };\n}\n\nexport const TemplateGroup = (props: TemplateGroupProps) => {\n const { templates, title, components: { CardComponent } = {} } = props;\n const titleComponent =\n typeof title === 'string' ? <ContentHeader title={title} /> : title;\n\n if (templates.length === 0) {\n return (\n <Content>\n {titleComponent}\n <Typography variant=\"body2\">\n No templates found that match your filter. Learn more about{' '}\n <Link to=\"https://backstage.io/docs/features/software-templates/adding-templates\">\n adding templates\n </Link>\n .\n </Typography>\n </Content>\n );\n }\n\n const Card = CardComponent || TemplateCard;\n\n return (\n <Content>\n {titleComponent}\n <ItemCardGrid>\n {templates.map(template => (\n <Card key={stringifyEntityRef(template)} template={template} />\n ))}\n </ItemCardGrid>\n </Content>\n );\n};\n","/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport React from 'react';\nimport { TemplateGroup } from './TemplateGroup';\nimport { Entity } from '@backstage/catalog-model';\nimport { useEntityList } from '@backstage/plugin-catalog-react';\nimport { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common';\nimport { Progress, Link } from '@backstage/core-components';\nimport { Typography } from '@material-ui/core';\nimport { errorApiRef, useApi } from '@backstage/core-plugin-api';\n\n/**\n * @alpha\n */\nexport type TemplateGroupFilter = {\n title?: React.ReactNode;\n filter: (entity: Entity) => boolean;\n};\n\nexport interface TemplateGroupsProps {\n groups: TemplateGroupFilter[];\n TemplateCardComponent?: React.ComponentType<{\n template: TemplateEntityV1beta3;\n }>;\n}\n\nexport const TemplateGroups = (props: TemplateGroupsProps) => {\n const { loading, error, entities } = useEntityList();\n const { groups, TemplateCardComponent } = props;\n const errorApi = useApi(errorApiRef);\n\n if (loading) {\n return <Progress />;\n }\n\n if (error) {\n errorApi.post(error);\n return null;\n }\n\n if (!entities || !entities.length) {\n return (\n <Typography variant=\"body2\">\n No templates found that match your filter. Learn more about{' '}\n <Link to=\"https://backstage.io/docs/features/software-templates/adding-templates\">\n adding templates\n </Link>\n .\n </Typography>\n );\n }\n\n return (\n <>\n {groups.map(({ title, filter }, index) => (\n <TemplateGroup\n key={index}\n templates={entities.filter((e): e is TemplateEntityV1beta3 =>\n filter(e),\n )}\n title={title}\n components={{ CardComponent: TemplateCardComponent }}\n />\n ))}\n </>\n );\n};\n","/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common';\n\nimport {\n Content,\n ContentHeader,\n Header,\n Page,\n SupportButton,\n} from '@backstage/core-components';\nimport {\n EntityKindPicker,\n EntityListProvider,\n EntitySearchBar,\n EntityTagPicker,\n CatalogFilterLayout,\n UserListPicker,\n} from '@backstage/plugin-catalog-react';\nimport { CategoryPicker } from './CategoryPicker';\nimport { RegisterExistingButton } from './RegisterExistingButton';\nimport { useRouteRef } from '@backstage/core-plugin-api';\nimport { registerComponentRouteRef } from '../../routes';\nimport { TemplateGroupFilter, TemplateGroups } from './TemplateGroups';\n\nexport type TemplateListPageProps = {\n TemplateCardComponent?: React.ComponentType<{\n template: TemplateEntityV1beta3;\n }>;\n groups?: TemplateGroupFilter[];\n};\n\nconst defaultGroup: TemplateGroupFilter = {\n title: 'All Templates',\n filter: () => true,\n};\n\nexport const TemplateListPage = (props: TemplateListPageProps) => {\n const registerComponentLink = useRouteRef(registerComponentRouteRef);\n const { TemplateCardComponent, groups = [defaultGroup] } = props;\n\n return (\n <EntityListProvider>\n <Page themeId=\"home\">\n <Header\n pageTitleOverride=\"Create a New Component\"\n title=\"Create a New Component\"\n subtitle=\"Create new software components using standard templates\"\n />\n <Content>\n <ContentHeader title=\"Available Templates\">\n <RegisterExistingButton\n title=\"Register Existing Component\"\n to={registerComponentLink && registerComponentLink()}\n />\n <SupportButton>\n Create new software components using standard templates. Different\n templates create different kinds of components (services,\n websites, documentation, ...).\n </SupportButton>\n </ContentHeader>\n\n <CatalogFilterLayout>\n <CatalogFilterLayout.Filters>\n <EntitySearchBar />\n <EntityKindPicker initialFilter=\"template\" hidden />\n <UserListPicker\n initialFilter=\"all\"\n availableFilters={['all', 'starred']}\n />\n <CategoryPicker />\n <EntityTagPicker />\n </CatalogFilterLayout.Filters>\n <CatalogFilterLayout.Content>\n <TemplateGroups\n groups={groups}\n TemplateCardComponent={TemplateCardComponent}\n />\n </CatalogFilterLayout.Content>\n </CatalogFilterLayout>\n </Content>\n </Page>\n </EntityListProvider>\n );\n};\n","/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport React, {\n useState,\n useCallback,\n useContext,\n createContext,\n PropsWithChildren,\n} from 'react';\n\ntype SecretsContextContents = {\n secrets: Record<string, string>;\n setSecrets: React.Dispatch<React.SetStateAction<Record<string, string>>>;\n};\n\n/**\n * The actual context object.\n */\nexport const SecretsContext = createContext<SecretsContextContents | undefined>(\n undefined,\n);\n\n/**\n * The Context Provider that holds the state for the secrets.\n *\n * @alpha\n */\nexport const SecretsContextProvider = ({ children }: PropsWithChildren<{}>) => {\n const [secrets, setSecrets] = useState<Record<string, string>>({});\n\n return (\n <SecretsContext.Provider value={{ secrets, setSecrets }}>\n {children}\n </SecretsContext.Provider>\n );\n};\n\n/**\n * Hook to access the secrets context.\n * @alpha\n */\nexport const useTemplateSecrets = () => {\n const value = useContext(SecretsContext);\n if (!value) {\n throw new Error(\n 'useTemplateSecrets must be used within a SecretsContextProvider',\n );\n }\n\n const { setSecrets } = value;\n\n const setSecret = useCallback(\n (input: Record<string, string>) => {\n setSecrets(currentSecrets => ({ ...currentSecrets, ...input }));\n },\n [setSecrets],\n );\n\n return { setSecret };\n};\n","/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FieldExtensionOptions } from '../../extensions';\n\nexport interface TemplateWizardPageProps {\n customFieldExtensions: FieldExtensionOptions<any, any>[];\n}\n\nexport const TemplateWizardPage = (_props: TemplateWizardPageProps) => {\n return null;\n};\n","/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport React, { PropsWithChildren } from 'react';\nimport { Routes, Route, useOutlet } from 'react-router';\nimport { TemplateListPage } from '../TemplateListPage';\nimport { SecretsContextProvider } from '../TemplateWizardPage/SecretsContext';\nimport { TemplateWizardPage } from '../TemplateWizardPage';\nimport {\n FieldExtensionOptions,\n FIELD_EXTENSION_WRAPPER_KEY,\n FIELD_EXTENSION_KEY,\n DEFAULT_SCAFFOLDER_FIELD_EXTENSIONS,\n} from '../../extensions';\n\nimport { useElementFilter } from '@backstage/core-plugin-api';\nimport { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common';\nimport { TemplateGroupFilter } from '../TemplateListPage/TemplateGroups';\nimport { selectedTemplateRouteRef } from '../../routes';\n\n/**\n * The Props for the Scaffolder Router\n *\n * @alpha\n */\nexport type NextRouterProps = {\n components?: {\n TemplateCardComponent?: React.ComponentType<{\n template: TemplateEntityV1beta3;\n }>;\n TaskPageComponent?: React.ComponentType<{}>;\n };\n groups?: TemplateGroupFilter[];\n};\n\n/**\n * The Scaffolder Router\n *\n * @alpha\n */\nexport const Router = (props: PropsWithChildren<NextRouterProps>) => {\n const { components: { TemplateCardComponent } = {} } = props;\n\n const outlet = useOutlet() || props.children;\n\n const customFieldExtensions = useElementFilter(outlet, elements =>\n elements\n .selectByComponentData({\n key: FIELD_EXTENSION_WRAPPER_KEY,\n })\n .findComponentData<FieldExtensionOptions>({\n key: FIELD_EXTENSION_KEY,\n }),\n );\n\n const fieldExtensions = [\n ...customFieldExtensions,\n ...DEFAULT_SCAFFOLDER_FIELD_EXTENSIONS.filter(\n ({ name }) =>\n !customFieldExtensions.some(\n customFieldExtension => customFieldExtension.name === name,\n ),\n ),\n ];\n\n return (\n <Routes>\n <Route\n element={\n <TemplateListPage\n TemplateCardComponent={TemplateCardComponent}\n groups={props.groups}\n />\n }\n />\n\n <Route\n path={selectedTemplateRouteRef.path}\n element={\n <SecretsContextProvider>\n <TemplateWizardPage customFieldExtensions={fieldExtensions} />\n </SecretsContextProvider>\n }\n />\n </Routes>\n );\n};\n"],"names":["RouterLink","useStyles","Button","Link"],"mappings":"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"}
1
+ {"version":3,"file":"index-f46ffb89.esm.js","sources":["../../src/next/TemplateListPage/CategoryPicker.tsx","../../src/next/TemplateListPage/RegisterExistingButton.tsx","../../src/next/TemplateListPage/TemplateCard/CardHeader.tsx","../../src/next/TemplateListPage/TemplateCard/TemplateCard.tsx","../../src/next/TemplateListPage/TemplateGroup.tsx","../../src/next/TemplateListPage/TemplateGroups.tsx","../../src/next/TemplateListPage/TemplateListPage.tsx","../../src/next/TemplateWizardPage/SecretsContext/SecretsContext.tsx","../../src/next/TemplateWizardPage/TemplateWizardPage.tsx","../../src/next/Router/Router.tsx"],"sourcesContent":["/*\n * Copyright 2021 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 React from 'react';\nimport capitalize from 'lodash/capitalize';\nimport { Progress } from '@backstage/core-components';\nimport {\n Box,\n Checkbox,\n FormControlLabel,\n TextField,\n Typography,\n} from '@material-ui/core';\nimport CheckBoxIcon from '@material-ui/icons/CheckBox';\nimport CheckBoxOutlineBlankIcon from '@material-ui/icons/CheckBoxOutlineBlank';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport { Autocomplete } from '@material-ui/lab';\nimport { useEntityTypeFilter } from '@backstage/plugin-catalog-react';\nimport { alertApiRef, useApi } from '@backstage/core-plugin-api';\n\nconst icon = <CheckBoxOutlineBlankIcon fontSize=\"small\" />;\nconst checkedIcon = <CheckBoxIcon fontSize=\"small\" />;\n\n/**\n * The Category Picker that is rendered on the left side for picking\n * categories and filtering the template list.\n */\nexport const CategoryPicker = () => {\n const alertApi = useApi(alertApiRef);\n const { error, loading, availableTypes, selectedTypes, setSelectedTypes } =\n useEntityTypeFilter();\n\n if (loading) return <Progress />;\n\n if (error) {\n alertApi.post({\n message: `Failed to load entity types with error: ${error}`,\n severity: 'error',\n });\n return null;\n }\n\n if (!availableTypes) return null;\n\n return (\n <Box pb={1} pt={1}>\n <Typography variant=\"button\">Categories</Typography>\n <Autocomplete\n multiple\n aria-label=\"Categories\"\n options={availableTypes}\n value={selectedTypes}\n onChange={(_: object, value: string[]) => setSelectedTypes(value)}\n renderOption={(option, { selected }) => (\n <FormControlLabel\n control={\n <Checkbox\n icon={icon}\n checkedIcon={checkedIcon}\n checked={selected}\n />\n }\n label={capitalize(option)}\n />\n )}\n size=\"small\"\n popupIcon={<ExpandMoreIcon />}\n renderInput={params => <TextField {...params} variant=\"outlined\" />}\n />\n </Box>\n );\n};\n","/*\n * Copyright 2021 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 { BackstageTheme } from '@backstage/theme';\nimport Button from '@material-ui/core/Button';\nimport IconButton from '@material-ui/core/IconButton';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport React from 'react';\nimport { Link as RouterLink, LinkProps } from 'react-router-dom';\nimport AddCircleOutline from '@material-ui/icons/AddCircleOutline';\nimport { catalogEntityCreatePermission } from '@backstage/plugin-catalog-common';\nimport { usePermission } from '@backstage/plugin-permission-react';\n\n/**\n * Properties for {@link RegisterExistingButton}\n *\n * @alpha\n */\nexport type RegisterExistingButtonProps = {\n title: string;\n} & Partial<Pick<LinkProps, 'to'>>;\n\n/**\n * A button that helps users to register an existing component.\n * @alpha\n */\nexport const RegisterExistingButton = (props: RegisterExistingButtonProps) => {\n const { title, to } = props;\n const { allowed } = usePermission({\n permission: catalogEntityCreatePermission,\n });\n const isXSScreen = useMediaQuery<BackstageTheme>(theme =>\n theme.breakpoints.down('xs'),\n );\n\n if (!to || !allowed) {\n return null;\n }\n\n return isXSScreen ? (\n <IconButton\n component={RouterLink}\n color=\"primary\"\n title={title}\n size=\"small\"\n to={to}\n >\n <AddCircleOutline />\n </IconButton>\n ) : (\n <Button component={RouterLink} variant=\"contained\" color=\"primary\" to={to}>\n {title}\n </Button>\n );\n};\n","/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport { makeStyles, useTheme } from '@material-ui/core';\nimport { ItemCardHeader } from '@backstage/core-components';\nimport { BackstageTheme } from '@backstage/theme';\nimport { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common';\nimport { FavoriteEntity } from '@backstage/plugin-catalog-react';\n\nconst useStyles = makeStyles<BackstageTheme, { cardBackgroundImage: string }>(\n () => ({\n header: {\n backgroundImage: ({ cardBackgroundImage }) => cardBackgroundImage,\n },\n subtitleWrapper: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n }),\n);\n\n/**\n * Props for the CardHeader component\n */\nexport interface CardHeaderProps {\n template: TemplateEntityV1beta3;\n}\n\n/**\n * The Card Header with the background for the TemplateCard.\n */\nexport const CardHeader = (props: CardHeaderProps) => {\n const {\n template: {\n metadata: { title, name },\n spec: { type },\n },\n } = props;\n const { getPageTheme } = useTheme<BackstageTheme>();\n const themeForType = getPageTheme({ themeId: type });\n\n const styles = useStyles({\n cardBackgroundImage: themeForType.backgroundImage,\n });\n\n const SubtitleComponent = (\n <div className={styles.subtitleWrapper}>\n <div>{type}</div>\n <div>\n <FavoriteEntity entity={props.template} style={{ padding: 0 }} />\n </div>\n </div>\n );\n\n return (\n <ItemCardHeader\n title={title ?? name}\n subtitle={SubtitleComponent}\n classes={{ root: styles.header }}\n />\n );\n};\n","/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport React from 'react';\nimport { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common';\nimport {\n Box,\n Card,\n CardActions,\n CardContent,\n Chip,\n Divider,\n makeStyles,\n} from '@material-ui/core';\nimport { CardHeader } from './CardHeader';\nimport { MarkdownContent, UserIcon, Button } from '@backstage/core-components';\nimport { RELATION_OWNED_BY } from '@backstage/catalog-model';\nimport {\n EntityRefLinks,\n getEntityRelations,\n} from '@backstage/plugin-catalog-react';\nimport { useRouteRef } from '@backstage/core-plugin-api';\nimport { selectedTemplateRouteRef } from '../../../routes';\nimport { BackstageTheme } from '@backstage/theme';\n\nconst useStyles = makeStyles<BackstageTheme>(theme => ({\n box: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n display: '-webkit-box',\n '-webkit-line-clamp': 10,\n '-webkit-box-orient': 'vertical',\n /** to make the styles for React Markdown not leak into the description */\n '& p:first-child': {\n marginTop: 0,\n marginBottom: theme.spacing(2),\n },\n },\n label: {\n color: theme.palette.text.secondary,\n textTransform: 'uppercase',\n fontWeight: 'bold',\n letterSpacing: 0.5,\n lineHeight: 1,\n fontSize: '0.75rem',\n },\n margin: {\n marginBottom: theme.spacing(2),\n },\n footer: {\n display: 'flex',\n justifyContent: 'space-between',\n flex: 1,\n alignItems: 'center',\n },\n ownedBy: {\n display: 'flex',\n alignItems: 'center',\n flex: 1,\n color: theme.palette.link,\n },\n}));\n\n/**\n * The Props for the Template Card component\n * @alpha\n */\nexport interface TemplateCardProps {\n template: TemplateEntityV1beta3;\n deprecated?: boolean;\n}\n\n/**\n * The Template Card component that is rendered in a list for each template\n * @alpha\n */\nexport const TemplateCard = (props: TemplateCardProps) => {\n const { template } = props;\n const styles = useStyles();\n const ownedByRelations = getEntityRelations(template, RELATION_OWNED_BY);\n const templateRoute = useRouteRef(selectedTemplateRouteRef);\n const href = templateRoute({ templateName: template.metadata.name });\n\n return (\n <Card>\n <CardHeader template={template} />\n <CardContent>\n <Box className={styles.box}>\n <MarkdownContent\n content={template.metadata.description ?? 'No description'}\n />\n </Box>\n {(template.metadata.tags?.length ?? 0) > 0 && (\n <>\n <Divider className={styles.margin} />\n <Box>\n {template.metadata.tags?.map(tag => (\n <Chip size=\"small\" label={tag} key={tag} />\n ))}\n </Box>\n </>\n )}\n </CardContent>\n <CardActions>\n <div className={styles.footer}>\n <div className={styles.ownedBy}>\n {ownedByRelations.length > 0 && (\n <>\n <UserIcon />\n <EntityRefLinks\n entityRefs={ownedByRelations}\n defaultKind=\"Group\"\n />\n </>\n )}\n </div>\n <Button size=\"small\" variant=\"outlined\" color=\"primary\" to={href}>\n Choose\n </Button>\n </div>\n </CardActions>\n </Card>\n );\n};\n","/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common';\nimport React from 'react';\nimport {\n Content,\n ContentHeader,\n ItemCardGrid,\n Link,\n} from '@backstage/core-components';\nimport { Typography } from '@material-ui/core';\nimport { TemplateCard, TemplateCardProps } from './TemplateCard';\nimport { stringifyEntityRef } from '@backstage/catalog-model';\n\nexport interface TemplateGroupProps {\n templates: TemplateEntityV1beta3[];\n title: React.ReactNode;\n components?: {\n CardComponent?: React.ComponentType<TemplateCardProps>;\n };\n}\n\nexport const TemplateGroup = (props: TemplateGroupProps) => {\n const { templates, title, components: { CardComponent } = {} } = props;\n const titleComponent =\n typeof title === 'string' ? <ContentHeader title={title} /> : title;\n\n if (templates.length === 0) {\n return (\n <Content>\n {titleComponent}\n <Typography variant=\"body2\">\n No templates found that match your filter. Learn more about{' '}\n <Link to=\"https://backstage.io/docs/features/software-templates/adding-templates\">\n adding templates\n </Link>\n .\n </Typography>\n </Content>\n );\n }\n\n const Card = CardComponent || TemplateCard;\n\n return (\n <Content>\n {titleComponent}\n <ItemCardGrid>\n {templates.map(template => (\n <Card key={stringifyEntityRef(template)} template={template} />\n ))}\n </ItemCardGrid>\n </Content>\n );\n};\n","/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport React from 'react';\nimport { TemplateGroup } from './TemplateGroup';\nimport { Entity } from '@backstage/catalog-model';\nimport { useEntityList } from '@backstage/plugin-catalog-react';\nimport { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common';\nimport { Progress, Link } from '@backstage/core-components';\nimport { Typography } from '@material-ui/core';\nimport { errorApiRef, useApi } from '@backstage/core-plugin-api';\n\n/**\n * @alpha\n */\nexport type TemplateGroupFilter = {\n title?: React.ReactNode;\n filter: (entity: Entity) => boolean;\n};\n\nexport interface TemplateGroupsProps {\n groups: TemplateGroupFilter[];\n TemplateCardComponent?: React.ComponentType<{\n template: TemplateEntityV1beta3;\n }>;\n}\n\nexport const TemplateGroups = (props: TemplateGroupsProps) => {\n const { loading, error, entities } = useEntityList();\n const { groups, TemplateCardComponent } = props;\n const errorApi = useApi(errorApiRef);\n\n if (loading) {\n return <Progress />;\n }\n\n if (error) {\n errorApi.post(error);\n return null;\n }\n\n if (!entities || !entities.length) {\n return (\n <Typography variant=\"body2\">\n No templates found that match your filter. Learn more about{' '}\n <Link to=\"https://backstage.io/docs/features/software-templates/adding-templates\">\n adding templates\n </Link>\n .\n </Typography>\n );\n }\n\n return (\n <>\n {groups.map(({ title, filter }, index) => (\n <TemplateGroup\n key={index}\n templates={entities.filter((e): e is TemplateEntityV1beta3 =>\n filter(e),\n )}\n title={title}\n components={{ CardComponent: TemplateCardComponent }}\n />\n ))}\n </>\n );\n};\n","/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common';\n\nimport {\n Content,\n ContentHeader,\n Header,\n Page,\n SupportButton,\n} from '@backstage/core-components';\nimport {\n EntityKindPicker,\n EntityListProvider,\n EntitySearchBar,\n EntityTagPicker,\n CatalogFilterLayout,\n UserListPicker,\n} from '@backstage/plugin-catalog-react';\nimport { CategoryPicker } from './CategoryPicker';\nimport { RegisterExistingButton } from './RegisterExistingButton';\nimport { useRouteRef } from '@backstage/core-plugin-api';\nimport { registerComponentRouteRef } from '../../routes';\nimport { TemplateGroupFilter, TemplateGroups } from './TemplateGroups';\n\nexport type TemplateListPageProps = {\n TemplateCardComponent?: React.ComponentType<{\n template: TemplateEntityV1beta3;\n }>;\n groups?: TemplateGroupFilter[];\n};\n\nconst defaultGroup: TemplateGroupFilter = {\n title: 'All Templates',\n filter: () => true,\n};\n\nexport const TemplateListPage = (props: TemplateListPageProps) => {\n const registerComponentLink = useRouteRef(registerComponentRouteRef);\n const { TemplateCardComponent, groups = [defaultGroup] } = props;\n\n return (\n <EntityListProvider>\n <Page themeId=\"home\">\n <Header\n pageTitleOverride=\"Create a New Component\"\n title=\"Create a New Component\"\n subtitle=\"Create new software components using standard templates\"\n />\n <Content>\n <ContentHeader title=\"Available Templates\">\n <RegisterExistingButton\n title=\"Register Existing Component\"\n to={registerComponentLink && registerComponentLink()}\n />\n <SupportButton>\n Create new software components using standard templates. Different\n templates create different kinds of components (services,\n websites, documentation, ...).\n </SupportButton>\n </ContentHeader>\n\n <CatalogFilterLayout>\n <CatalogFilterLayout.Filters>\n <EntitySearchBar />\n <EntityKindPicker initialFilter=\"template\" hidden />\n <UserListPicker\n initialFilter=\"all\"\n availableFilters={['all', 'starred']}\n />\n <CategoryPicker />\n <EntityTagPicker />\n </CatalogFilterLayout.Filters>\n <CatalogFilterLayout.Content>\n <TemplateGroups\n groups={groups}\n TemplateCardComponent={TemplateCardComponent}\n />\n </CatalogFilterLayout.Content>\n </CatalogFilterLayout>\n </Content>\n </Page>\n </EntityListProvider>\n );\n};\n","/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport React, {\n useState,\n useCallback,\n useContext,\n createContext,\n PropsWithChildren,\n} from 'react';\n\ntype SecretsContextContents = {\n secrets: Record<string, string>;\n setSecrets: React.Dispatch<React.SetStateAction<Record<string, string>>>;\n};\n\n/**\n * The actual context object.\n */\nexport const SecretsContext = createContext<SecretsContextContents | undefined>(\n undefined,\n);\n\n/**\n * The Context Provider that holds the state for the secrets.\n *\n * @alpha\n */\nexport const SecretsContextProvider = ({ children }: PropsWithChildren<{}>) => {\n const [secrets, setSecrets] = useState<Record<string, string>>({});\n\n return (\n <SecretsContext.Provider value={{ secrets, setSecrets }}>\n {children}\n </SecretsContext.Provider>\n );\n};\n\n/**\n * Hook to access the secrets context.\n * @alpha\n */\nexport const useTemplateSecrets = () => {\n const value = useContext(SecretsContext);\n if (!value) {\n throw new Error(\n 'useTemplateSecrets must be used within a SecretsContextProvider',\n );\n }\n\n const { setSecrets } = value;\n\n const setSecret = useCallback(\n (input: Record<string, string>) => {\n setSecrets(currentSecrets => ({ ...currentSecrets, ...input }));\n },\n [setSecrets],\n );\n\n return { setSecret };\n};\n","/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FieldExtensionOptions } from '../../extensions';\n\nexport interface TemplateWizardPageProps {\n customFieldExtensions: FieldExtensionOptions<any, any>[];\n}\n\nexport const TemplateWizardPage = (_props: TemplateWizardPageProps) => {\n return null;\n};\n","/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport React, { PropsWithChildren } from 'react';\nimport { Routes, Route, useOutlet } from 'react-router';\nimport { TemplateListPage } from '../TemplateListPage';\nimport { SecretsContextProvider } from '../TemplateWizardPage/SecretsContext';\nimport { TemplateWizardPage } from '../TemplateWizardPage';\nimport {\n FieldExtensionOptions,\n FIELD_EXTENSION_WRAPPER_KEY,\n FIELD_EXTENSION_KEY,\n DEFAULT_SCAFFOLDER_FIELD_EXTENSIONS,\n} from '../../extensions';\n\nimport { useElementFilter } from '@backstage/core-plugin-api';\nimport { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common';\nimport { TemplateGroupFilter } from '../TemplateListPage/TemplateGroups';\nimport { selectedTemplateRouteRef } from '../../routes';\n\n/**\n * The Props for the Scaffolder Router\n *\n * @alpha\n */\nexport type NextRouterProps = {\n components?: {\n TemplateCardComponent?: React.ComponentType<{\n template: TemplateEntityV1beta3;\n }>;\n TaskPageComponent?: React.ComponentType<{}>;\n };\n groups?: TemplateGroupFilter[];\n};\n\n/**\n * The Scaffolder Router\n *\n * @alpha\n */\nexport const Router = (props: PropsWithChildren<NextRouterProps>) => {\n const { components: { TemplateCardComponent } = {} } = props;\n\n const outlet = useOutlet() || props.children;\n\n const customFieldExtensions = useElementFilter(outlet, elements =>\n elements\n .selectByComponentData({\n key: FIELD_EXTENSION_WRAPPER_KEY,\n })\n .findComponentData<FieldExtensionOptions>({\n key: FIELD_EXTENSION_KEY,\n }),\n );\n\n const fieldExtensions = [\n ...customFieldExtensions,\n ...DEFAULT_SCAFFOLDER_FIELD_EXTENSIONS.filter(\n ({ name }) =>\n !customFieldExtensions.some(\n customFieldExtension => customFieldExtension.name === name,\n ),\n ),\n ];\n\n return (\n <Routes>\n <Route\n element={\n <TemplateListPage\n TemplateCardComponent={TemplateCardComponent}\n groups={props.groups}\n />\n }\n />\n\n <Route\n path={selectedTemplateRouteRef.path}\n element={\n <SecretsContextProvider>\n <TemplateWizardPage customFieldExtensions={fieldExtensions} />\n </SecretsContextProvider>\n }\n />\n </Routes>\n );\n};\n"],"names":["RouterLink","useStyles","Button","Link"],"mappings":"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"}
@@ -17,6 +17,7 @@ import { ExternalRouteRef } from '@backstage/core-plugin-api';
17
17
  import { FetchApi } from '@backstage/core-plugin-api';
18
18
  import { FieldProps } from '@rjsf/core';
19
19
  import { FieldValidation } from '@rjsf/core';
20
+ import { IdentityApi } from '@backstage/core-plugin-api';
20
21
  import { JsonObject } from '@backstage/types';
21
22
  import { JSONSchema7 } from 'json-schema';
22
23
  import { JsonValue } from '@backstage/types';
@@ -26,6 +27,7 @@ import { default as React_2 } from 'react';
26
27
  import { RouteRef } from '@backstage/core-plugin-api';
27
28
  import { ScmIntegrationRegistry } from '@backstage/integration';
28
29
  import { TaskSpec } from '@backstage/plugin-scaffolder-common';
30
+ import { TaskStep } from '@backstage/plugin-scaffolder-common';
29
31
  import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common';
30
32
 
31
33
  /**
@@ -235,6 +237,7 @@ export declare interface RepoUrlPickerUiOptions {
235
237
  requestUserCredentials?: {
236
238
  secretsKey: string;
237
239
  additionalScopes?: {
240
+ gerrit?: string[];
238
241
  github?: string[];
239
242
  gitlab?: string[];
240
243
  bitbucket?: string[];
@@ -285,12 +288,18 @@ export declare interface ScaffolderApi {
285
288
  */
286
289
  scaffold(options: ScaffolderScaffoldOptions): Promise<ScaffolderScaffoldResponse>;
287
290
  getTask(taskId: string): Promise<ScaffolderTask>;
291
+ listTasks?({ filterByOwnership, }: {
292
+ filterByOwnership: 'owned' | 'all';
293
+ }): Promise<{
294
+ tasks: ScaffolderTask[];
295
+ }>;
288
296
  getIntegrationsList(options: ScaffolderGetIntegrationsListOptions): Promise<ScaffolderGetIntegrationsListResponse>;
289
297
  /**
290
298
  * Returns a list of all installed actions.
291
299
  */
292
300
  listActions(): Promise<ListActionsResponse>;
293
301
  streamLogs(options: ScaffolderStreamLogsOptions): Observable<LogEvent>;
302
+ dryRun?(options: ScaffolderDryRunOptions): Promise<ScaffolderDryRunResponse>;
294
303
  }
295
304
 
296
305
  /**
@@ -309,13 +318,20 @@ export declare class ScaffolderClient implements ScaffolderApi {
309
318
  private readonly discoveryApi;
310
319
  private readonly scmIntegrationsApi;
311
320
  private readonly fetchApi;
321
+ private readonly identityApi?;
312
322
  private readonly useLongPollingLogs;
313
323
  constructor(options: {
314
324
  discoveryApi: DiscoveryApi;
315
325
  fetchApi: FetchApi;
326
+ identityApi?: IdentityApi;
316
327
  scmIntegrationsApi: ScmIntegrationRegistry;
317
328
  useLongPollingLogs?: boolean;
318
329
  });
330
+ listTasks(options: {
331
+ filterByOwnership: 'owned' | 'all';
332
+ }): Promise<{
333
+ tasks: ScaffolderTask[];
334
+ }>;
319
335
  getIntegrationsList(options: ScaffolderGetIntegrationsListOptions): Promise<ScaffolderGetIntegrationsListResponse>;
320
336
  getTemplateParameterSchema(templateRef: string): Promise<TemplateParameterSchema>;
321
337
  /**
@@ -327,11 +343,35 @@ export declare class ScaffolderClient implements ScaffolderApi {
327
343
  scaffold(options: ScaffolderScaffoldOptions): Promise<ScaffolderScaffoldResponse>;
328
344
  getTask(taskId: string): Promise<ScaffolderTask>;
329
345
  streamLogs(options: ScaffolderStreamLogsOptions): Observable<LogEvent>;
346
+ dryRun(options: ScaffolderDryRunOptions): Promise<ScaffolderDryRunResponse>;
330
347
  private streamLogsEventStream;
331
348
  private streamLogsPolling;
332
349
  listActions(): Promise<ListActionsResponse>;
333
350
  }
334
351
 
352
+ /** @public */
353
+ export declare interface ScaffolderDryRunOptions {
354
+ template: JsonValue;
355
+ values: JsonObject;
356
+ secrets?: Record<string, string>;
357
+ directoryContents: {
358
+ path: string;
359
+ base64Content: string;
360
+ }[];
361
+ }
362
+
363
+ /** @public */
364
+ export declare interface ScaffolderDryRunResponse {
365
+ directoryContents: Array<{
366
+ path: string;
367
+ base64Content: string;
368
+ executable: boolean;
369
+ }>;
370
+ log: Array<Pick<LogEvent, 'body'>>;
371
+ steps: TaskStep[];
372
+ output: ScaffolderTaskOutput;
373
+ }
374
+
335
375
  /**
336
376
  * The Wrapping component for defining fields extensions inside
337
377
  *
@@ -17,6 +17,7 @@ import { ExternalRouteRef } from '@backstage/core-plugin-api';
17
17
  import { FetchApi } from '@backstage/core-plugin-api';
18
18
  import { FieldProps } from '@rjsf/core';
19
19
  import { FieldValidation } from '@rjsf/core';
20
+ import { IdentityApi } from '@backstage/core-plugin-api';
20
21
  import { JsonObject } from '@backstage/types';
21
22
  import { JSONSchema7 } from 'json-schema';
22
23
  import { JsonValue } from '@backstage/types';
@@ -26,6 +27,7 @@ import { default as React_2 } from 'react';
26
27
  import { RouteRef } from '@backstage/core-plugin-api';
27
28
  import { ScmIntegrationRegistry } from '@backstage/integration';
28
29
  import { TaskSpec } from '@backstage/plugin-scaffolder-common';
30
+ import { TaskStep } from '@backstage/plugin-scaffolder-common';
29
31
  import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common';
30
32
 
31
33
  /**
@@ -218,6 +220,7 @@ export declare interface RepoUrlPickerUiOptions {
218
220
  requestUserCredentials?: {
219
221
  secretsKey: string;
220
222
  additionalScopes?: {
223
+ gerrit?: string[];
221
224
  github?: string[];
222
225
  gitlab?: string[];
223
226
  bitbucket?: string[];
@@ -268,12 +271,18 @@ export declare interface ScaffolderApi {
268
271
  */
269
272
  scaffold(options: ScaffolderScaffoldOptions): Promise<ScaffolderScaffoldResponse>;
270
273
  getTask(taskId: string): Promise<ScaffolderTask>;
274
+ listTasks?({ filterByOwnership, }: {
275
+ filterByOwnership: 'owned' | 'all';
276
+ }): Promise<{
277
+ tasks: ScaffolderTask[];
278
+ }>;
271
279
  getIntegrationsList(options: ScaffolderGetIntegrationsListOptions): Promise<ScaffolderGetIntegrationsListResponse>;
272
280
  /**
273
281
  * Returns a list of all installed actions.
274
282
  */
275
283
  listActions(): Promise<ListActionsResponse>;
276
284
  streamLogs(options: ScaffolderStreamLogsOptions): Observable<LogEvent>;
285
+ dryRun?(options: ScaffolderDryRunOptions): Promise<ScaffolderDryRunResponse>;
277
286
  }
278
287
 
279
288
  /**
@@ -292,13 +301,20 @@ export declare class ScaffolderClient implements ScaffolderApi {
292
301
  private readonly discoveryApi;
293
302
  private readonly scmIntegrationsApi;
294
303
  private readonly fetchApi;
304
+ private readonly identityApi?;
295
305
  private readonly useLongPollingLogs;
296
306
  constructor(options: {
297
307
  discoveryApi: DiscoveryApi;
298
308
  fetchApi: FetchApi;
309
+ identityApi?: IdentityApi;
299
310
  scmIntegrationsApi: ScmIntegrationRegistry;
300
311
  useLongPollingLogs?: boolean;
301
312
  });
313
+ listTasks(options: {
314
+ filterByOwnership: 'owned' | 'all';
315
+ }): Promise<{
316
+ tasks: ScaffolderTask[];
317
+ }>;
302
318
  getIntegrationsList(options: ScaffolderGetIntegrationsListOptions): Promise<ScaffolderGetIntegrationsListResponse>;
303
319
  getTemplateParameterSchema(templateRef: string): Promise<TemplateParameterSchema>;
304
320
  /**
@@ -310,11 +326,35 @@ export declare class ScaffolderClient implements ScaffolderApi {
310
326
  scaffold(options: ScaffolderScaffoldOptions): Promise<ScaffolderScaffoldResponse>;
311
327
  getTask(taskId: string): Promise<ScaffolderTask>;
312
328
  streamLogs(options: ScaffolderStreamLogsOptions): Observable<LogEvent>;
329
+ dryRun(options: ScaffolderDryRunOptions): Promise<ScaffolderDryRunResponse>;
313
330
  private streamLogsEventStream;
314
331
  private streamLogsPolling;
315
332
  listActions(): Promise<ListActionsResponse>;
316
333
  }
317
334
 
335
+ /** @public */
336
+ export declare interface ScaffolderDryRunOptions {
337
+ template: JsonValue;
338
+ values: JsonObject;
339
+ secrets?: Record<string, string>;
340
+ directoryContents: {
341
+ path: string;
342
+ base64Content: string;
343
+ }[];
344
+ }
345
+
346
+ /** @public */
347
+ export declare interface ScaffolderDryRunResponse {
348
+ directoryContents: Array<{
349
+ path: string;
350
+ base64Content: string;
351
+ executable: boolean;
352
+ }>;
353
+ log: Array<Pick<LogEvent, 'body'>>;
354
+ steps: TaskStep[];
355
+ output: ScaffolderTaskOutput;
356
+ }
357
+
318
358
  /**
319
359
  * The Wrapping component for defining fields extensions inside
320
360
  *
package/dist/index.d.ts CHANGED
@@ -17,6 +17,7 @@ import { ExternalRouteRef } from '@backstage/core-plugin-api';
17
17
  import { FetchApi } from '@backstage/core-plugin-api';
18
18
  import { FieldProps } from '@rjsf/core';
19
19
  import { FieldValidation } from '@rjsf/core';
20
+ import { IdentityApi } from '@backstage/core-plugin-api';
20
21
  import { JsonObject } from '@backstage/types';
21
22
  import { JSONSchema7 } from 'json-schema';
22
23
  import { JsonValue } from '@backstage/types';
@@ -26,6 +27,7 @@ import { default as React_2 } from 'react';
26
27
  import { RouteRef } from '@backstage/core-plugin-api';
27
28
  import { ScmIntegrationRegistry } from '@backstage/integration';
28
29
  import { TaskSpec } from '@backstage/plugin-scaffolder-common';
30
+ import { TaskStep } from '@backstage/plugin-scaffolder-common';
29
31
  import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common';
30
32
 
31
33
  /**
@@ -218,6 +220,7 @@ export declare interface RepoUrlPickerUiOptions {
218
220
  requestUserCredentials?: {
219
221
  secretsKey: string;
220
222
  additionalScopes?: {
223
+ gerrit?: string[];
221
224
  github?: string[];
222
225
  gitlab?: string[];
223
226
  bitbucket?: string[];
@@ -268,12 +271,18 @@ export declare interface ScaffolderApi {
268
271
  */
269
272
  scaffold(options: ScaffolderScaffoldOptions): Promise<ScaffolderScaffoldResponse>;
270
273
  getTask(taskId: string): Promise<ScaffolderTask>;
274
+ listTasks?({ filterByOwnership, }: {
275
+ filterByOwnership: 'owned' | 'all';
276
+ }): Promise<{
277
+ tasks: ScaffolderTask[];
278
+ }>;
271
279
  getIntegrationsList(options: ScaffolderGetIntegrationsListOptions): Promise<ScaffolderGetIntegrationsListResponse>;
272
280
  /**
273
281
  * Returns a list of all installed actions.
274
282
  */
275
283
  listActions(): Promise<ListActionsResponse>;
276
284
  streamLogs(options: ScaffolderStreamLogsOptions): Observable<LogEvent>;
285
+ dryRun?(options: ScaffolderDryRunOptions): Promise<ScaffolderDryRunResponse>;
277
286
  }
278
287
 
279
288
  /**
@@ -292,13 +301,20 @@ export declare class ScaffolderClient implements ScaffolderApi {
292
301
  private readonly discoveryApi;
293
302
  private readonly scmIntegrationsApi;
294
303
  private readonly fetchApi;
304
+ private readonly identityApi?;
295
305
  private readonly useLongPollingLogs;
296
306
  constructor(options: {
297
307
  discoveryApi: DiscoveryApi;
298
308
  fetchApi: FetchApi;
309
+ identityApi?: IdentityApi;
299
310
  scmIntegrationsApi: ScmIntegrationRegistry;
300
311
  useLongPollingLogs?: boolean;
301
312
  });
313
+ listTasks(options: {
314
+ filterByOwnership: 'owned' | 'all';
315
+ }): Promise<{
316
+ tasks: ScaffolderTask[];
317
+ }>;
302
318
  getIntegrationsList(options: ScaffolderGetIntegrationsListOptions): Promise<ScaffolderGetIntegrationsListResponse>;
303
319
  getTemplateParameterSchema(templateRef: string): Promise<TemplateParameterSchema>;
304
320
  /**
@@ -310,11 +326,35 @@ export declare class ScaffolderClient implements ScaffolderApi {
310
326
  scaffold(options: ScaffolderScaffoldOptions): Promise<ScaffolderScaffoldResponse>;
311
327
  getTask(taskId: string): Promise<ScaffolderTask>;
312
328
  streamLogs(options: ScaffolderStreamLogsOptions): Observable<LogEvent>;
329
+ dryRun(options: ScaffolderDryRunOptions): Promise<ScaffolderDryRunResponse>;
313
330
  private streamLogsEventStream;
314
331
  private streamLogsPolling;
315
332
  listActions(): Promise<ListActionsResponse>;
316
333
  }
317
334
 
335
+ /** @public */
336
+ export declare interface ScaffolderDryRunOptions {
337
+ template: JsonValue;
338
+ values: JsonObject;
339
+ secrets?: Record<string, string>;
340
+ directoryContents: {
341
+ path: string;
342
+ base64Content: string;
343
+ }[];
344
+ }
345
+
346
+ /** @public */
347
+ export declare interface ScaffolderDryRunResponse {
348
+ directoryContents: Array<{
349
+ path: string;
350
+ base64Content: string;
351
+ executable: boolean;
352
+ }>;
353
+ log: Array<Pick<LogEvent, 'body'>>;
354
+ steps: TaskStep[];
355
+ output: ScaffolderTaskOutput;
356
+ }
357
+
318
358
  /**
319
359
  * The Wrapping component for defining fields extensions inside
320
360
  *
package/dist/index.esm.js CHANGED
@@ -1,4 +1,4 @@
1
- export { t as EntityNamePickerFieldExtension, q as EntityPickerFieldExtension, u as EntityTagsPickerFieldExtension, N as NextScaffolderPage, w as OwnedEntityPickerFieldExtension, v as OwnerPickerFieldExtension, x as RepoUrlPickerFieldExtension, n as ScaffolderClient, p as ScaffolderFieldExtensions, y as ScaffolderPage, h as TaskPage, T as TemplateTypePicker, o as createScaffolderFieldExtension, l as repoPickerValidation, b as scaffolderApiRef, z as scaffolderPlugin, A as useTemplateSecrets } from './esm/index-6a9fc0c0.esm.js';
1
+ export { w as EntityNamePickerFieldExtension, v as EntityPickerFieldExtension, x as EntityTagsPickerFieldExtension, N as NextScaffolderPage, z as OwnedEntityPickerFieldExtension, y as OwnerPickerFieldExtension, A as RepoUrlPickerFieldExtension, q as ScaffolderClient, u as ScaffolderFieldExtensions, B as ScaffolderPage, k as TaskPage, T as TemplateTypePicker, t as createScaffolderFieldExtension, o as repoPickerValidation, c as scaffolderApiRef, C as scaffolderPlugin, D as useTemplateSecrets } from './esm/index-b64713a1.esm.js';
2
2
  import '@backstage/catalog-model';
3
3
  import '@backstage/core-plugin-api';
4
4
  import '@backstage/errors';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@backstage/plugin-scaffolder",
3
3
  "description": "The Backstage plugin that helps you create new things",
4
- "version": "1.2.0",
4
+ "version": "1.3.0-next.2",
5
5
  "main": "dist/index.esm.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "license": "Apache-2.0",
@@ -35,26 +35,28 @@
35
35
  "clean": "backstage-cli package clean"
36
36
  },
37
37
  "dependencies": {
38
- "@backstage/catalog-client": "^1.0.2",
39
- "@backstage/catalog-model": "^1.0.2",
38
+ "@backstage/catalog-client": "^1.0.3-next.0",
39
+ "@backstage/catalog-model": "^1.0.3-next.0",
40
40
  "@backstage/config": "^1.0.1",
41
- "@backstage/core-components": "^0.9.4",
42
- "@backstage/core-plugin-api": "^1.0.2",
41
+ "@backstage/core-components": "^0.9.5-next.2",
42
+ "@backstage/core-plugin-api": "^1.0.3-next.0",
43
43
  "@backstage/errors": "^1.0.0",
44
- "@backstage/integration": "^1.2.0",
45
- "@backstage/integration-react": "^1.1.0",
46
- "@backstage/plugin-catalog-common": "^1.0.2",
47
- "@backstage/plugin-catalog-react": "^1.1.0",
48
- "@backstage/plugin-permission-react": "^0.4.1",
49
- "@backstage/plugin-scaffolder-common": "^1.1.0",
44
+ "@backstage/integration": "^1.2.1-next.2",
45
+ "@backstage/integration-react": "^1.1.1-next.1",
46
+ "@backstage/plugin-catalog-common": "^1.0.3-next.1",
47
+ "@backstage/plugin-catalog-react": "^1.1.1-next.1",
48
+ "@backstage/plugin-permission-react": "^0.4.2-next.0",
49
+ "@backstage/plugin-scaffolder-common": "^1.1.1-next.0",
50
50
  "@backstage/theme": "^0.2.15",
51
51
  "@backstage/types": "^1.0.0",
52
52
  "@codemirror/language": "^0.20.0",
53
53
  "@codemirror/legacy-modes": "^0.20.0",
54
54
  "@codemirror/view": "^0.20.2",
55
+ "@material-table/core": "^3.1.0",
55
56
  "@material-ui/core": "^4.12.2",
56
57
  "@material-ui/icons": "^4.9.1",
57
58
  "@material-ui/lab": "4.0.0-alpha.57",
59
+ "@react-hookz/web": "^13.0.0",
58
60
  "@rjsf/core": "^3.2.1",
59
61
  "@rjsf/material-ui": "^3.2.1",
60
62
  "@types/json-schema": "^7.0.9",
@@ -79,11 +81,11 @@
79
81
  "react": "^16.13.1 || ^17.0.0"
80
82
  },
81
83
  "devDependencies": {
82
- "@backstage/cli": "^0.17.1",
83
- "@backstage/core-app-api": "^1.0.2",
84
- "@backstage/dev-utils": "^1.0.2",
85
- "@backstage/plugin-catalog": "^1.2.0",
86
- "@backstage/test-utils": "^1.1.0",
84
+ "@backstage/cli": "^0.17.2-next.2",
85
+ "@backstage/core-app-api": "^1.0.3-next.0",
86
+ "@backstage/dev-utils": "^1.0.3-next.1",
87
+ "@backstage/plugin-catalog": "^1.2.1-next.1",
88
+ "@backstage/test-utils": "^1.1.1-next.0",
87
89
  "@testing-library/jest-dom": "^5.10.1",
88
90
  "@testing-library/react": "^12.1.3",
89
91
  "@testing-library/react-hooks": "^8.0.0",
@@ -93,11 +95,11 @@
93
95
  "@types/node": "^16.11.26",
94
96
  "cross-fetch": "^3.1.5",
95
97
  "event-source-polyfill": "1.0.25",
96
- "msw": "^0.35.0"
98
+ "msw": "^0.42.0"
97
99
  },
98
100
  "files": [
99
101
  "dist",
100
102
  "alpha"
101
103
  ],
102
- "gitHead": "96323f280ba32ee526c5b151cda42260aee927c9"
104
+ "gitHead": "afc672d59763a835574e6c47819107d22cfd1ad7"
103
105
  }