From 11efed7631c07b04c5ebefd39f7dc35de371c576 Mon Sep 17 00:00:00 2001 From: Diego Luisi Date: Tue, 14 Jun 2022 15:01:55 +0100 Subject: [PATCH] [wordpress] :zap: add config.json --- .editorconfig | 5 + app/packages/app/package.json | 2 + .../app/src/components/catalog/EntityPage.tsx | 6 + app/packages/backend/package.json | 1 + app/packages/backend/src/index.ts | 3 + app/packages/backend/src/plugins/todo.ts | 28 ++ app/yarn.lock | 435 +++++++++++++++++- 7 files changed, 477 insertions(+), 3 deletions(-) create mode 100644 app/packages/backend/src/plugins/todo.ts diff --git a/.editorconfig b/.editorconfig index c69a5cb18..9bd7071c1 100644 --- a/.editorconfig +++ b/.editorconfig @@ -29,3 +29,8 @@ indent_size = 2 [*.{yml,yaml}] indent_size = 2 indent_style = space +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = false +line_wrap_mode = soft wrap diff --git a/app/packages/app/package.json b/app/packages/app/package.json index 78ae169df..1d6cb4025 100644 --- a/app/packages/app/package.json +++ b/app/packages/app/package.json @@ -27,10 +27,12 @@ "@backstage/plugin-scaffolder": "^1.2.0", "@backstage/plugin-search": "^0.8.1", "@backstage/plugin-search-react": "^0.2.0", + "@backstage/plugin-sonarqube": "^0.3.6", "@backstage/plugin-tech-radar": "^0.5.12", "@backstage/plugin-techdocs": "^1.1.1", "@backstage/plugin-techdocs-module-addons-contrib": "^1.0.0", "@backstage/plugin-techdocs-react": "^1.0.0", + "@backstage/plugin-todo": "^0.2.8", "@backstage/plugin-user-settings": "^0.4.4", "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", diff --git a/app/packages/app/src/components/catalog/EntityPage.tsx b/app/packages/app/src/components/catalog/EntityPage.tsx index 1991a7fcb..8c841ad68 100644 --- a/app/packages/app/src/components/catalog/EntityPage.tsx +++ b/app/packages/app/src/components/catalog/EntityPage.tsx @@ -152,6 +152,8 @@ import { EntityGithubPullRequestsContent } from '@roadiehq/backstage-plugin-gith import { EntitySecurityInsightsContent } from '@roadiehq/backstage-plugin-security-insights'; import { EntityKubernetesContent } from '@backstage/plugin-kubernetes'; import { EntitySonarQubeCard } from '@backstage/plugin-sonarqube'; +import { EntityTodoContent } from '@backstage/plugin-todo'; + import { EntityArgoCDOverviewCard, @@ -211,6 +213,10 @@ const serviceEntityPage = ( + + + + diff --git a/app/packages/backend/package.json b/app/packages/backend/package.json index f319e3eda..b1df34d41 100644 --- a/app/packages/backend/package.json +++ b/app/packages/backend/package.json @@ -34,6 +34,7 @@ "@backstage/plugin-search-backend-module-pg": "^0.3.3", "@backstage/plugin-search-backend-node": "^0.6.1", "@backstage/plugin-techdocs-backend": "^1.1.1", + "@backstage/plugin-todo-backend": "^0.1.30", "app": "link:../app", "dockerode": "^3.3.1", "express": "^4.17.1", diff --git a/app/packages/backend/src/index.ts b/app/packages/backend/src/index.ts index 9ddc95a8f..ec2da3ca4 100644 --- a/app/packages/backend/src/index.ts +++ b/app/packages/backend/src/index.ts @@ -31,6 +31,7 @@ import search from './plugins/search'; import { PluginEnvironment } from './types'; import { ServerPermissionClient } from '@backstage/plugin-permission-node'; import kubernetes from './plugins/kubernetes'; +import todo from './plugins/todo'; function makeCreateEnv(config: Config) { @@ -83,6 +84,7 @@ async function main() { const searchEnv = useHotMemoize(module, () => createEnv('search')); const appEnv = useHotMemoize(module, () => createEnv('app')); const kubernetesEnv = useHotMemoize(module, () => createEnv('kubernetes')); + const todoEnv = useHotMemoize(module, () => createEnv('todo')); const apiRouter = Router(); apiRouter.use('/catalog', await catalog(catalogEnv)); @@ -92,6 +94,7 @@ async function main() { apiRouter.use('/proxy', await proxy(proxyEnv)); apiRouter.use('/search', await search(searchEnv)); apiRouter.use('/kubernetes', await kubernetes(kubernetesEnv)); + apiRouter.use('/todo', await todo(todoEnv)); // Add backends ABOVE this line; this 404 handler is the catch-all fallback apiRouter.use(notFoundHandler()); diff --git a/app/packages/backend/src/plugins/todo.ts b/app/packages/backend/src/plugins/todo.ts new file mode 100644 index 000000000..9efb3d013 --- /dev/null +++ b/app/packages/backend/src/plugins/todo.ts @@ -0,0 +1,28 @@ +import { Router } from 'express'; +import { CatalogClient } from '@backstage/catalog-client'; +import { + createRouter, + TodoReaderService, + TodoScmReader, +} from '@backstage/plugin-todo-backend'; +import { PluginEnvironment } from '../types'; + +export default async function createPlugin( + env: PluginEnvironment, +): Promise { + const todoReader = TodoScmReader.fromConfig(env.config, { + logger: env.logger, + reader: env.reader, + }); + + const catalogClient = new CatalogClient({ + discoveryApi: env.discovery, + }); + + const todoService = new TodoReaderService({ + todoReader, + catalogClient, + }); + + return await createRouter({ todoService }); +} diff --git a/app/yarn.lock b/app/yarn.lock index 96068d401..21313c289 100644 --- a/app/yarn.lock +++ b/app/yarn.lock @@ -1310,6 +1310,59 @@ winston "^3.2.1" yn "^4.0.0" +"@backstage/backend-common@^0.14.0": + version "0.14.0" + resolved "https://registry.yarnpkg.com/@backstage/backend-common/-/backend-common-0.14.0.tgz#da7537c7a58ce596db36be3bb584b9c199f58296" + integrity sha512-xiEOknaWtyfiWcL8+fkQKMfSnpQr1FsKFX6xVc74Lrgmd46VMW7pbhDQULQDaeCN+jhwTfxCcsemhtcJjimq+w== + dependencies: + "@backstage/cli-common" "^0.1.9" + "@backstage/config" "^1.0.1" + "@backstage/config-loader" "^1.1.2" + "@backstage/errors" "^1.0.0" + "@backstage/integration" "^1.2.1" + "@backstage/types" "^1.0.0" + "@google-cloud/storage" "^6.0.0" + "@keyv/redis" "^2.2.3" + "@manypkg/get-packages" "^1.1.3" + "@octokit/rest" "^18.5.3" + "@types/cors" "^2.8.6" + "@types/dockerode" "^3.3.0" + "@types/express" "^4.17.6" + "@types/luxon" "^2.0.4" + "@types/webpack-env" "^1.15.2" + archiver "^5.0.2" + aws-sdk "^2.840.0" + base64-stream "^1.0.0" + compression "^1.7.4" + concat-stream "^2.0.0" + cors "^2.8.5" + dockerode "^3.3.1" + express "^4.17.1" + express-promise-router "^4.1.0" + fs-extra "10.1.0" + git-url-parse "^11.6.0" + helmet "^5.0.2" + isomorphic-git "^1.8.0" + jose "^4.6.0" + keyv "^4.0.3" + keyv-memcache "^1.2.5" + knex "^1.0.2" + lodash "^4.17.21" + logform "^2.3.2" + luxon "^2.3.1" + minimatch "^5.0.0" + minimist "^1.2.5" + morgan "^1.10.0" + node-abort-controller "^3.0.1" + node-fetch "^2.6.7" + raw-body "^2.4.1" + selfsigned "^2.0.0" + stoppable "^1.1.0" + tar "^6.1.2" + unzipper "^0.10.11" + winston "^3.2.1" + yn "^4.0.0" + "@backstage/backend-tasks@^0.3.1": version "0.3.1" resolved "https://registry.yarnpkg.com/@backstage/backend-tasks/-/backend-tasks-0.3.1.tgz#551ff2f5eb41ea1af21c166f957a24512f87909b" @@ -1338,6 +1391,15 @@ "@backstage/errors" "^1.0.0" cross-fetch "^3.1.5" +"@backstage/catalog-client@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@backstage/catalog-client/-/catalog-client-1.0.3.tgz#cb91472ccc31df322f69e7e4e80939b3535660cd" + integrity sha512-35Es9jFB9jOZTEtEeCyZHES0bcQkfX4qbmY1GuC6e6ZtO120w+595kmKxc744d7X2WXUIWvhRubqc9/w5blKbg== + dependencies: + "@backstage/catalog-model" "^1.0.3" + "@backstage/errors" "^1.0.0" + cross-fetch "^3.1.5" + "@backstage/catalog-model@^1.0.0", "@backstage/catalog-model@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@backstage/catalog-model/-/catalog-model-1.0.2.tgz#50328068632b452fabed67e53fb7f83ead08f9df" @@ -1351,6 +1413,19 @@ lodash "^4.17.21" uuid "^8.0.0" +"@backstage/catalog-model@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@backstage/catalog-model/-/catalog-model-1.0.3.tgz#0d7bd832add56650871b95894878540fc41a4ef9" + integrity sha512-rbXdA/CI8EzpsthlSI4JonLd4RZoki7IN6tFvivjKDMlW8IVb63BJXWO4VnvHH+LLYzH4/OaL051YeoaicdqYw== + dependencies: + "@backstage/config" "^1.0.1" + "@backstage/errors" "^1.0.0" + "@backstage/types" "^1.0.0" + ajv "^8.10.0" + json-schema "^0.4.0" + lodash "^4.17.21" + uuid "^8.0.0" + "@backstage/cli-common@^0.1.9": version "0.1.9" resolved "https://registry.yarnpkg.com/@backstage/cli-common/-/cli-common-0.1.9.tgz#945c07a188f5d38282714e4aa750d3bf744c85bf" @@ -1475,6 +1550,27 @@ yaml "^1.9.2" yup "^0.32.9" +"@backstage/config-loader@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@backstage/config-loader/-/config-loader-1.1.2.tgz#72cb0d7b2647f5a646bb279360bc34732e06521f" + integrity sha512-c5ZO7xDJn609DBIsYAWGE5kgh+7SPYUmG2ADtVX9SbXaql3VCafGlhc2hAZQa/O12W04qi3GgwGg0bqSFmx5uw== + dependencies: + "@backstage/cli-common" "^0.1.9" + "@backstage/config" "^1.0.1" + "@backstage/errors" "^1.0.0" + "@backstage/types" "^1.0.0" + "@types/json-schema" "^7.0.6" + ajv "^8.10.0" + chokidar "^3.5.2" + fs-extra "10.1.0" + json-schema "^0.4.0" + json-schema-merge-allof "^0.8.1" + json-schema-traverse "^1.0.0" + node-fetch "^2.6.7" + typescript-json-schema "^0.53.0" + yaml "^1.9.2" + yup "^0.32.9" + "@backstage/config@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@backstage/config/-/config-1.0.1.tgz#9e66e2e88d945e205e179a0b3f8f835b5ba176b2" @@ -1543,6 +1639,51 @@ zen-observable "^0.8.15" zod "^3.11.6" +"@backstage/core-components@^0.9.5": + version "0.9.5" + resolved "https://registry.yarnpkg.com/@backstage/core-components/-/core-components-0.9.5.tgz#5a0b34867aaee0549bfa67b39a69c09588fa3c7a" + integrity sha512-kfAdN70idiEqHeH9ZQryn6C0RxJEKiRc/7srYIz0CVV88zJfc0nmZ5C/S10Gkht2xWfm95tTSw2P1vEYIBbfxg== + dependencies: + "@backstage/config" "^1.0.1" + "@backstage/core-plugin-api" "^1.0.3" + "@backstage/errors" "^1.0.0" + "@backstage/theme" "^0.2.15" + "@backstage/version-bridge" "^1.0.1" + "@material-table/core" "^3.1.0" + "@material-ui/core" "^4.12.2" + "@material-ui/icons" "^4.9.1" + "@material-ui/lab" "4.0.0-alpha.57" + "@react-hookz/web" "^14.0.0" + "@types/react-sparklines" "^1.7.0" + "@types/react-text-truncate" "^0.14.0" + ansi-regex "^6.0.1" + classnames "^2.2.6" + d3-selection "^3.0.0" + d3-shape "^3.0.0" + d3-zoom "^3.0.0" + dagre "^0.8.5" + history "^5.0.0" + immer "^9.0.1" + lodash "^4.17.21" + pluralize "^8.0.0" + prop-types "^15.7.2" + qs "^6.9.4" + rc-progress "3.3.3" + react-helmet "6.1.0" + react-hook-form "^7.12.2" + react-markdown "^8.0.0" + react-router "6.0.0-beta.0" + react-router-dom "6.0.0-beta.0" + react-sparklines "^1.7.0" + react-syntax-highlighter "^15.4.5" + react-text-truncate "^0.19.0" + react-use "^17.3.2" + react-virtualized-auto-sizer "^1.0.6" + react-window "^1.8.6" + remark-gfm "^3.0.1" + zen-observable "^0.8.15" + zod "^3.11.6" + "@backstage/core-plugin-api@^1.0.0", "@backstage/core-plugin-api@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@backstage/core-plugin-api/-/core-plugin-api-1.0.2.tgz#6ebf52c20df33ee3c128c98937d0d349a805d3eb" @@ -1556,6 +1697,19 @@ react-router-dom "6.0.0-beta.0" zen-observable "^0.8.15" +"@backstage/core-plugin-api@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@backstage/core-plugin-api/-/core-plugin-api-1.0.3.tgz#32ecfec2afe1a25d02d41f1813621843121c2d7a" + integrity sha512-4/d9+c+AmqhY5KqsC8ikIcMsmXIcKP3+1/uT2H3/DxxJLx2sH7BvNVVqro5ZAhA7iNsuYdrfV0fHeNxGsdLuNA== + dependencies: + "@backstage/config" "^1.0.1" + "@backstage/types" "^1.0.0" + "@backstage/version-bridge" "^1.0.1" + history "^5.0.0" + prop-types "^15.7.2" + react-router-dom "6.0.0-beta.0" + zen-observable "^0.8.15" + "@backstage/errors@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@backstage/errors/-/errors-1.0.0.tgz#08ebf53afdeaca32362955ea8551e8ffa0bb3cd7" @@ -1594,6 +1748,20 @@ lodash "^4.17.21" luxon "^2.0.2" +"@backstage/integration@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@backstage/integration/-/integration-1.2.1.tgz#a1931d240c2fbd304f0b87d54272709f4ffe83ed" + integrity sha512-9rXD1iIGhKRCfowxWx9sRKxiv1JvDI6ucvtUeXIj1G27kT/Xy7uUcgB8CkVxsvSeog5Z1VdYkFkDmQbKQ6GPrg== + dependencies: + "@backstage/config" "^1.0.1" + "@backstage/errors" "^1.0.0" + "@octokit/auth-app" "^3.4.0" + "@octokit/rest" "^18.5.3" + cross-fetch "^3.1.5" + git-url-parse "^11.6.0" + lodash "^4.17.21" + luxon "^2.0.2" + "@backstage/plugin-api-docs@^0.8.5": version "0.8.5" resolved "https://registry.yarnpkg.com/@backstage/plugin-api-docs/-/plugin-api-docs-0.8.5.tgz#2794f93c36bc5775ebd29e5b449e1b14ae415b87" @@ -1764,6 +1932,14 @@ "@backstage/plugin-permission-common" "^0.6.1" "@backstage/search-common" "^0.3.4" +"@backstage/plugin-catalog-common@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@backstage/plugin-catalog-common/-/plugin-catalog-common-1.0.3.tgz#96b1de2847fec0533c49ee19f93781777eedfd0d" + integrity sha512-Sf5IQocTRQaTh9ofZUy4/szWwDl5Eek6odKVx6v33jrMot5i3grybOELrVM3/Kgcr+5/ixSSopgQPUFO/T9KBA== + dependencies: + "@backstage/plugin-permission-common" "^0.6.2" + "@backstage/plugin-search-common" "^0.3.5" + "@backstage/plugin-catalog-graph@^0.2.17": version "0.2.17" resolved "https://registry.yarnpkg.com/@backstage/plugin-catalog-graph/-/plugin-catalog-graph-0.2.17.tgz#b45deddbfc3a359037711b76016ffb16e87eacfa" @@ -1840,6 +2016,35 @@ yaml "^1.10.0" zen-observable "^0.8.15" +"@backstage/plugin-catalog-react@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@backstage/plugin-catalog-react/-/plugin-catalog-react-1.1.1.tgz#0441bcf1291349ad355ff51e28245d7ea26a3e01" + integrity sha512-HxowTsFaNmAp+TEb0YgBak/61SkwwRV3tUdF5O2dQugbgI3Ci8dMjN2J18LiOEFS13m6IlrCpNC1Db3QMRjwBA== + dependencies: + "@backstage/catalog-client" "^1.0.3" + "@backstage/catalog-model" "^1.0.3" + "@backstage/core-components" "^0.9.5" + "@backstage/core-plugin-api" "^1.0.3" + "@backstage/errors" "^1.0.0" + "@backstage/integration" "^1.2.1" + "@backstage/plugin-catalog-common" "^1.0.3" + "@backstage/plugin-permission-common" "^0.6.2" + "@backstage/plugin-permission-react" "^0.4.2" + "@backstage/theme" "^0.2.15" + "@backstage/types" "^1.0.0" + "@backstage/version-bridge" "^1.0.1" + "@material-ui/core" "^4.12.2" + "@material-ui/icons" "^4.9.1" + "@material-ui/lab" "4.0.0-alpha.57" + classnames "^2.2.6" + jwt-decode "^3.1.0" + lodash "^4.17.21" + qs "^6.9.4" + react-router "6.0.0-beta.0" + react-use "^17.2.4" + yaml "^1.10.0" + zen-observable "^0.8.15" + "@backstage/plugin-catalog@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@backstage/plugin-catalog/-/plugin-catalog-1.2.0.tgz#1b6e5da376e6e5df0b8f3ea6d213cff5a2381ec9" @@ -1999,6 +2204,17 @@ uuid "^8.0.0" zod "^3.11.6" +"@backstage/plugin-permission-common@^0.6.2": + version "0.6.2" + resolved "https://registry.yarnpkg.com/@backstage/plugin-permission-common/-/plugin-permission-common-0.6.2.tgz#2ab5cf3d8a4a3394edc0d552719df4f34804bfbb" + integrity sha512-tbKjm0xw6stoaFzeWL59XRz/yEEXxnBMgm3ioNbh0Qdbj44z8KivjkDjWPovI5DW6x0jFxzLQYCNMlZxOpqL6A== + dependencies: + "@backstage/config" "^1.0.1" + "@backstage/errors" "^1.0.0" + cross-fetch "^3.1.5" + uuid "^8.0.0" + zod "^3.11.6" + "@backstage/plugin-permission-node@^0.6.1": version "0.6.1" resolved "https://registry.yarnpkg.com/@backstage/plugin-permission-node/-/plugin-permission-node-0.6.1.tgz#dbdc87eff8fd51eda0381ed5582a2caa46f4d86d" @@ -2027,6 +2243,19 @@ react-use "^17.2.4" swr "^1.1.2" +"@backstage/plugin-permission-react@^0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@backstage/plugin-permission-react/-/plugin-permission-react-0.4.2.tgz#efc39619617e5800a68728871b87c772a0861711" + integrity sha512-isofTbK1gFgLTgr51efbFO0jWOkhQwzErL24pwY6gFVKnz7Z53AfGv1lHabxAWnNhEyTzLPMA/7s7lKuKEtOXw== + dependencies: + "@backstage/config" "^1.0.1" + "@backstage/core-plugin-api" "^1.0.3" + "@backstage/plugin-permission-common" "^0.6.2" + cross-fetch "^3.1.5" + react-router "6.0.0-beta.0" + react-use "^17.2.4" + swr "^1.1.2" + "@backstage/plugin-proxy-backend@^0.2.26": version "0.2.26" resolved "https://registry.yarnpkg.com/@backstage/plugin-proxy-backend/-/plugin-proxy-backend-0.2.26.tgz#d3ee19f48dc3e2d0356533401c1d8f20eb1b1399" @@ -2199,6 +2428,14 @@ "@backstage/plugin-permission-common" "^0.6.1" "@backstage/types" "^1.0.0" +"@backstage/plugin-search-common@^0.3.5": + version "0.3.5" + resolved "https://registry.yarnpkg.com/@backstage/plugin-search-common/-/plugin-search-common-0.3.5.tgz#6a374541f2bd7d9545e29abbaecc70e7ad1b5ea3" + integrity sha512-sq7IDjCLrgZQHBFi+lFVkna3lLRA5eldiTbit/rCUCO4Eq52lWdQHLrQAhsyuObmIWHDh6R2lp2qoL6aAC2AOg== + dependencies: + "@backstage/plugin-permission-common" "^0.6.2" + "@backstage/types" "^1.0.0" + "@backstage/plugin-search-react@^0.2.0": version "0.2.0" resolved "https://registry.yarnpkg.com/@backstage/plugin-search-react/-/plugin-search-react-0.2.0.tgz#dd9c13c387c666981a902154c2e13850bbbf0d40" @@ -2235,6 +2472,24 @@ react-router-dom "6.0.0-beta.0" react-use "^17.2.4" +"@backstage/plugin-sonarqube@^0.3.6": + version "0.3.6" + resolved "https://registry.yarnpkg.com/@backstage/plugin-sonarqube/-/plugin-sonarqube-0.3.6.tgz#a5c5dfe73c88fc09d3c876cc4a20f0a88f9d3f54" + integrity sha512-F//GnpOl9OcEHsagOOTVo/B5uUV8m0nSry+IoMRLtb/BBzzlieXsQGQtXz7FH+GxGdzt9tqdBUIIatCwJfu3Nw== + dependencies: + "@backstage/catalog-model" "^1.0.3" + "@backstage/core-components" "^0.9.5" + "@backstage/core-plugin-api" "^1.0.3" + "@backstage/plugin-catalog-react" "^1.1.1" + "@backstage/theme" "^0.2.15" + "@material-ui/core" "^4.12.2" + "@material-ui/icons" "^4.9.1" + "@material-ui/lab" "4.0.0-alpha.57" + "@material-ui/styles" "^4.10.0" + cross-fetch "^3.1.5" + rc-progress "3.3.3" + react-use "^17.2.4" + "@backstage/plugin-stack-overflow@^0.1.1": version "0.1.1" resolved "https://registry.yarnpkg.com/@backstage/plugin-stack-overflow/-/plugin-stack-overflow-0.1.1.tgz#238ae82cb5f5732eb343b4f87aa6fc973bb613d2" @@ -2391,6 +2646,40 @@ react-router-dom "6.0.0-beta.0" react-use "^17.2.4" +"@backstage/plugin-todo-backend@^0.1.30": + version "0.1.30" + resolved "https://registry.yarnpkg.com/@backstage/plugin-todo-backend/-/plugin-todo-backend-0.1.30.tgz#e2ebcc40e84fe7979c72c6aaba6225bd257839b1" + integrity sha512-EWZmywBQe0qjYoaYkp+zPmwexGsaOVaAh4SGW/mXxb2MQSflrbUS+eCseYFmWcTP1FFfeP2gc0h1CaM6IXcdcg== + dependencies: + "@backstage/backend-common" "^0.14.0" + "@backstage/catalog-client" "^1.0.3" + "@backstage/catalog-model" "^1.0.3" + "@backstage/config" "^1.0.1" + "@backstage/errors" "^1.0.0" + "@backstage/integration" "^1.2.1" + "@types/express" "^4.17.6" + express "^4.17.1" + express-promise-router "^4.1.0" + leasot "^12.0.0" + winston "^3.2.1" + yn "^4.0.0" + +"@backstage/plugin-todo@^0.2.8": + version "0.2.8" + resolved "https://registry.yarnpkg.com/@backstage/plugin-todo/-/plugin-todo-0.2.8.tgz#b79c611e3c0f6cf960b1e257eb184ffaf3359abc" + integrity sha512-f8dWiBEmrGBYfJ3FzzH/TjxSRwPQFaWSZJjyDYubmtg1Dbe0fxLabyTOChjrigR/qeMexOwwx162eMwnMF9RGw== + dependencies: + "@backstage/catalog-model" "^1.0.3" + "@backstage/core-components" "^0.9.5" + "@backstage/core-plugin-api" "^1.0.3" + "@backstage/errors" "^1.0.0" + "@backstage/plugin-catalog-react" "^1.1.1" + "@backstage/theme" "^0.2.15" + "@material-ui/core" "^4.12.2" + "@material-ui/icons" "^4.9.1" + "@material-ui/lab" "4.0.0-alpha.57" + react-use "^17.2.4" + "@backstage/plugin-user-settings@^0.4.4": version "0.4.4" resolved "https://registry.yarnpkg.com/@backstage/plugin-user-settings/-/plugin-user-settings-0.4.4.tgz#af2cf6a0aab1e9b6edfd3fecd33f11239c559695" @@ -2737,6 +3026,11 @@ resolved "https://registry.yarnpkg.com/@google-cloud/promisify/-/promisify-2.0.4.tgz#9d8705ecb2baa41b6b2673f3a8e9b7b7e1abc52a" integrity sha512-j8yRSSqswWi1QqUGKVEKOG03Q7qOoZP6/h2zN2YO+F5h2+DHU0bSrHCK9Y7lo2DI9fBd8qGAw795sf+3Jva4yA== +"@google-cloud/promisify@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@google-cloud/promisify/-/promisify-3.0.0.tgz#5cd6941fc30c4acac18051706aa5af96069bd3e3" + integrity sha512-91ArYvRgXWb73YvEOBMmOcJc0bDRs5yiVHnqkwoG0f3nm7nZuipllz6e7BvFESBvjkDTBC0zMD8QxedUwNLc1A== + "@google-cloud/storage@^5.6.0", "@google-cloud/storage@^5.8.0": version "5.20.5" resolved "https://registry.yarnpkg.com/@google-cloud/storage/-/storage-5.20.5.tgz#1de71fc88d37934a886bc815722c134b162d335d" @@ -2766,6 +3060,32 @@ uuid "^8.0.0" xdg-basedir "^4.0.0" +"@google-cloud/storage@^6.0.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@google-cloud/storage/-/storage-6.1.0.tgz#f882a969c5637ff445764d7b172f68fd0d9e63f8" + integrity sha512-zqZwzpRWCJuPne7x9Vc2H79zANl0uh9bNPGis0xAuC88ZEvBXfQqYCAVyiL1YIxi7rf51l8wy9vBr1pONMfxxA== + dependencies: + "@google-cloud/paginator" "^3.0.7" + "@google-cloud/projectify" "^2.0.0" + "@google-cloud/promisify" "^3.0.0" + abort-controller "^3.0.0" + arrify "^2.0.0" + async-retry "^1.3.3" + compressible "^2.0.12" + duplexify "^4.0.0" + ent "^2.2.0" + extend "^3.0.2" + gaxios "^5.0.0" + google-auth-library "^8.0.1" + mime "^3.0.0" + mime-types "^2.0.8" + p-limit "^3.0.1" + pumpify "^2.0.0" + retry-request "^5.0.0" + stream-events "^1.0.4" + teeny-request "^8.0.0" + uuid "^8.0.0" + "@graphiql/react@^0.1.1": version "0.1.1" resolved "https://registry.yarnpkg.com/@graphiql/react/-/react-0.1.1.tgz#536337a3cbf250656b768ecb8527a3c0ab0ff8eb" @@ -4467,7 +4787,7 @@ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== -"@react-hookz/deep-equal@^1.0.1": +"@react-hookz/deep-equal@^1.0.1", "@react-hookz/deep-equal@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@react-hookz/deep-equal/-/deep-equal-1.0.2.tgz#4e8bdeda027379dcf8b62a42e5f75f0351b11b35" integrity sha512-cM5kPFb6EFH5q52WzRxfRX9+8g5kq78McWOYs6e1seo+nK6NpfLupT5uOCIJp37jU8ayd4Su8ni3HRFTN2C2kg== @@ -4479,6 +4799,13 @@ dependencies: "@react-hookz/deep-equal" "^1.0.1" +"@react-hookz/web@^14.0.0": + version "14.2.2" + resolved "https://registry.yarnpkg.com/@react-hookz/web/-/web-14.2.2.tgz#eee0085f954e5b62d0a6c5b20d8786c28abfb9ad" + integrity sha512-6FeZHKV3FFOYnbSJMkkqXDoMuIX0HEFJlDF4LpHR7RsA3zrH2xzhtF8nSYZ+pG6fDIqYKID9yQuILFmbAWaqCQ== + dependencies: + "@react-hookz/deep-equal" "^1.0.2" + "@rjsf/core@^3.2.1": version "3.2.1" resolved "https://registry.yarnpkg.com/@rjsf/core/-/core-3.2.1.tgz#8a7b24c9a6f01f0ecb093fdfc777172c12b1b009" @@ -6137,6 +6464,7 @@ anymatch@^3.0.3, anymatch@~3.1.2: "@backstage/plugin-techdocs" "^1.1.1" "@backstage/plugin-techdocs-module-addons-contrib" "^1.0.0" "@backstage/plugin-techdocs-react" "^1.0.0" + "@backstage/plugin-todo" "^0.2.8" "@backstage/plugin-user-settings" "^0.4.4" "@backstage/theme" "^0.2.15" "@material-ui/core" "^4.12.2" @@ -8958,6 +9286,11 @@ envinfo@^7.7.4: resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== +eol@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/eol/-/eol-0.9.1.tgz#f701912f504074be35c6117a5c4ade49cd547acd" + integrity sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg== + err-code@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" @@ -10189,6 +10522,17 @@ gaxios@^4.0.0: is-stream "^2.0.0" node-fetch "^2.6.7" +gaxios@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-5.0.0.tgz#df11e5d0a45831dd39eb5fbbba0d6a6b09815e70" + integrity sha512-VD/yc5ln6XU8Ch1hyYY6kRMBE0Yc2np3fPyeJeYHhrPs1i8rgnsApPMWyrugkl7LLoSqpOJVBWlQIa87OAvt8Q== + dependencies: + abort-controller "^3.0.0" + extend "^3.0.2" + https-proxy-agent "^5.0.0" + is-stream "^2.0.0" + node-fetch "^2.6.7" + gcp-metadata@^4.2.0: version "4.3.1" resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-4.3.1.tgz#fb205fe6a90fef2fd9c85e6ba06e5559ee1eefa9" @@ -10197,6 +10541,14 @@ gcp-metadata@^4.2.0: gaxios "^4.0.0" json-bigint "^1.0.0" +gcp-metadata@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-5.0.0.tgz#a00f999f60a4461401e7c515f8a3267cfb401ee7" + integrity sha512-gfwuX3yA3nNsHSWUL4KG90UulNiq922Ukj3wLTrcnX33BB7PwB1o0ubR8KVvXu9nJH+P5w1j2SQSNNqto+H0DA== + dependencies: + gaxios "^5.0.0" + json-bigint "^1.0.0" + generic-names@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/generic-names/-/generic-names-4.0.0.tgz#0bd8a2fd23fe8ea16cbd0a279acd69c06933d9a3" @@ -10251,6 +10603,11 @@ get-port@^5.1.1: resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== +get-stdin@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53" + integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg== + get-stream@^5.0.0, get-stream@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" @@ -10460,7 +10817,7 @@ globalthis@^1.0.1: dependencies: define-properties "^1.1.3" -globby@^11.0.0, globby@^11.0.2, globby@^11.0.4, globby@^11.1.0: +globby@^11.0.0, globby@^11.0.2, globby@^11.0.3, globby@^11.0.4, globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== @@ -10499,6 +10856,21 @@ google-auth-library@^7.14.0, google-auth-library@^7.14.1, google-auth-library@^7 jws "^4.0.0" lru-cache "^6.0.0" +google-auth-library@^8.0.1: + version "8.0.2" + resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-8.0.2.tgz#5fa0f2d3795c3e4019d2bb315ade4454cc9c30b5" + integrity sha512-HoG+nWFAThLovKpvcbYzxgn+nBJPTfAwtq0GxPN821nOO+21+8oP7MoEHfd1sbDulUFFGfcjJr2CnJ4YssHcyg== + dependencies: + arrify "^2.0.0" + base64-js "^1.3.0" + ecdsa-sig-formatter "^1.0.11" + fast-text-encoding "^1.0.0" + gaxios "^5.0.0" + gcp-metadata "^5.0.0" + gtoken "^5.3.2" + jws "^4.0.0" + lru-cache "^6.0.0" + google-gax@^2.24.1: version "2.30.4" resolved "https://registry.yarnpkg.com/google-gax/-/google-gax-2.30.4.tgz#578b4461ed328446e2ebdaa1d7ae5e12aec839bd" @@ -10614,7 +10986,7 @@ graphql@^16.0.0, graphql@^16.3.0: resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.5.0.tgz#41b5c1182eaac7f3d47164fb247f61e4dfb69c85" integrity sha512-qbHgh8Ix+j/qY+a/ZcJnFQ+j8ezakqPiHwPiZhV/3PgGlgf96QMBB5/f2rkiC9sgLoy/xvT6TSiaf2nTHJh5iA== -gtoken@^5.0.4: +gtoken@^5.0.4, gtoken@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-5.3.2.tgz#deb7dc876abe002178e0515e383382ea9446d58f" integrity sha512-gkvEKREW7dXWF8NV8pVrKfW7WqReAmjjkMBh6lNCCGOM4ucS0r0YyXXl0r/9Yj8wcW/32ISkfc8h5mPTDbtifQ== @@ -12447,6 +12819,11 @@ json-to-ast@^2.1.0: code-error-fragment "0.0.230" grapheme-splitter "^1.0.4" +json2xml@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/json2xml/-/json2xml-0.1.3.tgz#9ae7c220bedd7c66a668e26f7ac182f6704eca21" + integrity sha512-yfTe9HnbrE3oRUEQL9mn7BueLd7RCTb7ig/mAFI6xY4RNYOEXF26x0qHFR7mb8ZrKgfE57wxkq0N3TboyFm6UA== + json5@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" @@ -12743,6 +13120,23 @@ lazystream@^1.0.0: dependencies: readable-stream "^2.0.5" +leasot@^12.0.0: + version "12.5.0" + resolved "https://registry.yarnpkg.com/leasot/-/leasot-12.5.0.tgz#d2b0273d0eaa3fc20ded2ede81b46b9c6f158451" + integrity sha512-bx2hqCDZ6EVzdaM+aIBNO12Ff0BscGVWPf23Wzj5FLCEXZuJR729Wn5Naom8dJcqpEbsk2XXzvdHus/3WZqW5w== + dependencies: + async "^3.2.0" + chalk "^4.1.0" + commander "^7.2.0" + eol "^0.9.1" + get-stdin "^8.0.0" + globby "^11.0.3" + json2xml "^0.1.3" + lodash "^4.17.21" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + text-table "^0.2.0" + lerna@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/lerna/-/lerna-4.0.0.tgz#b139d685d50ea0ca1be87713a7c2f44a5b678e9e" @@ -16103,6 +16497,15 @@ rc-progress@3.3.2: classnames "^2.2.6" rc-util "^5.16.1" +rc-progress@3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/rc-progress/-/rc-progress-3.3.3.tgz#eb9bffbacab1534f2542f9f6861ce772254362b1" + integrity sha512-MDVNVHzGanYtRy2KKraEaWeZLri2ZHWIRyaE1a9MQ2MuJ09m+Wxj5cfcaoaR6z5iRpHpA59YeUxAlpML8N4PJw== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.6" + rc-util "^5.16.1" + rc-util@^5.16.1: version "5.21.4" resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-5.21.4.tgz#61e24ad297f679ca0796b618a3ef30eca959d904" @@ -16365,6 +16768,13 @@ react-text-truncate@^0.18.0: dependencies: prop-types "^15.5.7" +react-text-truncate@^0.19.0: + version "0.19.0" + resolved "https://registry.yarnpkg.com/react-text-truncate/-/react-text-truncate-0.19.0.tgz#60bc5ecf29a03ebc256f31f90a2d8402176aac91" + integrity sha512-QxHpZABfGG0Z3WEYbRTZ+rXdZn50Zvp+sWZXgVAd7FCKAMzv/kcwctTpNmWgXDTpAoHhMjOVwmgRtX3x5yeF4w== + dependencies: + prop-types "^15.5.7" + react-transition-group@^4.0.0, react-transition-group@^4.4.0: version "4.4.2" resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.2.tgz#8b59a56f09ced7b55cbd53c36768b922890d5470" @@ -16930,6 +17340,14 @@ retry-request@^4.0.0, retry-request@^4.2.2: debug "^4.1.1" extend "^3.0.2" +retry-request@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/retry-request/-/retry-request-5.0.1.tgz#c6be2a4a36f1554ba3251fa8fd945af26ee0e9ec" + integrity sha512-lxFKrlBt0OZzCWh/V0uPEN0vlr3OhdeXnpeY5OES+ckslm791Cb1D5P7lJUSnY7J5hiCjcyaUGmzCnIGDCUBig== + dependencies: + debug "^4.1.1" + extend "^3.0.2" + retry@0.13.1, retry@^0.13.1: version "0.13.1" resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" @@ -18244,6 +18662,17 @@ teeny-request@^7.1.3: stream-events "^1.0.5" uuid "^8.0.0" +teeny-request@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-8.0.0.tgz#9614410ba70114fd28ba7bf5077dce3e2f02adf7" + integrity sha512-6KEYxXI4lQPSDkXzXpPmJPNmo7oqduFFbhOEHf8sfsLbXyCsb+umUjBtMGAKhaSToD8JNCtQutTRefu29K64JA== + dependencies: + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.0" + node-fetch "^2.6.1" + stream-events "^1.0.5" + uuid "^8.0.0" + temp-dir@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d"