diff --git a/examples/k8s-apply/skeleton/cm.yaml b/examples/k8s-apply/skeleton/cm.yaml new file mode 100644 index 0000000..624feac --- /dev/null +++ b/examples/k8s-apply/skeleton/cm.yaml @@ -0,0 +1,17 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: game-demo +data: + # property-like keys; each key maps to a simple value + player_initial_lives: "3" + ui_properties_file_name: "user-interface.properties" + + # file-like keys + game.properties: | + enemy.types=aliens,monsters + player.maximum-lives=5 + user-interface.properties: | + color.good=purple + color.bad=yellow + allow.textmode=true diff --git a/examples/k8s-apply/template.yaml b/examples/k8s-apply/template.yaml new file mode 100644 index 0000000..3f097c3 --- /dev/null +++ b/examples/k8s-apply/template.yaml @@ -0,0 +1,30 @@ +apiVersion: scaffolder.backstage.io/v1beta3 +kind: Template +metadata: + name: deploy-resources + title: Deploy Resources + description: Deploy Resource to Kubernetes +spec: + owner: guest + type: service + # these are the steps which are rendered in the frontend with the form input + parameters: + - title: file name + properties: + path: + type: string + description: file name + default: cm.yaml + steps: + - id: template + name: Generating component + action: fetch:template + input: + url: ./skeleton + - id: apply + name: apply-manifest + action: cnoe:kubernetes:apply + input: + namespaced: true + manifestPath: cm.yaml + clusterName: local diff --git a/packages/backend/package.json b/packages/backend/package.json index 793c00c..48c0316 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -41,6 +41,7 @@ "@backstage/plugin-search-backend-node": "~1.2.13", "@backstage/plugin-techdocs-backend": "~1.9.2", "@backstage/types": "~1.1.1", + "@kubernetes/client-node": "~0.20.0", "@roadiehq/backstage-plugin-argo-cd-backend": "~2.14.0", "@roadiehq/scaffolder-backend-module-utils": "~1.13.1", "app": "link:../app", @@ -48,6 +49,7 @@ "dockerode": "^3.3.1", "express": "^4.17.1", "express-promise-router": "^4.1.0", + "fs-extra": "~11.2.0", "node-gyp": "^9.0.0", "pg": "^8.11.3", "winston": "^3.2.1" @@ -57,6 +59,7 @@ "@types/dockerode": "^3.3.0", "@types/express": "^4.17.6", "@types/express-serve-static-core": "^4.17.5", + "@types/fs-extra": "^11.0.4", "@types/luxon": "^2.0.4" }, "files": [ diff --git a/packages/backend/src/plugins/k8s-apply.ts b/packages/backend/src/plugins/k8s-apply.ts new file mode 100644 index 0000000..0810cb1 --- /dev/null +++ b/packages/backend/src/plugins/k8s-apply.ts @@ -0,0 +1,171 @@ +import { createTemplateAction, executeShellCommand} from '@backstage/plugin-scaffolder-node'; +import { dumpYaml } from '@kubernetes/client-node'; +import YAML from 'yaml'; +import { Config } from '@backstage/config'; +import { resolveSafeChildPath } from '@backstage/backend-common'; +import fs from 'fs-extra'; + +export const createKubernetesApply = (config: Config) => { + return createTemplateAction<{ + manifestString?: string; + manifestObject?: any; + manifestPath?: string; + namespaced: boolean; + clusterName?: string; + }>({ + id: 'cnoe:kubernetes:apply', + schema: { + input: { + type: 'object', + required: ['namespaced'], + properties: { + manifestString: { + type: 'string', + title: 'Manifest', + description: + 'The manifest to apply in the cluster. Must be a string', + }, + manifestObject: { + type: 'object', + title: 'Manifest', + description: + 'The manifest to apply in the cluster. Must be an object', + }, + manifestPath: { + type: 'string', + title: 'Path to the manifest file', + description: 'The path to the manifest file.', + }, + namespaced: { + type: 'boolean', + title: 'Namespaced', + description: 'Whether the API is namespaced or not', + }, + clusterName: { + type: 'string', + title: 'Cluster Name', + description: 'The name of the cluster to apply this', + }, + }, + }, + output: { + type: 'object', + title: 'Returned object', + description: + 'The object returned by Kubernetes by performing this operation', + }, + }, + async handler(ctx) { + let obj: any; + if (ctx.input.manifestString) { + obj = YAML.parse(ctx.input.manifestString); + } else if (ctx.input.manifestObject) { + obj = ctx.input.manifestObject; + } else { + const filePath = resolveSafeChildPath( + ctx.workspacePath, + ctx.input.manifestPath!, + ); + const fileContent = fs.readFileSync(filePath, 'utf8'); + obj = YAML.parse(fileContent); + } + + if (ctx.input.clusterName) { + // Supports SA token authentication only + const targetCluster = getClusterConfig(ctx.input.clusterName!, config); + const confFile = { + apiVersion: 'v1', + kind: 'Config', + 'current-context': ctx.input.clusterName, + contexts: [ + { + name: ctx.input.clusterName, + context: { + cluster: ctx.input.clusterName, + user: ctx.input.clusterName, + }, + }, + ], + clusters: [ + { + name: ctx.input.clusterName, + cluster: { + 'certificate-authority-data': targetCluster.getOptionalString('caData'), + server: targetCluster.getString('url'), + 'insecure-skip-tls-verify': !!targetCluster.getOptionalBoolean('skipTLSVerify'), + }, + }, + ], + users: [ + { + name: ctx.input.clusterName, + user: { + token: targetCluster.getString('serviceAccountToken'), + }, + }, + ], + }; + + if (!confFile.clusters[0].cluster["insecure-skip-tls-verify"]) { + let caDataRaw = targetCluster.getOptionalString('caData') + if (caDataRaw?.startsWith('-----BEGIN CERTIFICATE-----')) { + caDataRaw = Buffer.from(targetCluster.getString('caData'), 'utf8').toString( + 'base64', + ); + } + confFile.clusters[0].cluster['certificate-authority-data'] = caDataRaw + } + + const confString = dumpYaml(confFile); + const confFilePath = resolveSafeChildPath(ctx.workspacePath, 'config'); + fs.writeFileSync(confFilePath, confString, { + encoding: 'utf8', + mode: '600', + }); + const manifestPath = resolveSafeChildPath( + ctx.workspacePath, + ctx.input.manifestPath!, + ); + if (obj.metadata.generateName !== undefined) { + await executeShellCommand({ + command: 'kubectl', + args: ['--kubeconfig', confFilePath, 'create', '-f', manifestPath], + logStream: ctx.logStream, + }); + return; + } + await executeShellCommand({ + command: 'kubectl', + args: ['--kubeconfig', confFilePath, 'apply', '-f', manifestPath], + logStream: ctx.logStream, + }); + return; + } + throw new Error("please specify a valid cluster name") + }, + }); +}; + +// Finds the first cluster that matches the given name. +function getClusterConfig(name: string, config: Config): Config { + const clusterConfigs = config + .getConfigArray('kubernetes.clusterLocatorMethods') + .filter((val: Config) => { + return val.getString('type') === 'config'; + }); + + const clusters = new Array(); + clusterConfigs.filter((conf: Config) => { + const cluster = conf.getConfigArray('clusters').find((val: Config) => { + return val.getString('name') === name; + }); + if (cluster) { + clusters.push(cluster); + } + }); + + if (clusters.length === 0) { + throw new Error(`Cluster with name ${name} not found`); + } + return clusters[0]; +} diff --git a/packages/backend/src/plugins/scaffolder.ts b/packages/backend/src/plugins/scaffolder.ts index a577370..b0a31b3 100644 --- a/packages/backend/src/plugins/scaffolder.ts +++ b/packages/backend/src/plugins/scaffolder.ts @@ -21,6 +21,7 @@ import { createJsonJSONataTransformAction, createReplaceInFileAction } from '@roadiehq/scaffolder-backend-module-utils'; +import {createKubernetesApply} from "./k8s-apply"; export default async function createPlugin( env: PluginEnvironment, @@ -48,7 +49,8 @@ export default async function createPlugin( const cnoeActions = [ createPublishGiteaAction(options), - createArgoCDApp(argocdOptions) + createArgoCDApp(argocdOptions), + createKubernetesApply(env.config) ] const roadieUtilActions = [ diff --git a/yarn.lock b/yarn.lock index fd8d6f3..3854156 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2064,21 +2064,21 @@ "@material-ui/core" "^4.12.2" "@material-ui/icons" "^4.9.1" -"@backstage/backend-app-api@^0.5.10", "@backstage/backend-app-api@^0.5.8": - version "0.5.10" - resolved "https://registry.npmmirror.com/@backstage/backend-app-api/-/backend-app-api-0.5.10.tgz#ec0cbebe9c2aebdfce6605bcafb8696bb1959a02" - integrity sha512-eD6CeHWaNsSjs3zHgQ8qio4kzqtnIgzAH71aUwaiOiiibtsBiueRCCmYNbibbEh/9eSZEm6nl0eIk0bKCDvnHQ== +"@backstage/backend-app-api@^0.5.10", "@backstage/backend-app-api@^0.5.14", "@backstage/backend-app-api@^0.5.8": + version "0.5.14" + resolved "https://registry.npmmirror.com/@backstage/backend-app-api/-/backend-app-api-0.5.14.tgz#a110bdbebc3b8b1b302b0726b7c92b2742fb5e3f" + integrity sha512-Sqd5WRkp5x0JxK0ms5shes+VXmJ/t9++Z88CR8N3oBtp3H0t+iKewxOlgHhvYZKPyPiVCXZqKu7eCWH9UZ+Gqg== dependencies: - "@backstage/backend-common" "^0.20.1" - "@backstage/backend-plugin-api" "^0.6.9" - "@backstage/backend-tasks" "^0.5.14" + "@backstage/backend-common" "^0.21.3" + "@backstage/backend-plugin-api" "^0.6.13" + "@backstage/backend-tasks" "^0.5.18" "@backstage/cli-common" "^0.1.13" - "@backstage/cli-node" "^0.2.2" + "@backstage/cli-node" "^0.2.3" "@backstage/config" "^1.1.1" - "@backstage/config-loader" "^1.6.1" + "@backstage/config-loader" "^1.6.2" "@backstage/errors" "^1.2.3" - "@backstage/plugin-auth-node" "^0.4.3" - "@backstage/plugin-permission-node" "^0.7.20" + "@backstage/plugin-auth-node" "^0.4.8" + "@backstage/plugin-permission-node" "^0.7.24" "@backstage/types" "^1.1.1" "@manypkg/get-packages" "^1.1.3" "@types/cors" "^2.8.6" @@ -2087,7 +2087,7 @@ cors "^2.8.5" express "^4.17.1" express-promise-router "^4.1.0" - fs-extra "10.1.0" + fs-extra "^11.2.0" helmet "^6.0.0" lodash "^4.17.21" logform "^2.3.2" @@ -2222,10 +2222,71 @@ yauzl "^2.10.0" yn "^4.0.0" -"@backstage/backend-dev-utils@^0.1.2", "@backstage/backend-dev-utils@^0.1.3": - version "0.1.3" - resolved "https://registry.npmmirror.com/@backstage/backend-dev-utils/-/backend-dev-utils-0.1.3.tgz#31412b8e14027718a7cf229474e032acd862a1a3" - integrity sha512-vq0zdpiAuMMAsaWavpCwmA4psi2EFoYmDEP5Kk9xU+jcDMTAH+ArNY+sn6fZ/6cA7IJEYNu6pFFEAXfn+dh6yg== +"@backstage/backend-common@^0.21.3": + version "0.21.3" + resolved "https://registry.npmmirror.com/@backstage/backend-common/-/backend-common-0.21.3.tgz#67d757d1ff81a79121bdbe80b3032542f5ff571f" + integrity sha512-kqJ5p/Cd3dRcvVoVLIo6kYi5MMy5/uQBibt92o4QKHclagPJ2KLKJOUXwDpAtCw8MLe4Dtms9hj19SoU+wsFCQ== + dependencies: + "@aws-sdk/abort-controller" "^3.347.0" + "@aws-sdk/client-s3" "^3.350.0" + "@aws-sdk/credential-providers" "^3.350.0" + "@aws-sdk/types" "^3.347.0" + "@backstage/backend-app-api" "^0.5.14" + "@backstage/backend-dev-utils" "^0.1.4" + "@backstage/backend-plugin-api" "^0.6.13" + "@backstage/cli-common" "^0.1.13" + "@backstage/config" "^1.1.1" + "@backstage/config-loader" "^1.6.2" + "@backstage/errors" "^1.2.3" + "@backstage/integration" "^1.9.0" + "@backstage/integration-aws-node" "^0.1.9" + "@backstage/types" "^1.1.1" + "@google-cloud/storage" "^7.0.0" + "@keyv/memcache" "^1.3.5" + "@keyv/redis" "^2.5.3" + "@kubernetes/client-node" "0.20.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 "^6.0.0" + base64-stream "^1.0.0" + compression "^1.7.4" + concat-stream "^2.0.0" + cors "^2.8.5" + dockerode "^4.0.0" + express "^4.17.1" + express-promise-router "^4.1.0" + fs-extra "^11.2.0" + git-url-parse "^14.0.0" + helmet "^6.0.0" + isomorphic-git "^1.23.0" + jose "^4.6.0" + keyv "^4.5.2" + knex "^3.0.0" + lodash "^4.17.21" + logform "^2.3.2" + luxon "^3.0.0" + minimatch "^5.0.0" + mysql2 "^2.2.5" + node-fetch "^2.6.7" + p-limit "^3.1.0" + pg "^8.11.3" + raw-body "^2.4.1" + tar "^6.1.12" + uuid "^8.3.2" + winston "^3.2.1" + winston-transport "^4.5.0" + yauzl "^2.10.0" + yn "^4.0.0" + +"@backstage/backend-dev-utils@^0.1.2", "@backstage/backend-dev-utils@^0.1.3", "@backstage/backend-dev-utils@^0.1.4": + version "0.1.4" + resolved "https://registry.npmmirror.com/@backstage/backend-dev-utils/-/backend-dev-utils-0.1.4.tgz#65d204939c49b5df6a2148e8ad4dc718ccd1df07" + integrity sha512-5YgAPz4CRtnqdaUlYCHwGmXvpkGQ1jaUMoDtiQ81WDxQrf+0iYZCwS4ftVyQmB0Ga6BaGOUf6GG/OuFA56Y5mA== "@backstage/backend-openapi-utils@^0.1.2": version "0.1.2" @@ -2244,32 +2305,32 @@ openapi-merge "^1.3.2" openapi3-ts "^3.1.2" -"@backstage/backend-plugin-api@^0.6.7", "@backstage/backend-plugin-api@^0.6.9": - version "0.6.9" - resolved "https://registry.npmmirror.com/@backstage/backend-plugin-api/-/backend-plugin-api-0.6.9.tgz#da43371efb576079dc51a023db8075ea14ba2870" - integrity sha512-NKRft/mK8SqNQw01QHGpwaAc4MhRh8HaAFtWrcQex746vMr8dqwspvr8KVALIkOodVrsS9oq4VnNDSVtnCBmUA== +"@backstage/backend-plugin-api@^0.6.13", "@backstage/backend-plugin-api@^0.6.7", "@backstage/backend-plugin-api@^0.6.9": + version "0.6.13" + resolved "https://registry.npmmirror.com/@backstage/backend-plugin-api/-/backend-plugin-api-0.6.13.tgz#26bb86cb4565fead2424faa42ac603ae98a85e5b" + integrity sha512-7SAAjx2YuZvsJHokkhh9U/cCV3az25DyqWse9BQJS4UTwDsWyebGmubtFI4SOXQKKR6U5t3ogtezYJXz+9K2Yw== dependencies: - "@backstage/backend-tasks" "^0.5.14" + "@backstage/backend-tasks" "^0.5.18" "@backstage/config" "^1.1.1" - "@backstage/plugin-auth-node" "^0.4.3" + "@backstage/plugin-auth-node" "^0.4.8" "@backstage/plugin-permission-common" "^0.7.12" "@backstage/types" "^1.1.1" "@types/express" "^4.17.6" express "^4.17.1" knex "^3.0.0" -"@backstage/backend-tasks@^0.5.14", "@backstage/backend-tasks@~0.5.14": - version "0.5.14" - resolved "https://registry.npmmirror.com/@backstage/backend-tasks/-/backend-tasks-0.5.14.tgz#0c0022339daf528ecd6d39fca891642b5ed7ddb5" - integrity sha512-bVRAOM86lhOk/tG0z+oXvPdIqtusgPxMO93WaayXbr0R7Tx4Ogp8pg49s7XU4WB7Mdq+fmyiqp1VQt0NR3FCwQ== +"@backstage/backend-tasks@^0.5.14", "@backstage/backend-tasks@^0.5.18", "@backstage/backend-tasks@~0.5.14": + version "0.5.18" + resolved "https://registry.npmmirror.com/@backstage/backend-tasks/-/backend-tasks-0.5.18.tgz#fd0aeea5f8b7fca3c1434c24ba885559124390dc" + integrity sha512-uYH/qj9OIc1Iupqf4N31HKEpTzbnNavysUkcoJFGR4+vV17gvuw3JSaLUXMK1z/soansAZHliRPktsQQ51nAqQ== dependencies: - "@backstage/backend-common" "^0.20.1" + "@backstage/backend-common" "^0.21.3" "@backstage/config" "^1.1.1" "@backstage/errors" "^1.2.3" "@backstage/types" "^1.1.1" "@opentelemetry/api" "^1.3.0" "@types/luxon" "^3.0.0" - cron "^2.0.0" + cron "^3.0.0" knex "^3.0.0" lodash "^4.17.21" luxon "^3.0.0" @@ -2277,7 +2338,17 @@ winston "^3.2.1" zod "^3.22.4" -"@backstage/catalog-client@^1.4.6", "@backstage/catalog-client@^1.5.2", "@backstage/catalog-client@~1.5.2": +"@backstage/catalog-client@^1.4.6", "@backstage/catalog-client@^1.5.2", "@backstage/catalog-client@^1.6.0": + version "1.6.0" + resolved "https://registry.npmmirror.com/@backstage/catalog-client/-/catalog-client-1.6.0.tgz#d4ba505f84a58f03177d0998becc6eb8ed54f40e" + integrity sha512-O6yoBX/BcKy89AwXmXVxNPlk0mX7jbgqYUCeIxGZr7n10A9oJx1iRj1XMub+V67yuqdfILPmh8WW+jd0N98+JA== + dependencies: + "@backstage/catalog-model" "^1.4.4" + "@backstage/errors" "^1.2.3" + cross-fetch "^4.0.0" + uri-template "^2.0.0" + +"@backstage/catalog-client@~1.5.2": version "1.5.2" resolved "https://registry.npmmirror.com/@backstage/catalog-client/-/catalog-client-1.5.2.tgz#f75e14e4e3aa473fc5db47841f531d1833e611e8" integrity sha512-hWP1Zb2KZ7owSvHdOhP+VB8eSOYbnsXz+l2OdTgMhKQS8ulGZXUW1SzA+N9PZupnQLYmZP2+2DXTpKhSEzQnnQ== @@ -2287,10 +2358,10 @@ cross-fetch "^4.0.0" uri-template "^2.0.0" -"@backstage/catalog-model@^1.4.3", "@backstage/catalog-model@~1.4.3": - version "1.4.3" - resolved "https://registry.npmmirror.com/@backstage/catalog-model/-/catalog-model-1.4.3.tgz#64abf34071d1cad6372f905b92e1d831e480750c" - integrity sha512-cfbTPWLVma/ZKxRh76aLWqSFozzXMxHoGK+Tn50dOxHHp2xmdcx5jWBtOszNJs560rR7KScD7YnImUPkNn5DWQ== +"@backstage/catalog-model@^1.4.3", "@backstage/catalog-model@^1.4.4", "@backstage/catalog-model@~1.4.3": + version "1.4.4" + resolved "https://registry.npmmirror.com/@backstage/catalog-model/-/catalog-model-1.4.4.tgz#53ebbe754c72a0e01bb7ea025af0358dc459db9c" + integrity sha512-JiCeAgUdRMQTjO0+34QeKDxYh/UQrXtDUvVic5z11uf8WuX3L9N7LiPOqJG+3t9TAyc5side21nDD7REdHoVFA== dependencies: "@backstage/errors" "^1.2.3" "@backstage/types" "^1.1.1" @@ -2302,17 +2373,17 @@ resolved "https://registry.npmmirror.com/@backstage/cli-common/-/cli-common-0.1.13.tgz#cbeda6a359ca4437fc782f0ac51bb957e8d49e73" integrity sha512-UMgNAIJSeEPSMkzxiWCP8aFR8APsG21XczDnzwHdL/41F7g2C+KA6UeQc/3tzbe8XQo+PxbNLpReZeKSSnSPSQ== -"@backstage/cli-node@^0.2.2": - version "0.2.2" - resolved "https://registry.npmmirror.com/@backstage/cli-node/-/cli-node-0.2.2.tgz#f7a6062da90a20ce9d1af161ed841fbeb96337b8" - integrity sha512-YsEeT3sAF2sxNXv7IyI/d73TEZnivSBpyiJ4STnVpFi00woN440NeRWZfqaabS1XiuGbQibxJT3xTxORw1tMFA== +"@backstage/cli-node@^0.2.2", "@backstage/cli-node@^0.2.3": + version "0.2.3" + resolved "https://registry.npmmirror.com/@backstage/cli-node/-/cli-node-0.2.3.tgz#76d31a0ccd44326d110fb3a38c0db507b79e3ddf" + integrity sha512-gSsRds/xm9nh6jV/XoOipOA8rFwlMPOAoy3vkUyB5+Z5bfEM56NSccYjPdPMt52R9zZhVWhnsMNBHVoaqr+zeg== dependencies: "@backstage/cli-common" "^0.1.13" "@backstage/errors" "^1.2.3" "@backstage/types" "^1.1.1" "@manypkg/get-packages" "^1.1.3" "@yarnpkg/parsers" "^3.0.0-rc.4" - fs-extra "10.1.0" + fs-extra "^11.2.0" semver "^7.5.3" zod "^3.22.4" @@ -2431,10 +2502,10 @@ yn "^4.0.0" zod "^3.22.4" -"@backstage/config-loader@^1.5.3", "@backstage/config-loader@^1.6.1": - version "1.6.1" - resolved "https://registry.npmmirror.com/@backstage/config-loader/-/config-loader-1.6.1.tgz#bd5bc282cddc3b26dd0346962f814bad5dbe164b" - integrity sha512-wWbM7LGrN559HPzAKMczpv2mv1OXvhtgBMCgFw0jHZx5IrR3bdRZRapFQ8rmZAtj76vSLZv58qZfpOkSR6cWVQ== +"@backstage/config-loader@^1.5.3", "@backstage/config-loader@^1.6.1", "@backstage/config-loader@^1.6.2": + version "1.6.2" + resolved "https://registry.npmmirror.com/@backstage/config-loader/-/config-loader-1.6.2.tgz#b3dea400ec18dc64e1f1236e450668fb5d27e221" + integrity sha512-RFFK1NGhg2n6OKRxkBPCO8qRmuRJ8gtEwjQdMv17V8AuaituOVDIduKW7omrq2RNr1CNJFodhGmpkHxqSkpkiQ== dependencies: "@backstage/cli-common" "^0.1.13" "@backstage/config" "^1.1.1" @@ -2443,14 +2514,14 @@ "@types/json-schema" "^7.0.6" ajv "^8.10.0" chokidar "^3.5.2" - fs-extra "10.1.0" + fs-extra "^11.2.0" json-schema "^0.4.0" json-schema-merge-allof "^0.8.1" json-schema-traverse "^1.0.0" lodash "^4.17.21" minimist "^1.2.5" node-fetch "^2.6.7" - typescript-json-schema "^0.62.0" + typescript-json-schema "^0.63.0" yaml "^2.0.0" "@backstage/config@^1.1.1", "@backstage/config@~1.1.1": @@ -2605,10 +2676,10 @@ zod "^3.22.4" zod-to-json-schema "^3.21.4" -"@backstage/integration-aws-node@^0.1.8": - version "0.1.8" - resolved "https://registry.npmmirror.com/@backstage/integration-aws-node/-/integration-aws-node-0.1.8.tgz#c0582a63e2348a42bbe172bdcd4609f024cc0051" - integrity sha512-WD/ahhk1d92ycjBOIRK2gtvuoP1nt5lNMKkfR1qsRBlgZFUPRCe7rkdELGpmRgrGBzU7ZyWfWGjLUh/Qpfva9Q== +"@backstage/integration-aws-node@^0.1.8", "@backstage/integration-aws-node@^0.1.9": + version "0.1.9" + resolved "https://registry.npmmirror.com/@backstage/integration-aws-node/-/integration-aws-node-0.1.9.tgz#66d6898e855a6a8d495d7d1bcb3bb79b6c61479c" + integrity sha512-nr3LHM9vFGtWPqWSp1lutm5+/1H6pBcMCZ2bkTn7qy/Y5Ds7l9qY+0LSMxPbIyPoaQMM2D1x/gDPEMr/pNwPAA== dependencies: "@aws-sdk/client-sts" "^3.350.0" "@aws-sdk/credential-provider-node" "^3.350.0" @@ -2630,7 +2701,22 @@ "@material-ui/icons" "^4.9.1" "@types/react" "^16.13.1 || ^17.0.0" -"@backstage/integration@^1.7.2", "@backstage/integration@^1.8.0", "@backstage/integration@~1.8.0": +"@backstage/integration@^1.7.2", "@backstage/integration@^1.8.0", "@backstage/integration@^1.9.0": + version "1.9.0" + resolved "https://registry.npmmirror.com/@backstage/integration/-/integration-1.9.0.tgz#c60b33a7ec9b3970ccd4e8d54662b686b7ad27bf" + integrity sha512-lqZcjcfLeDyHxDdmTKxiko3GX+vQCyhoNM/lgPFLJFih9TiE3V+hTc9isEfkpQqRE9dCEy1w7rgUrNHXlz0pTA== + dependencies: + "@azure/identity" "^4.0.0" + "@backstage/config" "^1.1.1" + "@backstage/errors" "^1.2.3" + "@octokit/auth-app" "^4.0.0" + "@octokit/rest" "^19.0.3" + cross-fetch "^4.0.0" + git-url-parse "^14.0.0" + lodash "^4.17.21" + luxon "^3.0.0" + +"@backstage/integration@~1.8.0": version "1.8.0" resolved "https://registry.npmmirror.com/@backstage/integration/-/integration-1.8.0.tgz#affc54e1c12c5a4e68a92de4e42c6cf001bdf6ec" integrity sha512-FCFOubvpKK2dt38sNATrImHrS0pkmvS2LPzvLQ01JzRy5F/QxsdRGxJmzB9irpLOUh7F3/Ilr7cBdG5nYyYVOA== @@ -2841,15 +2927,15 @@ winston "^3.2.1" yn "^4.0.0" -"@backstage/plugin-auth-node@^0.4.3", "@backstage/plugin-auth-node@~0.4.3": - version "0.4.3" - resolved "https://registry.npmmirror.com/@backstage/plugin-auth-node/-/plugin-auth-node-0.4.3.tgz#87522b4a29824f9f160cf4087a6b02ae7adb735d" - integrity sha512-dIavrhNjsgxSLgm7CP+sc6YdoA6J4eVuS8Jl5vmt1jhX6Gc2DZMjPRglO2QVotWa3Ucl1tBa+GZxLGOwDetAWg== +"@backstage/plugin-auth-node@^0.4.3", "@backstage/plugin-auth-node@^0.4.8", "@backstage/plugin-auth-node@~0.4.3": + version "0.4.8" + resolved "https://registry.npmmirror.com/@backstage/plugin-auth-node/-/plugin-auth-node-0.4.8.tgz#4fcc9a22ce6b9eabbe5053a51204852e5719ea65" + integrity sha512-UXk6ke1BZQKsrKRAGm0oi1ncMimIcY0KNasLtuSnqFkboHHUPzGxco57S5rK4GC1chxF8pKHZ9MTzygMAb/xeg== dependencies: - "@backstage/backend-common" "^0.20.1" - "@backstage/backend-plugin-api" "^0.6.9" - "@backstage/catalog-client" "^1.5.2" - "@backstage/catalog-model" "^1.4.3" + "@backstage/backend-common" "^0.21.3" + "@backstage/backend-plugin-api" "^0.6.13" + "@backstage/catalog-client" "^1.6.0" + "@backstage/catalog-model" "^1.4.4" "@backstage/config" "^1.1.1" "@backstage/errors" "^1.2.3" "@backstage/types" "^1.1.1" @@ -2864,16 +2950,16 @@ zod "^3.22.4" zod-to-json-schema "^3.21.4" -"@backstage/plugin-catalog-backend-module-scaffolder-entity-model@^0.1.6", "@backstage/plugin-catalog-backend-module-scaffolder-entity-model@~0.1.6": - version "0.1.6" - resolved "https://registry.npmmirror.com/@backstage/plugin-catalog-backend-module-scaffolder-entity-model/-/plugin-catalog-backend-module-scaffolder-entity-model-0.1.6.tgz#0ea62233a916b86bf3ae8ba09fd93ff007bac0f0" - integrity sha512-aGawWFUjoJAbITPUdKzF4fzTTJk5hn/bLMF33Ks5iIW1EWokPoVmDR/qErjxKXXChnVTzPwvPdBejV6HPVcs8Q== +"@backstage/plugin-catalog-backend-module-scaffolder-entity-model@^0.1.10", "@backstage/plugin-catalog-backend-module-scaffolder-entity-model@^0.1.6", "@backstage/plugin-catalog-backend-module-scaffolder-entity-model@~0.1.6": + version "0.1.10" + resolved "https://registry.npmmirror.com/@backstage/plugin-catalog-backend-module-scaffolder-entity-model/-/plugin-catalog-backend-module-scaffolder-entity-model-0.1.10.tgz#cd54fee56c0ef105cd762584adcf24c22846b34a" + integrity sha512-6iJMQzcMHJcfFyIJNbMkWIDpqNuyXWzRzAgES45Pe4ywuiHQ3Nvhrtce+4e4p7+WSZzK1smZrZOh5nkglfCvlw== dependencies: - "@backstage/backend-plugin-api" "^0.6.9" - "@backstage/catalog-model" "^1.4.3" - "@backstage/plugin-catalog-common" "^1.0.20" - "@backstage/plugin-catalog-node" "^1.6.1" - "@backstage/plugin-scaffolder-common" "^1.4.5" + "@backstage/backend-plugin-api" "^0.6.13" + "@backstage/catalog-model" "^1.4.4" + "@backstage/plugin-catalog-common" "^1.0.21" + "@backstage/plugin-catalog-node" "^1.7.3" + "@backstage/plugin-scaffolder-common" "^1.5.0" "@backstage/plugin-catalog-backend@~1.16.1": version "1.16.2" @@ -2919,12 +3005,12 @@ yn "^4.0.0" zod "^3.22.4" -"@backstage/plugin-catalog-common@^1.0.20", "@backstage/plugin-catalog-common@~1.0.20": - version "1.0.20" - resolved "https://registry.npmmirror.com/@backstage/plugin-catalog-common/-/plugin-catalog-common-1.0.20.tgz#84050135b29b0690aff613b31a427277a2c18169" - integrity sha512-jHMzUBPDqieri/psW1H0ylR57ofzPLLjlSSVbvzLAVc63DDQMWunb6UdjARAGRceeV4ea+shrhlvEx5tdG9eEQ== +"@backstage/plugin-catalog-common@^1.0.20", "@backstage/plugin-catalog-common@^1.0.21", "@backstage/plugin-catalog-common@~1.0.20": + version "1.0.21" + resolved "https://registry.npmmirror.com/@backstage/plugin-catalog-common/-/plugin-catalog-common-1.0.21.tgz#1dba78e151079cab0137158b71427276799d4104" + integrity sha512-7VA76TRzeVkfyefDVR01lAfTQnaHw2ZtlvOjIo+tSlteivZ+wEzJVq9af/ekHYlOGuDsYzDzGgc/P/eRwY67Ag== dependencies: - "@backstage/catalog-model" "^1.4.3" + "@backstage/catalog-model" "^1.4.4" "@backstage/plugin-permission-common" "^0.7.12" "@backstage/plugin-search-common" "^1.2.10" @@ -2978,18 +3064,18 @@ react-use "^17.2.4" yaml "^2.0.0" -"@backstage/plugin-catalog-node@^1.6.1": - version "1.6.1" - resolved "https://registry.npmmirror.com/@backstage/plugin-catalog-node/-/plugin-catalog-node-1.6.1.tgz#9a872dfdc562f79cb1e3a5873028abaf5ae0b4f9" - integrity sha512-mYNzcCUy9s28/SymS0p1mPmjtRQBfICAS2lFUKfKFT6pXQ7sqnC0Cxcn9ln1XjS3+ikxFC7jfYs4EOrv2DVm7w== +"@backstage/plugin-catalog-node@^1.6.1", "@backstage/plugin-catalog-node@^1.7.3": + version "1.7.3" + resolved "https://registry.npmmirror.com/@backstage/plugin-catalog-node/-/plugin-catalog-node-1.7.3.tgz#a7369ed5bebddd82adb7417b86f1670a1a9f14d8" + integrity sha512-Y6DgN2PSdUMndWjx+a8Vm6AU7NS40hzgbDfeVR50rRNMhL4g3SyTXKgiSxiijdl6eRnnUHaqt+ux5/iy/B7jCQ== dependencies: - "@backstage/backend-plugin-api" "^0.6.9" - "@backstage/catalog-client" "^1.5.2" - "@backstage/catalog-model" "^1.4.3" + "@backstage/backend-plugin-api" "^0.6.13" + "@backstage/catalog-client" "^1.6.0" + "@backstage/catalog-model" "^1.4.4" "@backstage/errors" "^1.2.3" - "@backstage/plugin-catalog-common" "^1.0.20" + "@backstage/plugin-catalog-common" "^1.0.21" "@backstage/plugin-permission-common" "^0.7.12" - "@backstage/plugin-permission-node" "^0.7.20" + "@backstage/plugin-permission-node" "^0.7.24" "@backstage/types" "^1.1.1" "@backstage/plugin-catalog-react@^1.9.1", "@backstage/plugin-catalog-react@^1.9.3", "@backstage/plugin-catalog-react@~1.9.3": @@ -3276,16 +3362,16 @@ uuid "^8.0.0" zod "^3.22.4" -"@backstage/plugin-permission-node@^0.7.20", "@backstage/plugin-permission-node@~0.7.20": - version "0.7.20" - resolved "https://registry.npmmirror.com/@backstage/plugin-permission-node/-/plugin-permission-node-0.7.20.tgz#172b1d36e5cf3cf2ead992fa495d054eea45fb11" - integrity sha512-OQD6R+n0AYC+o/jdAePrjdIYKNhssuimfx7plx7wcsTF9xz6Mpxj1zUvVp+zgDoNub2prG0Bd9H+tw0ATtAGgw== +"@backstage/plugin-permission-node@^0.7.20", "@backstage/plugin-permission-node@^0.7.24", "@backstage/plugin-permission-node@~0.7.20": + version "0.7.24" + resolved "https://registry.npmmirror.com/@backstage/plugin-permission-node/-/plugin-permission-node-0.7.24.tgz#2aba208d9fe0d7a554c024a9fce45c95ecbd4ed2" + integrity sha512-auNQ6Lbo8/fZTYXbeHv+0pWSKiFTgaBhJbKhIEIvi96LdL3AdlalIsd7EdEDsVqs+Vrcf0Y0xpQiNGdi7ciylQ== dependencies: - "@backstage/backend-common" "^0.20.1" - "@backstage/backend-plugin-api" "^0.6.9" + "@backstage/backend-common" "^0.21.3" + "@backstage/backend-plugin-api" "^0.6.13" "@backstage/config" "^1.1.1" "@backstage/errors" "^1.2.3" - "@backstage/plugin-auth-node" "^0.4.3" + "@backstage/plugin-auth-node" "^0.4.8" "@backstage/plugin-permission-common" "^0.7.12" "@types/express" "^4.17.6" express "^4.17.1" @@ -3323,19 +3409,50 @@ yn "^4.0.0" yup "^0.32.9" -"@backstage/plugin-scaffolder-backend-module-azure@^0.1.1": - version "0.1.1" - resolved "https://registry.npmmirror.com/@backstage/plugin-scaffolder-backend-module-azure/-/plugin-scaffolder-backend-module-azure-0.1.1.tgz#c8ba1b4daae3cf9afe2950ac3cd366aa64c1959f" - integrity sha512-p0lbtVSiG5Z/4Mp9++RVjtJDexcxsZtHt/e89vRLueU9OdqFvacILJeB92WT6C9LR5ddT3+wBNajN2dhCz0yjg== +"@backstage/plugin-scaffolder-backend-module-azure@^0.1.1", "@backstage/plugin-scaffolder-backend-module-azure@^0.1.5": + version "0.1.5" + resolved "https://registry.npmmirror.com/@backstage/plugin-scaffolder-backend-module-azure/-/plugin-scaffolder-backend-module-azure-0.1.5.tgz#bad0ac4459379956ab4da4863cd65fb6f72c0751" + integrity sha512-fNIDA/Cf17dJZwzrHx/9BxY/88C0xWemiN9IYqJtgshSjDxmaDXeWBa8nc/easFFSqNob/u9JVcEO+uAZ584zQ== dependencies: - "@backstage/backend-common" "^0.20.1" + "@backstage/backend-common" "^0.21.3" + "@backstage/backend-plugin-api" "^0.6.13" "@backstage/config" "^1.1.1" "@backstage/errors" "^1.2.3" - "@backstage/integration" "^1.8.0" - "@backstage/plugin-scaffolder-node" "^0.2.10" + "@backstage/integration" "^1.9.0" + "@backstage/plugin-scaffolder-node" "^0.3.3" azure-devops-node-api "^12.0.0" yaml "^2.0.0" +"@backstage/plugin-scaffolder-backend-module-bitbucket-cloud@^0.1.3": + version "0.1.3" + resolved "https://registry.npmmirror.com/@backstage/plugin-scaffolder-backend-module-bitbucket-cloud/-/plugin-scaffolder-backend-module-bitbucket-cloud-0.1.3.tgz#7643b3353a042db439f1d109d298b41762d2ef36" + integrity sha512-KspnbjM2CV2lqSEH9+9f4l5kXRZKIi//WkXgt8pHnlZZH+a82iQHIUloOYOIVacU1QUsDc4pIp/H2Qai8ReWtg== + dependencies: + "@backstage/backend-common" "^0.21.3" + "@backstage/backend-plugin-api" "^0.6.13" + "@backstage/config" "^1.1.1" + "@backstage/errors" "^1.2.3" + "@backstage/integration" "^1.9.0" + "@backstage/plugin-scaffolder-node" "^0.3.3" + fs-extra "^11.2.0" + node-fetch "^2.6.7" + yaml "^2.0.0" + +"@backstage/plugin-scaffolder-backend-module-bitbucket-server@^0.1.3": + version "0.1.3" + resolved "https://registry.npmmirror.com/@backstage/plugin-scaffolder-backend-module-bitbucket-server/-/plugin-scaffolder-backend-module-bitbucket-server-0.1.3.tgz#a3bab3df4e71a98bbca68e0c32957160a28abec4" + integrity sha512-HFjLh/ovboMqsI0Ud4ycixSXLNDAX12feTFYkzntoI3aj/6mSKkSkXjVZ8K6uatcAvxKNweyoLI1V3oJUWs49Q== + dependencies: + "@backstage/backend-common" "^0.21.3" + "@backstage/backend-plugin-api" "^0.6.13" + "@backstage/config" "^1.1.1" + "@backstage/errors" "^1.2.3" + "@backstage/integration" "^1.9.0" + "@backstage/plugin-scaffolder-node" "^0.3.3" + fs-extra "^11.2.0" + node-fetch "^2.6.7" + yaml "^2.0.0" + "@backstage/plugin-scaffolder-backend-module-bitbucket@^0.1.1": version "0.1.1" resolved "https://registry.npmmirror.com/@backstage/plugin-scaffolder-backend-module-bitbucket/-/plugin-scaffolder-backend-module-bitbucket-0.1.1.tgz#5b56f8f3e35c20bd380285f8e4ab6bc94dfa99dc" @@ -3349,15 +3466,46 @@ node-fetch "^2.6.7" yaml "^2.0.0" -"@backstage/plugin-scaffolder-backend-module-gerrit@^0.1.1": - version "0.1.1" - resolved "https://registry.npmmirror.com/@backstage/plugin-scaffolder-backend-module-gerrit/-/plugin-scaffolder-backend-module-gerrit-0.1.1.tgz#a52161f1b8e1980ef485f835ae1875ff35438a83" - integrity sha512-5ShekdtgmDDDOLnzJraEGZmYBWvGGV5cCwhPCnZWsgXU4I6PUiY37XbaAv4t6kN4YnzhFELTeDHqDSlk6RRXKQ== +"@backstage/plugin-scaffolder-backend-module-bitbucket@^0.2.3": + version "0.2.3" + resolved "https://registry.npmmirror.com/@backstage/plugin-scaffolder-backend-module-bitbucket/-/plugin-scaffolder-backend-module-bitbucket-0.2.3.tgz#3005b6a862fc6edd336063bbc8708a688d660210" + integrity sha512-bDPgMlYzUQdcFP0/PNEs71/wl3tb7FO6CY5At4AQkEI8VRxfL4NLiXnHLQZwB76c+QJ/8n/2Zkgnz7VTkZTLuw== dependencies: + "@backstage/backend-common" "^0.21.3" + "@backstage/backend-plugin-api" "^0.6.13" "@backstage/config" "^1.1.1" "@backstage/errors" "^1.2.3" - "@backstage/integration" "^1.8.0" - "@backstage/plugin-scaffolder-node" "^0.2.10" + "@backstage/integration" "^1.9.0" + "@backstage/plugin-scaffolder-backend-module-bitbucket-cloud" "^0.1.3" + "@backstage/plugin-scaffolder-backend-module-bitbucket-server" "^0.1.3" + "@backstage/plugin-scaffolder-node" "^0.3.3" + fs-extra "^11.2.0" + node-fetch "^2.6.7" + yaml "^2.0.0" + +"@backstage/plugin-scaffolder-backend-module-gerrit@^0.1.1", "@backstage/plugin-scaffolder-backend-module-gerrit@^0.1.5": + version "0.1.5" + resolved "https://registry.npmmirror.com/@backstage/plugin-scaffolder-backend-module-gerrit/-/plugin-scaffolder-backend-module-gerrit-0.1.5.tgz#6e03d30bdc0d1770b953fb1ce8fb12eecd056e54" + integrity sha512-1rWqfNU+rZU6gDireUqsXFCWRgkS63Z0kUjbmzZgy+rl6zbaepBnz/oKpBsNnySQhl7HDIytBs6hs+t5TdZBiA== + dependencies: + "@backstage/backend-plugin-api" "^0.6.13" + "@backstage/config" "^1.1.1" + "@backstage/errors" "^1.2.3" + "@backstage/integration" "^1.9.0" + "@backstage/plugin-scaffolder-node" "^0.3.3" + node-fetch "^2.6.7" + yaml "^2.0.0" + +"@backstage/plugin-scaffolder-backend-module-gitea@^0.1.3": + version "0.1.3" + resolved "https://registry.npmmirror.com/@backstage/plugin-scaffolder-backend-module-gitea/-/plugin-scaffolder-backend-module-gitea-0.1.3.tgz#33dc67cc0bd31fab4bbea148083f4ae0ed494b76" + integrity sha512-ZfblBeL6KD1Nu3oomuHynI+eQFh6N1QgpVbRuh9pc7aJjNNVAYPVd35Lenx6pwP3mqtSCebOOwtdbZQ6WVBWsg== + dependencies: + "@backstage/backend-plugin-api" "^0.6.13" + "@backstage/config" "^1.1.1" + "@backstage/errors" "^1.2.3" + "@backstage/integration" "^1.9.0" + "@backstage/plugin-scaffolder-node" "^0.3.3" node-fetch "^2.6.7" yaml "^2.0.0" @@ -3378,23 +3526,94 @@ winston "^3.2.1" yaml "^2.0.0" -"@backstage/plugin-scaffolder-backend-module-gitlab@^0.2.12": - version "0.2.12" - resolved "https://registry.npmmirror.com/@backstage/plugin-scaffolder-backend-module-gitlab/-/plugin-scaffolder-backend-module-gitlab-0.2.12.tgz#10cf7f69be0379c1e221fc82a177816969f01190" - integrity sha512-20VW3fAk4xkyE4bRwRz9rd5S2p9W3Tgmu9ITX7RB1qmEUTqWfAVIRQdkt18gN459srxpypwm7Kh97/I7o7X8KQ== +"@backstage/plugin-scaffolder-backend-module-github@^0.2.3": + version "0.2.3" + resolved "https://registry.npmmirror.com/@backstage/plugin-scaffolder-backend-module-github/-/plugin-scaffolder-backend-module-github-0.2.3.tgz#f5d35b501021661bb91ee9bb0ac2ff7971317a63" + integrity sha512-Azzu058i8V5TXEk6UG5JUE5fSsp9fY+7BDbVaBmaqYiyeilyXguKz1iBRAVp4JJlH8Ko8WcQY9vxdNNc/R1VIA== dependencies: - "@backstage/backend-common" "^0.20.1" + "@backstage/backend-common" "^0.21.3" + "@backstage/backend-plugin-api" "^0.6.13" "@backstage/config" "^1.1.1" "@backstage/errors" "^1.2.3" - "@backstage/integration" "^1.8.0" - "@backstage/plugin-scaffolder-node" "^0.2.10" + "@backstage/integration" "^1.9.0" + "@backstage/plugin-scaffolder-node" "^0.3.3" + "@octokit/webhooks" "^10.0.0" + libsodium-wrappers "^0.7.11" + octokit "^3.0.0" + octokit-plugin-create-pull-request "^3.10.0" + winston "^3.2.1" + yaml "^2.0.0" + +"@backstage/plugin-scaffolder-backend-module-gitlab@^0.2.12", "@backstage/plugin-scaffolder-backend-module-gitlab@^0.2.16": + version "0.2.16" + resolved "https://registry.npmmirror.com/@backstage/plugin-scaffolder-backend-module-gitlab/-/plugin-scaffolder-backend-module-gitlab-0.2.16.tgz#32f129c28dce0650042d3079910fb1bb0fa5c2a0" + integrity sha512-zkI0QMdG1JqT3dW6ObL3vXkxwmRIcKoV8cGpZFrPa7UWys1RIe53bk/+JL6HcrFRxNt5ZvmdpmEcRm+VmooXaA== + dependencies: + "@backstage/backend-common" "^0.21.3" + "@backstage/backend-plugin-api" "^0.6.13" + "@backstage/config" "^1.1.1" + "@backstage/errors" "^1.2.3" + "@backstage/integration" "^1.9.0" + "@backstage/plugin-scaffolder-node" "^0.3.3" "@gitbeaker/core" "^35.8.0" "@gitbeaker/node" "^35.8.0" "@gitbeaker/rest" "^39.25.0" + luxon "^3.0.0" yaml "^2.0.0" zod "^3.22.4" -"@backstage/plugin-scaffolder-backend@^1.19.1", "@backstage/plugin-scaffolder-backend@~1.20.0": +"@backstage/plugin-scaffolder-backend@^1.21.3": + version "1.21.3" + resolved "https://registry.npmmirror.com/@backstage/plugin-scaffolder-backend/-/plugin-scaffolder-backend-1.21.3.tgz#fdb5eb91e700c8af07b11a96580b0e7145fa16e4" + integrity sha512-YnDeEDXebsDYHYNAPlxuPvovFGb4hEs1F4ObvDFV7sG7DbAdHoEBVZNZHa/QpgiD9KKzrmwRJXUTbEFKMnJ7NQ== + dependencies: + "@backstage/backend-common" "^0.21.3" + "@backstage/backend-plugin-api" "^0.6.13" + "@backstage/backend-tasks" "^0.5.18" + "@backstage/catalog-client" "^1.6.0" + "@backstage/catalog-model" "^1.4.4" + "@backstage/config" "^1.1.1" + "@backstage/errors" "^1.2.3" + "@backstage/integration" "^1.9.0" + "@backstage/plugin-auth-node" "^0.4.8" + "@backstage/plugin-catalog-backend-module-scaffolder-entity-model" "^0.1.10" + "@backstage/plugin-catalog-node" "^1.7.3" + "@backstage/plugin-permission-common" "^0.7.12" + "@backstage/plugin-permission-node" "^0.7.24" + "@backstage/plugin-scaffolder-backend-module-azure" "^0.1.5" + "@backstage/plugin-scaffolder-backend-module-bitbucket" "^0.2.3" + "@backstage/plugin-scaffolder-backend-module-bitbucket-cloud" "^0.1.3" + "@backstage/plugin-scaffolder-backend-module-bitbucket-server" "^0.1.3" + "@backstage/plugin-scaffolder-backend-module-gerrit" "^0.1.5" + "@backstage/plugin-scaffolder-backend-module-gitea" "^0.1.3" + "@backstage/plugin-scaffolder-backend-module-github" "^0.2.3" + "@backstage/plugin-scaffolder-backend-module-gitlab" "^0.2.16" + "@backstage/plugin-scaffolder-common" "^1.5.0" + "@backstage/plugin-scaffolder-node" "^0.3.3" + "@backstage/types" "^1.1.1" + "@types/express" "^4.17.6" + "@types/luxon" "^3.0.0" + express "^4.17.1" + express-promise-router "^4.1.0" + fs-extra "^11.2.0" + globby "^11.0.0" + isbinaryfile "^5.0.0" + isolated-vm "^4.5.0" + jsonschema "^1.2.6" + knex "^3.0.0" + lodash "^4.17.21" + luxon "^3.0.0" + nunjucks "^3.2.3" + p-limit "^3.1.0" + p-queue "^6.6.2" + prom-client "^15.0.0" + uuid "^8.2.0" + winston "^3.2.1" + yaml "^2.0.0" + zen-observable "^0.10.0" + zod "^3.22.4" + +"@backstage/plugin-scaffolder-backend@~1.20.0": version "1.20.0" resolved "https://registry.npmmirror.com/@backstage/plugin-scaffolder-backend/-/plugin-scaffolder-backend-1.20.0.tgz#016d41d2dce8d128d632e5c81f3e31195ac9abfe" integrity sha512-LUhMgH58VNsUa/yBX0GOwwAkb9q0O6CA6p9PzCH5SeOnkJ6v6dMhkgzWgrfjsy0yktmSRb1d0PNdQFdGMzvszA== @@ -3442,16 +3661,16 @@ zen-observable "^0.10.0" zod "^3.22.4" -"@backstage/plugin-scaffolder-common@^1.4.5": - version "1.4.5" - resolved "https://registry.npmmirror.com/@backstage/plugin-scaffolder-common/-/plugin-scaffolder-common-1.4.5.tgz#4e578416ff3648d8cfad0acd5eb4ef8f6811d7d6" - integrity sha512-JSOpUpLxwvYpjqTRPjcFLxa7Z1ngAnwV5ijI06ASboB+dai9IPIGATW57CfvF2u5Vn+wxaXQ6Tc8Pr9gwCdp4A== +"@backstage/plugin-scaffolder-common@^1.4.5", "@backstage/plugin-scaffolder-common@^1.5.0": + version "1.5.0" + resolved "https://registry.npmmirror.com/@backstage/plugin-scaffolder-common/-/plugin-scaffolder-common-1.5.0.tgz#c599271c685514de9fb2701062d5a0b3a29e8928" + integrity sha512-byj0crG5rlH5JsiJdywi2DdR7qGe+OptIxERRImTSHTto8fa7z+f+1qeFW0/2oXIo7KFvS9uQ3g5+LSVqz58ug== dependencies: - "@backstage/catalog-model" "^1.4.3" + "@backstage/catalog-model" "^1.4.4" "@backstage/plugin-permission-common" "^0.7.12" "@backstage/types" "^1.1.1" -"@backstage/plugin-scaffolder-node@^0.2.10", "@backstage/plugin-scaffolder-node@^0.2.8", "@backstage/plugin-scaffolder-node@~0.2.9": +"@backstage/plugin-scaffolder-node@^0.2.10", "@backstage/plugin-scaffolder-node@~0.2.9": version "0.2.10" resolved "https://registry.npmmirror.com/@backstage/plugin-scaffolder-node/-/plugin-scaffolder-node-0.2.10.tgz#ba0b97e4e8e86d48b991bc4233d64d3d9f389c5c" integrity sha512-3/JQL5JKhRchd/N2gTLTSEnHFhkfCcbSUdZoQDSj4bTkTALl7vNeR6XpW4QqOuKhnaDGndrLORtUiNiCugjRCA== @@ -3471,6 +3690,26 @@ zod "^3.22.4" zod-to-json-schema "^3.20.4" +"@backstage/plugin-scaffolder-node@^0.3.3": + version "0.3.3" + resolved "https://registry.npmmirror.com/@backstage/plugin-scaffolder-node/-/plugin-scaffolder-node-0.3.3.tgz#debce42879e6e8bc0235a856d3dbdbedb0108296" + integrity sha512-+g6FDcog99AkVp1RQwF8XowjDSU/cjHSawVi9kIB8b34CUJNDSX2IISjmK55BUiSpoTrJy73h1fUp8CcMiCxiQ== + dependencies: + "@backstage/backend-common" "^0.21.3" + "@backstage/backend-plugin-api" "^0.6.13" + "@backstage/catalog-model" "^1.4.4" + "@backstage/errors" "^1.2.3" + "@backstage/integration" "^1.9.0" + "@backstage/plugin-scaffolder-common" "^1.5.0" + "@backstage/types" "^1.1.1" + fs-extra "^11.2.0" + globby "^11.0.0" + jsonschema "^1.2.6" + p-limit "^3.1.0" + winston "^3.2.1" + zod "^3.22.4" + zod-to-json-schema "^3.20.4" + "@backstage/plugin-scaffolder-react@^1.7.1": version "1.7.1" resolved "https://registry.npmmirror.com/@backstage/plugin-scaffolder-react/-/plugin-scaffolder-react-1.7.1.tgz#3731fa9f82dbcfd36610e2db6dfe9d856a7f8e9f" @@ -5274,7 +5513,7 @@ optionalDependencies: openid-client "^5.3.0" -"@kubernetes/client-node@0.20.0", "@kubernetes/client-node@^0.20.0": +"@kubernetes/client-node@0.20.0", "@kubernetes/client-node@^0.20.0", "@kubernetes/client-node@~0.20.0": version "0.20.0" resolved "https://registry.npmmirror.com/@kubernetes/client-node/-/client-node-0.20.0.tgz#4447ae27fd6eef3d4830a5a039f3b84ffd5c5913" integrity sha512-xxlv5GLX4FVR/dDKEsmi4SPeuB49aRc35stndyxcC73XnUEEwF39vXbROpHOirmDse8WE9vxOjABnSVS+jb7EA== @@ -6376,6 +6615,11 @@ resolved "https://registry.npmmirror.com/@opentelemetry/api/-/api-1.7.0.tgz#b139c81999c23e3c8d3c0a7234480e945920fc40" integrity sha512-AdY5wvN0P2vXBi3b29hxZgSFvdhdxPB9+f0B6s//P9Q8nibRWeA3cHm8UmLpio9ABigkVHJ5NMPk+Mz8VCCyrw== +"@opentelemetry/api@^1.4.0": + version "1.8.0" + resolved "https://registry.npmmirror.com/@opentelemetry/api/-/api-1.8.0.tgz#5aa7abb48f23f693068ed2999ae627d2f7d902ec" + integrity sha512-I/s6F7yKUDdtMsoBWXJe8Qz40Tui5vsuKCWJEWVL+5q9sSWRzzx6v2KeNsOBEwd94j0eWkpWCH4yB6rZg9Mf0w== + "@parcel/watcher@2.0.4": version "2.0.4" resolved "https://registry.npmmirror.com/@parcel/watcher/-/watcher-2.0.4.tgz#f300fef4cc38008ff4b8c29d92588eced3ce014b" @@ -6856,24 +7100,24 @@ moment "^2.29.1" react-use "^17.2.4" -"@roadiehq/scaffolder-backend-module-utils@^1.13.1": - version "1.13.1" - resolved "https://registry.npmmirror.com/@roadiehq/scaffolder-backend-module-utils/-/scaffolder-backend-module-utils-1.13.1.tgz#a4bfbc3a0ea4bbb98744958187713b020f0df951" - integrity sha512-fM3R4p8bI71ZgTGWi7uA3hxaG9VN+pZU3aUIa6cDawdOVcfyQrbi00QVd9nyrkIh011obAssQ8Wi4m5WVR3Jsg== +"@roadiehq/scaffolder-backend-module-utils@~1.13.1": + version "1.13.7" + resolved "https://registry.npmmirror.com/@roadiehq/scaffolder-backend-module-utils/-/scaffolder-backend-module-utils-1.13.7.tgz#53e0214316f42170612ad2a7fcc625da979ced67" + integrity sha512-IeKCOsVbISfdnbLxSOwS95APOPVjvjUVMiI0teMokxY081QGcF28oJoM5fNv2qQ2r50BiQoJnfoTfs9PMzpa2g== dependencies: - "@backstage/backend-common" "^0.19.9" + "@backstage/backend-common" "^0.21.3" "@backstage/config" "^1.1.1" "@backstage/errors" "^1.2.3" - "@backstage/plugin-scaffolder-backend" "^1.19.1" - "@backstage/plugin-scaffolder-node" "^0.2.8" + "@backstage/plugin-scaffolder-backend" "^1.21.3" + "@backstage/plugin-scaffolder-node" "^0.3.3" adm-zip "^0.5.9" cross-fetch "^3.1.4" detect-indent "^6.1.0" fs-extra "^10.0.0" - js-yaml "^4.0.0" jsonata "^1.8.6" lodash "^4.17.21" winston "^3.2.1" + yaml "^2.3.4" "@rollup/plugin-commonjs@^25.0.0": version "25.0.7" @@ -8721,6 +8965,14 @@ "@types/qs" "*" "@types/serve-static" "*" +"@types/fs-extra@^11.0.4": + version "11.0.4" + resolved "https://registry.npmmirror.com/@types/fs-extra/-/fs-extra-11.0.4.tgz#e16a863bb8843fba8c5004362b5a73e17becca45" + integrity sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ== + dependencies: + "@types/jsonfile" "*" + "@types/node" "*" + "@types/graceful-fs@^4.1.3": version "4.1.9" resolved "https://registry.npmmirror.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" @@ -8835,6 +9087,13 @@ resolved "https://registry.npmmirror.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== +"@types/jsonfile@*": + version "6.1.4" + resolved "https://registry.npmmirror.com/@types/jsonfile/-/jsonfile-6.1.4.tgz#614afec1a1164e7d670b4a7ad64df3e7beb7b702" + integrity sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ== + dependencies: + "@types/node" "*" + "@types/jsonwebtoken@^9.0.0": version "9.0.5" resolved "https://registry.npmmirror.com/@types/jsonwebtoken/-/jsonwebtoken-9.0.5.tgz#0bd9b841c9e6c5a937c17656e2368f65da025588" @@ -11833,6 +12092,14 @@ cron@^2.0.0: "@types/luxon" "~3.3.0" luxon "~3.3.0" +cron@^3.0.0: + version "3.1.6" + resolved "https://registry.npmmirror.com/cron/-/cron-3.1.6.tgz#e7e1798a468e017c8d31459ecd7c2d088f97346c" + integrity sha512-cvFiQCeVzsA+QPM6fhjBtlKGij7tLLISnTSvFxVdnFGLdz+ZdXN37kNe0i2gefmdD17XuZA6n2uPVwzl4FxW/w== + dependencies: + "@types/luxon" "~3.3.0" + luxon "~3.4.0" + cronstrue@^2.2.0, cronstrue@^2.32.0: version "2.47.0" resolved "https://registry.npmmirror.com/cronstrue/-/cronstrue-2.47.0.tgz#3cf447c2a3a070d5bad2cedd6383e7cc16f5a308" @@ -12528,6 +12795,16 @@ docker-modem@^3.0.0: split-ca "^1.0.1" ssh2 "^1.11.0" +docker-modem@^5.0.3: + version "5.0.3" + resolved "https://registry.npmmirror.com/docker-modem/-/docker-modem-5.0.3.tgz#50c06f11285289f58112b5c4c4d89824541c41d0" + integrity sha512-89zhop5YVhcPEt5FpUFGr3cDyceGhq/F9J+ZndQ4KfqNvfbJpPMfgeixFgUj5OjCYAboElqODxY5Z1EBsSa6sg== + dependencies: + debug "^4.1.1" + readable-stream "^3.5.0" + split-ca "^1.0.1" + ssh2 "^1.15.0" + dockerode@^3.3.1: version "3.3.5" resolved "https://registry.npmmirror.com/dockerode/-/dockerode-3.3.5.tgz#7ae3f40f2bec53ae5e9a741ce655fff459745629" @@ -12537,6 +12814,15 @@ dockerode@^3.3.1: docker-modem "^3.0.0" tar-fs "~2.0.1" +dockerode@^4.0.0: + version "4.0.2" + resolved "https://registry.npmmirror.com/dockerode/-/dockerode-4.0.2.tgz#dedc8529a1db3ac46d186f5912389899bc309f7d" + integrity sha512-9wM1BVpVMFr2Pw3eJNXrYYt6DT9k0xMcsSCjtPvyQ+xa1iPg/Mo3T/gUcwI0B2cczqCeCYRPF8yFYDwtFXT0+w== + dependencies: + "@balena/dockerignore" "^1.0.2" + docker-modem "^5.0.3" + tar-fs "~2.0.1" + doctrine@^2.1.0: version "2.1.0" resolved "https://registry.npmmirror.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" @@ -14034,7 +14320,7 @@ fs-extra@10.1.0, fs-extra@^10.0.0, fs-extra@^10.1.0: jsonfile "^6.0.1" universalify "^2.0.0" -fs-extra@^11.1.0, fs-extra@^11.1.1: +fs-extra@^11.1.0, fs-extra@^11.1.1, fs-extra@^11.2.0, fs-extra@~11.2.0: version "11.2.0" resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== @@ -14321,6 +14607,13 @@ git-url-parse@^13.0.0: dependencies: git-up "^7.0.0" +git-url-parse@^14.0.0: + version "14.0.0" + resolved "https://registry.npmmirror.com/git-url-parse/-/git-url-parse-14.0.0.tgz#18ce834726d5fbca0c25a4555101aa277017418f" + integrity sha512-NnLweV+2A4nCvn4U/m2AoYu0pPKlsmhK9cknG7IMwsjFY1S2jxM+mAhsDxyxfCIGfGaD+dozsyX4b6vkYc83yQ== + dependencies: + git-up "^7.0.0" + gitconfiglocal@^1.0.0: version "1.0.0" resolved "https://registry.npmmirror.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" @@ -17319,7 +17612,7 @@ lunr@^2.3.9: resolved "https://registry.npmmirror.com/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1" integrity sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow== -luxon@^3.0.0, luxon@^3.4.3: +luxon@^3.0.0, luxon@^3.4.3, luxon@~3.4.0: version "3.4.4" resolved "https://registry.npmmirror.com/luxon/-/luxon-3.4.4.tgz#cf20dc27dc532ba41a169c43fdcc0063601577af" integrity sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA== @@ -20225,6 +20518,14 @@ prom-client@^14.0.1: dependencies: tdigest "^0.1.1" +prom-client@^15.0.0: + version "15.1.0" + resolved "https://registry.npmmirror.com/prom-client/-/prom-client-15.1.0.tgz#816a4a2128da169d0471093baeccc6d2f17a4613" + integrity sha512-cCD7jLTqyPdjEPBo/Xk4Iu8jxjuZgZJ3e/oET3L+ZwOuap/7Cw3dH/TJSsZKs1TQLZ2IHpIlRAKw82ef06kmMw== + dependencies: + "@opentelemetry/api" "^1.4.0" + tdigest "^0.1.1" + promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.npmmirror.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" @@ -22116,7 +22417,7 @@ sqlstring@^2.3.2: resolved "https://registry.npmmirror.com/sqlstring/-/sqlstring-2.3.3.tgz#2ddc21f03bce2c387ed60680e739922c65751d0c" integrity sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg== -ssh2@^1.11.0: +ssh2@^1.11.0, ssh2@^1.15.0: version "1.15.0" resolved "https://registry.npmmirror.com/ssh2/-/ssh2-1.15.0.tgz#2f998455036a7f89e0df5847efb5421748d9871b" integrity sha512-C0PHgX4h6lBxYx7hcXwu3QWdh4tg6tZZsTfXcdvc5caW/EMxaB4H9dWsl7qk+F7LAW762hp8VbXOX7x4xUYvEw== @@ -23326,6 +23627,20 @@ typescript-json-schema@^0.62.0: typescript "~5.1.0" yargs "^17.1.1" +typescript-json-schema@^0.63.0: + version "0.63.0" + resolved "https://registry.npmmirror.com/typescript-json-schema/-/typescript-json-schema-0.63.0.tgz#55ef6c4dde71625425b169d37e0de3d2ea14e093" + integrity sha512-vBfMBq4U/rZ5FIRi7u4o/YAdeRHsSabdGHogUlCPi0cYU0CGvS4Bdu8bSzyUsF+Kf5PTQUGh2TictJuQTDK6eQ== + dependencies: + "@types/json-schema" "^7.0.9" + "@types/node" "^16.9.2" + glob "^7.1.7" + path-equal "^1.2.5" + safe-stable-stringify "^2.2.0" + ts-node "^10.9.1" + typescript "~5.1.0" + yargs "^17.1.1" + "typescript@>=3 < 6": version "5.3.3" resolved "https://registry.npmmirror.com/typescript/-/typescript-5.3.3.tgz#b3ce6ba258e72e6305ba66f5c9b452aaee3ffe37" @@ -24419,6 +24734,11 @@ yaml@^2.0.0, yaml@^2.2.1, yaml@^2.2.2: resolved "https://registry.npmmirror.com/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2" integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA== +yaml@^2.3.4: + version "2.4.1" + resolved "https://registry.npmmirror.com/yaml/-/yaml-2.4.1.tgz#2e57e0b5e995292c25c75d2658f0664765210eed" + integrity sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg== + yargs-parser@20.2.4: version "20.2.4" resolved "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54"