From 47207c33b17a3fb34f4d0d830277c2155cebbfc0 Mon Sep 17 00:00:00 2001 From: Brad McCoy Date: Tue, 29 Nov 2022 10:57:58 +1000 Subject: [PATCH] feat: add backstage config for argo Signed-off-by: Brad McCoy --- app-config.production.yaml | 16 +- app-config.yaml | 16 +- catalog-info.yaml | 9 +- chart/backstage/Chart.yaml | 4 +- .../templates/backend/deployment.yaml | 10 + packages/app/package.json | 1 - .../app/src/components/catalog/EntityPage.tsx | 13 - packages/app/src/plugins.ts | 1 - packages/backend/package.json | 1 + packages/backend/src/index.ts | 3 + packages/backend/src/plugins/argocd.ts | 9 + yarn.lock | 245 ++++++++---------- 12 files changed, 160 insertions(+), 168 deletions(-) delete mode 100644 packages/app/src/plugins.ts create mode 100644 packages/backend/src/plugins/argocd.ts diff --git a/app-config.production.yaml b/app-config.production.yaml index ec39d7b..9b2b834 100644 --- a/app-config.production.yaml +++ b/app-config.production.yaml @@ -59,16 +59,14 @@ kubernetes: skipTLSVerify: true skipMetricsLookup: true -proxy: - '/argocd/api': - target: ${ARGOCD_BASE_URL}/api/v1/ - changeOrigin: true - secure: false - headers: - Cookie: - $env: ${ARGOCD_AUTH_TOKEN} argocd: - baseUrl: ${ARGOCD_BASE_URL} + username: ${ARGOCD_USERNAME} + password: ${ARGOCD_PASSWORD} + appLocatorMethods: + - type: 'config' + instances: + - name: production + url: ${ARGOCD_BASE_URL} # plugin: # auth: diff --git a/app-config.yaml b/app-config.yaml index b4573e2..282440d 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -60,16 +60,14 @@ integrations: # apiBaseUrl: https://ghe.example.net/api/v3 # token: ${GHE_TOKEN} -proxy: - '/argocd/api': - target: ${ARGOCD_BASE_URL}/api/v1/ - changeOrigin: true - secure: false - headers: - Cookie: - $env: ${ARGOCD_AUTH_TOKEN} argocd: - baseUrl: ${ARGOCD_BASE_URL} + username: ${ARGOCD_USERNAME} + password: ${ARGOCD_PASSWORD} + appLocatorMethods: + - type: 'config' + instances: + - name: production + url: ${ARGOCD_BASE_URL} # Reference documentation http://backstage.io/docs/features/techdocs/configuration # Note: After experimenting with basic setup, use CI/CD to generate docs diff --git a/catalog-info.yaml b/catalog-info.yaml index c738e2c..877ecb3 100644 --- a/catalog-info.yaml +++ b/catalog-info.yaml @@ -7,7 +7,7 @@ metadata: spec: type: service owner: user:guest - lifecycle: experimental + lifecycle: production --- apiVersion: backstage.io/v1alpha1 kind: Component @@ -18,17 +18,20 @@ metadata: spec: type: service owner: user:guest - lifecycle: experimental + lifecycle: production --- apiVersion: backstage.io/v1alpha1 kind: Component metadata: name: ingress-nginx + description: Ortelius Cluster Ingress annotations: 'backstage.io/kubernetes-id': ingress-nginx 'argocd/app-name': ingress-nginx + tags: + - platform spec: type: service owner: user:guest - lifecycle: experimental + lifecycle: production --- diff --git a/chart/backstage/Chart.yaml b/chart/backstage/Chart.yaml index 804f62d..a1d7caa 100644 --- a/chart/backstage/Chart.yaml +++ b/chart/backstage/Chart.yaml @@ -4,8 +4,8 @@ description: A Helm chart for the Ortelius Backstage Instance type: application -version: 0.0.15 -appVersion: "0.0.15" +version: 0.0.16 +appVersion: "0.0.16" home: "https://ortelius.io" icon: https://backstage.io/img/twitter-summary.png diff --git a/chart/backstage/templates/backend/deployment.yaml b/chart/backstage/templates/backend/deployment.yaml index b3b3ce5..2ded62e 100644 --- a/chart/backstage/templates/backend/deployment.yaml +++ b/chart/backstage/templates/backend/deployment.yaml @@ -89,6 +89,16 @@ spec: secretKeyRef: name: backstage-secrets key: ARGOCD_URL + - name: ARGOCD_USERNAME + valueFrom: + secretKeyRef: + name: backstage-secrets + key: ARGOCD_USERNAME + - name: ARGOCD_PASSWORD + valueFrom: + secretKeyRef: + name: backstage-secrets + key: ARGOCD_PASSWORD - name: ARGOCD_AUTH_TOKEN valueFrom: secretKeyRef: diff --git a/packages/app/package.json b/packages/app/package.json index 636b720..d1fd4b1 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -46,7 +46,6 @@ "@backstage/theme": "^0.2.16", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", - "@roadiehq/backstage-plugin-argo-cd": "^2.2.1", "history": "^5.0.0", "react": "^17.0.2", "react-dom": "^17.0.2", diff --git a/packages/app/src/components/catalog/EntityPage.tsx b/packages/app/src/components/catalog/EntityPage.tsx index 8487d87..c67b210 100644 --- a/packages/app/src/components/catalog/EntityPage.tsx +++ b/packages/app/src/components/catalog/EntityPage.tsx @@ -56,11 +56,6 @@ import { import { TechDocsAddons } from '@backstage/plugin-techdocs-react'; import { ReportIssue } from '@backstage/plugin-techdocs-module-addons-contrib'; import { EntityKubernetesContent } from '@backstage/plugin-kubernetes'; -import { - EntityArgoCDHistoryCard, - isArgocdAvailable, -} from '@roadiehq/backstage-plugin-argo-cd'; - const techdocsContent = ( @@ -133,14 +128,6 @@ const overviewContent = ( - - - Boolean(isArgocdAvailable(e))}> - - - - - ); diff --git a/packages/app/src/plugins.ts b/packages/app/src/plugins.ts deleted file mode 100644 index ebacb85..0000000 --- a/packages/app/src/plugins.ts +++ /dev/null @@ -1 +0,0 @@ -export { argocdPlugin } from '@roadiehq/backstage-plugin-argo-cd'; diff --git a/packages/backend/package.json b/packages/backend/package.json index 3391c11..cb79c40 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -35,6 +35,7 @@ "@backstage/plugin-search-backend-module-pg": "^0.4.2", "@backstage/plugin-search-backend-node": "^1.0.4", "@backstage/plugin-techdocs-backend": "^1.4.1", + "@roadiehq/backstage-plugin-argo-cd-backend": "^2.6.1", "app": "link:../app", "better-sqlite3": "^7.5.0", "dockerode": "^3.3.1", diff --git a/packages/backend/src/index.ts b/packages/backend/src/index.ts index 121ea09..0ad5a01 100644 --- a/packages/backend/src/index.ts +++ b/packages/backend/src/index.ts @@ -24,6 +24,7 @@ import { PluginEnvironment } from './types'; import { ServerPermissionClient } from '@backstage/plugin-permission-node'; import { DefaultIdentityClient } from '@backstage/plugin-auth-node'; import kubernetes from './plugins/kubernetes'; +import argocd from './plugins/argocd'; function makeCreateEnv(config: Config) { const root = getRootLogger(); @@ -79,6 +80,7 @@ async function main() { const searchEnv = useHotMemoize(module, () => createEnv('search')); const appEnv = useHotMemoize(module, () => createEnv('app')); const kubernetesEnv = useHotMemoize(module, () => createEnv('kubernetes')); + const argocdEnv = useHotMemoize(module, () => createEnv('argocd')); const apiRouter = Router(); apiRouter.use('/catalog', await catalog(catalogEnv)); @@ -88,6 +90,7 @@ async function main() { apiRouter.use('/proxy', await proxy(proxyEnv)); apiRouter.use('/search', await search(searchEnv)); apiRouter.use('/kubernetes', await kubernetes(kubernetesEnv)); + apiRouter.use('/argocd', await argocd(argocdEnv)); // Add backends ABOVE this line; this 404 handler is the catch-all fallback apiRouter.use(notFoundHandler()); diff --git a/packages/backend/src/plugins/argocd.ts b/packages/backend/src/plugins/argocd.ts new file mode 100644 index 0000000..3e41f77 --- /dev/null +++ b/packages/backend/src/plugins/argocd.ts @@ -0,0 +1,9 @@ +import { createRouter } from '@roadiehq/backstage-plugin-argo-cd-backend'; +import { PluginEnvironment } from '../types'; + +export default async function createPlugin({ + logger, + config, +}: PluginEnvironment) { + return await createRouter({ logger, config }); +} diff --git a/yarn.lock b/yarn.lock index 63da592..be7ea52 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1272,6 +1272,62 @@ "@material-ui/core" "^4.12.2" "@material-ui/icons" "^4.9.1" +"@backstage/backend-common@^0.15.2": + version "0.15.2" + resolved "https://registry.yarnpkg.com/@backstage/backend-common/-/backend-common-0.15.2.tgz#cfe3968bd88191051ade221b8f0c26763b5be5a3" + integrity sha512-vai5DaMIuEUGcqEIZVoGAgtc3kaRo84qD3ao1nOOsL0G05wuuE4BYl9Ip3nPpHKXgUgcS5uRR1qMyIu3jTN7nQ== + dependencies: + "@backstage/cli-common" "^0.1.10" + "@backstage/config" "^1.0.3" + "@backstage/config-loader" "^1.1.5" + "@backstage/errors" "^1.1.2" + "@backstage/integration" "^1.3.2" + "@backstage/types" "^1.0.0" + "@google-cloud/storage" "^6.0.0" + "@keyv/redis" "^2.2.3" + "@kubernetes/client-node" "^0.17.0" + "@manypkg/get-packages" "^1.1.3" + "@octokit/rest" "^19.0.3" + "@types/cors" "^2.8.6" + "@types/dockerode" "^3.3.0" + "@types/express" "^4.17.6" + "@types/luxon" "^3.0.0" + "@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 "^13.0.0" + helmet "^6.0.0" + isomorphic-git "^1.8.0" + jose "^4.6.0" + keyv "^4.0.3" + keyv-memcache "^1.2.5" + knex "^2.0.0" + lodash "^4.17.21" + logform "^2.3.2" + luxon "^3.0.0" + 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" + request "^2.88.2" + selfsigned "^2.0.0" + stoppable "^1.1.0" + tar "^6.1.2" + uuid "^8.3.2" + winston "^3.2.1" + yauzl "^2.10.0" + yn "^4.0.0" + "@backstage/backend-common@^0.16.0": version "0.16.0" resolved "https://registry.yarnpkg.com/@backstage/backend-common/-/backend-common-0.16.0.tgz#cc26f26741a7ff208df28074d8e9395da2e87e09" @@ -1362,7 +1418,7 @@ winston "^3.2.1" zod "^3.9.5" -"@backstage/catalog-client@^1.1.2": +"@backstage/catalog-client@^1.1.1", "@backstage/catalog-client@^1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@backstage/catalog-client/-/catalog-client-1.1.2.tgz#79a197e05e43944e3f0a0957ac423964dc6ba810" integrity sha512-df7CllJYw8bWhCbKXJmqKYJ6jpkij/QJBqKX78xSaGQjMjpu3AjOV92fu3j6Vnp19/V8bG1FAULwHjNCIqfhOg== @@ -1371,7 +1427,7 @@ "@backstage/errors" "^1.1.3" cross-fetch "^3.1.5" -"@backstage/catalog-model@^1.1.2", "@backstage/catalog-model@^1.1.3": +"@backstage/catalog-model@^1.1.3": version "1.1.3" resolved "https://registry.yarnpkg.com/@backstage/catalog-model/-/catalog-model-1.1.3.tgz#e7059dc4f7fd06e029631092fd8de63ae8876361" integrity sha512-fqv/HV+YtBf1hTg81P9gzaKdefTmAvh+utL8ggaZcXchYxOb5wyFhze4Gbf86wtf50ABj0Y7LxKFuGJGKNKqwQ== @@ -1492,7 +1548,7 @@ yn "^4.0.0" zod "^3.11.6" -"@backstage/config-loader@^1.1.6": +"@backstage/config-loader@^1.1.5", "@backstage/config-loader@^1.1.6": version "1.1.6" resolved "https://registry.yarnpkg.com/@backstage/config-loader/-/config-loader-1.1.6.tgz#ae1ff3b81031fc36aa6ec8c4cd142f9f1089017b" integrity sha512-gW2ZnfjpH4V3FtXVqrZEscsN5hitiKyHDP+rlOpySQGfkwho9MBWnEpgsPJnMx9hs9LjNfv5qseElQJ+y/SgYA== @@ -1536,49 +1592,6 @@ zen-observable "^0.8.15" zod "^3.11.6" -"@backstage/core-components@^0.11.2": - version "0.11.2" - resolved "https://registry.yarnpkg.com/@backstage/core-components/-/core-components-0.11.2.tgz#772a3f3e6b7a765a8f619e9e2b93ebeab5a7288a" - integrity sha512-ydWRl3rOPxLGYhKojBEW7Z2ImMeG+eN0JIMaYwbsCgxE80zIewtEDTLlmd2jbTWnmP6gKftytt/NAlGM1qtu0g== - dependencies: - "@backstage/config" "^1.0.3" - "@backstage/core-plugin-api" "^1.0.7" - "@backstage/errors" "^1.1.2" - "@backstage/theme" "^0.2.16" - "@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" "^15.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.4.0" - react-helmet "6.1.0" - react-hook-form "^7.12.2" - react-markdown "^8.0.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-components@^0.12.0": version "0.12.0" resolved "https://registry.yarnpkg.com/@backstage/core-components/-/core-components-0.12.0.tgz#965f1fa5be276c1320b485dc0c2fc1305b94385e" @@ -1622,7 +1635,7 @@ zen-observable "^0.8.15" zod "^3.11.6" -"@backstage/core-plugin-api@^1.0.7", "@backstage/core-plugin-api@^1.1.0": +"@backstage/core-plugin-api@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@backstage/core-plugin-api/-/core-plugin-api-1.1.0.tgz#eceb5382ddec407accd37d6ac43473a76eb6010b" integrity sha512-m/LzmCb5wjb98zyFu5xD/e+JZzzaHU4iI2dBfk0LVCiN4KhodH6QcqpDveX+5aImivW1eJULwNQbquWRd8Avmw== @@ -1658,7 +1671,7 @@ "@material-ui/lab" "4.0.0-alpha.57" react-use "^17.2.4" -"@backstage/integration@^1.4.0": +"@backstage/integration@^1.3.2", "@backstage/integration@^1.4.0": version "1.4.0" resolved "https://registry.yarnpkg.com/@backstage/integration/-/integration-1.4.0.tgz#b97ebf432cc5ba5ea01620e81ee585632c15ab9e" integrity sha512-zpQq4vKi+9efQVaidcoKTr7GRkEClTJLRzPDYYFrU1fFRWcWmqu7dKGhmCLLLJsQHCLOsRvMEPlPRU2XDcbgNA== @@ -1909,7 +1922,7 @@ "@backstage/plugin-catalog-common" "^1.0.8" "@backstage/types" "^1.0.1" -"@backstage/plugin-catalog-react@^1.2.0", "@backstage/plugin-catalog-react@^1.2.1": +"@backstage/plugin-catalog-react@^1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@backstage/plugin-catalog-react/-/plugin-catalog-react-1.2.1.tgz#98396ebfb0e368e9af4d7f85838def7804f5db3c" integrity sha512-jMAmcGAM0RtAZGW18ilyPvZMoxhkBvnkIxZBIT+zoacTetOdMKlvRlWah0qlEYIdz2drISCpD2c+frC4Cgwtsw== @@ -2518,12 +2531,12 @@ dependencies: "@material-ui/core" "^4.12.2" -"@backstage/types@^1.0.1": +"@backstage/types@^1.0.0", "@backstage/types@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@backstage/types/-/types-1.0.1.tgz#9a64515ca5683d7f4f1c9a36c7ef84cab1af7c09" integrity sha512-iSaeCzTczIWQ/Kq1gk9HP3U62jEnCj6O/AfcJv0ahyeGdTjlL9og6lgeL/FClOauBWwFFcqF+a8eehdCfFmfng== -"@backstage/version-bridge@^1.0.1", "@backstage/version-bridge@^1.0.2": +"@backstage/version-bridge@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@backstage/version-bridge/-/version-bridge-1.0.2.tgz#18cda0fb347ee3f47b1a99a6ceb39856a799f9ba" integrity sha512-R4SCYi4JAgFmW8zu4G7lXp+SlkPD9bFHx4Sw7ThovxdWtFaE82sAGkVzvaSEEksfrPn3mj+FKt6Hh9D9N/aKHA== @@ -3228,7 +3241,7 @@ json-buffer "^3.0.1" memjs "^1.3.0" -"@keyv/redis@^2.5.3": +"@keyv/redis@^2.2.3", "@keyv/redis@^2.5.3": version "2.5.3" resolved "https://registry.yarnpkg.com/@keyv/redis/-/redis-2.5.3.tgz#d1ba21bd55afa13cb74167ecf9f6d960302192cb" integrity sha512-IY5CaiAjGypK4Bky1xepYoKg2af5oIyX03qO6ww8QmZlYhcS8iaKs/SfIHV/bCHh5fA3MVuV/m/VebMXgrBo5w== @@ -3263,6 +3276,28 @@ underscore "^1.9.1" ws "^7.3.1" +"@kubernetes/client-node@^0.17.0": + version "0.17.1" + resolved "https://registry.yarnpkg.com/@kubernetes/client-node/-/client-node-0.17.1.tgz#a5740712848d77823e7d0eee70229936398b4142" + integrity sha512-qXANjukuTq/drb1hq1NCYZafpdRTvbyTzbliWO6RwW7eEb2b9qwINbw0DiVHpBQg3e9DeQd8+brI1sR1Fck5kQ== + dependencies: + byline "^5.0.0" + execa "5.0.0" + isomorphic-ws "^4.0.1" + js-yaml "^4.1.0" + jsonpath-plus "^0.19.0" + request "^2.88.0" + rfc4648 "^1.3.0" + shelljs "^0.8.5" + stream-buffers "^3.0.2" + tar "^6.1.11" + tmp-promise "^3.0.2" + tslib "^1.9.3" + underscore "^1.9.1" + ws "^7.3.1" + optionalDependencies: + openid-client "^5.1.6" + "@leichtgewicht/ip-codec@^2.0.1": version "2.0.4" resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" @@ -3998,7 +4033,7 @@ react-double-scrollbar "0.0.15" uuid "^3.4.0" -"@material-ui/core@^4.11.0", "@material-ui/core@^4.12.2", "@material-ui/core@^4.9.13": +"@material-ui/core@^4.12.2", "@material-ui/core@^4.9.13": version "4.12.4" resolved "https://registry.yarnpkg.com/@material-ui/core/-/core-4.12.4.tgz#4ac17488e8fcaf55eb6a7f5efb2a131e10138a73" integrity sha512-tr7xekNlM9LjA6pagJmL8QCgZXaubWUwkJnoYcMKd4gw/t4XiyvnTkjdGrUVicyB2BsdaAv1tvow45bPM4sSwQ== @@ -4023,17 +4058,6 @@ dependencies: "@babel/runtime" "^7.4.4" -"@material-ui/lab@4.0.0-alpha.45": - version "4.0.0-alpha.45" - resolved "https://registry.yarnpkg.com/@material-ui/lab/-/lab-4.0.0-alpha.45.tgz#6e1abbdd6e44b9ef7b3eff8ef892a3da5dc52f10" - integrity sha512-zT6kUU87SHsPukiu3tlWg8V6o0tGS38c1b/xst/kPqX6eLbfqrROyxhHn1A8ZtHmqga1AKQdv/1llQoG80Afww== - dependencies: - "@babel/runtime" "^7.4.4" - "@material-ui/utils" "^4.7.1" - clsx "^1.0.4" - prop-types "^15.7.2" - react-is "^16.8.0" - "@material-ui/lab@4.0.0-alpha.57": version "4.0.0-alpha.57" resolved "https://registry.yarnpkg.com/@material-ui/lab/-/lab-4.0.0-alpha.57.tgz#e8961bcf6449e8a8dabe84f2700daacfcafbf83a" @@ -4094,7 +4118,7 @@ resolved "https://registry.yarnpkg.com/@material-ui/types/-/types-5.1.0.tgz#efa1c7a0b0eaa4c7c87ac0390445f0f88b0d88f2" integrity sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A== -"@material-ui/utils@^4.11.2", "@material-ui/utils@^4.11.3", "@material-ui/utils@^4.7.1": +"@material-ui/utils@^4.11.2", "@material-ui/utils@^4.11.3": version "4.11.3" resolved "https://registry.yarnpkg.com/@material-ui/utils/-/utils-4.11.3.tgz#232bd86c4ea81dab714f21edad70b7fdf0253942" integrity sha512-ZuQPV4rBK/V1j2dIkSSEcH5uT6AaHuKWFfotADHsC0wVL1NLd2WkFCm4ZZbX33iO4ydl6V0GPngKm8HZQ2oujg== @@ -4704,28 +4728,20 @@ lodash "^4.17.15" lodash-es "^4.17.15" -"@roadiehq/backstage-plugin-argo-cd@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@roadiehq/backstage-plugin-argo-cd/-/backstage-plugin-argo-cd-2.2.1.tgz#cd5963e835d36cdc91515b01d1da2ade3a784e60" - integrity sha512-vxZc8uMObSQfYEWW/oTPCUpwnxg44UvzrRtpg7zbH5JbyOmTynlhXcGPLeAZuYnDEgo7m7pLfkl3CkEdWK07fw== +"@roadiehq/backstage-plugin-argo-cd-backend@^2.6.1": + version "2.6.1" + resolved "https://registry.yarnpkg.com/@roadiehq/backstage-plugin-argo-cd-backend/-/backstage-plugin-argo-cd-backend-2.6.1.tgz#f53783577b0acc8a7e9956382c9bf97a86572faa" + integrity sha512-4o84Mm+fIOkh5HRGQwgCqsGwn9qoYt+tHfxU6m2C+4J6yg5mcioKrsrsRcc9sGm0fMoSwq1B04JPpVgzrp6seA== dependencies: - "@backstage/catalog-model" "^1.1.2" - "@backstage/core-components" "^0.11.2" - "@backstage/core-plugin-api" "^1.0.7" - "@backstage/plugin-catalog-react" "^1.2.0" - "@backstage/theme" "^0.2.16" - "@material-ui/core" "^4.11.0" - "@material-ui/icons" "^4.9.1" - "@material-ui/lab" "4.0.0-alpha.45" + "@backstage/backend-common" "^0.15.2" + "@backstage/catalog-client" "^1.1.1" + "@backstage/config" "^1.0.3" + "@types/express" "^4.17.6" cross-fetch "^3.1.4" - date-fns "^2.21.1" - fp-ts "^2.10.0" - history "^5.0.0" - io-ts "^2.2.16" - io-ts-promise "^2.0.2" - io-ts-reporters "^1.2.2" - moment "^2.29.1" - react-use "^17.2.4" + express "^4.17.1" + express-promise-router "^4.1.0" + winston "^3.2.1" + yn "^4.0.0" "@rollup/plugin-commonjs@^22.0.0": version "22.0.2" @@ -8582,7 +8598,7 @@ dataloader@^2.0.0: resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-2.1.0.tgz#c69c538235e85e7ac6c6c444bae8ecabf5de9df7" integrity sha512-qTcEYLen3r7ojZNgVUaRggOI+KM7jrKxXeSHhogh/TWxYMeONEMqY+hmkobiYQozsGIyg9OYVzO4ZIfoB4I0pQ== -date-fns@^2.16.1, date-fns@^2.21.1: +date-fns@^2.16.1: version "2.29.3" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.3.tgz#27402d2fc67eb442b511b70bbdf98e6411cd68a8" integrity sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA== @@ -8677,18 +8693,6 @@ dedent@^0.7.0: resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== -deep-equal@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" - integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== - dependencies: - is-arguments "^1.0.4" - is-date-object "^1.0.1" - is-regex "^1.0.4" - object-is "^1.0.1" - object-keys "^1.1.1" - regexp.prototype.flags "^1.2.0" - deep-equal@^2.0.5: version "2.1.0" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.1.0.tgz#5ba60402cf44ab92c2c07f3f3312c3d857a0e1dd" @@ -10444,11 +10448,6 @@ forwarded@0.2.0: resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== -fp-ts@^2.10.0: - version "2.13.1" - resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-2.13.1.tgz#1bf2b24136cca154846af16752dc29e8fa506f2a" - integrity sha512-0eu5ULPS2c/jsa1lGFneEFFEdTbembJv8e4QKXeVJ3lm/5hyve06dlKZrpxmMwJt6rYen7sxmHHK2CLaXvWuWQ== - fresh@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" @@ -11669,23 +11668,6 @@ invariant@^2.2.2: dependencies: loose-envify "^1.0.0" -io-ts-promise@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/io-ts-promise/-/io-ts-promise-2.0.2.tgz#e034d10f269669c852887636f5bd1ce706bbc661" - integrity sha512-heFR4LRkdEgTCwTzH/YI7FL/18/oWVFipzdwBWOq7GZVM4oLK33HXITDkaTSFkmKTk9zcGGreHHhNxI8RY8jsg== - dependencies: - deep-equal "^1.1.0" - -io-ts-reporters@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/io-ts-reporters/-/io-ts-reporters-1.2.2.tgz#4d3219777ea5219c7d8f6ffac01fd68e72426dd1" - integrity sha512-igASwWWkDY757OutNcM6zTtdJf/eTZYkoe2ymsX2qpm5bKZLo74FJYjsCtMQOEdY7dRHLLEulCyFQwdN69GBCg== - -io-ts@^2.2.16: - version "2.2.19" - resolved "https://registry.yarnpkg.com/io-ts/-/io-ts-2.2.19.tgz#4ba5e120472a0a07ff693fdb3d7075ea1c1b77c3" - integrity sha512-ED0GQwvKRr5C2jqOOJCkuJW2clnbzqFexQ8V7Qsb+VB36S1Mk/OKH7k0FjSe4mjKy9qBRA3OqgVGyFMUEKIubw== - ioredis@^5.2.4: version "5.2.4" resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-5.2.4.tgz#9e262a668bc29bae98f2054c1e0d7efd86996b96" @@ -11979,7 +11961,7 @@ is-reference@^1.2.1: dependencies: "@types/estree" "*" -is-regex@^1.0.4, is-regex@^1.1.4: +is-regex@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== @@ -13093,6 +13075,14 @@ jwt-decode@^3.1.0: resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-3.1.2.tgz#3fb319f3675a2df0c2895c8f5e9fa4b67b04ed59" integrity sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A== +keyv-memcache@^1.2.5: + version "1.3.3" + resolved "https://registry.yarnpkg.com/keyv-memcache/-/keyv-memcache-1.3.3.tgz#07343ae4e4cc1373ecca83657c246c616f9b0b7d" + integrity sha512-7k+0Ju2KPkS+a22MdgUW/MPAYyo736joxfrWFUsgiUY7ssu/tT6hxfWjxubQBNeG93dHRTBAF0oFUtSSVYTW0Q== + dependencies: + json-buffer "^3.0.1" + memjs "^1.3.0" + keyv@*, keyv@^4.0.0: version "4.5.0" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.0.tgz#dbce9ade79610b6e641a9a65f2f6499ba06b9bc6" @@ -13100,7 +13090,7 @@ keyv@*, keyv@^4.0.0: dependencies: json-buffer "3.0.1" -keyv@^4.5.2: +keyv@^4.0.3, keyv@^4.5.2: version "4.5.2" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.2.tgz#0e310ce73bf7851ec702f2eaf46ec4e3805cce56" integrity sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g== @@ -14476,11 +14466,6 @@ modify-values@^1.0.0: resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== -moment@^2.29.1: - version "2.29.4" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" - integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== - morgan@^1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.10.0.tgz#091778abc1fc47cd3509824653dae1faab6b17d7" @@ -14997,7 +14982,7 @@ object-inspect@^1.12.2, object-inspect@^1.9.0: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== -object-is@^1.0.1, object-is@^1.1.5: +object-is@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== @@ -16698,7 +16683,7 @@ react-inspector@^6.0.1: resolved "https://registry.yarnpkg.com/react-inspector/-/react-inspector-6.0.1.tgz#1a37f0165d9df81ee804d63259eaaeabe841287d" integrity sha512-cxKSeFTf7jpSSVddm66sKdolG90qURAX3g1roTeaN6x0YEbtWc8JpmFN9+yIqLNH2uEkYerWLtJZIXRIFuBKrg== -react-is@^16.12.0, react-is@^16.13.1, react-is@^16.7.0, react-is@^16.8.0, react-is@^16.9.0: +react-is@^16.12.0, react-is@^16.13.1, react-is@^16.7.0, react-is@^16.9.0: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -17106,7 +17091,7 @@ regenerator-transform@^0.15.0: dependencies: "@babel/runtime" "^7.8.4" -regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.4.3: +regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==