From 61659c637fa2a227b5b5d4f72429eca59de95a07 Mon Sep 17 00:00:00 2001 From: Andrew Lee Date: Fri, 21 Jun 2024 10:21:20 -0700 Subject: [PATCH] Terraform plugin integration Signed-off-by: Andrew Lee --- app-config.yaml | 2 +- packages/app/package.json | 1 + packages/app/src/App.tsx | 3 +- .../app/src/components/catalog/EntityPage.tsx | 12 + packages/backend/package.json | 1 + packages/backend/src/index.ts | 1 + plugins/terraform/.eslintrc.js | 1 + plugins/terraform/README.md | 148 ++ plugins/terraform/dev/index.tsx | 12 + plugins/terraform/images/terraform.png | Bin 0 -> 253104 bytes plugins/terraform/package.json | 51 + plugins/terraform/src/api/Terraform.test.ts | 81 + plugins/terraform/src/api/Terraform.ts | 159 ++ plugins/terraform/src/api/index.ts | 34 + .../MainPageComponent.test.tsx | 27 + .../MainPageComponent/MainPageComponent.tsx | 12 + .../src/components/MainPageComponent/index.ts | 1 + .../MainPageFetchComponent.test.tsx | 74 + .../MainPageFetchComponent.tsx | 341 +++ .../MainPageFetchComponent/index.ts | 1 + .../RootComponent/RootComponent.tsx | 12 + .../src/components/RootComponent/index.ts | 1 + plugins/terraform/src/consts.ts | 5 + plugins/terraform/src/index.ts | 1 + plugins/terraform/src/plugin.test.ts | 7 + plugins/terraform/src/plugin.ts | 50 + plugins/terraform/src/routes.ts | 5 + plugins/terraform/src/setupTests.ts | 1 + plugins/terraformv2-backend/.eslintrc.js | 1 + plugins/terraformv2-backend/README.md | 14 + plugins/terraformv2-backend/dev/index.ts | 9 + plugins/terraformv2-backend/package.json | 49 + plugins/terraformv2-backend/src/index.ts | 2 + plugins/terraformv2-backend/src/plugin.ts | 38 + .../src/service/router.test.ts | 29 + .../terraformv2-backend/src/service/router.ts | 126 ++ plugins/terraformv2-backend/src/setupTests.ts | 1 + yarn.lock | 1986 ++++++++++++++++- 38 files changed, 3240 insertions(+), 59 deletions(-) create mode 100644 plugins/terraform/.eslintrc.js create mode 100644 plugins/terraform/README.md create mode 100644 plugins/terraform/dev/index.tsx create mode 100644 plugins/terraform/images/terraform.png create mode 100644 plugins/terraform/package.json create mode 100644 plugins/terraform/src/api/Terraform.test.ts create mode 100644 plugins/terraform/src/api/Terraform.ts create mode 100644 plugins/terraform/src/api/index.ts create mode 100644 plugins/terraform/src/components/MainPageComponent/MainPageComponent.test.tsx create mode 100644 plugins/terraform/src/components/MainPageComponent/MainPageComponent.tsx create mode 100644 plugins/terraform/src/components/MainPageComponent/index.ts create mode 100644 plugins/terraform/src/components/MainPageFetchComponent/MainPageFetchComponent.test.tsx create mode 100644 plugins/terraform/src/components/MainPageFetchComponent/MainPageFetchComponent.tsx create mode 100644 plugins/terraform/src/components/MainPageFetchComponent/index.ts create mode 100644 plugins/terraform/src/components/RootComponent/RootComponent.tsx create mode 100644 plugins/terraform/src/components/RootComponent/index.ts create mode 100644 plugins/terraform/src/consts.ts create mode 100644 plugins/terraform/src/index.ts create mode 100644 plugins/terraform/src/plugin.test.ts create mode 100644 plugins/terraform/src/plugin.ts create mode 100644 plugins/terraform/src/routes.ts create mode 100644 plugins/terraform/src/setupTests.ts create mode 100644 plugins/terraformv2-backend/.eslintrc.js create mode 100644 plugins/terraformv2-backend/README.md create mode 100644 plugins/terraformv2-backend/dev/index.ts create mode 100644 plugins/terraformv2-backend/package.json create mode 100644 plugins/terraformv2-backend/src/index.ts create mode 100644 plugins/terraformv2-backend/src/plugin.ts create mode 100644 plugins/terraformv2-backend/src/service/router.test.ts create mode 100644 plugins/terraformv2-backend/src/service/router.ts create mode 100644 plugins/terraformv2-backend/src/setupTests.ts diff --git a/app-config.yaml b/app-config.yaml index ea2b0c5..5af814d 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -133,4 +133,4 @@ argocd: # replace with your argocd password e.g. kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d password: ${ARGOCD_ADMIN_PASSWORD} argoWorkflows: - baseUrl: https://cnoe.localtest.me:8443/argo-workflows + baseUrl: https://cnoe.localtest.me:8443/argo-workflows \ No newline at end of file diff --git a/packages/app/package.json b/packages/app/package.json index 72f5395..fcf6b76 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -44,6 +44,7 @@ "@internal/plugin-apache-spark": "^0.1.0", "@internal/plugin-argo-workflows": "^0.1.0", "@internal/plugin-cnoe-ui": "^0.1.0", + "@internal/plugin-terraform": "^0.1.0", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@roadiehq/backstage-plugin-argo-cd": "^2.5.1", diff --git a/packages/app/src/App.tsx b/packages/app/src/App.tsx index 86e0d00..e1d6e3d 100644 --- a/packages/app/src/App.tsx +++ b/packages/app/src/App.tsx @@ -45,7 +45,7 @@ import { ApacheSparkPage } from '@internal/plugin-apache-spark'; import { UnifiedThemeProvider } from "@backstage/theme"; - +import { TerraformPluginPage } from '@internal/plugin-terraform'; const app = createApp({ apis, @@ -148,6 +148,7 @@ const routes = ( } /> } /> } /> + } /> ); diff --git a/packages/app/src/components/catalog/EntityPage.tsx b/packages/app/src/components/catalog/EntityPage.tsx index 30e5db9..e6aef17 100644 --- a/packages/app/src/components/catalog/EntityPage.tsx +++ b/packages/app/src/components/catalog/EntityPage.tsx @@ -70,6 +70,7 @@ import { isArgoWorkflowsAvailable, } from '@internal/plugin-argo-workflows'; import {ApacheSparkPage, isApacheSparkAvailable} from "@internal/plugin-apache-spark"; +import { isTerraformAvailable, TerraformPluginPage } from '@internal/plugin-terraform'; const techdocsContent = ( @@ -157,6 +158,13 @@ const overviewContent = ( + + isTerraformAvailable(e)}> + + + + + @@ -171,6 +179,10 @@ const overviewContent = ( ); +const terraFormContent = ( + +); + const serviceEntityPage = ( diff --git a/packages/backend/package.json b/packages/backend/package.json index 8f34c0b..03fe694 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -47,6 +47,7 @@ "@backstage/plugin-search-backend-node": "^1.2.21", "@backstage/plugin-techdocs-backend": "^1.10.4", "@backstage/types": "^1.1.1", + "@internal/backstage-plugin-terraformv2-backend": "^0.1.0", "@kubernetes/client-node": "~0.20.0", "@roadiehq/backstage-plugin-argo-cd-backend": "3.0.2", "@roadiehq/scaffolder-backend-module-utils": "^1.17.0", diff --git a/packages/backend/src/index.ts b/packages/backend/src/index.ts index 2541a4a..51760aa 100644 --- a/packages/backend/src/index.ts +++ b/packages/backend/src/index.ts @@ -32,5 +32,6 @@ backend.add(legacyPlugin('argocd', import('./plugins/argocd'))); // cnoe plugins backend.add(authModuleKeycloakOIDCProvider); backend.add(cnoeScaffolderActions); +backend.add(import('@internal/backstage-plugin-terraformv2-backend')); backend.start(); diff --git a/plugins/terraform/.eslintrc.js b/plugins/terraform/.eslintrc.js new file mode 100644 index 0000000..e2a53a6 --- /dev/null +++ b/plugins/terraform/.eslintrc.js @@ -0,0 +1 @@ +module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/plugins/terraform/README.md b/plugins/terraform/README.md new file mode 100644 index 0000000..b8424fd --- /dev/null +++ b/plugins/terraform/README.md @@ -0,0 +1,148 @@ +# Terraform Backstage Plugin + +Welcome to the Terraform plugin! This plugin can show Terraform outputs/resources from TFState files associated with a particular Backstage components. It does this by utilizing various annotations which point to where the TFState might be stored. It will then fetch those files, parse them, and display them in a Backstage component. + +## Getting started + +### Terraform State Files +This plugin supports three storage locations for Terraform state files (tfstate): K8s secrets, S3 and local file systems. S3 will require additional configuration for AWS credentials to access S3. To access local file systems, the terraform backend will need proper file permissions to access those files. + +### Configuration - Frontend + +Entities must be annotated with Kubernetes annotations. An example component +would look like the following where you can configure the `spec` to your +liking. Information specific to Terraform goes under `annotations` as +shown below: + +```yaml +apiVersion: backstage.io/v1alpha1 +kind: Component +metadata: + name: backstage + annotations: + terraform.cnoe.io/s3-bucket: backstage-terraform-plugin + terraform.cnoe.io/s3-prefix: tfstates/ + terraform.cnoe.io/local-filepath: /var/lib/tfstatefiles + terraform.cnoe.io/secret-name: secret + terraform.cnoe.io/secret-namespace: namespace +spec: + type: service + lifecycle: experimental + owner: user1 + system: system1 +``` + +Update your Entity page. + +For example if you have want to have a Terraform link in the top toolbar to expand to a new page: +```typescript +// in packages/app/src/components/catalog/EntityPage.tsx +import { isTerraformAvailable, TerraformPluginPage } from '@cnoe-io/plugin-terraform'; +... +const terraFormContent = ( + +); +... +const websiteEntityPage = ( + + ... + + {terraFormContent} + + +... +); +``` + +If you want to have the Terraform outputs/resources tables on the overview Entity page: +```typescript +// in packages/app/src/components/catalog/EntityPage.tsx +const overviewContent = ( + + ... + + isTerraformAvailable(e)}> + + + + + + ... + +); +``` + +#### Annotations +As shown in the example above, the following annotations could go under +`annotations` in the backstage `Component` and will be recognized by this plugin. + +- One of the three annotations below are required: +- `terraform.cnoe.io/s3-bucket`: Optional. The S3 bucket where tfstate files would be stored. +- `terraform.cnoe.io/local-filepath`: Optional. The local file system path of where tfstate files would be stored. +- If storing tfstate files in S3, you can optionally define a prefix: +- `terraform.cnoe.io/s3-prefix`: Optional. This is a S3 prefix of where tfstate files would be stored in the S3 bucket. +- `terraform.cnoe.io/secret-name`: Optional. The secret name where the tfstate file would be stored in the K8s cluster. +- `terraform.cnoe.io/secret-namespace`: Optional. The namespace of the secret. + +Note: The plugin only supports using one storage location at a time. It looks at the following annotations in this order: + +- secret-name/secret-namespace +- s3-bucket/s3-prefix +- local-filepath + +### Configuration - Backend + +In `packages/backend/src/index.ts`, import the backend plugin. + +```typescript +... +// cnoe plugins +backend.add(authModuleKeycloakOIDCProvider); +backend.add(cnoeScaffolderActions); +backend.add(import('@internal/backstage-plugin-terraformv2-backend')); + +backend.start(); +... +``` + +### Authentication + +#### AWS Credentails + +By default, the Terraform backend plugin relies on the [default behavior of the AWS SDK for Javascript](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_credential_provider_node.html) to determine the AWS credentials that it uses to authenticate an identity to use with AWS APIs. + +The Terraform backend plugin that runs in your Backstage app searches for credentials in the following order: + +1. Environment variables (`AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`) +1. SSO credentials from the token cache +1. Web identity token credentials (including running in an Amazon EKS cluster using IAM roles for service accounts) +1. Shared credentials and config ini files (`~/.aws/credentials`, `~/.aws/config`) +1. Amazon Elastic Container Service (Amazon ECS) task metadata service +1. Amazon Elastic Compute Cloud (Amazon EC2) instance metadata service + +We recommend that you don't hard-code long lived AWS credentials in your production Backstage application configuration. Hard-coding credentials is risky and might expose your access key ID and secret access key. + +Instead, we recommend that you use short lived AWS credentials for your production Backstage application by deploying it to Amazon ECS, Amazon Elastic Kubernetes Service (Amazon EKS), or Amazon EC2. For more information about deploying Backstage to Amazon EKS using a Helm chart or to Amazon ECS on AWS Fargate using the AWS Cloud Development Kit (CDK), see [Deploying Backstage](https://backstage.io/docs/deployment/) in the Backstage documentation. + +To use multiple AWS accounts with your Backstage app or to explicitly configure credentials for an AWS account, you can configure AWS accounts in your Backstage app's configuration. +For example, to configure an AWS account to use with the Terraform backend plugin which requires using an IAM role to retrieve credentials, add the following to your Backstage app-config.yaml file. + +```yaml +aws: + accounts: + - accountId: '111111111111' + roleName: 'my-iam-role-name' +``` + +For more account configuration examples, see the [Backstage integration-aws-node package documentation](https://www.npmjs.com/package/@backstage/integration-aws-node). + +## IAM permissions + +The Terraform backend plugin requires the AWS identity that it uses to have the following IAM permissions for getting tfstate files from S3: + +* s3:GetObject +* s3:ListObjectsV2 + +## Diagram + +![details](images/terraform.png) diff --git a/plugins/terraform/dev/index.tsx b/plugins/terraform/dev/index.tsx new file mode 100644 index 0000000..ce55a27 --- /dev/null +++ b/plugins/terraform/dev/index.tsx @@ -0,0 +1,12 @@ +import React from 'react'; +import { createDevApp } from '@backstage/dev-utils'; +import { terraformPlugin, TerraformPage } from '../src/plugin'; + +createDevApp() + .registerPlugin(terraformPlugin) + .addPage({ + element: , + title: 'Root Page', + path: '/terraform' + }) + .render(); diff --git a/plugins/terraform/images/terraform.png b/plugins/terraform/images/terraform.png new file mode 100644 index 0000000000000000000000000000000000000000..49af18cbbde82cbcfd82a96f3a1102943a4fbaed GIT binary patch literal 253104 zcmZsBQ*g8W9q)|!Q=>onqr0l+oK+Pr zCnE|2i3te+001K{CZqrW0Okk)07~!+?C%q~F#B%+0LV&nK|wijK|y>u2U`@)R7*~1wjEQ{Os9G{A>UP0keFu8WsUW{3Lk9fH1N!sz1FEgoHrn0e=*b zwV?1V`Ki>@Kq!|%)j<}W>+mU3T>S|yuQOk^I~gC2K93K*PO@$?J#Rh%@e|d6_#vsF z_$YV<(f6-pq9bDR_eB5!%K*4$fz41gf9HXNz5x#&f9+g-X#-5XYML-MeSiJ@SU6z+ z34;MZ4zj}*9h4D%1*y-e1MPx z1q{ICK*1G0gh&Fwry#n&DCGjA5ZZ{W55*HYBI;(Mle)Ob1lu2qz#`xP@@rxZ9p`65L2>Yb8#+!{0{J}%Uk9_T!T*qn7vkX{ z1$3G*mNAoeBHSSN*4-o$o&I4`-~CnmxrFK=_rxs+O;Ld~5QAk#E8g^!3u-~&ch`O} z^gCBW5R~`O*j|DgVJdlfZZ-*&fNYd*`2g45!ODKpe209<`NT4_h zS-?*dM|ubs%r_@Tl>~4{K%WF`9T1VvPzG5MjG334uQ=;|O0fvH6&jLfe+u&mA=39- z4RF~HW|x=_rewg!4!sjm#&2QIsuf@xQnlatR=*X62TnKirZ?~w$_)`zPJxU#iDevG zSdd=MzYJZ8OCoIDk3v8>?_6%G3|5Kt9MuB;3GoRbT3B&bsS#rx;wlhUv|;Y-6y_As z38fu(E22BBI~Z3$Hm}EE6x}(Bd>CP1P)Hw<&XO)T4RVryQhbtl5@+()F*j@<1pyHS}U{`feq_5-8J?#i4DjLAZ_qU zzvf=oExj8L51y{S?O^WE&S30*DMUSpcK{JVTrWWtaS|ddJjXBAUqnIX1=w?Or&7>F zBnYgCl;Kl@l7pgyEeZ+>915@seF|LVT;&qwg$k-gAw@h1hvFo^!OTI$rPd`lgwB6& zk#-R$j)57mIzY1rb|!D~b@TZMeB(>Uv!t3xI2Jh;R~Bm)+e-8#5R9Hq%o?kV8BHjS zVyCtdJSe2#TjEc|8IRe-Ri|(hd&;^f#1NX2qmiXjs1mM_xhmU8;gZ_o-;mG5)5h)4 z`ttjv1r(erpd+&wBOL)8AsPz-R_c}YDv2qOsjwByR?_8@)tD8c=cg5`RlAAU%Rv+y z8+S-# zjvFdBR)kyBo?|X`RirBER*;vmm)9*tEXI^`%Y`mUFA6TMl;5b{$mcH3F5WJ~n_Vuq z=G`eMiZ4hriZ^IIR2{dX3Qq_}mMZ^ombqY8j+ZDck)td}D@R&CU*}mjxYD@NxiZHQ z%(lz+%0|r|X&2JYu<5jEvq`-U%1P1j(}~eZ+y?dz;F0E)_f7R_`A+iB=P&9r31kVR z7c>?u(QnpI+#@2YkFS((m(QNFHmstbVq0^Iwa74ppLhK@@mu#jz)45;jUnU&d_Zt$FbeGhf z@S1>~U{xVev8uGF+*mfUq`lC(aJg7vDPhsd>|z0KM&1C}m}=H;*1f#E3UZlpIe7MX zu6t&Felde=#MgkhiU1z&+ag%mYa9?2g18f z)yW;f<-vW#J-}VbmFsrqM(oDyF73AAQS)&9*!TMSX7$oGvZz;|4l@a%>$&sPjrJwx zlkcPKBl{)&8T^d{Xy<3!8{;QB@tAs-+5{TFXR;g9JHj8rf5zVfVi*`0P#KsTtQK+@ zh#`Gld|h;1uDX8}$FdPN z;~x^6fGNEjgPz@1`*HRIEmIo|SEgw9QcL=x${5c7E&k!KO z2#-OL{hL9-bei;~bi8GuD)t=W)S;Pkb<28}iS;?Fn#(FRs$T^TGZ7o|)M! zHy^lP+&3TF)XSPKwr?7P=qrZ9&=&SKt$P6uz&`%s!U3<=SW4)~nW^)~+ob zHZ`<~loK>q+X%IVO<5W`O5Zjo=h>>1Rus=ygx82Sm{pH8Ry)-#o*UOQ%Hhhc6 z7K@h6i&9s6mu+n;*0v8k(cVKJJYS<9_Ib-4%}vvJe++nCe2>3P!3klVeuO^C_wvsB z_5*cc@8DpTLl$g{$Q*)|bPZ2b=qzPoKXPyGz?SvN&YE4ZbJx7uHKFXUKBM zxh1(Y?VdNekxk-JSzMhO~v~4e7KCrI5VZCv_BtK@hox0q=Q%0&MTGCr;cGO); ze{5d2{5>hJVPNgRhObLEeZTM@`W^>5MbkuuV~z1tx#WEnUNY}&sRLaCO+&asJaR&K zyxAskeeOC=UuK9vXGUizM4CjfhO35UVm+f@xOKn14uf}x9w+*F55LRYjUUekb8UQ| zrG%uTI#Ij7pGyv_$2SCTthSw{!K8WIbKiYDDoz8(L*HW?W4Ce%d81`&-l9IV-iBT! zM^t-iV!MldK1lQ+)Eg84f~nYW=U{AM0r_IU{N}*{?BB9da+u9zer6C~Ww}aQOs8P| zOa`aK@PrfsL%4(jTL~D-kirRgCSiJ)mlK$4JWZM3quw$JJcJVwFfiW_liA=t2aX>< zbdSGF!5NjUdwIWl0H{8J`XsAgO924*0K|p(mD~U?y}?_J#g(16&^V@@UJkitCwl<| z!9uZx0tm(X07wRf5aAI}-ozsahv7gFf@S&Sk@@dQ*?%Q~h5&+)fRj8rrCp!B_V=u8 zH&JABuy*>?49G1x&Qx?+madmhyE|6eWHYXIx<3?H78~ao>y2Ts9dyU4)!RrTpdIq@ z4B`ulMC8vMA~^(DSj6R!%IT8N5iwQSxTccN;xb}*_C6>YuvXCdDFBC~uZA`SwH5{V zP=gKY!&nYwm2MrJajKa%9@yLH_u-`Js%0!`cs1To3;f!!|L2ekzWDcC_reMO5D()U0S#I+-X>9cEh8)AIY#C&pTtAGo~vCE8C1%x!H^S}MJY?z&WP zxr*AK7<20*+$C(zWjiI4AlZ+@=|Ux5BWu1?p?uwt`&GrV^V0p2oCbbPg!dMv*sqN=<09)ZpSW3^s&lUMvA)vox%07o&6xW)yKX~yFL8ffM>;yTu58Xv2;khq5^oBw zrENVDJHFp9wl;RYT|(J>-co(nv|YEHuft`%3N+*DW+f(iB}{jV5@j6lK6k;lh;Z+I zwK!j>IKL#Mb`D-`cWr#F<$k5ln`S$wc&>D8AK||Cg12*fKA$$(_kp6dK1_4YY+dNQ zIJowFY;8T{{&>CoeRF@;L-vi+&n?`~F3+t$Tp7)uLRs%~MUL;9_H&A(Y|rbq3dfF( zt!eH{eK^ORpYNBg#N1D#mvPnZ`7O7D=swyYyzkr4j-B`F9fw$t#llTWojXYItw@@7 zv8!FX<8;$@Bv~%`ub+*cugr1Vjb`e`o>O632Sr82>myoU_uVFm3BLbD?_9EfG#0Bx zucD~xD)oAbKM^hPYkhYX-XuaVF8wMPlr_18H$NLm4AHtcjHs=+bCu0{&YW?2TiNj$ zlS=EKxqP_pY$t78f!CUVeBW+wDGjRfE+1rD#H40Q56q`{yt--z@&cYcaC!k!;qpSi z(D|pp*G?V28Nt{-Nd%V1+zicHolZ}}P5Nxm2zCr^d81yZL z2hb_P_+KZ5D`m`X<~Yh^bCF@7sQv>yI$+=UXb1=tD01S%CH--?xvk(-00OO%6qA}ul zvsjM=!iAp*Cbu*2ccnBIOm5!6<@pH3-c`HtDtLMNWP(S(EQ9GLK=%=31$ln0I&6f7 z?YQFSJ&AYt*%aXsc(2G^pkBBni93&!5rM3>q{(YLF*2;Rdbq4t>vCT#Lr%-co&{tN zRrkx)!VxMEL4^3}d({g>Bg@0#m78%3FW$vJfpN0tgyf0Qo<|^0hnC*?TEoNI2lyJL ze0{uJ06`agypHhdz#t~h%y@1;IPJf+&3ONj`F*qAB#Guz8y9$ApV~F4?Y0+u{r%F@ z<9Q~jTM@~ks%0-+8`_N4^E%WX_Hb#+yTScbF6*rO^S-iW`}1tu5}XxRtirB^ajGfR zIe>G$yZy2K(muj{ZQow|5W?Eor|o&wq@D&2i#>Xp)GIJ&sq=st3QDL2Z0qxoDaeQ_ zcye+A91V%8s=i#Me(-#~bkW_LzYX~g=%O`xQ;%+RI-LcKVp9!I-FzXeuv9Yp1vClWphs(J4v+<^0;o9e{t7Kj$Cm}adx z6YwOZ48yA`FlMg;VXgs?61otM8bp5*l^`na>pe{-UCydst`#S4#K!k(RtwFP=Q0&! zpt^f+1Mw=A#T#0;@)3(DW0INWxMdhS=5-Zc3W*aP`N6A~BxD4S@o=1l8L|$^40}q{R;V3nl3BGUZIi*N9ELTvzR3<1a0^vZj^8L{1wbg%w|5ZD;t+ z6OsBx#LXE!ggrKOS#Y@=AG^~OsBi5e7!2*9gE;IamF+}F0*&Kng_FznasI$Cgb1zc|U=J8lm%bt_qIp z@}lQDx1_3D9ho=#^S7fSuGe|~@~Ccv{s-7!7-pP~G2f1>9(JvaezqrP;CH92&mesl z)W{`#c+%f?i@L25<=FIN0Nj~Ya!RggDYXd&;vU`b5~X1ryo4oB$ntp4`8F_$oMtP& z#F#C(UFdQ*e|w+_|1Q})c@rMTdEk?El05Wx6h}hLq&#hbFBy2?B*Il3>Y{yWL8^Ss z?m(0A`U?ImcOcJr;53tf;s-AkWb zqXE}!8A7#5yF3(AwLd2#_pC6^T2&%S1B!Z)V^K|3WzJIZEn^ZY-Z-1tTO+#Kji8vb z)%$Iiq-?x8MA1y^eHU;UDCW~4(NZ$Sr6BJ*`z{8*9?6Bg!LkNlIMd^RCUvyzEJm7y z$6~ugN3Gmb2YzV_-0kT!9v63 zb~GXOPj|97$LO>p{D)1i#_cX8GT^zW%T5v3(i{%E6sX5}@Elo(qfIzyYzYOL!@SRa zylhi&mJ(R3iX{}gxroM>*c537 zHs0c-*5Il{Ir3f~)4RPGGV{`+m-@`6ynEP};3jf|Nu9G97FhxX9%sjFD5fv_w^u1! zX7Xd*jMTU&cX7TAQz0=9y*<4=v(o}62=^mVyjh2+Q19v`B8tRVFgJLAjXt^MxJQ)w?I9#zLUV;F=R?@wv`zSFVsp{y2gV5QJI!&Q zD0wz!i$@V8mSn~!bR^RBh5#R}mBEn=$}FZ8A6} zMA-+NMH$=xnRGR>w5oJ(0>%VA3hhO3`_DxAH9@b^Fn`|OA)n%17b78E3CJ`Hv6Z#H4`kjLv=w2bnBg$Z&7r)ZLD?l|D#*i7`-9}r~;45Db zs5^g|9Or+!0k$>9YpU-Xn(O!5$;C&}ExN#^)BtD6?I>R-o~c@&4R)s__)SCrtjlWW zU9_!}X|8v3x8wPKB<(Vez1!h#Dess0OO+}2MAx-*&B7L2EtEG`J$yIM+n8*7OV^e4 zb)@cR0nL6M&dp}uKDkRr{uhL-TfoO`C{Iwy|0O&?40NmQ&UD=lTfi-I?Z18S5rgfD zCw7+h;rR)Bp|H+GcjJIKg!Z8hMfc?6%-%EL4L}OhNNp8oMMYEw*l5s-+WbBh%A9v7 z!g{CbE9F?JJ!K^#7)5_+Kd(?ji`jj&?zS@lHyGU)+ZEyAvn+biK30Bs!ekyivXK>e z;WgznZUvOKG2zb#-f`<6d$~>h>vWZhceDG@0(5?-#AFR$x16v zOx-xqI_mMl&f$$Wg$poLb%pNXON{o1FbDzQ*Q2sNe5hbax&8%ZD!kNGcH66K{I;a= z7#z-&f@P=w=!q0^;DviKF|KuJ&iUix<3~{@EEcO-QP7wJp!!<>U^L{}4%ZtMuIE+5 zr#dr6Mn(&)SZB}MK)lPG=f+awlDe=U*OSHVtH5l*RZu1iQ7w~N1Zv=aAZi81VzXIR z*ObjJdP#2Kk3)^o`{I!lmL>pBE&2t={9&rqj3|wjw4$Ko5Cu%KE60GGGmraM*3m*W zf)EQkU%Gc+bDH75DZ7A5D(0!y7Re7tW3r#w z!!wX^iHbz?7!>6n{u(E&%fKG0{YGkD<`$s(67I3^Hx+?d;z7^hC8&_DQCtq3nl}{? zG|A#~l7NAg1Ci9Q&g1^_1IQ*El_FETwN5H0aN`#C7T+Mdl)o|d^mNhQt+Vt=jk#Rr z7vIX?e&G)sU#=}t!UX4TEPE0vh$ZRa)4|7xfHr$uRRfEFs@*LYGRzm==qj5(1nr+# zd@YwMs~m_x%uZT`_+yf%Byq;Xa2{e-^<&Pa^IJMsBQa1`Kg6PI@$Q(LlcRE(ESd1! z8xLLF*fGOCFmhfrkr#OgW}Vy+RTSsLkWso3?t`zQQC|Nk{Zt;@GfTnadj6Ht|Ci$6 z(;+*##eE#_T(2)5G8|xZ$K?q5U5kaudUawp$A!ww`Jch^d-lZO6^2Gkn4BAhm~}nt zWnIQ;n?SS_=T;nYI%8iMGpYa!qrdj3S3c4I?akfws%hoi04iWO01{PYm|D$fPXN}5 z&rtrfs$tr}*84&e2e&3fv{c)!5A>Q`);+@W=VNDwK6(Ue8Px&5)pRDOIc{N0&G7%o z3v?@+{|JnRzXC&zu{WC?8fa(c4u{vEY6vw^h24BO)z_HKuU{z>HRc zO0;@87ahShgesJ@LH;3CjW&Zhc3!JibUu8@xH{y4Lgngn_m0wQ7IL~n=v+4GKKPHp zEZn{lmcO>=D z0&bQF{2M5tbq$Eaok;A53FZgQ3o#PA)^KB3yY#8#HHa6q9X^g$6p^==GDg0AyGA5c zj&wg*AK_9aNe>`L%$d)>(lWhei(|Emu@U*on5!ZeOkp&Yk_mmqCHB#$i|egLcg5ux znj5dW&UhD`4LH{8km!k<<3IZFfBgGj^TG3i_j8B$+_eYJMq7RHPZ{!#V(d<5^&K~- zJp^*WYV4#E0GCb}E~|-1A<0qUAA^i1$Xe*n`zllx58+~(u#@v&B5=2_a^qa+<4t$p zO)d`u9#jNREeID`g)k3E<;9kfFLN)odAq2l=|Xilh5Lb!SCo^$yF;5s#=U8f}LOa>uTyIWp#$kTgk|Fl1uHbBtmR6RBL@fN$X$ zc`-5al)zry5Qz$-DBj&=V+)Ki^;*CUM;fQ4-%){(r$G`oVWlN1DF9#Y{C-ayTkf2r zjEmI=K8GWhco4h}&9)RrDh@RxrdswR#=KWz)<#xtLc+$&Y!Uwu=Q0_g^k@o7!m5wswXTY({ zM=)7%!geR!hXKMVVZ=P?D9TDl?%ktx7oB+`OSjF9!Xk8miSL^Ug44$5KstTz_iR#*CLD!j9CMzgNlqp&^+%UcE-dP|C1Cn|ZLLR5 z=pr6W+=yMUN=*^B%!J`e$&q|wrD=&%3+y&A3vGuB)xp4mpr^;%L5ez*Trd?n=aa$O z32hz=X#mM~%s<)u@5s3 z5uZ6K((yP=oI{Sa02`{!qP11A#;)Ezj4`r6NQpGAXb2@sCs8C?tPOvqS>Bk%UKoo^ z5T8YHWXOJYEgU&+($77}n->Ekhx{-IJY%T&Zyi4t<(N6o!NK?lVzopl9*XAy40%C* z2Q$zD1@!eIv-RY{7A)x4Nj#KER8)nyIPAh)t@Yn?9Mf*GD)SmSvJX(6D(|(j_*pXY zp?|hviwagk@oRQ?ItpJa54Abcb_Z#)^JDQbjYnT-H$l91fwM=23NiF_$hUDwzrEf* z2vD6kf~jI%YIeB`BNt0G{$t24C53WPJ0oP4@x}y17&-Z+IP@(d!q1YT#Vni%d3>5` zG!GZ%`8f{XZVK4Rwt{irz35{Hh4)O|*+ySir|#xNH*rS01%+cHUctTvXl`T|37>}) z(=PDfm=;5wX6e}^{38Zq0L}fPlVsP7Ha(XIw}l8Abn=&+=&&hlOiXr7P)j%WFAKOs zq)}b|DhbCs^oped51GIO$8a46d}s)&-QCR+$+W%WDJ(Q64fFr?2>-Z+zZJ*`Y)x-E zDTHHF*H^Nzx!8WN`N_P)wVBWKlMP*zh-%#|W~Yc52w$ zDRAx0#j#3$>D;bj4E=ISM8h-{|6E!yO$YQoo}Y1%rwb;XA?AZZFbI*80k8oa5}}H$ zLE4FQx#|xaF(Mx>J}6%ujl_%w8y;{k!SO5R4>Bx*#Z*s(cwlp^{~8}0y~hO7Va=~t zjHfRFOW!k@iLtO0*wv!!N5;oMmqUvU^7H}Ukczu_d&>#}z(GoMIm(wM4 z5d>bc+yq&thSSHPz524i7m3}}b8u~eyjo=Le8IOy6K>xU!7X&@(-zY?=_EGnrcPh_ zXC_n;in4u#r_RW-`tUmSw{qe|g2;kj>M@Dy5TUa|Uh-kU>QSoDe!&7GBGhMUb=wdt zFUYXf5y3dhOhPEZ=oJ3?SD}Yxq)Lc625Usa!cstBmWyW;AN-8oX=5wczk$}NLZOSf zD~cx&J98FXbdC_JnTwG^jhQ(j!pV#wF)7Hr&8odcFJ>+q9UB%HZTPPPAADK}x2aP? z3VDL^Pr%6ziYMDHVZvsFv}Q2dm=+R90rX z^8>5a{-%FdC|A(2of6o7i<{Tn$jbAc84^(3p%5)X1c$nxh^`oAf3m3^P4qTF3`vr_ znZlN#L5>Y1wsHDZv32I~5p6~IlI}KX#aR~m33}r3fPyfbV9tB{#ONw6ol>U||3Ogz z3id2Ky>%Y`M!T9C+(7|ln^aam!H9DotUX9~4ai%-HJKB-j=s=0-B%dM37gGMexv}h zB+o8`O`@QuPq!1$Z076*+Hxnm0Uh4f?52>|6LNfUQgfflS6Z@eg)H?d4NkU`R50m% z7Uajn{*0=r=y2HQ5n90NJXXMsP%5;yB$3*h$2RYA!wTt0py>9`dlg^QNu@=D>YQZi z6*G}j9vLKY#WbCuS)c;mau#Myl)ihhOhYU!tY+e=)<~Dk!M?1kmr@c3ppub-N_@{Anq-g=Ct*vD%-z_6L=kgPpk-gxx&hpIdyyfE`NIz_lY6a27tTL3#(yH8+W&F! z0S~;6)80-5;Q6pBcn7E(2Ga=6%MooupBHUE_kVUSEfZm_Xg!ROfP7@6*CpB~=zxVUkcKq9iD!Jp-^yf^)#78@RN9dM>whGg%Q;%%89b}&f*O+6P;Nt|bBF7GhBR!3L zvl(ut1BGW4G(WM(IYLu$(1nPI9_savZmvK_a}f|=FT{XxHqw!F`9^j6qwERapr*{R z>^o1c;xUvvY)Uqvrj{+JobKkA&63j#A)tffflATa3h6JcTCpI9|MopF3X>OY%-H^t zTS_L_DYhd-&;4cB>jX4S1ch@xxI&~_ml}l#AxQ+S(26!a-esrq%wW(m-FaEkcP;FV zP0V@Hk-zH>nXhg2Zhzv$2y15fyM#oe>+gQ;|A(Fu*llC7N=lr6`N6bPprNcrz_Ag< zLVX-#@4?ca&kPD!qf{A6Q57({8$a70@`68jO!+(@l3TFR*ZlyHb7jVyDpLvNIDxh^ zWb`mB7s!n~x#NQJX!vw9@NleWa2bIN#WLY7TpnKY-b^yNV+_S|l5bGRc3 zV$ve6=42YBAJBg$nJt9h?3Y*leFAIf{lr0eLB0lj_qi>gkIm4b3w#SY!?xM9?x2gLbio`NITgR`;U|g*eIyn;Zw( zf{ZuhRrA=Cd&o)Z=tvsi4<@*k0@*(&8N_xV9wEpf!o>K&p)nM3%O3H5-_aHlEjLb{<hrDm?aIhc1Iw@b);?Q=46A@o^}-WU(CPATCjBQy=LNPloqlZ_|6MA>LrQf_ zb-lTd+N^zqYTG_deZ7@Fh67FSeVmPh8huRrou#?y+K|ydouv{}1zn^&e#gxH6{9on z9j{ml7bp+;h@nB~Tc*xbPZWV8a_KYzk3mdBKTE&JF$Xa~qJD2PnXRvld7KaoO z&hu%(f={Bm3j5g82&2|~VHDkxdcJg6l-=WXy>nU@@OJS#DxLj)wq6d34J%K5mn6EO zRMCthyd=>oU5VHKf;0K1a7-21Q9Vh3OqyzgG2?(FMpa})=XvhXG!2xH`j_0WK7u|! z6uGem2_1MKxhtPfGEJsaikisl1R_cOdFV73>LDVqJaZam&C7NqSrYGOi``{R9$+d^ zHb80}aPgH!s0G6=eN<6b<@6mIJ;IAJ=J|k7;RU`q7xIz@fIY~nw~hjl!MiIESvUjr zKpZO_Ww4cju#r{DTlBuV7NSdP%7fB(S4Lb3E7iDJtheavOZ1g8@|wfzN7WmZN>d13 zx<94|GoCIRtzZ?7l_Dvmz8->U@+O+0OBjs>0AfRlj-hEN5_w^{^=*1z2oZXs~v55 z?5T|ICGO2d@s_z@Y${|JmTVgd%k}B3xi!u~#5A;f;t!9Qn;ZLSv7Q-0DuhyvkXm{9 z2_snYKEJ=h2yS4Z%YOwkFY!LLMl}1BtMG84@T&ryofYC^sChQ4k2Hia6oNL0_7@5P zkVoN>kxDe|H)4mJY1Vd9T5MuPmK9}uy`%sKRUH$_mk>q$m{9zjR#H8sM5_Pu9IB9& za8Uw#_a{G*=*2B=(8A3}QDa#ev!TO0O6k6Kt8@ zUoKB8r4N&bF`HT~ZorJyPIMK~+fVqy4N3o@EAaee=*w>#aj@Ps?`&(4SF$?*{W#St zRqe&RJWpyA-=0O;y+u;E(7k1GFJ|rTSDK<00M(UXGGyK~jG93u<_wL0Dg6@|17rL+ zmgJaVXCaZU0TdjPni;(wN)#j#MxZ`~~p45d*cDbSK>`-<&lI>N=QL1NThs`1mClsr#V`N7QJL~X=&8->p zRy(N;(md z)OeiyQwse=ctcekzLJX60}eIuIY5BrG!iumR1fi(4VaSuW}Wo4#yeeK+Jd@<m4vM6zAoHLe{{dg5=_o-=GwXUK%G3fB?+ot@ZuZR{p{5JJc!QE>X{Zg`ATTiVgIW})0RFiVl^2F3

hz5gF@NE;bRI|?|wIstFHxEu|)(H(n<+T>4Av%=dWQ9Y{)A^0b-9|Dav4>8kEIh{A|@i;KRh( z<9Ryvy}F#0WDv1waVk9ya+j+}fpJ4ruyr)*7P#2ecVa9Z5G)m6VY~;d3q}?WQ zG@j?_s<h2kc9QJkT@iVp^63=g zni<8?Fwx|plN=hwdCc+M%(culR}}R9jd~Xo=qy?NHv9PH`>I>!^F`_Aar8eOL6TP^ z)hF1K;#@7C3w^R>fj1l;Be{?EmXlznn28>PZo{{!$ zI?vT}JsDB?PRGQQ?uT_t?GeM9_>KjucV)*#3^vu_lX*6i={j??jQn^Mu>`2nb4qsBF2l zv1Q@g{Zc*vo`%_|B%_YTyzaOPm3%cEB}F_aF$dwWN+n7Nh7Gxhex_Z#xx{o#asU$_ zbUGzyYU=V1PVBub{p!!|ha> zr{x9&YtyS2)Gz_el!iGMAmfynAY^k6%v8r3I+BZ zBjV5&y-b_T##!-TAIPc0rfkH|Y6rC2&IvFa>!rAR#`-7z!S-j?C)I4$O`r5~GW+VQ z@tF%q!BYTvOjKw|148C!ZiJyokRKPSHR5FnB^blPM&E7);TU)>oq&W_$!eT9#Zj}b zOK*)_I*)!*66=FT!oRBeb3#b1LgqrbmpLx`KW7!!<#9t1?rC#&r6kLcoyK0K$dPeM z-gJU!oI1@bD#wCCDTXAJ*6QFMXG4qg^>cupJwW6zxZH+L!oGose z*0=S&z6`t;F(yZi;^>i5G7VT~9W!PJiOD#&<|Q24pg=0bnWZ#l+?F2YuoJ&bs_#wF zLObb)Qov~b>(=O>Il%B#FSUy?0H^sec%=aD@}#wM;M2&3z;yo;+62+GP0~=}L6S}q z4&6nww}SCW$udZGy~AX8<<|BZl9BxhTZ`qB##(WMG;UXO6EarhaEH_J5u@{co6UPw z$LWXbG3{HY=Bh{WWJ0w=gR5s%qA5e`+eEh+m&Q;`j!H}!^y|%c);YqZLj@zYw?Y32 zT<6Cu35L+@%(5LR#927fAOv{qFPLJuYUfF!s8cHmq3#D_4>4lf{@g~+*HVR*r3SA1X!oZO^~Ec_{8 zB5eO90B=1aB}2!_+&ix5bgd8BHExBu$@;}zVTOv8fElY+cv1Gz8IVi-ok_=tK81K* zoEat}0iFyp8fF%7WGs@E&^g#E7-928mslqmUw_n)>v;q)m$O9)i;>)EnNQ}fI`>o0 zlW+WWJFnl!(taTO^qgBc+ze9B!D-~Hzknw)I-EERs+ciS5#>xtNpC70d>Y(5&Fd(p z4>-%H62wdaV@XzJ2{}gq#U4}0QivV^Xi&lm1xJY;CiJc1v!P^#mI@Zgiv4}j1YRxL zO5!^P+xQ^NjDBSjfsQ_y5EhMa-vncOjfbjV3nM7750&+O5K#-QyXskuVh{f0R-B67 z>@%xEH41CWqoO`8D9p$0#*jZk6(Vw}uf%6RE0$YSw*2dK=$|cLRIY%2m|E)_;7=%ju-96Arx`LTig6m~RMx>D;rK?*1gHXq$mV3|w;U5|5bt4XA}D6M5bmaebFqP2;entnjk7xm z2*VDE{=YdzU8sIMgCC3?tYizNF5&{DB62|KE0FpmBV2UX8IoKgkOWDURtOJXL!{2P z%sz=hdCh|Z%01xx@COWEp}I~*xR9j3|((Ptj_&w z@2@RwlHI$guGaECE^2D$=kg}S2oq`k`b7S^=N*YKZ)jd0#%*3RFIMZnL-tV7&B1%6 zF3au2BgHBv>}8~;s_k%SoC`)ns~h2Hg{ZB&)n`-C93HO>MqLeV>c_KqJ z91{34=i_s`2!ANXmpBWv+xcX9mF;f9R~~M`tIa}mI4Jf1NJKJdcY3XYn9%^ z;y3nH9JWGHT3)@V9wAR7q-J8OKEk7VA*lhODq|{>B?^O-!5oW}cGnm|2VOu(G{}-s zZB6z5pYFsuyPeVh=4n&>Wx#CaBH2%`9{YK&9`%+ugu5F=!q5A<&6G10OkNFA7(!RT zv1FHov-(03ozbTIi*@aw>N(A7T?#Y*jy15i3j#)O#0 zecbu$IOHI6_T6Xck{Gx7n}i|I-^~GE*(O=uYdu7!HQO5aAC+7|U}J|lC%Ir(_$Wsx z8H~SZ=#Pi0>I}Kn+M#h0ArlIL*SU%dwl(zrI!mN-K9BNIDZ4?TbP@i3rVpeqpgKwL#96i3IpPHP+Vs3F zd30>l*4v4}glCrk-5R-_y`VZ9pb(a2eZo^T`{LhB@?j$G9Q1itMdV5bVr-xv zwMxIOzvymerwY&29-vF2#Vm>U>w}{TT4ZPk6;ATZ@OIQlfnr1sV_(>Zg&ssoRlDq0 zWr}q8NT~QZXMBD`@D>WkoBsaEq)~;#3b->aqq{}yI!oAUF)XG<41&fQsFhuL&HmNN z_E!8%CtFa61CLXIB*|C=2zmi z!j`~->5jGzSM4zMrd@fXc3G@i_(1L)kd>v&jumGOM(mXVervXnz|8yqS*`Ag`4Z%OG^i5cC+}2{^e00uqz))xIE2v{lWyLI`(Ox8WZW^`kJ|G zN8(XkR0iu`ifOmibxquG)SJ%l8J*#h$)RPv$xVF5na@S~>WpgACpiA#d>(bzaWb{i zIO+CzVwr+!k4zofxwu5yQvK68w{`X?ea*SDbLeuFnTR$Dw^=RAHf*iYA%PaZT%BRR zvfU`^*sZbO9(ovc68POi+0J^^^uZSuQ9YRxjg^@o!s5swAqgWg?_V0t0fRSqS}Js! z@5{B*wR$t`6-3Vu*Y|Xqv=&uneLhtj5RGQxN>BgXK}1{;pj!X626 zX=Ed|yA5u7^{IR+!jTfT(eR*Vur$e zf1!cFijv%(Kpxw_`{tjoigc>Lv52 zSi8B7m`nGBKTQ}a7%BD1WR)Y?9F@fIN($HcG5UVJWNo-MSOKe@l*o2;bu*4kjRDOV z>$*T`(%@J)&~>a+U+*v~l`!MJL+kAW66g8okGyzW$|da;D1qKd>l%N`>RDT@J$9@o z58%kG?f!`m4#2Y6u0#S(d+ceTa=1(g2EFWO|5=Q_9>40?LRFXI@7srU12^(FD3$sg zU`3_wJ=q696^&81ZUNW<{bK$~ty!Ol6`? z`Bjq~X;cRh$wPK=l!Y()L;2Qmbs0qybCsygGx~S60WT0^#{&;>84w$cy{r1CUB1KL z(P4!#1}*c!W4reM(e;)=aRqU@cW}4h?(S}bTX1(D+}+)sf#AU%5?n%Xcb5Rc-5r9< zJK4Rvd+V*e)nEFv zVpO&I(^J_QYRKbtgG#U= z?=p7(eLzDyY@DE#y}@Bu^U@IVit^XNq#x$nko%IAX4;dLgo|1oV?RpG!! zLx(}f;)!S|aU2I`)h~-4a0^5G4f;ns4Wid5x_evHeR*}$ZJcnN+}2kRX4*(VetFL( z6B*SS`CgNdH0a|}v`NDv^zS-NeZ_?pKFxa$LO8AA5P3I$@S0RYJ_!$X=z6Z`=q?Z| z4%Zr&3VO`Mzmk7&!IF5gnp~gCYuh8d<$?vaPKGUps~x)EwC4fcy9I-g8SB?p>K$A9 zxb8(*sO%}_A6Z^XJQ261_TNxl;G|V&=a~d@y?@I%Yg>EBwo!kBu1K`l{(IXze53%c zaM$d%f%+6-m`^`Rb(V2A5{=JS|6^vG?a;b_pq>&C4^hgYSPDSF9KZicLOtx+Yjf?; z?hfu<8bxiHGbf##AG`;rhy7(rjN`E^!m;Ma!sjFlt8z0(^dh1HR^JWTT$H@ohNLN(oEU|Q5h%!gM2&mR- zVS4ST4<&Vj&{LAFNH}3KMp7vfHW8w*_;0^i{8$yty>+xuvkonP3bP*R6l{UL)|_Mdrz^(ZZ>DD$CB8){!Eq zKY-=f?(jO)*-<<~xBSG(B1?{sZhUlY92?`W+gu5J%_C4Bf@)Fn^w~-_u<7Ocgrmo1 z<$m*>d(KhNj7*|?rgsPam~cPY##>|ccOW|)5<FL_)yvM`W6vdi$u4$6rgw6c(A zweZyW^6$omMoG_Ac;iD_Xw@xT;Un|*fpD3~TpA?FW!dl|fxwNOGsV+J1j8Xn{-ApUt6hHGt2C{^{3O~7lh8%2 zpK(1d4PP3KaORSD?+EL6XVsR;J=*qQK!*KAlSAA;)&_a^mRLOH&eNoL&*bF%nyk9d z4f+zP0eR;Je~7VT-Ov4Qyjz=8S|rDoF9&9cQ;tk3GvB%N-T6?V#`dt60MU1v6bG#; z0Ba?6FMHlfSx_bQQKGE±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�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 B+IIi| literal 0 HcmV?d00001 diff --git a/plugins/terraform/package.json b/plugins/terraform/package.json new file mode 100644 index 0000000..f5df163 --- /dev/null +++ b/plugins/terraform/package.json @@ -0,0 +1,51 @@ +{ + "name": "@internal/plugin-terraform", + "version": "0.1.0", + "main": "src/index.ts", + "types": "src/index.ts", + "license": "Apache-2.0", + "private": true, + "publishConfig": { + "access": "public", + "main": "dist/index.esm.js", + "types": "dist/index.d.ts" + }, + "backstage": { + "role": "frontend-plugin" + }, + "sideEffects": false, + "scripts": { + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "clean": "backstage-cli package clean", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack" + }, + "dependencies": { + "@backstage/core-components": "~0.13.10", + "@backstage/core-plugin-api": "~1.8.2", + "@backstage/theme": "~0.5.0", + "@material-ui/core": "^4.9.13", + "@material-ui/icons": "^4.9.1", + "@material-ui/lab": "^4.0.0-alpha.61", + "react-use": "^17.2.4" + }, + "peerDependencies": { + "react": "^16.13.1 || ^17.0.0" + }, + "devDependencies": { + "@backstage/cli": "~0.25.1", + "@backstage/core-app-api": "~1.11.3", + "@backstage/dev-utils": "^1.0.26", + "@backstage/test-utils": "^1.4.7", + "@testing-library/jest-dom": "^5.10.1", + "@testing-library/react": "^12.1.3", + "@testing-library/user-event": "^14.0.0", + "msw": "^1.0.0" + }, + "files": [ + "dist" + ] +} diff --git a/plugins/terraform/src/api/Terraform.test.ts b/plugins/terraform/src/api/Terraform.test.ts new file mode 100644 index 0000000..319cda1 --- /dev/null +++ b/plugins/terraform/src/api/Terraform.test.ts @@ -0,0 +1,81 @@ +import { Terraform } from "./Terraform"; +import { KubernetesApi } from "@backstage/plugin-kubernetes"; +import { FrontendHostDiscovery } from "@backstage/core-app-api"; +import { UserIdentity } from "@backstage/core-components"; + +describe("TerraformClient", () => { + const mockKClient: jest.Mocked = { + getObjectsByEntity: jest.fn(), + getClusters: jest.fn(), + getWorkloadsByEntity: jest.fn(), + getCustomObjectsByEntity: jest.fn(), + proxy: jest.fn(), + }; + + beforeAll(() => { + jest + .spyOn(FrontendHostDiscovery.prototype, "getBaseUrl") + .mockImplementation((id) => { + return Promise.resolve(`https://backstage.io/${id}`); + }); + jest + .spyOn(UserIdentity.prototype, "getCredentials") + .mockImplementation(() => { + return Promise.resolve({ token: "abc" }); + }); + }); + + afterEach(() => { + jest.clearAllMocks(); + }); + + it("can fetch from k8s", async () => { + mockKClient.proxy.mockResolvedValue({ + status: 200, + ok: true, + text: async () => "teststring", + } as Response); + const a = new Terraform(mockKClient); + const spy = jest.spyOn(mockKClient, "proxy"); + const resp = await a.getSecret("abc", "default", "test"); + expect(resp).toBeDefined(); + expect(spy).toHaveBeenCalledWith({ + clusterName: "abc", + path: "/apis/v1/namespaces/default/secrets/test?timeoutSeconds=30", + }); + }); + it("can fetch from default k8s cluster", async () => { + mockKClient.proxy.mockResolvedValue({ + status: 200, + ok: true, + text: async () => "teststring" + } as Response); + mockKClient.getClusters.mockResolvedValue([ + { + name: "cluster-1", + authProvider: "provider-1", + }, + ]); + + const a = new Terraform(mockKClient); + const spy = jest.spyOn(a, "getFirstCluster"); + const resp = await a.getSecret(undefined, "default", "test"); + expect(resp).toBeDefined(); + expect(spy).toHaveBeenCalled(); + }); + it("rejects when non-ok status returned", async () => { + mockKClient.proxy.mockResolvedValue({ + status: 500, + ok: false, + statusText: "something went wrong", + text: async () => "oh no", + } as Response); + + const a = new Terraform(mockKClient); + await expect( + a.getSecret("abc", "default", "test") + ).rejects.toEqual( + "failed to fetch resources: 500, something went wrong, oh no" + ); + }); +}); diff --git a/plugins/terraform/src/api/Terraform.ts b/plugins/terraform/src/api/Terraform.ts new file mode 100644 index 0000000..5d9943d --- /dev/null +++ b/plugins/terraform/src/api/Terraform.ts @@ -0,0 +1,159 @@ +import { IdentityApi, ConfigApi } from "@backstage/core-plugin-api" +import { KubernetesApi } from "@backstage/plugin-kubernetes"; +import { TerraformApi } from "./index"; + +const API_VERSION = "v1"; +const K8s_API_TIMEOUT = "timeoutSeconds"; + +export class Terraform implements TerraformApi { + private kubernetesApi: KubernetesApi; + private identityApi: IdentityApi; + private configApi: ConfigApi; + + constructor( + kubernetesApi: KubernetesApi, + identityApi: IdentityApi, + configApi: ConfigApi, + ) { + this.kubernetesApi = kubernetesApi; + this.identityApi = identityApi; + this.configApi = configApi; + } + + async fetchURL(url: string, type: string, requestBody: any) { + const { token } = await this.identityApi.getCredentials(); + const backendUrl = this.configApi.getString('backend.baseUrl'); + const response = await fetch(backendUrl+""+url, { + method: type, + body: JSON.stringify(requestBody), + headers: { + 'Content-Type': 'application/json', + 'Authorization': `Bearer ${token}`, + } + }); + return response; + } + + async deflate( + tfState:string + ): Promise { + const requestBody = { + tfState + }; + + const response = await this.fetchURL('/api/terraformv2/deflate', 'post', requestBody); + + if (!response.ok) { + return Promise.reject( + `failed to fetch resources: ${response.status}, ${ + response.statusText + }, ${await response.text()}` + ); + } + return response.json(); + } + + async s3GetFileList( + Bucket:string, + Prefix:string + ):Promise { + const requestBody = { + Bucket, + Prefix + }; + + const response = await this.fetchURL('/api/terraformv2/getFileList', 'post', requestBody); + if (!response.ok) { + return Promise.reject( + `failed to fetch resources: ${response.status}, ${ + response.statusText + }, ${await response.text()}` + ); + } + return response.json(); + } + + async localGetFileList( + FileLocation:string + ):Promise { + const requestBody = { + FileLocation, + }; + + const response = await this.fetchURL('/api/terraformv2/getLocalFileList', 'post', requestBody); + if (!response.ok) { + return Promise.reject( + `failed to fetch resources: ${response.status}, ${ + response.statusText + }, ${await response.text()}` + ); + } + return response.json(); + } + + async getTFStateFile( + Bucket:string, + file:any + ):Promise { + let bodyObj:any = { + Key: file.Key + }; + if(Bucket) { + bodyObj.Bucket = Bucket; + } + + const response = await this.fetchURL('/api/terraformv2/getTFStateFile', 'post', bodyObj); + if (!response.ok) { + return Promise.reject( + `failed to fetch resources: ${response.status}, ${ + response.statusText + }, ${await response.text()}` + ); + } + return response.json(); + } + + + + async getSecret( + clusterName: string | undefined, + namespace: string, + secretName: string + ): Promise { + const ns = namespace !== undefined ? namespace : "flux-system"; + const path = `/api/${API_VERSION}/namespaces/${ns}/secrets/${secretName}`; + const query = new URLSearchParams({ + [K8s_API_TIMEOUT]: "30", + }); + // need limits and pagination + const resp = await this.kubernetesApi.proxy({ + clusterName: + clusterName !== undefined ? clusterName : await this.getFirstCluster(), + path: `${path}?${query.toString()}`, + }); + + if (!resp.ok) { + return Promise.reject( + `failed to fetch resources: ${resp.status}, ${ + resp.statusText + }, ${await resp.text()}` + ); + } + // need validation + const responseText = await resp.text() + const secretJSON = JSON.parse(responseText) + return [ + { + "TFStateContents": secretJSON.data.tfstate + } + ] + } + + async getFirstCluster(): Promise { + const clusters = await this.kubernetesApi.getClusters(); + if (clusters.length > 0) { + return Promise.resolve(clusters[0].name); + } + return Promise.reject("no clusters found in configuration"); + } +} \ No newline at end of file diff --git a/plugins/terraform/src/api/index.ts b/plugins/terraform/src/api/index.ts new file mode 100644 index 0000000..0c244ab --- /dev/null +++ b/plugins/terraform/src/api/index.ts @@ -0,0 +1,34 @@ +import { createApiRef } from "@backstage/core-plugin-api"; + +export { Terraform } from "./Terraform"; + +export const TerraformApiRef = createApiRef({ + id: "plugin.terraform", +}); +export interface TerraformApi { + + getSecret( + clusterName: string | undefined, + namespace: string | undefined, + secretName: string, + ): Promise; + + deflate( + tfState:string + ): Promise; + + s3GetFileList( + Bucket:string, + Prefix:string + ): Promise; + + localGetFileList( + FileLocation:string + ): Promise; + + getTFStateFile( + Bucket:string, + file:any + ): Promise; + +} diff --git a/plugins/terraform/src/components/MainPageComponent/MainPageComponent.test.tsx b/plugins/terraform/src/components/MainPageComponent/MainPageComponent.test.tsx new file mode 100644 index 0000000..d35602f --- /dev/null +++ b/plugins/terraform/src/components/MainPageComponent/MainPageComponent.test.tsx @@ -0,0 +1,27 @@ +import React from 'react'; +import { MainPageComponent } from './MainPageComponent'; +import { rest } from 'msw'; +import { setupServer } from 'msw/node'; +import { screen } from '@testing-library/react'; +import { + setupRequestMockHandlers, + renderInTestApp, +} from "@backstage/test-utils"; + +describe('MainPageComponent', () => { + const server = setupServer(); + // Enable sane handlers for network requests + setupRequestMockHandlers(server); + + // setup mock response + beforeEach(() => { + server.use( + rest.get('/*', (_, res, ctx) => res(ctx.status(200), ctx.json({}))), + ); + }); + + it('should render', async () => { + await renderInTestApp(); + expect(screen.getByText('Terraform')).toBeInTheDocument(); + }); +}); \ No newline at end of file diff --git a/plugins/terraform/src/components/MainPageComponent/MainPageComponent.tsx b/plugins/terraform/src/components/MainPageComponent/MainPageComponent.tsx new file mode 100644 index 0000000..8825902 --- /dev/null +++ b/plugins/terraform/src/components/MainPageComponent/MainPageComponent.tsx @@ -0,0 +1,12 @@ +import React from 'react'; + +// import { +// Header, +// Page, +// Content, +// } from '@backstage/core-components'; +import { MainPageFetchComponent } from '../MainPageFetchComponent'; + +export const MainPageComponent = () => ( + +); \ No newline at end of file diff --git a/plugins/terraform/src/components/MainPageComponent/index.ts b/plugins/terraform/src/components/MainPageComponent/index.ts new file mode 100644 index 0000000..4f98e9f --- /dev/null +++ b/plugins/terraform/src/components/MainPageComponent/index.ts @@ -0,0 +1 @@ +export { MainPageComponent } from './MainPageComponent'; \ No newline at end of file diff --git a/plugins/terraform/src/components/MainPageFetchComponent/MainPageFetchComponent.test.tsx b/plugins/terraform/src/components/MainPageFetchComponent/MainPageFetchComponent.test.tsx new file mode 100644 index 0000000..0d33112 --- /dev/null +++ b/plugins/terraform/src/components/MainPageFetchComponent/MainPageFetchComponent.test.tsx @@ -0,0 +1,74 @@ +import React, {Dispatch, SetStateAction} from 'react'; +import { screen } from '@testing-library/react'; +import { OutputTable, ResourceTable } from './MainPageFetchComponent'; +import { + renderInTestApp, +} from "@backstage/test-utils"; + +describe('MainPageFetchComponent', () => { + it('renders the outputs table', async () => { + let fakeOutputs = [{ + "type": "string", + "value": "Hello World!" + }]; + + renderInTestApp(); + + // Wait for the table to render + const table = await screen.findByRole('table'); + // Assert that the table contains the expected output data + expect(table).toBeInTheDocument(); + expect(screen.getByText('Hello World!')).toBeInTheDocument(); + }); + + it('renders the resources table', async () => { + let fakeResources = [ + { + "module": "module.eks", + "mode": "managed", + "type": "aws_cloudwatch_log_group", + "name": "this", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "index_key": 0, + "schema_version": 0, + "attributes": { + "arn": "arn:aws:logs:us-west-2:833162080385:log-group:/aws/eks/emr-eks-fargate/cluster", + "id": "/aws/eks/emr-eks-fargate/cluster", + "kms_key_id": "", + "name": "/aws/eks/emr-eks-fargate/cluster", + "name_prefix": "", + "retention_in_days": 90, + "skip_destroy": false, + "tags": { + "Blueprint": "emr-eks-fargate", + "GithubRepo": "github.com/awslabs/data-on-eks", + "Name": "/aws/eks/emr-eks-fargate/cluster" + }, + "tags_all": { + "Blueprint": "emr-eks-fargate", + "GithubRepo": "github.com/awslabs/data-on-eks", + "Name": "/aws/eks/emr-eks-fargate/cluster" + } + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "create_before_destroy": true + } + ] + } + ]; + + const noop: Dispatch> = () => {}; + renderInTestApp( + + ); + + // Wait for the table to render + const table = await screen.getAllByRole('table'); + // Assert that the table contains the expected resource data + expect(table[0]).toBeInTheDocument(); + expect(screen.getByText('/aws/eks/emr-eks-fargate/cluster')).toBeInTheDocument(); + }); +}); \ No newline at end of file diff --git a/plugins/terraform/src/components/MainPageFetchComponent/MainPageFetchComponent.tsx b/plugins/terraform/src/components/MainPageFetchComponent/MainPageFetchComponent.tsx new file mode 100644 index 0000000..caa6647 --- /dev/null +++ b/plugins/terraform/src/components/MainPageFetchComponent/MainPageFetchComponent.tsx @@ -0,0 +1,341 @@ +import React, { useState, useEffect, Dispatch, SetStateAction } from 'react'; +import { + Table, + TableColumn, + Progress, + ResponseErrorPanel, + Link, + StructuredMetadataTable, + InfoCard, + DependencyGraph, + DependencyGraphTypes, +} from '@backstage/core-components'; +import { useApi } from '@backstage/core-plugin-api'; +import { useEntity } from '@backstage/plugin-catalog-react'; +import { Grid } from '@material-ui/core'; +import Drawer from '@material-ui/core/Drawer'; + +import { ResponseError } from '@backstage/errors'; +import { + TERRAFORM_S3_BUCKET, + TERRAFORM_S3_PREFIX, + TERRAFORM_LOCAL_PATH, + TERRAFORM_SECRET_NAME, + TERRAFORM_SECRET_NAMESPACE, +} from '../../consts' +import { TerraformApiRef } from '../../api'; + +export const OutputTable = ({ outputs }:any) => { + let data:any = {}; + for(let i in outputs) { + data[Number(i)+1] = outputs[i].value; + } + + return ( + <> + + + + + ); +} + +export const ResourceTable = ({ resources,setResourceDetail }:{resources:any, setResourceDetail:Dispatch>}) => { + const columns: TableColumn[] = [ + { title: 'Name', + render: (row: any) => { + const resourceDetailsObj = { + name: row.name, + displayName: row.displayName, + } + return ( + <> + { + e.preventDefault(); + setResourceDetail(resourceDetailsObj); + }} + >{row.displayName} + + ); + }, + }, + { title: 'Type', field: 'type' }, + ]; + + return ( + <> + + + ); +}; + +export const TerraformTables = ({ resources,outputs,setResourceDetail }: {resources: any[], outputs: any[], setResourceDetail:Dispatch>}) => { + return ( + <> + + + + + + + + + + ); +}; + +export const ResourceDetailComponent = ({resourceDetail,allResources,setResourceDetail}:{resourceDetail:any,allResources:any,setResourceDetail:Dispatch>}) => { + const [details,setDetails] = useState({}); + const [attributes,setAttributes] = useState({}); + const [dependNodes,setDependNodes] = useState([]); + const [dependEdges,setDependEdges] = useState([]); + + const graphStyle = { border: '1px solid grey' }; + + useEffect(()=>{ + const resourceObj = allResources[resourceDetail.name]; + + let newDetails:any = {}; + for(let i in resourceObj) { + if(!Array.isArray(resourceObj[i])) { + newDetails[i] = resourceObj[i]; + } + } + setDetails(newDetails); + + const newAttributes:any = {}; + for(let i in resourceObj?.instances[0]?.attributes) { + let attribute:any = resourceObj?.instances[0]?.attributes[i]; + if(Array.isArray(attribute) || typeof attribute === "object") { + newAttributes[i] = JSON.stringify(attribute); + } else if (!attribute) { + newAttributes[i] = ""; + } else { + newAttributes[i] = attribute; + } + } + setAttributes(newAttributes); + + let newDependNodes:any[] = [{'id': resourceDetail.displayName, 'name': resourceDetail.name}]; + let newDependEdges:any[] = []; + for(let i in resourceObj?.instances[0]?.dependencies) { + newDependNodes.push({ + 'id': resourceObj.instances[0]?.dependencies[i].displayName, 'name': resourceObj.instances[0]?.dependencies[i].name + }); + newDependEdges.push({ + 'from': resourceObj.instances[0]?.dependencies[i].displayName, 'to': resourceDetail.displayName + }); + } + setDependNodes(newDependNodes); + setDependEdges(newDependEdges); + },[resourceDetail,allResources]); + + + return ( +
+ + { } + +   + + { } + + + { + const height = 100; + const width = (props.node.id?.length*12); + const resourceDetailsObj = { + name: props.node.name, + displayName: props.node.id, + }; + return ( + + + + { + e.preventDefault(); + setResourceDetail(resourceDetailsObj); + }} + >{props.node.id} + + + ); + } + } + /> + +
+ ); +} + +export const MainPageFetchComponent = () => { + const apiClient = useApi(TerraformApiRef); + const { entity } = useEntity(); + + const [resourceDetail,setResourceDetail] = useState({}); + const [allResources,setAllResources] = useState({}); + const [resources, setResources] = useState([]); + const [outputs, setOutputs] = useState([]); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(); + + function parseResources(resourcesArr:any[]) { + let resourcesObj:any = {}; + let nameIndex:any = {}; + let data:any[] = resourcesArr.filter((resource:any)=> { + if(resource.mode === "managed") { + return true; + } else { + return false; + } + }).map((resource:any)=> { + let resourceName:string = ""; + if(resource.module) { + resourceName += resource.module.split("[")[0] + "."; + } else { + resourceName += resource.mode + "." + } + resourceName += resource.type + "." + resource.name; + resourcesObj[resourceName] = resource; + let displayName = resourceName; + if(resource.instances[0].attributes.name) { + displayName = resource.instances[0].attributes.name; + } else if(resource.instances[0].attributes.id) { + displayName = resource.instances[0].attributes.id; + } + nameIndex[resourceName] = displayName; + return { + name: resourceName, + displayName: displayName, + type: resource.type, + } + }); + + for(let i in resourcesObj) { + let newDependenciesObj:any[] = []; + if(resourcesObj[i].instances[0].dependencies) { + for(let j in resourcesObj[i].instances[0].dependencies) { + if(nameIndex[resourcesObj[i].instances[0].dependencies[j]]) { + newDependenciesObj.push({name: resourcesObj[i].instances[0].dependencies[j], displayName: nameIndex[resourcesObj[i].instances[0].dependencies[j]]}); + } + } + resourcesObj[i].instances[0].dependencies = newDependenciesObj; + } + } + + setResources(data); + setAllResources(resourcesObj); + } + + useEffect(() => { + const getStateFiles = async() => { + let resourcesArr:any[] = []; + let outputsArr:any[] = []; + let responseJSON:any = {}; + + if(SecretName) { + responseJSON = await apiClient.getSecret(undefined, SecretNamespace, SecretName); + } else if(Bucket) { + responseJSON = await apiClient.s3GetFileList(Bucket,Prefix); + } else if(FileLocation) { + responseJSON = await apiClient.localGetFileList(FileLocation); + } + + for(let i in responseJSON) { + let tfStateJSON:any = {}; + let file = responseJSON[i]; + if(file.TFStateContents) { + tfStateJSON = await apiClient.deflate(file.TFStateContents); + } else if(file.Key && !file.Key?.endsWith("/")) { + tfStateJSON = await apiClient.getTFStateFile(Bucket,file); + } + + if(tfStateJSON.outputs) { + for(let i in tfStateJSON.outputs) { + outputsArr.push(tfStateJSON.outputs[i]); + } + } + if(tfStateJSON.resources) { + for(let i in tfStateJSON.resources) { + resourcesArr.push(tfStateJSON.resources[i]); + } + } + } + + parseResources(resourcesArr); + setOutputs(outputsArr); + setLoading(false); + }; + + let Bucket = ""; + let Prefix = ""; + let FileLocation = ""; + let SecretName = ""; + let SecretNamespace = ""; + + if(entity.metadata.annotations?.[TERRAFORM_SECRET_NAME]) { + SecretName = entity.metadata.annotations?.[TERRAFORM_SECRET_NAME] || ""; + } + + if(entity.metadata.annotations?.[TERRAFORM_SECRET_NAMESPACE]) { + SecretNamespace = entity.metadata.annotations?.[TERRAFORM_SECRET_NAMESPACE] || ""; + } + + if(!SecretName) { + if(entity.metadata.annotations?.[TERRAFORM_S3_BUCKET]) { + Bucket = entity.metadata.annotations?.[TERRAFORM_S3_BUCKET] || ""; + } + + if(entity.metadata.annotations?.[TERRAFORM_S3_PREFIX]) { + Prefix = entity.metadata.annotations?.[TERRAFORM_S3_PREFIX] || ""; + } + + if(!Bucket) { + FileLocation = entity.metadata.annotations?.[TERRAFORM_LOCAL_PATH] || ""; + } + } + + getStateFiles(); + }, []); + + if (loading) { + return ; + } else if (error) { + return ; + } + + return <> + + setResourceDetail({})} + > + + + ; +}; \ No newline at end of file diff --git a/plugins/terraform/src/components/MainPageFetchComponent/index.ts b/plugins/terraform/src/components/MainPageFetchComponent/index.ts new file mode 100644 index 0000000..83fefad --- /dev/null +++ b/plugins/terraform/src/components/MainPageFetchComponent/index.ts @@ -0,0 +1 @@ +export { MainPageFetchComponent } from './MainPageFetchComponent'; \ No newline at end of file diff --git a/plugins/terraform/src/components/RootComponent/RootComponent.tsx b/plugins/terraform/src/components/RootComponent/RootComponent.tsx new file mode 100644 index 0000000..4ba7902 --- /dev/null +++ b/plugins/terraform/src/components/RootComponent/RootComponent.tsx @@ -0,0 +1,12 @@ +import React from 'react'; +import { Routes, Route } from "react-router-dom"; +import { MainPageComponent } from "../MainPageComponent"; + +export const RootComponent = () => { + return ( + + {/* myPlugin.routes.root will take the user to this page */} + } /> + + ); +}; \ No newline at end of file diff --git a/plugins/terraform/src/components/RootComponent/index.ts b/plugins/terraform/src/components/RootComponent/index.ts new file mode 100644 index 0000000..f123790 --- /dev/null +++ b/plugins/terraform/src/components/RootComponent/index.ts @@ -0,0 +1 @@ +export { RootComponent } from './RootComponent'; \ No newline at end of file diff --git a/plugins/terraform/src/consts.ts b/plugins/terraform/src/consts.ts new file mode 100644 index 0000000..54556ae --- /dev/null +++ b/plugins/terraform/src/consts.ts @@ -0,0 +1,5 @@ +export const TERRAFORM_S3_BUCKET = "terraform.cnoe.io/s3-bucket" +export const TERRAFORM_S3_PREFIX = "terraform.cnoe.io/s3-prefix" +export const TERRAFORM_LOCAL_PATH = "terraform.cnoe.io/local-filepath" +export const TERRAFORM_SECRET_NAME = "terraform.cnoe.io/secret-name" +export const TERRAFORM_SECRET_NAMESPACE = "terraform.cnoe.io/secret-namespace" \ No newline at end of file diff --git a/plugins/terraform/src/index.ts b/plugins/terraform/src/index.ts new file mode 100644 index 0000000..8f2ccf2 --- /dev/null +++ b/plugins/terraform/src/index.ts @@ -0,0 +1 @@ +export {isTerraformAvailable, terraformPlugin, TerraformPluginPage} from './plugin'; \ No newline at end of file diff --git a/plugins/terraform/src/plugin.test.ts b/plugins/terraform/src/plugin.test.ts new file mode 100644 index 0000000..9f09638 --- /dev/null +++ b/plugins/terraform/src/plugin.test.ts @@ -0,0 +1,7 @@ +import { terraformPlugin } from './plugin'; + +describe('terraform', () => { + it('should export plugin', () => { + expect(terraformPlugin).toBeDefined(); + }); +}); diff --git a/plugins/terraform/src/plugin.ts b/plugins/terraform/src/plugin.ts new file mode 100644 index 0000000..0f3e194 --- /dev/null +++ b/plugins/terraform/src/plugin.ts @@ -0,0 +1,50 @@ +import { createPlugin, createRoutableExtension, createApiFactory, identityApiRef, configApiRef } from '@backstage/core-plugin-api'; +import { rootRouteRef } from './routes'; +import {Terraform, TerraformApiRef} from "./api"; +import {kubernetesApiRef} from "@backstage/plugin-kubernetes"; + +import { + TERRAFORM_S3_BUCKET, + TERRAFORM_S3_PREFIX, + TERRAFORM_LOCAL_PATH, + TERRAFORM_SECRET_NAME, + TERRAFORM_SECRET_NAMESPACE, +} from './consts'; + +import {Entity} from '@backstage/catalog-model'; + +export const isTerraformAvailable = (entity: Entity) => + ((Boolean(entity.metadata.annotations?.[TERRAFORM_S3_BUCKET]) && + Boolean(entity.metadata.annotations?.[TERRAFORM_S3_PREFIX])) || + Boolean(entity.metadata.annotations?.[TERRAFORM_LOCAL_PATH]) || + (Boolean(entity.metadata.annotations?.[TERRAFORM_SECRET_NAME]) && + Boolean(entity.metadata.annotations?.[TERRAFORM_SECRET_NAMESPACE])) + ); + +export const terraformPlugin = createPlugin({ + id: 'terraform', + routes: { + root: rootRouteRef, + }, + apis: [ + createApiFactory({ + api: TerraformApiRef, + deps: { + kubernetesApi: kubernetesApiRef, + identityApi: identityApiRef, + configApi: configApiRef, + }, + factory: ({kubernetesApi, identityApi, configApi}) => + new Terraform(kubernetesApi, identityApi, configApi), + }), + ], +}); + +export const TerraformPluginPage = terraformPlugin.provide( + createRoutableExtension({ + name: 'TerraformPluginPage', + component: () => + import('./components/RootComponent').then(m => m.RootComponent), + mountPoint: rootRouteRef, + }), +); diff --git a/plugins/terraform/src/routes.ts b/plugins/terraform/src/routes.ts new file mode 100644 index 0000000..ff0c2de --- /dev/null +++ b/plugins/terraform/src/routes.ts @@ -0,0 +1,5 @@ +import { createRouteRef } from '@backstage/core-plugin-api'; + +export const rootRouteRef = createRouteRef({ + id: 'terraform', +}); diff --git a/plugins/terraform/src/setupTests.ts b/plugins/terraform/src/setupTests.ts new file mode 100644 index 0000000..7b0828b --- /dev/null +++ b/plugins/terraform/src/setupTests.ts @@ -0,0 +1 @@ +import '@testing-library/jest-dom'; diff --git a/plugins/terraformv2-backend/.eslintrc.js b/plugins/terraformv2-backend/.eslintrc.js new file mode 100644 index 0000000..e2a53a6 --- /dev/null +++ b/plugins/terraformv2-backend/.eslintrc.js @@ -0,0 +1 @@ +module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/plugins/terraformv2-backend/README.md b/plugins/terraformv2-backend/README.md new file mode 100644 index 0000000..06f63a0 --- /dev/null +++ b/plugins/terraformv2-backend/README.md @@ -0,0 +1,14 @@ +# terraformv2 + +Welcome to the terraformv2 backend plugin! + +_This plugin was created through the Backstage CLI_ + +## Getting started + +Your plugin has been added to the example app in this repository, meaning you'll be able to access it by running `yarn +start` in the root directory, and then navigating to [/terraformv2Plugin/health](http://localhost:7007/api/terraformv2Plugin/health). + +You can also serve the plugin in isolation by running `yarn start` in the plugin directory. +This method of serving the plugin provides quicker iteration speed and a faster startup and hot reloads. +It is only meant for local development, and the setup for it can be found inside the [/dev](/dev) directory. diff --git a/plugins/terraformv2-backend/dev/index.ts b/plugins/terraformv2-backend/dev/index.ts new file mode 100644 index 0000000..9d74c82 --- /dev/null +++ b/plugins/terraformv2-backend/dev/index.ts @@ -0,0 +1,9 @@ +import { createBackend } from '@backstage/backend-defaults'; + +const backend = createBackend(); + +backend.add(import('@backstage/plugin-auth-backend')); +backend.add(import('@backstage/plugin-auth-backend-module-guest-provider')); +backend.add(import('../src')); + +backend.start(); diff --git a/plugins/terraformv2-backend/package.json b/plugins/terraformv2-backend/package.json new file mode 100644 index 0000000..795b58e --- /dev/null +++ b/plugins/terraformv2-backend/package.json @@ -0,0 +1,49 @@ +{ + "name": "@internal/backstage-plugin-terraformv2-backend", + "version": "0.1.0", + "main": "src/index.ts", + "types": "src/index.ts", + "license": "Apache-2.0", + "private": true, + "publishConfig": { + "access": "public", + "main": "dist/index.cjs.js", + "types": "dist/index.d.ts" + }, + "backstage": { + "role": "backend-plugin" + }, + "scripts": { + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "clean": "backstage-cli package clean", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack" + }, + "dependencies": { + "@backstage/backend-common": "^0.22.0", + "@backstage/backend-defaults": "^0.2.18", + "@backstage/backend-plugin-api": "^0.6.18", + "@backstage/config": "^1.2.0", + "@types/express": "*", + "express": "^4.17.1", + "express-promise-router": "^4.1.0", + "node-fetch": "^2.6.7", + "pako": "^2.1.0", + "winston": "^3.2.1", + "yn": "^4.0.0" + }, + "devDependencies": { + "@backstage/cli": "^0.26.4", + "@backstage/plugin-auth-backend": "^0.22.5", + "@backstage/plugin-auth-backend-module-guest-provider": "^0.1.4", + "@types/supertest": "^2.0.12", + "msw": "^1.0.0", + "supertest": "^6.2.4" + }, + "files": [ + "dist" + ] +} diff --git a/plugins/terraformv2-backend/src/index.ts b/plugins/terraformv2-backend/src/index.ts new file mode 100644 index 0000000..a44422a --- /dev/null +++ b/plugins/terraformv2-backend/src/index.ts @@ -0,0 +1,2 @@ +export * from './service/router'; +export { terraformv2Plugin as default } from './plugin'; diff --git a/plugins/terraformv2-backend/src/plugin.ts b/plugins/terraformv2-backend/src/plugin.ts new file mode 100644 index 0000000..a47222a --- /dev/null +++ b/plugins/terraformv2-backend/src/plugin.ts @@ -0,0 +1,38 @@ +import { + coreServices, + createBackendPlugin, +} from '@backstage/backend-plugin-api'; +import { createRouter } from './service/router'; + +/** + * terraformv2Plugin backend plugin + * + * @public + */ +export const terraformv2Plugin = createBackendPlugin({ + pluginId: 'terraformv2', + register(env) { + env.registerInit({ + deps: { + httpRouter: coreServices.httpRouter, + logger: coreServices.logger, + config: coreServices.rootConfig, + }, + async init({ + httpRouter, + logger, + config, + }) { + httpRouter.addAuthPolicy({ + path: '/health', + allow: 'unauthenticated', + }); + + httpRouter.use(await createRouter({ + config, + logger, + })); + }, + }); + }, +}); diff --git a/plugins/terraformv2-backend/src/service/router.test.ts b/plugins/terraformv2-backend/src/service/router.test.ts new file mode 100644 index 0000000..4f50797 --- /dev/null +++ b/plugins/terraformv2-backend/src/service/router.test.ts @@ -0,0 +1,29 @@ +import { getVoidLogger } from '@backstage/backend-common'; +import express from 'express'; +import request from 'supertest'; + +import { createRouter } from './router'; + +describe('createRouter', () => { + let app: express.Express; + + beforeAll(async () => { + const router = await createRouter({ + logger: getVoidLogger(), + }); + app = express().use(router); + }); + + beforeEach(() => { + jest.resetAllMocks(); + }); + + describe('GET /health', () => { + it('returns ok', async () => { + const response = await request(app).get('/health'); + + expect(response.status).toEqual(200); + expect(response.body).toEqual({ status: 'ok' }); + }); + }); +}); diff --git a/plugins/terraformv2-backend/src/service/router.ts b/plugins/terraformv2-backend/src/service/router.ts new file mode 100644 index 0000000..db06e5a --- /dev/null +++ b/plugins/terraformv2-backend/src/service/router.ts @@ -0,0 +1,126 @@ +import { errorHandler } from '@backstage/backend-common'; +import { coreServices } from '@backstage/backend-plugin-api'; +import express from 'express'; +import Router from 'express-promise-router'; +import {DefaultAwsCredentialsManager} from '@backstage/integration-aws-node'; +import {S3Client, ListObjectsV2Command, GetObjectCommand} from "@aws-sdk/client-s3"; +import * as fs from 'fs'; +const {inflate} = require('pako'); + +type ListObjectsInput = { + Bucket: string, + Prefix: string, + ContinuationToken?: string, +}; + +export interface RouterOptions { + logger: coreServices.logger; + config: coreServices.rootConfig, +} + +export async function createRouter( + options: RouterOptions, +): Promise { + const {logger, config} = options; + const awsCredentialsManager = DefaultAwsCredentialsManager.fromConfig(config); + const credProvider = await awsCredentialsManager.getCredentialProvider({}); + const client = new S3Client({ + credentialDefaultProvider: () => credProvider.sdkCredentialProvider, + }); + + const router = Router(); + router.use(express.json()); + + router.get('/health', (_, response) => { + logger.info('PONG!'); + response.json({ status: 'ok' }); + }); + + router.post('/deflate', async (req, res) => { + let jsonData:any = {}; + + if(req.body.tfState) { + var bytes = []; + const inputString = atob(req.body.tfState); + for (var i = 0; i < inputString.length; i++) { + var abyte = inputString.charCodeAt(i) & 0xff; + bytes.push(abyte); + } + const binData = new Uint8Array(bytes); + const inflated = inflate(binData,{to:'string'}); + jsonData = JSON.parse(inflated); + } + + res.json(jsonData); + }); + + router.post('/getFileList', async (req, res) => { + let responseObject: any = []; + let token: string | undefined = "1"; + while (token) { + let input: ListObjectsInput = { + Bucket: req.body.Bucket, + Prefix: req.body.Key, + } + if (token != "1" && token) { + input.ContinuationToken = token; + } + const command = new ListObjectsV2Command(input); + const commandResponse = await client.send(command); + responseObject = responseObject.concat(commandResponse.Contents); + logger.debug(JSON.stringify(commandResponse)); + token = commandResponse.NextContinuationToken; + } + res.json(responseObject); + }); + + router.post('/getLocalFileList', async (req, res) => { + let responseObject: any[] = []; + + try { + const fsstat = fs.lstatSync(req.body.FileLocation); + if (fsstat.isDirectory()) { + const filenames = fs.readdirSync(req.body.FileLocation); + for (let i in filenames) { + responseObject.push({ + Key: req.body.FileLocation + "/" + filenames[i] + }); + } + } else if (fsstat.isFile()) { + responseObject.push({ + Key: req.body.FileLocation + }); + } + } catch (e) { + logger.error(e) + } + + res.json(responseObject); + }); + + router.post('/getTFStateFile', async (req, res) => { + if (req.body.Bucket) { + const command = new GetObjectCommand({ + Bucket: req.body.Bucket, + Key: req.body.Key, + }); + const commandResponse = await client.send(command); + const str: any = await commandResponse.Body?.transformToString(); + res.json(JSON.parse(str)); + + } else { + let jsonData: any = {}; + try { + const data = fs.readFileSync(req.body.Key, {encoding: 'utf8', flag: 'r'}); + jsonData = JSON.parse(data); + } catch (e) { + logger.error(e); + } + + res.json(jsonData); + } + }); + + router.use(errorHandler()); + return router; +} diff --git a/plugins/terraformv2-backend/src/setupTests.ts b/plugins/terraformv2-backend/src/setupTests.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/plugins/terraformv2-backend/src/setupTests.ts @@ -0,0 +1 @@ +export {}; diff --git a/yarn.lock b/yarn.lock index 60c1d55..4e1ff15 100644 --- a/yarn.lock +++ b/yarn.lock @@ -421,6 +421,70 @@ fast-xml-parser "4.2.5" tslib "^2.5.0" +"@aws-sdk/client-s3@^3.591.0": + version "3.591.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.591.0.tgz#2e410d33d80d12073b162bc3749cb98ea4af45df" + integrity sha512-YmMQpOdBak+0OZh0LfbK+3u1MA0csAok9yDP5/tD1am7hCg1+zPimHSmpjLBHoKELVpsW5QRuBdCi0dn95uxmg== + dependencies: + "@aws-crypto/sha1-browser" "3.0.0" + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/client-sso-oidc" "3.590.0" + "@aws-sdk/client-sts" "3.590.0" + "@aws-sdk/core" "3.588.0" + "@aws-sdk/credential-provider-node" "3.590.0" + "@aws-sdk/middleware-bucket-endpoint" "3.587.0" + "@aws-sdk/middleware-expect-continue" "3.577.0" + "@aws-sdk/middleware-flexible-checksums" "3.587.0" + "@aws-sdk/middleware-host-header" "3.577.0" + "@aws-sdk/middleware-location-constraint" "3.577.0" + "@aws-sdk/middleware-logger" "3.577.0" + "@aws-sdk/middleware-recursion-detection" "3.577.0" + "@aws-sdk/middleware-sdk-s3" "3.587.0" + "@aws-sdk/middleware-signing" "3.587.0" + "@aws-sdk/middleware-ssec" "3.577.0" + "@aws-sdk/middleware-user-agent" "3.587.0" + "@aws-sdk/region-config-resolver" "3.587.0" + "@aws-sdk/signature-v4-multi-region" "3.587.0" + "@aws-sdk/types" "3.577.0" + "@aws-sdk/util-endpoints" "3.587.0" + "@aws-sdk/util-user-agent-browser" "3.577.0" + "@aws-sdk/util-user-agent-node" "3.587.0" + "@aws-sdk/xml-builder" "3.575.0" + "@smithy/config-resolver" "^3.0.1" + "@smithy/core" "^2.1.1" + "@smithy/eventstream-serde-browser" "^3.0.0" + "@smithy/eventstream-serde-config-resolver" "^3.0.0" + "@smithy/eventstream-serde-node" "^3.0.0" + "@smithy/fetch-http-handler" "^3.0.1" + "@smithy/hash-blob-browser" "^3.0.0" + "@smithy/hash-node" "^3.0.0" + "@smithy/hash-stream-node" "^3.0.0" + "@smithy/invalid-dependency" "^3.0.0" + "@smithy/md5-js" "^3.0.0" + "@smithy/middleware-content-length" "^3.0.0" + "@smithy/middleware-endpoint" "^3.0.1" + "@smithy/middleware-retry" "^3.0.3" + "@smithy/middleware-serde" "^3.0.0" + "@smithy/middleware-stack" "^3.0.0" + "@smithy/node-config-provider" "^3.1.0" + "@smithy/node-http-handler" "^3.0.0" + "@smithy/protocol-http" "^4.0.0" + "@smithy/smithy-client" "^3.1.1" + "@smithy/types" "^3.0.0" + "@smithy/url-parser" "^3.0.0" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.3" + "@smithy/util-defaults-mode-node" "^3.0.3" + "@smithy/util-endpoints" "^2.0.1" + "@smithy/util-retry" "^3.0.0" + "@smithy/util-stream" "^3.0.1" + "@smithy/util-utf8" "^3.0.0" + "@smithy/util-waiter" "^3.0.0" + tslib "^2.6.2" + "@aws-sdk/client-sso-oidc@3.502.0": version "3.502.0" resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.502.0.tgz#f3d151a9185baedcb7f511a1149b65cb2973df30" @@ -466,6 +530,52 @@ "@smithy/util-utf8" "^2.1.1" tslib "^2.5.0" +"@aws-sdk/client-sso-oidc@3.590.0": + version "3.590.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.590.0.tgz#9125be2b46e970f8dd8089f2409943122a478c92" + integrity sha512-3yCLPjq6WFfDpdUJKk/gSz4eAPDTjVknXaveMPi2QoVBCshneOnJsV16uNKlpVF1frTHrrDRfKYmbaVh6nFBvQ== + dependencies: + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/client-sts" "3.590.0" + "@aws-sdk/core" "3.588.0" + "@aws-sdk/credential-provider-node" "3.590.0" + "@aws-sdk/middleware-host-header" "3.577.0" + "@aws-sdk/middleware-logger" "3.577.0" + "@aws-sdk/middleware-recursion-detection" "3.577.0" + "@aws-sdk/middleware-user-agent" "3.587.0" + "@aws-sdk/region-config-resolver" "3.587.0" + "@aws-sdk/types" "3.577.0" + "@aws-sdk/util-endpoints" "3.587.0" + "@aws-sdk/util-user-agent-browser" "3.577.0" + "@aws-sdk/util-user-agent-node" "3.587.0" + "@smithy/config-resolver" "^3.0.1" + "@smithy/core" "^2.1.1" + "@smithy/fetch-http-handler" "^3.0.1" + "@smithy/hash-node" "^3.0.0" + "@smithy/invalid-dependency" "^3.0.0" + "@smithy/middleware-content-length" "^3.0.0" + "@smithy/middleware-endpoint" "^3.0.1" + "@smithy/middleware-retry" "^3.0.3" + "@smithy/middleware-serde" "^3.0.0" + "@smithy/middleware-stack" "^3.0.0" + "@smithy/node-config-provider" "^3.1.0" + "@smithy/node-http-handler" "^3.0.0" + "@smithy/protocol-http" "^4.0.0" + "@smithy/smithy-client" "^3.1.1" + "@smithy/types" "^3.0.0" + "@smithy/url-parser" "^3.0.0" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.3" + "@smithy/util-defaults-mode-node" "^3.0.3" + "@smithy/util-endpoints" "^2.0.1" + "@smithy/util-middleware" "^3.0.0" + "@smithy/util-retry" "^3.0.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + "@aws-sdk/client-sso-oidc@3.596.0": version "3.596.0" resolved "https://registry.npmmirror.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.596.0.tgz#9d75619043e5f0e3d985d800c3df06d9a8a3bfeb" @@ -555,6 +665,50 @@ "@smithy/util-utf8" "^2.1.1" tslib "^2.5.0" +"@aws-sdk/client-sso@3.590.0": + version "3.590.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.590.0.tgz#d2950bd4358867153680f4c9f1646602e6fe0349" + integrity sha512-6xbC6oQVJKBRTyXyR3C15ksUsPOyW4p+uCj7dlKYWGJvh4vGTV8KhZKS53oPG8t4f1+OMJWjr5wKuXRoaFsmhQ== + dependencies: + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/core" "3.588.0" + "@aws-sdk/middleware-host-header" "3.577.0" + "@aws-sdk/middleware-logger" "3.577.0" + "@aws-sdk/middleware-recursion-detection" "3.577.0" + "@aws-sdk/middleware-user-agent" "3.587.0" + "@aws-sdk/region-config-resolver" "3.587.0" + "@aws-sdk/types" "3.577.0" + "@aws-sdk/util-endpoints" "3.587.0" + "@aws-sdk/util-user-agent-browser" "3.577.0" + "@aws-sdk/util-user-agent-node" "3.587.0" + "@smithy/config-resolver" "^3.0.1" + "@smithy/core" "^2.1.1" + "@smithy/fetch-http-handler" "^3.0.1" + "@smithy/hash-node" "^3.0.0" + "@smithy/invalid-dependency" "^3.0.0" + "@smithy/middleware-content-length" "^3.0.0" + "@smithy/middleware-endpoint" "^3.0.1" + "@smithy/middleware-retry" "^3.0.3" + "@smithy/middleware-serde" "^3.0.0" + "@smithy/middleware-stack" "^3.0.0" + "@smithy/node-config-provider" "^3.1.0" + "@smithy/node-http-handler" "^3.0.0" + "@smithy/protocol-http" "^4.0.0" + "@smithy/smithy-client" "^3.1.1" + "@smithy/types" "^3.0.0" + "@smithy/url-parser" "^3.0.0" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.3" + "@smithy/util-defaults-mode-node" "^3.0.3" + "@smithy/util-endpoints" "^2.0.1" + "@smithy/util-middleware" "^3.0.0" + "@smithy/util-retry" "^3.0.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + "@aws-sdk/client-sso@3.592.0": version "3.592.0" resolved "https://registry.npmmirror.com/@aws-sdk/client-sso/-/client-sso-3.592.0.tgz#90462e744998990079c28a083553090af9ac2902" @@ -644,6 +798,52 @@ fast-xml-parser "4.2.5" tslib "^2.5.0" +"@aws-sdk/client-sts@3.590.0": + version "3.590.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.590.0.tgz#d75c59cf0046274651183f05dac19aedd05c76b1" + integrity sha512-f4R1v1LSn4uLYZ5qj4DyL6gp7PXXzJeJsm2seheiJX+53LSF5L7XSDnQVtX1p9Tevv0hp2YUWUTg6QYwIVSuGg== + dependencies: + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/client-sso-oidc" "3.590.0" + "@aws-sdk/core" "3.588.0" + "@aws-sdk/credential-provider-node" "3.590.0" + "@aws-sdk/middleware-host-header" "3.577.0" + "@aws-sdk/middleware-logger" "3.577.0" + "@aws-sdk/middleware-recursion-detection" "3.577.0" + "@aws-sdk/middleware-user-agent" "3.587.0" + "@aws-sdk/region-config-resolver" "3.587.0" + "@aws-sdk/types" "3.577.0" + "@aws-sdk/util-endpoints" "3.587.0" + "@aws-sdk/util-user-agent-browser" "3.577.0" + "@aws-sdk/util-user-agent-node" "3.587.0" + "@smithy/config-resolver" "^3.0.1" + "@smithy/core" "^2.1.1" + "@smithy/fetch-http-handler" "^3.0.1" + "@smithy/hash-node" "^3.0.0" + "@smithy/invalid-dependency" "^3.0.0" + "@smithy/middleware-content-length" "^3.0.0" + "@smithy/middleware-endpoint" "^3.0.1" + "@smithy/middleware-retry" "^3.0.3" + "@smithy/middleware-serde" "^3.0.0" + "@smithy/middleware-stack" "^3.0.0" + "@smithy/node-config-provider" "^3.1.0" + "@smithy/node-http-handler" "^3.0.0" + "@smithy/protocol-http" "^4.0.0" + "@smithy/smithy-client" "^3.1.1" + "@smithy/types" "^3.0.0" + "@smithy/url-parser" "^3.0.0" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.3" + "@smithy/util-defaults-mode-node" "^3.0.3" + "@smithy/util-endpoints" "^2.0.1" + "@smithy/util-middleware" "^3.0.0" + "@smithy/util-retry" "^3.0.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + "@aws-sdk/client-sts@3.596.0": version "3.596.0" resolved "https://registry.npmmirror.com/@aws-sdk/client-sts/-/client-sts-3.596.0.tgz#236ed4b898265c737f860060adab422ea8ec6383" @@ -702,6 +902,19 @@ "@smithy/types" "^2.9.1" tslib "^2.5.0" +"@aws-sdk/core@3.588.0": + version "3.588.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.588.0.tgz#44c6659372bdaa61a7c8872ff5af39e0fa71e812" + integrity sha512-O1c2+9ce46Z+iiid+W3iC1IvPbfIo5ev9CBi54GdNB9SaI8/3+f8MJcux0D6c9toCF0ArMersN/gp8ek57e9uQ== + dependencies: + "@smithy/core" "^2.1.1" + "@smithy/protocol-http" "^4.0.0" + "@smithy/signature-v4" "^3.0.0" + "@smithy/smithy-client" "^3.1.1" + "@smithy/types" "^3.0.0" + fast-xml-parser "4.2.5" + tslib "^2.6.2" + "@aws-sdk/core@3.592.0": version "3.592.0" resolved "https://registry.npmmirror.com/@aws-sdk/core/-/core-3.592.0.tgz#d903a3993f8ba6836480314c2a8af8b7857bb943" @@ -761,6 +974,21 @@ "@smithy/util-stream" "^2.1.1" tslib "^2.5.0" +"@aws-sdk/credential-provider-http@3.587.0": + version "3.587.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.587.0.tgz#dc23c6d6708bc67baea54bfab0f256c5fe4df023" + integrity sha512-Su1SRWVRCuR1e32oxX3C1V4c5hpPN20WYcRfdcr2wXwHqSvys5DrnmuCC+JoEnS/zt3adUJhPliTqpfKgSdMrA== + dependencies: + "@aws-sdk/types" "3.577.0" + "@smithy/fetch-http-handler" "^3.0.1" + "@smithy/node-http-handler" "^3.0.0" + "@smithy/property-provider" "^3.1.0" + "@smithy/protocol-http" "^4.0.0" + "@smithy/smithy-client" "^3.1.1" + "@smithy/types" "^3.0.0" + "@smithy/util-stream" "^3.0.1" + tslib "^2.6.2" + "@aws-sdk/credential-provider-http@3.596.0": version "3.596.0" resolved "https://registry.npmmirror.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.596.0.tgz#ad81565e37f84c860a7a5f82ff256a962397816c" @@ -793,6 +1021,23 @@ "@smithy/types" "^2.9.1" tslib "^2.5.0" +"@aws-sdk/credential-provider-ini@3.590.0": + version "3.590.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.590.0.tgz#b49f9f76503c56357fee0c9f0d48e7e0e861061d" + integrity sha512-Y5cFciAK38VIvRgZeND7HvFNR32thGtQb8Xop6cMn33FC78uwcRIu9Hc9699XTclCZqz4+Xl1WU+dZ+rnFn2AA== + dependencies: + "@aws-sdk/credential-provider-env" "3.587.0" + "@aws-sdk/credential-provider-http" "3.587.0" + "@aws-sdk/credential-provider-process" "3.587.0" + "@aws-sdk/credential-provider-sso" "3.590.0" + "@aws-sdk/credential-provider-web-identity" "3.587.0" + "@aws-sdk/types" "3.577.0" + "@smithy/credential-provider-imds" "^3.1.0" + "@smithy/property-provider" "^3.1.0" + "@smithy/shared-ini-file-loader" "^3.1.0" + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + "@aws-sdk/credential-provider-ini@3.596.0": version "3.596.0" resolved "https://registry.npmmirror.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.596.0.tgz#2e5155b52590dbc768a2775e0b5266287a00d8ca" @@ -827,6 +1072,24 @@ "@smithy/types" "^2.9.1" tslib "^2.5.0" +"@aws-sdk/credential-provider-node@3.590.0": + version "3.590.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.590.0.tgz#e745d5f5cde0512e9f9ea95b687708948b57a674" + integrity sha512-Ky38mNFoXobGrDQ11P3dU1e+q1nRJ7eZl8l15KUpvZCe/hOudbxQi/epQrCazD/gRYV2fTyczdLlZzB5ZZ8DhQ== + dependencies: + "@aws-sdk/credential-provider-env" "3.587.0" + "@aws-sdk/credential-provider-http" "3.587.0" + "@aws-sdk/credential-provider-ini" "3.590.0" + "@aws-sdk/credential-provider-process" "3.587.0" + "@aws-sdk/credential-provider-sso" "3.590.0" + "@aws-sdk/credential-provider-web-identity" "3.587.0" + "@aws-sdk/types" "3.577.0" + "@smithy/credential-provider-imds" "^3.1.0" + "@smithy/property-provider" "^3.1.0" + "@smithy/shared-ini-file-loader" "^3.1.0" + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + "@aws-sdk/credential-provider-node@3.596.0": version "3.596.0" resolved "https://registry.npmmirror.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.596.0.tgz#d70bce8de4f1849558215117d73f7433bfdcdc24" @@ -880,6 +1143,19 @@ "@smithy/types" "^2.9.1" tslib "^2.5.0" +"@aws-sdk/credential-provider-sso@3.590.0": + version "3.590.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.590.0.tgz#1a90cbec9a48bbc07920b3f5a6d04bba891664ed" + integrity sha512-v+0j/I+je9okfwXsgmLppmwIE+TuMp5WqLz7r7PHz9KjzLyKaKTDvfllFD+8oPpBqnmOWiJ9qTGPkrfhB7a/fQ== + dependencies: + "@aws-sdk/client-sso" "3.590.0" + "@aws-sdk/token-providers" "3.587.0" + "@aws-sdk/types" "3.577.0" + "@smithy/property-provider" "^3.1.0" + "@smithy/shared-ini-file-loader" "^3.1.0" + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + "@aws-sdk/credential-provider-sso@3.592.0": version "3.592.0" resolved "https://registry.npmmirror.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.592.0.tgz#340649b4f5b4fbcb816f248089979d7d38ce96d3" @@ -962,6 +1238,19 @@ "@smithy/util-config-provider" "^2.2.1" tslib "^2.5.0" +"@aws-sdk/middleware-bucket-endpoint@3.587.0": + version "3.587.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.587.0.tgz#def5edbadf53bdfe765aa9acf12f119eb208b22f" + integrity sha512-HkFXLPl8pr6BH/Q0JpOESqEKL0ZK3sk7aSZ1S6GE4RXET7H5R94THULXqQFZzD48gZcyFooO/yNKZTqrZFaWKg== + dependencies: + "@aws-sdk/types" "3.577.0" + "@aws-sdk/util-arn-parser" "3.568.0" + "@smithy/node-config-provider" "^3.1.0" + "@smithy/protocol-http" "^4.0.0" + "@smithy/types" "^3.0.0" + "@smithy/util-config-provider" "^3.0.0" + tslib "^2.6.2" + "@aws-sdk/middleware-expect-continue@3.502.0": version "3.502.0" resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.502.0.tgz#fd265571e1f3a4855714fda34252de751fb054dd" @@ -972,6 +1261,16 @@ "@smithy/types" "^2.9.1" tslib "^2.5.0" +"@aws-sdk/middleware-expect-continue@3.577.0": + version "3.577.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.577.0.tgz#47add47f17873a6044cb140f17033cb6e1d02744" + integrity sha512-6dPp8Tv4F0of4un5IAyG6q++GrRrNQQ4P2NAMB1W0VO4JoEu1C8GievbbDLi88TFIFmtKpnHB0ODCzwnoe8JsA== + dependencies: + "@aws-sdk/types" "3.577.0" + "@smithy/protocol-http" "^4.0.0" + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + "@aws-sdk/middleware-flexible-checksums@3.502.0": version "3.502.0" resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.502.0.tgz#e4fa059f3c4603bd815f16d69e1c4277c4c4830a" @@ -986,6 +1285,20 @@ "@smithy/util-utf8" "^2.1.1" tslib "^2.5.0" +"@aws-sdk/middleware-flexible-checksums@3.587.0": + version "3.587.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.587.0.tgz#74afe7bd3088adf05b2ed843ad41386e793e0397" + integrity sha512-URMwp/budDvKhIvZ4a6zIBfFTun/iDlPWXqsGKYjEtHt8jz27OSjCZtDtIeqW4WTBdKL8KZgQcl+DdaE5M1qiQ== + dependencies: + "@aws-crypto/crc32" "3.0.0" + "@aws-crypto/crc32c" "3.0.0" + "@aws-sdk/types" "3.577.0" + "@smithy/is-array-buffer" "^3.0.0" + "@smithy/protocol-http" "^4.0.0" + "@smithy/types" "^3.0.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + "@aws-sdk/middleware-host-header@3.502.0": version "3.502.0" resolved "https://registry.npmmirror.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.502.0.tgz#2651fb3509990271c89eb50133fb17cb8ae435f6" @@ -1015,6 +1328,15 @@ "@smithy/types" "^2.9.1" tslib "^2.5.0" +"@aws-sdk/middleware-location-constraint@3.577.0": + version "3.577.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.577.0.tgz#9372441a4ac5747b3176ac6378d92866a51de815" + integrity sha512-DKPTD2D2s+t2QUo/IXYtVa/6Un8GZ+phSTBkyBNx2kfZz4Kwavhl/JJzSqTV3GfCXkVdFu7CrjoX7BZ6qWeTUA== + dependencies: + "@aws-sdk/types" "3.577.0" + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + "@aws-sdk/middleware-logger@3.502.0": version "3.502.0" resolved "https://registry.npmmirror.com/@aws-sdk/middleware-logger/-/middleware-logger-3.502.0.tgz#558cefdd233779f15687957f9f07497199b22d72" @@ -1068,6 +1390,21 @@ "@smithy/util-config-provider" "^2.2.1" tslib "^2.5.0" +"@aws-sdk/middleware-sdk-s3@3.587.0": + version "3.587.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.587.0.tgz#720620ccdc2eb6ecab0f3a6adbd28fc27fdc70ce" + integrity sha512-vtXTGEiw1E9Fax4LmcU2Z208gbrC8ShrdsSLmGcRPpu5NPOGBFBSDG5sy5EDNClrFxIl/Le8coQnD0EDBtx+uQ== + dependencies: + "@aws-sdk/types" "3.577.0" + "@aws-sdk/util-arn-parser" "3.568.0" + "@smithy/node-config-provider" "^3.1.0" + "@smithy/protocol-http" "^4.0.0" + "@smithy/signature-v4" "^3.0.0" + "@smithy/smithy-client" "^3.1.1" + "@smithy/types" "^3.0.0" + "@smithy/util-config-provider" "^3.0.0" + tslib "^2.6.2" + "@aws-sdk/middleware-signing@3.502.0": version "3.502.0" resolved "https://registry.npmmirror.com/@aws-sdk/middleware-signing/-/middleware-signing-3.502.0.tgz#48b3503147eecb1a53a63633462de353668f635a" @@ -1081,6 +1418,19 @@ "@smithy/util-middleware" "^2.1.1" tslib "^2.5.0" +"@aws-sdk/middleware-signing@3.587.0": + version "3.587.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.587.0.tgz#593c418c09c51c0bc55f23a7a6b0fda8502a8103" + integrity sha512-tiZaTDj4RvhXGRAlncFn7CSEfL3iNPO67WSaxAq+Ls5j1VgczPhu5262cWONNoMgth3nXR1hhLC4ITSl/a6AzA== + dependencies: + "@aws-sdk/types" "3.577.0" + "@smithy/property-provider" "^3.1.0" + "@smithy/protocol-http" "^4.0.0" + "@smithy/signature-v4" "^3.0.0" + "@smithy/types" "^3.0.0" + "@smithy/util-middleware" "^3.0.0" + tslib "^2.6.2" + "@aws-sdk/middleware-ssec@3.502.0": version "3.502.0" resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.502.0.tgz#0abdebedd98b284112c2eda36f707111a8a3cbd5" @@ -1090,6 +1440,15 @@ "@smithy/types" "^2.9.1" tslib "^2.5.0" +"@aws-sdk/middleware-ssec@3.577.0": + version "3.577.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.577.0.tgz#9fcd74e8bf2c277b4349c537cbeceba279166f32" + integrity sha512-i2BPJR+rp8xmRVIGc0h1kDRFcM2J9GnClqqpc+NLSjmYadlcg4mPklisz9HzwFVcRPJ5XcGf3U4BYs5G8+iTyg== + dependencies: + "@aws-sdk/types" "3.577.0" + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + "@aws-sdk/middleware-user-agent@3.502.0": version "3.502.0" resolved "https://registry.npmmirror.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.502.0.tgz#dd740f150d6f3110cf5b08fedf361d202f899c93" @@ -1148,6 +1507,18 @@ "@smithy/types" "^2.9.1" tslib "^2.5.0" +"@aws-sdk/signature-v4-multi-region@3.587.0": + version "3.587.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.587.0.tgz#f8bb6de9135f3fafab04b9220409cd0d0549b7d8" + integrity sha512-TR9+ZSjdXvXUz54ayHcCihhcvxI9W7102J1OK6MrLgBlPE7uRhAx42BR9L5lLJ86Xj3LuqPWf//o9d/zR9WVIg== + dependencies: + "@aws-sdk/middleware-sdk-s3" "3.587.0" + "@aws-sdk/types" "3.577.0" + "@smithy/protocol-http" "^4.0.0" + "@smithy/signature-v4" "^3.0.0" + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + "@aws-sdk/signature-v4@^3.347.0": version "3.374.0" resolved "https://registry.npmmirror.com/@aws-sdk/signature-v4/-/signature-v4-3.374.0.tgz#bd727f4c392acb81bc667aa4cfceeba608250771" @@ -1202,6 +1573,13 @@ dependencies: tslib "^2.5.0" +"@aws-sdk/util-arn-parser@3.568.0": + version "3.568.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-arn-parser/-/util-arn-parser-3.568.0.tgz#6a19a8c6bbaa520b6be1c278b2b8c17875b91527" + integrity sha512-XUKJWWo+KOB7fbnPP0+g/o5Ulku/X53t7i/h+sPHr5xxYTJJ9CYnbToo95mzxe7xWvkLrsNtJ8L+MnNn9INs2w== + dependencies: + tslib "^2.6.2" + "@aws-sdk/util-endpoints@3.502.0": version "3.502.0" resolved "https://registry.npmmirror.com/@aws-sdk/util-endpoints/-/util-endpoints-3.502.0.tgz#aee818c0c53dfedfd49599fc260cd880faea5e82" @@ -1284,6 +1662,14 @@ "@smithy/types" "^2.9.1" tslib "^2.5.0" +"@aws-sdk/xml-builder@3.575.0": + version "3.575.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.575.0.tgz#233b2aae422dd789a078073032da1bc60317aa1d" + integrity sha512-cWgAwmbFYNCFzPwxL705+lWps0F3ZvOckufd2KKoEZUmtpVw9/txUXNrPySUXSmRTSRhoatIMABNfStWR043bQ== + dependencies: + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + "@azure/abort-controller@^1.0.0", "@azure/abort-controller@^1.1.0": version "1.1.0" resolved "https://registry.npmmirror.com/@azure/abort-controller/-/abort-controller-1.1.0.tgz#788ee78457a55af8a1ad342acb182383d2119249" @@ -1464,7 +1850,7 @@ "@babel/highlight" "^7.23.4" chalk "^2.4.2" -"@babel/code-frame@^7.24.2": +"@babel/code-frame@^7.18.6", "@babel/code-frame@^7.24.2": version "7.24.7" resolved "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.24.7.tgz#882fd9e09e8ee324e496bd040401c6f046ef4465" integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== @@ -2526,6 +2912,55 @@ "@material-ui/core" "^4.12.2" "@material-ui/icons" "^4.9.1" +"@backstage/app-defaults@^1.5.6": + version "1.5.6" + resolved "https://registry.yarnpkg.com/@backstage/app-defaults/-/app-defaults-1.5.6.tgz#688333db87b3ce7d296440f42bf8be874580700b" + integrity sha512-BhwHTURsKK5CXgKh6kgdaw1/PgqjcMCkqsKpDsHVs9xwifpMSNjw1hbZzat0kK4TJGL3m9prewhQ3/UohiiWMQ== + dependencies: + "@backstage/core-app-api" "^1.12.6" + "@backstage/core-components" "^0.14.8" + "@backstage/core-plugin-api" "^1.9.3" + "@backstage/plugin-permission-react" "^0.4.23" + "@backstage/theme" "^0.5.6" + "@material-ui/core" "^4.12.2" + "@material-ui/icons" "^4.9.1" + +"@backstage/backend-app-api@^0.5.10": + version "0.5.14" + resolved "https://registry.yarnpkg.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.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.3" + "@backstage/config" "^1.1.1" + "@backstage/config-loader" "^1.6.2" + "@backstage/errors" "^1.2.3" + "@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" + "@types/express" "^4.17.6" + compression "^1.7.4" + cors "^2.8.5" + express "^4.17.1" + express-promise-router "^4.1.0" + fs-extra "^11.2.0" + helmet "^6.0.0" + lodash "^4.17.21" + logform "^2.3.2" + minimatch "^5.0.0" + minimist "^1.2.5" + morgan "^1.10.0" + node-forge "^1.3.1" + selfsigned "^2.0.0" + stoppable "^1.1.0" + winston "^3.2.1" + winston-transport "^4.5.0" + "@backstage/backend-app-api@^0.7.0", "@backstage/backend-app-api@^0.7.3": version "0.7.5" resolved "https://registry.npmmirror.com/@backstage/backend-app-api/-/backend-app-api-0.7.5.tgz#b3a52da8924825f8b132e4b7380e421762e08377" @@ -2569,7 +3004,7 @@ winston "^3.2.1" winston-transport "^4.5.0" -"@backstage/backend-common@^0.21.7": +"@backstage/backend-common@^0.21.3", "@backstage/backend-common@^0.21.7": version "0.21.7" resolved "https://registry.npmmirror.com/@backstage/backend-common/-/backend-common-0.21.7.tgz#5ae796d8adccebc484edeeb2326464c28e14849e" integrity sha512-wWpnjLYxEstFnAherkfwZIlAazdu1dfJ/5KjK1aSeMZYGyRWcelegs+Dz9MLZ53e/5qtSJ5+caltNfiItda86w== @@ -2695,6 +3130,136 @@ yauzl "^3.0.0" yn "^4.0.0" +"@backstage/backend-common@^0.23.1": + version "0.23.1" + resolved "https://registry.yarnpkg.com/@backstage/backend-common/-/backend-common-0.23.1.tgz#054bd85a8342f85bff5ae43787e4b7131b697d69" + integrity sha512-RptFXEZ9myao7B3ohxdblXPlOZQ+ZLkMBQfCMIa+mb8rL4vHVnJ9CJMWQV584gT/zztiTX2z0p4L7T6y4a1ORQ== + dependencies: + "@aws-sdk/abort-controller" "^3.347.0" + "@aws-sdk/client-codecommit" "^3.350.0" + "@aws-sdk/client-s3" "^3.350.0" + "@aws-sdk/credential-providers" "^3.350.0" + "@aws-sdk/types" "^3.347.0" + "@backstage/backend-dev-utils" "^0.1.4" + "@backstage/backend-plugin-api" "^0.6.20" + "@backstage/cli-common" "^0.1.14" + "@backstage/config" "^1.2.0" + "@backstage/config-loader" "^1.8.1" + "@backstage/errors" "^1.2.4" + "@backstage/integration" "^1.12.0" + "@backstage/integration-aws-node" "^0.1.12" + "@backstage/plugin-auth-node" "^0.4.15" + "@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 "^5.0.0" + keyv "^4.5.2" + knex "^3.0.0" + lodash "^4.17.21" + logform "^2.3.2" + luxon "^3.0.0" + minimatch "^9.0.0" + minimist "^1.2.5" + morgan "^1.10.0" + mysql2 "^3.0.0" + node-fetch "^2.6.7" + node-forge "^1.3.1" + p-limit "^3.1.0" + path-to-regexp "^6.2.1" + pg "^8.11.3" + raw-body "^2.4.1" + selfsigned "^2.0.0" + stoppable "^1.1.0" + tar "^6.1.12" + triple-beam "^1.4.1" + uuid "^9.0.0" + winston "^3.2.1" + winston-transport "^4.5.0" + yauzl "^3.0.0" + yn "^4.0.0" + +"@backstage/backend-common@~0.20.1": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@backstage/backend-common/-/backend-common-0.20.2.tgz#0ce5b7bfcb91918008c4ec6bb6aede72c4474e20" + integrity sha512-hQazpWVhjcOIic1bDMVKZ2pQn9Th4gKmI+1Q5aT2cls7dnXNF7Mwb3bRgnVQk+18bEn6sxHOUyCAFd8KzYTtLg== + 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.10" + "@backstage/backend-dev-utils" "^0.1.3" + "@backstage/backend-plugin-api" "^0.6.9" + "@backstage/cli-common" "^0.1.13" + "@backstage/config" "^1.1.1" + "@backstage/config-loader" "^1.6.1" + "@backstage/errors" "^1.2.3" + "@backstage/integration" "^1.8.0" + "@backstage/integration-aws-node" "^0.1.8" + "@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 "^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.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-defaults@^0.2.18": version "0.2.18" resolved "https://registry.npmmirror.com/@backstage/backend-defaults/-/backend-defaults-0.2.18.tgz#07055241c38ae19431247dcf453d6e572a482bfd" @@ -2704,7 +3269,7 @@ "@backstage/backend-common" "^0.22.0" "@backstage/plugin-events-node" "^0.3.4" -"@backstage/backend-dev-utils@^0.1.4": +"@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== @@ -2726,6 +3291,23 @@ openapi-merge "^1.3.2" openapi3-ts "^3.1.2" +"@backstage/backend-plugin-api@^0.6.13", "@backstage/backend-plugin-api@^0.6.20", "@backstage/backend-plugin-api@^0.6.9": + version "0.6.20" + resolved "https://registry.yarnpkg.com/@backstage/backend-plugin-api/-/backend-plugin-api-0.6.20.tgz#61eedd027bc9342cde243393746f3abdebc30eea" + integrity sha512-nZhnyvKBhn8HKEWV+cbV4mKg4Q2bFwtc0euRkx/qKrhDOAbIBGqADAep1v9LYqCIHq3KuaPaFY0E4if7kwlrhA== + dependencies: + "@backstage/cli-common" "^0.1.14" + "@backstage/config" "^1.2.0" + "@backstage/errors" "^1.2.4" + "@backstage/plugin-auth-node" "^0.4.15" + "@backstage/plugin-permission-common" "^0.7.14" + "@backstage/types" "^1.1.1" + "@types/express" "^4.17.6" + "@types/luxon" "^3.0.0" + express "^4.17.1" + knex "^3.0.0" + luxon "^3.0.0" + "@backstage/backend-plugin-api@^0.6.17", "@backstage/backend-plugin-api@^0.6.18": version "0.6.18" resolved "https://registry.npmmirror.com/@backstage/backend-plugin-api/-/backend-plugin-api-0.6.18.tgz#0da77be39616ce4bb09c3fc55a3cdf9c973edba4" @@ -2742,6 +3324,25 @@ express "^4.17.1" knex "^3.0.0" +"@backstage/backend-tasks@^0.5.18": + version "0.5.25" + resolved "https://registry.yarnpkg.com/@backstage/backend-tasks/-/backend-tasks-0.5.25.tgz#3fd62b278d68c5a4b8603bddbc4efedcad6923c6" + integrity sha512-UBzFfQ/hN4XIP5uG9mup8zMQPbiA3WxVlRz/g0LqUXL9g8S1eRP9aSGOZzTzgNfJFawFdVf6GdAaLkWBliclfg== + dependencies: + "@backstage/backend-common" "^0.23.1" + "@backstage/backend-plugin-api" "^0.6.20" + "@backstage/config" "^1.2.0" + "@backstage/errors" "^1.2.4" + "@backstage/types" "^1.1.1" + "@opentelemetry/api" "^1.3.0" + "@types/luxon" "^3.0.0" + cron "^3.0.0" + knex "^3.0.0" + lodash "^4.17.21" + luxon "^3.0.0" + uuid "^9.0.0" + zod "^3.22.4" + "@backstage/backend-tasks@^0.5.22", "@backstage/backend-tasks@^0.5.23": version "0.5.23" resolved "https://registry.npmmirror.com/@backstage/backend-tasks/-/backend-tasks-0.5.23.tgz#85c14fff99189d0540d6bd5be4cc81faf0617620" @@ -2771,7 +3372,7 @@ cross-fetch "^4.0.0" uri-template "^2.0.0" -"@backstage/catalog-model@^1.4.3", "@backstage/catalog-model@^1.4.5", "@backstage/catalog-model@^1.5.0": +"@backstage/catalog-model@^1.4.3", "@backstage/catalog-model@^1.4.4", "@backstage/catalog-model@^1.4.5", "@backstage/catalog-model@^1.5.0": version "1.5.0" resolved "https://registry.npmmirror.com/@backstage/catalog-model/-/catalog-model-1.5.0.tgz#7f5c4a80a3341555db5209fbc6fc2d25f6500707" integrity sha512-CfLO5/DMGahneuLU4KTQEs1tgNhBciUtyGUDZB4Ii9i1Uha1poWcqp4HKg61lj1hmXNDUHmlbFqY9W7kmzRC0A== @@ -2786,6 +3387,25 @@ resolved "https://registry.npmmirror.com/@backstage/cli-common/-/cli-common-0.1.13.tgz#cbeda6a359ca4437fc782f0ac51bb957e8d49e73" integrity sha512-UMgNAIJSeEPSMkzxiWCP8aFR8APsG21XczDnzwHdL/41F7g2C+KA6UeQc/3tzbe8XQo+PxbNLpReZeKSSnSPSQ== +"@backstage/cli-common@^0.1.14": + version "0.1.14" + resolved "https://registry.yarnpkg.com/@backstage/cli-common/-/cli-common-0.1.14.tgz#2291520acfbac860a05dd48fc3b876d5cd789b76" + integrity sha512-4kGWGrFuxoaCne2aHCOVW+vi8y2MLEMEj785SEApMG2J8jXJXUuIOzWw0MrN0pM1FqBXDb6aeQd+bmQMK/Ci+w== + +"@backstage/cli-node@^0.2.3": + version "0.2.6" + resolved "https://registry.yarnpkg.com/@backstage/cli-node/-/cli-node-0.2.6.tgz#307f29eeb70943c6f6b1e8ee7a1da418c7809bf8" + integrity sha512-X9i2tXbwhLMGnOqgCc0O7CO9/lPjiQsPv/a0rv9cRstCqGHUwB0rrCFDVXf3kMRVYitgmJHxIE1L7N/Yg+TH+w== + dependencies: + "@backstage/cli-common" "^0.1.14" + "@backstage/errors" "^1.2.4" + "@backstage/types" "^1.1.1" + "@manypkg/get-packages" "^1.1.3" + "@yarnpkg/parsers" "^3.0.0" + fs-extra "^11.2.0" + semver "^7.5.3" + zod "^3.22.4" + "@backstage/cli-node@^0.2.5": version "0.2.5" resolved "https://registry.npmmirror.com/@backstage/cli-node/-/cli-node-0.2.5.tgz#553257a70cb7bc5c8097ed0c801eb87295164771" @@ -2917,6 +3537,144 @@ yn "^4.0.0" zod "^3.22.4" +"@backstage/cli@~0.25.1": + version "0.25.2" + resolved "https://registry.yarnpkg.com/@backstage/cli/-/cli-0.25.2.tgz#53f27c99c988f17edffb9e77b1864a53bccb3334" + integrity sha512-PljPYaxljPtgrs+wFUSw30UXNq7/lTsMPqC4SgCzPXNCA1XDKGK0mnNkJJJD2r4bYwBXZ9mRdcs+zCf7MBrOmg== + dependencies: + "@backstage/catalog-model" "^1.4.4" + "@backstage/cli-common" "^0.1.13" + "@backstage/cli-node" "^0.2.3" + "@backstage/config" "^1.1.1" + "@backstage/config-loader" "^1.6.2" + "@backstage/errors" "^1.2.3" + "@backstage/eslint-plugin" "^0.1.5" + "@backstage/integration" "^1.9.0" + "@backstage/release-manifests" "^0.0.11" + "@backstage/types" "^1.1.1" + "@manypkg/get-packages" "^1.1.3" + "@octokit/graphql" "^5.0.0" + "@octokit/graphql-schema" "^13.7.0" + "@octokit/oauth-app" "^4.2.0" + "@octokit/request" "^6.0.0" + "@pmmmwh/react-refresh-webpack-plugin" "^0.5.7" + "@rollup/plugin-commonjs" "^25.0.0" + "@rollup/plugin-json" "^6.0.0" + "@rollup/plugin-node-resolve" "^15.0.0" + "@rollup/plugin-yaml" "^4.0.0" + "@spotify/eslint-config-base" "^14.0.0" + "@spotify/eslint-config-react" "^14.0.0" + "@spotify/eslint-config-typescript" "^14.0.0" + "@sucrase/webpack-loader" "^2.0.0" + "@svgr/core" "6.5.x" + "@svgr/plugin-jsx" "6.5.x" + "@svgr/plugin-svgo" "6.5.x" + "@svgr/rollup" "6.5.x" + "@svgr/webpack" "6.5.x" + "@swc/core" "^1.3.46" + "@swc/helpers" "^0.5.0" + "@swc/jest" "^0.2.22" + "@types/jest" "^29.5.11" + "@types/webpack-env" "^1.15.2" + "@typescript-eslint/eslint-plugin" "^6.12.0" + "@typescript-eslint/parser" "^6.7.2" + "@yarnpkg/lockfile" "^1.1.0" + "@yarnpkg/parsers" "^3.0.0-rc.4" + bfj "^8.0.0" + buffer "^6.0.3" + chalk "^4.0.0" + chokidar "^3.3.1" + commander "^12.0.0" + cross-fetch "^4.0.0" + cross-spawn "^7.0.3" + css-loader "^6.5.1" + ctrlc-windows "^2.1.0" + diff "^5.0.0" + esbuild "^0.20.0" + esbuild-loader "^4.0.0" + eslint "^8.6.0" + eslint-config-prettier "^9.0.0" + eslint-formatter-friendly "^7.0.0" + eslint-plugin-deprecation "^2.0.0" + eslint-plugin-import "^2.25.4" + eslint-plugin-jest "^27.0.0" + eslint-plugin-jsx-a11y "^6.5.1" + eslint-plugin-react "^7.28.0" + eslint-plugin-react-hooks "^4.3.0" + eslint-plugin-unused-imports "^3.0.0" + eslint-webpack-plugin "^4.0.0" + express "^4.17.1" + fork-ts-checker-webpack-plugin "^9.0.0" + fs-extra "^11.2.0" + git-url-parse "^14.0.0" + glob "^7.1.7" + global-agent "^3.0.0" + handlebars "^4.7.3" + html-webpack-plugin "^5.3.1" + inquirer "^8.2.0" + jest "^29.7.0" + jest-css-modules "^2.1.0" + jest-environment-jsdom "^29.0.2" + jest-runtime "^29.0.2" + json-schema "^0.4.0" + lodash "^4.17.21" + mini-css-extract-plugin "^2.4.2" + minimatch "^5.1.1" + node-fetch "^2.6.7" + node-libs-browser "^2.2.1" + npm-packlist "^5.0.0" + ora "^5.3.0" + p-queue "^6.6.2" + postcss "^8.1.0" + process "^0.11.10" + react-dev-utils "^12.0.0-next.60" + react-refresh "^0.14.0" + recursive-readdir "^2.2.2" + replace-in-file "^6.0.0" + rollup "^2.60.2" + rollup-plugin-dts "^4.0.1" + rollup-plugin-esbuild "^4.7.2" + rollup-plugin-postcss "^4.0.0" + rollup-pluginutils "^2.8.2" + run-script-webpack-plugin "^0.2.0" + semver "^7.5.3" + style-loader "^3.3.1" + sucrase "^3.20.2" + swc-loader "^0.2.3" + tar "^6.1.12" + terser-webpack-plugin "^5.1.3" + tsx "^4.0.0" + util "^0.12.3" + webpack "^5.70.0" + webpack-dev-server "^4.7.3" + webpack-node-externals "^3.0.0" + yaml "^2.0.0" + yml-loader "^2.1.0" + yn "^4.0.0" + zod "^3.22.4" + +"@backstage/config-loader@^1.6.1", "@backstage/config-loader@^1.6.2", "@backstage/config-loader@^1.8.1": + version "1.8.1" + resolved "https://registry.yarnpkg.com/@backstage/config-loader/-/config-loader-1.8.1.tgz#4383309ffe0488fa6c9dac33f3bec96181750e42" + integrity sha512-oPT+TZK1ppBjQXgOJ+pfsfE/Lov596WlBc5po9wElgnbQ720OsyAmystLKecvZ1HAjC/IGLKrPZMh9OAy/k36Q== + dependencies: + "@backstage/cli-common" "^0.1.14" + "@backstage/config" "^1.2.0" + "@backstage/errors" "^1.2.4" + "@backstage/types" "^1.1.1" + "@types/json-schema" "^7.0.6" + ajv "^8.10.0" + chokidar "^3.5.2" + 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.63.0" + yaml "^2.0.0" + "@backstage/config-loader@^1.8.0": version "1.8.0" resolved "https://registry.npmmirror.com/@backstage/config-loader/-/config-loader-1.8.0.tgz#6b526475c45cd93ee51a0ddcb7e1f5bd49469eeb" @@ -2947,6 +3705,15 @@ "@backstage/errors" "^1.2.4" "@backstage/types" "^1.1.1" +"@backstage/config@~1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@backstage/config/-/config-1.1.1.tgz#824ef3d74b391579060d5646fa1f45fcd553ce02" + integrity sha512-H+xZbIVvstrkVnfxZFH6JB3Gb5qUIb8DjHOakHUlDX7xEIXjQnaM3Kf85RtnHu0uYpFIpB29i8FI68Y/uLeqyw== + dependencies: + "@backstage/errors" "^1.2.3" + "@backstage/types" "^1.1.1" + lodash "^4.17.21" + "@backstage/core-app-api@^1.12.4", "@backstage/core-app-api@^1.12.5": version "1.12.5" resolved "https://registry.npmmirror.com/@backstage/core-app-api/-/core-app-api-1.12.5.tgz#d82396137d80f0b9cc3faa79ad4240faae1566b9" @@ -2966,6 +3733,44 @@ zen-observable "^0.10.0" zod "^3.22.4" +"@backstage/core-app-api@^1.12.6": + version "1.12.6" + resolved "https://registry.yarnpkg.com/@backstage/core-app-api/-/core-app-api-1.12.6.tgz#42ec06430a4055b3ccae70e235797ce5860368d3" + integrity sha512-wgRb254HG+v6ELKb927Bmpvp66eN/ihV0uhPI2qRL5Hua+3xPX30fXxPGWA/ShgeGFozPY+yF/RnOwYeuiDYVg== + dependencies: + "@backstage/config" "^1.2.0" + "@backstage/core-plugin-api" "^1.9.3" + "@backstage/types" "^1.1.1" + "@backstage/version-bridge" "^1.0.8" + "@types/prop-types" "^15.7.3" + "@types/react" "^16.13.1 || ^17.0.0 || ^18.0.0" + history "^5.0.0" + i18next "^22.4.15" + lodash "^4.17.21" + prop-types "^15.7.2" + react-use "^17.2.4" + zen-observable "^0.10.0" + zod "^3.22.4" + +"@backstage/core-app-api@~1.11.3": + version "1.11.3" + resolved "https://registry.yarnpkg.com/@backstage/core-app-api/-/core-app-api-1.11.3.tgz#49d97c6fd1ed051b4520e8afb1400951d93d587f" + integrity sha512-GVs4M5SarJXXW4MByqRQIHTb6B3RHsNsdoLVmd9BmdKJ9hoPh+UFQTUoXhQyO9sbbGLutiQEV5L6kZAaXkW9Fw== + dependencies: + "@backstage/config" "^1.1.1" + "@backstage/core-plugin-api" "^1.8.2" + "@backstage/types" "^1.1.1" + "@backstage/version-bridge" "^1.0.7" + "@types/prop-types" "^15.7.3" + "@types/react" "^16.13.1 || ^17.0.0" + history "^5.0.0" + i18next "^22.4.15" + lodash "^4.17.21" + prop-types "^15.7.2" + react-use "^17.2.4" + zen-observable "^0.10.0" + zod "^3.22.4" + "@backstage/core-compat-api@^0.2.4", "@backstage/core-compat-api@^0.2.5": version "0.2.5" resolved "https://registry.npmmirror.com/@backstage/core-compat-api/-/core-compat-api-0.2.5.tgz#bc75a51935f1c6f21393bdc9a54251c0701ed5e3" @@ -2976,7 +3781,7 @@ "@backstage/version-bridge" "^1.0.8" "@types/react" "^16.13.1 || ^17.0.0" -"@backstage/core-components@^0.13.8": +"@backstage/core-components@^0.13.8", "@backstage/core-components@~0.13.10": version "0.13.10" resolved "https://registry.npmmirror.com/@backstage/core-components/-/core-components-0.13.10.tgz#f423b56c81cade3df20ec5eccb209f0315320290" integrity sha512-njqtxt0J4eHBcU+tuZgL0yba8Fhie/OtefVwCx5K6+vPWLGQNMnXzJCX7Q/4iLtwBXoMyP+pk3r90sDja3ZV9Q== @@ -3064,6 +3869,49 @@ zen-observable "^0.10.0" zod "^3.22.4" +"@backstage/core-components@^0.14.8": + version "0.14.8" + resolved "https://registry.yarnpkg.com/@backstage/core-components/-/core-components-0.14.8.tgz#857b1d681421e0912564ee11adb320a280bba8e4" + integrity sha512-CZOoYHewv63n/JyRe1YCZVwuaMZVhQTF8RGahKU4GIAKL8d5rDfd1KlJVEY+5FWuDpOjKAlVr0co3SZsOGqjkQ== + dependencies: + "@backstage/config" "^1.2.0" + "@backstage/core-plugin-api" "^1.9.3" + "@backstage/errors" "^1.2.4" + "@backstage/theme" "^0.5.6" + "@backstage/version-bridge" "^1.0.8" + "@date-io/core" "^1.3.13" + "@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.61" + "@react-hookz/web" "^24.0.0" + "@types/react" "^16.13.1 || ^17.0.0 || ^18.0.0" + "@types/react-sparklines" "^1.7.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" + linkify-react "4.1.3" + linkifyjs "4.1.3" + lodash "^4.17.21" + pluralize "^8.0.0" + qs "^6.9.4" + rc-progress "3.5.1" + react-helmet "6.1.0" + react-hook-form "^7.12.2" + react-idle-timer "5.7.2" + react-markdown "^8.0.0" + react-sparklines "^1.7.0" + react-syntax-highlighter "^15.4.5" + react-use "^17.3.2" + react-virtualized-auto-sizer "^1.0.11" + react-window "^1.8.6" + remark-gfm "^3.0.1" + zen-observable "^0.10.0" + zod "^3.22.4" + "@backstage/core-plugin-api@^1.8.0", "@backstage/core-plugin-api@^1.8.2", "@backstage/core-plugin-api@^1.9.2": version "1.9.2" resolved "https://registry.npmmirror.com/@backstage/core-plugin-api/-/core-plugin-api-1.9.2.tgz#1a75865e567708829f5a8056ad23ea94233f4b7f" @@ -3076,6 +3924,47 @@ "@types/react" "^16.13.1 || ^17.0.0 || ^18.0.0" history "^5.0.0" +"@backstage/core-plugin-api@^1.9.3": + version "1.9.3" + resolved "https://registry.yarnpkg.com/@backstage/core-plugin-api/-/core-plugin-api-1.9.3.tgz#66b4b7dc620823c66b123c8a2d6db088e2936027" + integrity sha512-MV/RQv8nAPYVkVX926Z+VPW2W4ZzU9VN2s9NhWSWqoYuOzsmA4FgmfNDuwiPEAUKW7AlVCGI4A0deUZ22Orgyw== + dependencies: + "@backstage/config" "^1.2.0" + "@backstage/errors" "^1.2.4" + "@backstage/types" "^1.1.1" + "@backstage/version-bridge" "^1.0.8" + "@types/react" "^16.13.1 || ^17.0.0 || ^18.0.0" + history "^5.0.0" + +"@backstage/core-plugin-api@~1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@backstage/core-plugin-api/-/core-plugin-api-1.8.2.tgz#1e6f54f0ef1669ffeff56490fbde92c766312230" + integrity sha512-+KvbbMp4L5fz14zhiucG4TevrKcyyS59LjBL7yeoHQO+PdGQFbFaGhispNb/Y+Yjyo/tEuk0+JktRyTBUa1dEg== + dependencies: + "@backstage/config" "^1.1.1" + "@backstage/types" "^1.1.1" + "@backstage/version-bridge" "^1.0.7" + "@types/react" "^16.13.1 || ^17.0.0" + history "^5.0.0" + +"@backstage/dev-utils@^1.0.26": + version "1.0.33" + resolved "https://registry.yarnpkg.com/@backstage/dev-utils/-/dev-utils-1.0.33.tgz#c5417406408b870e6349958ef359004ada0bd3b9" + integrity sha512-Jv8JPyOKzmyDu77cgy/7On8Z1QA3o2N5uxM/kLEPoDoFu9C2bW/p10Kxpnl0EqjjzuXOlNxiMc3FpfKbfFr7Bg== + dependencies: + "@backstage/app-defaults" "^1.5.6" + "@backstage/catalog-model" "^1.5.0" + "@backstage/core-app-api" "^1.12.6" + "@backstage/core-components" "^0.14.8" + "@backstage/core-plugin-api" "^1.9.3" + "@backstage/integration-react" "^1.1.28" + "@backstage/plugin-catalog-react" "^1.12.1" + "@backstage/theme" "^0.5.6" + "@material-ui/core" "^4.12.2" + "@material-ui/icons" "^4.9.1" + "@types/react" "^16.13.1 || ^17.0.0 || ^18.0.0" + react-use "^17.2.4" + "@backstage/dev-utils@^1.0.31": version "1.0.32" resolved "https://registry.npmmirror.com/@backstage/dev-utils/-/dev-utils-1.0.32.tgz#86464ab2892c1ef7c0aa931ccbf7a40d6dc00a77" @@ -3110,7 +3999,7 @@ "@backstage/types" "^1.1.1" serialize-error "^8.0.1" -"@backstage/eslint-plugin@^0.1.8": +"@backstage/eslint-plugin@^0.1.5", "@backstage/eslint-plugin@^0.1.8": version "0.1.8" resolved "https://registry.npmmirror.com/@backstage/eslint-plugin/-/eslint-plugin-0.1.8.tgz#4c554916ae9bdce17ab7082a5c341646f170c9b7" integrity sha512-pYAGh3LoTlM0JhW+5ujEim+AjGs6xnGJcZAlnQ0jnlqdItSvMklL1mIkpwgY2i9NM6AxYzoYnXF8AQxnz6RSTg== @@ -3133,7 +4022,22 @@ zod "^3.22.4" zod-to-json-schema "^3.21.4" -"@backstage/integration-aws-node@^0.1.12": +"@backstage/frontend-plugin-api@^0.6.6": + version "0.6.6" + resolved "https://registry.yarnpkg.com/@backstage/frontend-plugin-api/-/frontend-plugin-api-0.6.6.tgz#acaad6b5c08a84c6add3e4384e0a901638e20778" + integrity sha512-9SfDjOF9d8hkMCEjiwT5PDgPBjXLgwo5WzmEF1/h3aQ9T7J/ys65sjAgGHmGydfaW/jdWxabsfZeSFfIQly+3g== + dependencies: + "@backstage/core-components" "^0.14.8" + "@backstage/core-plugin-api" "^1.9.3" + "@backstage/types" "^1.1.1" + "@backstage/version-bridge" "^1.0.8" + "@material-ui/core" "^4.12.4" + "@types/react" "^16.13.1 || ^17.0.0 || ^18.0.0" + lodash "^4.17.21" + zod "^3.22.4" + zod-to-json-schema "^3.21.4" + +"@backstage/integration-aws-node@^0.1.12", "@backstage/integration-aws-node@^0.1.8": version "0.1.12" resolved "https://registry.npmmirror.com/@backstage/integration-aws-node/-/integration-aws-node-0.1.12.tgz#d2c5ac7c81cd6c2733dcfd24544ad21931ea815d" integrity sha512-bPOBM1a/v3Oo4svOKjQbjvBmaKDqCGfSLBtH2rrp1dj1Mk8Pr+hmvQYQZBHqfc0gTqddRST3gz6GGL2ZKovWUw== @@ -3158,6 +4062,18 @@ "@material-ui/icons" "^4.9.1" "@types/react" "^16.13.1 || ^17.0.0" +"@backstage/integration-react@^1.1.28": + version "1.1.28" + resolved "https://registry.yarnpkg.com/@backstage/integration-react/-/integration-react-1.1.28.tgz#ea9394d0c144cf9d14c94ea81a1187aeb8041360" + integrity sha512-Qo5b2rS9tatuMAgoQTnC1lIBdRMo61gxDSeamq/C8Yu8ytThb1XDGciKP8JHe3pitIVvWXVXGht+EEL+IaPC4Q== + dependencies: + "@backstage/config" "^1.2.0" + "@backstage/core-plugin-api" "^1.9.3" + "@backstage/integration" "^1.12.0" + "@material-ui/core" "^4.12.2" + "@material-ui/icons" "^4.9.1" + "@types/react" "^16.13.1 || ^17.0.0" + "@backstage/integration@^1.10.0", "@backstage/integration@^1.11.0": version "1.11.0" resolved "https://registry.npmmirror.com/@backstage/integration/-/integration-1.11.0.tgz#0a04b6d3e15569c1074b7f39a7a3a17eefd1b89b" @@ -3173,6 +4089,21 @@ lodash "^4.17.21" luxon "^3.0.0" +"@backstage/integration@^1.12.0", "@backstage/integration@^1.8.0", "@backstage/integration@^1.9.0": + version "1.12.0" + resolved "https://registry.yarnpkg.com/@backstage/integration/-/integration-1.12.0.tgz#3e65aae7984dfc85de5a42140b8a581d76656459" + integrity sha512-4MpRYuV+IkzZ+BzMIkmtxR1YyhidIq7+JccqXXhorI8BoAQLUmTZqlryTh9uiWIwY4u/GrIUIvZ81fPVxALjCQ== + dependencies: + "@azure/identity" "^4.0.0" + "@backstage/config" "^1.2.0" + "@backstage/errors" "^1.2.4" + "@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/plugin-api-docs@^0.11.4": version "0.11.5" resolved "https://registry.npmmirror.com/@backstage/plugin-api-docs/-/plugin-api-docs-0.11.5.tgz#8647ba6084f91ca6848a49df94cf2ede2ef98c31" @@ -3493,6 +4424,29 @@ zod "^3.22.4" zod-to-json-schema "^3.21.4" +"@backstage/plugin-auth-node@^0.4.15", "@backstage/plugin-auth-node@^0.4.8": + version "0.4.15" + resolved "https://registry.yarnpkg.com/@backstage/plugin-auth-node/-/plugin-auth-node-0.4.15.tgz#4e7ff16edeea27dd494f99d248f7e2b0f6104736" + integrity sha512-rcplXvoxPtTbHkjIVmANiHcSLE71LFEZHM3No9PLfvp65Ox8WIWB4byHD89G/rHzJr+n277rC8Yv9/lqiL9cUA== + dependencies: + "@backstage/backend-common" "^0.23.1" + "@backstage/backend-plugin-api" "^0.6.20" + "@backstage/catalog-client" "^1.6.5" + "@backstage/catalog-model" "^1.5.0" + "@backstage/config" "^1.2.0" + "@backstage/errors" "^1.2.4" + "@backstage/types" "^1.1.1" + "@types/express" "*" + "@types/passport" "^1.0.3" + express "^4.17.1" + jose "^5.0.0" + lodash "^4.17.21" + node-fetch "^2.6.7" + passport "^0.7.0" + winston "^3.2.1" + zod "^3.22.4" + zod-to-json-schema "^3.21.4" + "@backstage/plugin-auth-react@^0.1.2": version "0.1.2" resolved "https://registry.npmmirror.com/@backstage/plugin-auth-react/-/plugin-auth-react-0.1.2.tgz#683a19a555f558f3e0caee124c32f72734416121" @@ -3567,6 +4521,15 @@ "@backstage/plugin-permission-common" "^0.7.13" "@backstage/plugin-search-common" "^1.2.11" +"@backstage/plugin-catalog-common@^1.0.24": + version "1.0.24" + resolved "https://registry.yarnpkg.com/@backstage/plugin-catalog-common/-/plugin-catalog-common-1.0.24.tgz#022c408b0e8c6b55e89779c6f4fef5f09e9f8e89" + integrity sha512-LozPOa/HgDdobb4/p54W02+exZfuu0tIdKs3OCdvcd8xRh4Y30Qxqpi/kGwsSXCLCBNZv3ffNRuzmYe58VlX/w== + dependencies: + "@backstage/catalog-model" "^1.5.0" + "@backstage/plugin-permission-common" "^0.7.14" + "@backstage/plugin-search-common" "^1.2.12" + "@backstage/plugin-catalog-graph@^0.4.4": version "0.4.5" resolved "https://registry.npmmirror.com/@backstage/plugin-catalog-graph/-/plugin-catalog-graph-0.4.5.tgz#6a525318f5c1418487adbe6f76a88dad2e8795fb" @@ -3663,6 +4626,36 @@ yaml "^2.0.0" zen-observable "^0.10.0" +"@backstage/plugin-catalog-react@^1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@backstage/plugin-catalog-react/-/plugin-catalog-react-1.12.1.tgz#5d531a2a67cfa8995325d0a7b5778cd85efd3444" + integrity sha512-WKGmLCUNN6DbfUteKKwjfJ2hOpjVU/JT4jmR8PkJBc04s/mk3VWBYbYwtIphoX8oB2bX0r3QfuOqkwn/KhhlMw== + dependencies: + "@backstage/catalog-client" "^1.6.5" + "@backstage/catalog-model" "^1.5.0" + "@backstage/core-components" "^0.14.8" + "@backstage/core-plugin-api" "^1.9.3" + "@backstage/errors" "^1.2.4" + "@backstage/frontend-plugin-api" "^0.6.6" + "@backstage/integration-react" "^1.1.28" + "@backstage/plugin-catalog-common" "^1.0.24" + "@backstage/plugin-permission-common" "^0.7.14" + "@backstage/plugin-permission-react" "^0.4.23" + "@backstage/types" "^1.1.1" + "@backstage/version-bridge" "^1.0.8" + "@material-ui/core" "^4.12.2" + "@material-ui/icons" "^4.9.1" + "@material-ui/lab" "4.0.0-alpha.61" + "@react-hookz/web" "^24.0.0" + "@types/react" "^16.13.1 || ^17.0.0 || ^18.0.0" + classnames "^2.2.6" + lodash "^4.17.21" + material-ui-popup-state "^1.9.3" + qs "^6.9.4" + react-use "^17.2.4" + yaml "^2.0.0" + zen-observable "^0.10.0" + "@backstage/plugin-catalog@^1.19.0", "@backstage/plugin-catalog@^1.20.0": version "1.20.0" resolved "https://registry.npmmirror.com/@backstage/plugin-catalog/-/plugin-catalog-1.20.0.tgz#6014e41886fc1a33b6a5de7ce387c0fa52c9f55e" @@ -3923,6 +4916,35 @@ uuid "^9.0.0" zod "^3.22.4" +"@backstage/plugin-permission-common@^0.7.14": + version "0.7.14" + resolved "https://registry.yarnpkg.com/@backstage/plugin-permission-common/-/plugin-permission-common-0.7.14.tgz#ecb12877c412ff271124af54fca46ec06d9c812f" + integrity sha512-fHbxhX9ZoT8bTVuGycfTeU/6TE2yjZ6YNvm/2ko1bcxGnvYe1p5Ug5JW+iWjDZS+F6F152tWzhRcg05wQlPNKQ== + dependencies: + "@backstage/config" "^1.2.0" + "@backstage/errors" "^1.2.4" + "@backstage/types" "^1.1.1" + cross-fetch "^4.0.0" + uuid "^9.0.0" + zod "^3.22.4" + +"@backstage/plugin-permission-node@^0.7.24": + version "0.7.31" + resolved "https://registry.yarnpkg.com/@backstage/plugin-permission-node/-/plugin-permission-node-0.7.31.tgz#27368010545fad9d1b78ff35ba7aba0364a527bb" + integrity sha512-oHKWspLOHAYeKdogNiR8KgyA4vc+/xXIUbJfGYP6y1je1SN5Myz9R+VSzXq1kl03yIp5Vz8wPlPIq+tB6zTY4Q== + dependencies: + "@backstage/backend-common" "^0.23.1" + "@backstage/backend-plugin-api" "^0.6.20" + "@backstage/config" "^1.2.0" + "@backstage/errors" "^1.2.4" + "@backstage/plugin-auth-node" "^0.4.15" + "@backstage/plugin-permission-common" "^0.7.14" + "@types/express" "^4.17.6" + express "^4.17.1" + express-promise-router "^4.1.0" + zod "^3.22.4" + zod-to-json-schema "^3.20.4" + "@backstage/plugin-permission-node@^0.7.28", "@backstage/plugin-permission-node@^0.7.29": version "0.7.29" resolved "https://registry.npmmirror.com/@backstage/plugin-permission-node/-/plugin-permission-node-0.7.29.tgz#9545fe0fce26ca191beff5e458b920e4445a0a03" @@ -3951,6 +4973,17 @@ "@types/react" "^16.13.1 || ^17.0.0 || ^18.0.0" swr "^2.0.0" +"@backstage/plugin-permission-react@^0.4.23": + version "0.4.23" + resolved "https://registry.yarnpkg.com/@backstage/plugin-permission-react/-/plugin-permission-react-0.4.23.tgz#3a09d8bd31f10fb46727e3b0468cc322e2a11fcb" + integrity sha512-ERqb9o9Hk+iDyu3krZNCe0OGBUw7ci426WPq76mSCszHbYiOgbdHDmujnEX/qHdbek3MYvf/Z+ZsjGjKiGm6Iw== + dependencies: + "@backstage/config" "^1.2.0" + "@backstage/core-plugin-api" "^1.9.3" + "@backstage/plugin-permission-common" "^0.7.14" + "@types/react" "^16.13.1 || ^17.0.0 || ^18.0.0" + swr "^2.0.0" + "@backstage/plugin-proxy-backend@^0.4.15": version "0.4.16" resolved "https://registry.npmmirror.com/@backstage/plugin-proxy-backend/-/plugin-proxy-backend-0.4.16.tgz#8a903d751ae35b4713477cd6a4d98db1ee16544e" @@ -4366,6 +5399,14 @@ "@backstage/plugin-permission-common" "^0.7.13" "@backstage/types" "^1.1.1" +"@backstage/plugin-search-common@^1.2.12": + version "1.2.12" + resolved "https://registry.yarnpkg.com/@backstage/plugin-search-common/-/plugin-search-common-1.2.12.tgz#0575788183ad7a66d6496e2ba765ee11bada4f2d" + integrity sha512-tjRhkgUYenK+dr+PHiS6pnXASGEVmxqjgoWfYoVNlKcwrXYHbddDoUJ1n51P/urhHqGGiz9zJyt8og+gN+TNaQ== + dependencies: + "@backstage/plugin-permission-common" "^0.7.14" + "@backstage/types" "^1.1.1" + "@backstage/plugin-search-react@^1.7.10", "@backstage/plugin-search-react@^1.7.11": version "1.7.11" resolved "https://registry.npmmirror.com/@backstage/plugin-search-react/-/plugin-search-react-1.7.11.tgz#0590bb66647ec5f3470ed84da9bfd84103f2351b" @@ -4618,6 +5659,25 @@ portfinder "^1.0.32" yaml-diff-patch "^2.0.0" +"@backstage/test-utils@^1.4.7": + version "1.5.6" + resolved "https://registry.yarnpkg.com/@backstage/test-utils/-/test-utils-1.5.6.tgz#6d10e2485bc06dc9cdb3f7f7541f8129c7577b6c" + integrity sha512-9s7YPakCnDqWPNl2WKdrsiM9MrdcFmZqrW9WoJCK2/vzDnIE8+P3tYEwqlhA4b+jowy8tWGz1de8Nz/hCwO3jQ== + dependencies: + "@backstage/config" "^1.2.0" + "@backstage/core-app-api" "^1.12.6" + "@backstage/core-plugin-api" "^1.9.3" + "@backstage/plugin-permission-common" "^0.7.14" + "@backstage/plugin-permission-react" "^0.4.23" + "@backstage/theme" "^0.5.6" + "@backstage/types" "^1.1.1" + "@material-ui/core" "^4.12.2" + "@material-ui/icons" "^4.9.1" + "@types/react" "^16.13.1 || ^17.0.0 || ^18.0.0" + cross-fetch "^4.0.0" + i18next "^22.4.15" + zen-observable "^0.10.0" + "@backstage/test-utils@^1.5.4": version "1.5.5" resolved "https://registry.npmmirror.com/@backstage/test-utils/-/test-utils-1.5.5.tgz#ef550ca8fa5e55bad8230a619557b578e11810dd" @@ -4655,6 +5715,15 @@ "@emotion/styled" "^11.10.5" "@mui/material" "^5.12.2" +"@backstage/theme@^0.5.6", "@backstage/theme@~0.5.0": + version "0.5.6" + resolved "https://registry.yarnpkg.com/@backstage/theme/-/theme-0.5.6.tgz#18645cbe42fb5667946e0a5dd38f2fb0bb056597" + integrity sha512-7/0sZYAS+2p/eEWC8eBINWHNv4jas6R20e0R5f0fc1YvLnVQ8HhnpZ6+d2vDMe7X2A2TBBcyJbSCybHdRAKpAA== + dependencies: + "@emotion/react" "^11.10.5" + "@emotion/styled" "^11.10.5" + "@mui/material" "^5.12.2" + "@backstage/types@^1.1.1": version "1.1.1" resolved "https://registry.npmmirror.com/@backstage/types/-/types-1.1.1.tgz#c9ccb30357005e7fb5fa2ac140198059976eb076" @@ -4940,116 +6009,231 @@ resolved "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz#a70f4ac11c6a1dfc18b8bbb13284155d933b9537" integrity sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g== +"@esbuild/aix-ppc64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f" + integrity sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ== + "@esbuild/android-arm64@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz#db1c9202a5bc92ea04c7b6840f1bbe09ebf9e6b9" integrity sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg== +"@esbuild/android-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz#09d9b4357780da9ea3a7dfb833a1f1ff439b4052" + integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A== + "@esbuild/android-arm@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.20.2.tgz#3b488c49aee9d491c2c8f98a909b785870d6e995" integrity sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w== +"@esbuild/android-arm@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz#9b04384fb771926dfa6d7ad04324ecb2ab9b2e28" + integrity sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg== + "@esbuild/android-x64@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.20.2.tgz#3b1628029e5576249d2b2d766696e50768449f98" integrity sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg== +"@esbuild/android-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz#29918ec2db754cedcb6c1b04de8cd6547af6461e" + integrity sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA== + "@esbuild/darwin-arm64@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz#6e8517a045ddd86ae30c6608c8475ebc0c4000bb" integrity sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA== +"@esbuild/darwin-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz#e495b539660e51690f3928af50a76fb0a6ccff2a" + integrity sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ== + "@esbuild/darwin-x64@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz#90ed098e1f9dd8a9381695b207e1cff45540a0d0" integrity sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA== +"@esbuild/darwin-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz#c13838fa57372839abdddc91d71542ceea2e1e22" + integrity sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw== + "@esbuild/freebsd-arm64@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz#d71502d1ee89a1130327e890364666c760a2a911" integrity sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw== +"@esbuild/freebsd-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz#646b989aa20bf89fd071dd5dbfad69a3542e550e" + integrity sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g== + "@esbuild/freebsd-x64@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz#aa5ea58d9c1dd9af688b8b6f63ef0d3d60cea53c" integrity sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw== +"@esbuild/freebsd-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz#aa615cfc80af954d3458906e38ca22c18cf5c261" + integrity sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ== + "@esbuild/linux-arm64@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz#055b63725df678379b0f6db9d0fa85463755b2e5" integrity sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A== +"@esbuild/linux-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz#70ac6fa14f5cb7e1f7f887bcffb680ad09922b5b" + integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q== + "@esbuild/linux-arm@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz#76b3b98cb1f87936fbc37f073efabad49dcd889c" integrity sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg== +"@esbuild/linux-arm@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz#fc6fd11a8aca56c1f6f3894f2bea0479f8f626b9" + integrity sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA== + "@esbuild/linux-ia32@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz#c0e5e787c285264e5dfc7a79f04b8b4eefdad7fa" integrity sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig== +"@esbuild/linux-ia32@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz#3271f53b3f93e3d093d518d1649d6d68d346ede2" + integrity sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg== + "@esbuild/linux-loong64@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz#a6184e62bd7cdc63e0c0448b83801001653219c5" integrity sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ== +"@esbuild/linux-loong64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz#ed62e04238c57026aea831c5a130b73c0f9f26df" + integrity sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg== + "@esbuild/linux-mips64el@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz#d08e39ce86f45ef8fc88549d29c62b8acf5649aa" integrity sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA== +"@esbuild/linux-mips64el@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz#e79b8eb48bf3b106fadec1ac8240fb97b4e64cbe" + integrity sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg== + "@esbuild/linux-ppc64@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz#8d252f0b7756ffd6d1cbde5ea67ff8fd20437f20" integrity sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg== +"@esbuild/linux-ppc64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz#5f2203860a143b9919d383ef7573521fb154c3e4" + integrity sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w== + "@esbuild/linux-riscv64@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz#19f6dcdb14409dae607f66ca1181dd4e9db81300" integrity sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg== +"@esbuild/linux-riscv64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz#07bcafd99322d5af62f618cb9e6a9b7f4bb825dc" + integrity sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA== + "@esbuild/linux-s390x@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz#3c830c90f1a5d7dd1473d5595ea4ebb920988685" integrity sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ== +"@esbuild/linux-s390x@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz#b7ccf686751d6a3e44b8627ababc8be3ef62d8de" + integrity sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A== + "@esbuild/linux-x64@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz#86eca35203afc0d9de0694c64ec0ab0a378f6fff" integrity sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw== +"@esbuild/linux-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz#6d8f0c768e070e64309af8004bb94e68ab2bb3b0" + integrity sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ== + "@esbuild/netbsd-x64@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz#e771c8eb0e0f6e1877ffd4220036b98aed5915e6" integrity sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ== +"@esbuild/netbsd-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz#bbe430f60d378ecb88decb219c602667387a6047" + integrity sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg== + "@esbuild/openbsd-x64@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz#9a795ae4b4e37e674f0f4d716f3e226dd7c39baf" integrity sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ== +"@esbuild/openbsd-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz#99d1cf2937279560d2104821f5ccce220cb2af70" + integrity sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow== + "@esbuild/sunos-x64@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz#7df23b61a497b8ac189def6e25a95673caedb03f" integrity sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w== +"@esbuild/sunos-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz#08741512c10d529566baba837b4fe052c8f3487b" + integrity sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg== + "@esbuild/win32-arm64@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz#f1ae5abf9ca052ae11c1bc806fb4c0f519bacf90" integrity sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ== +"@esbuild/win32-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz#675b7385398411240735016144ab2e99a60fc75d" + integrity sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A== + "@esbuild/win32-ia32@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz#241fe62c34d8e8461cd708277813e1d0ba55ce23" integrity sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ== +"@esbuild/win32-ia32@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz#1bfc3ce98aa6ca9a0969e4d2af72144c59c1193b" + integrity sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA== + "@esbuild/win32-x64@0.20.2": version "0.20.2" resolved "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz#9c907b21e30a52db959ba4f80bb01a0cc403d5cc" integrity sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ== +"@esbuild/win32-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz#acad351d582d157bb145535db2a6ff53dd514b5c" + integrity sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw== + "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" resolved "https://registry.npmmirror.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" @@ -7687,7 +8871,7 @@ js-yaml "^4.1.0" tosource "^2.0.0-alpha.3" -"@rollup/pluginutils@^4.2.1": +"@rollup/pluginutils@^4.1.1", "@rollup/pluginutils@^4.2.1": version "4.2.1" resolved "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz#e6c6c3aba0744edce3fb2074922d3776c0af2a6d" integrity sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ== @@ -7914,6 +9098,14 @@ "@smithy/types" "^3.1.0" tslib "^2.6.2" +"@smithy/abort-controller@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-3.1.0.tgz#408fbc0da13c30bc0aac859a44be08a5ba18126a" + integrity sha512-XOm4LkuC0PsK1sf2bBJLIlskn5ghmVxiEBVlo/jg0R8hxASBKYYgOoJEhKWgOr4vWGkN+5rC+oyBAqHYtxjnwQ== + dependencies: + "@smithy/types" "^3.2.0" + tslib "^2.6.2" + "@smithy/chunked-blob-reader-native@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-2.1.1.tgz#6b98479c8f6ea94832dd6a6e5ca78969a44eafe1" @@ -7922,6 +9114,14 @@ "@smithy/util-base64" "^2.1.1" tslib "^2.5.0" +"@smithy/chunked-blob-reader-native@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-3.0.0.tgz#f1104b30030f76f9aadcbd3cdca4377bd1ba2695" + integrity sha512-VDkpCYW+peSuM4zJip5WDfqvg2Mo/e8yxOv3VF1m11y7B8KKMKVFtmZWDe36Fvk8rGuWrPZHHXZ7rR7uM5yWyg== + dependencies: + "@smithy/util-base64" "^3.0.0" + tslib "^2.6.2" + "@smithy/chunked-blob-reader@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/chunked-blob-reader/-/chunked-blob-reader-2.1.1.tgz#997faba8e197e0cb9824dad30ae581466e386e57" @@ -7929,6 +9129,13 @@ dependencies: tslib "^2.5.0" +"@smithy/chunked-blob-reader@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@smithy/chunked-blob-reader/-/chunked-blob-reader-3.0.0.tgz#e5d3b04e9b273ba8b7ede47461e2aa96c8aa49e0" + integrity sha512-sbnURCwjF0gSToGlsBiAmd1lRCmSn72nu9axfJu5lIx6RUEgHu6GwTMbqCdhQSi0Pumcm5vFxsi9XWXb2mTaoA== + dependencies: + tslib "^2.6.2" + "@smithy/config-resolver@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/config-resolver/-/config-resolver-2.1.1.tgz#fc6b036084b98fd26a8ff01a5d7eb676e41749c7" @@ -7965,6 +9172,20 @@ "@smithy/util-middleware" "^2.1.1" tslib "^2.5.0" +"@smithy/core@^2.1.1": + version "2.2.3" + resolved "https://registry.yarnpkg.com/@smithy/core/-/core-2.2.3.tgz#dc6ba7d338a1b35752be274cdaf6fcbcfdb44a70" + integrity sha512-SpyLOL2vgE6sUYM6nQfu82OirCPkCDKctyG3aMgjMlDPTJpUlmlNH0ttu9ZWwzEjrzzr8uABmPjJTRI7gk1HFQ== + dependencies: + "@smithy/middleware-endpoint" "^3.0.3" + "@smithy/middleware-retry" "^3.0.6" + "@smithy/middleware-serde" "^3.0.2" + "@smithy/protocol-http" "^4.0.2" + "@smithy/smithy-client" "^3.1.4" + "@smithy/types" "^3.2.0" + "@smithy/util-middleware" "^3.0.2" + tslib "^2.6.2" + "@smithy/core@^2.2.0": version "2.2.1" resolved "https://registry.npmmirror.com/@smithy/core/-/core-2.2.1.tgz#92ed71eb96ef16d5ac8b23dbdf913bcb225ab875" @@ -8021,6 +9242,16 @@ "@smithy/util-hex-encoding" "^2.1.1" tslib "^2.5.0" +"@smithy/eventstream-codec@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-codec/-/eventstream-codec-3.0.0.tgz#81d30391220f73d41f432f65384b606d67673e46" + integrity sha512-PUtyEA0Oik50SaEFCZ0WPVtF9tz/teze2fDptW6WRXl+RrEenH8UbEjudOz8iakiMl3lE3lCVqYf2Y+znL8QFQ== + dependencies: + "@aws-crypto/crc32" "3.0.0" + "@smithy/types" "^3.0.0" + "@smithy/util-hex-encoding" "^3.0.0" + tslib "^2.6.2" + "@smithy/eventstream-serde-browser@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-2.1.1.tgz#743a374639e9e2dd858b6fda1fd814eb6c604946" @@ -8030,6 +9261,15 @@ "@smithy/types" "^2.9.1" tslib "^2.5.0" +"@smithy/eventstream-serde-browser@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.0.tgz#94721b01f01d8b7eb1db5814275a774ed4d38190" + integrity sha512-NB7AFiPN4NxP/YCAnrvYR18z2/ZsiHiF7VtG30gshO9GbFrIb1rC8ep4NGpJSWrz6P64uhPXeo4M0UsCLnZKqw== + dependencies: + "@smithy/eventstream-serde-universal" "^3.0.0" + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + "@smithy/eventstream-serde-config-resolver@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-2.1.1.tgz#0b84d6f8be0836af7b92455c69f7427e4f01e7a2" @@ -8038,6 +9278,14 @@ "@smithy/types" "^2.9.1" tslib "^2.5.0" +"@smithy/eventstream-serde-config-resolver@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.0.0.tgz#420447d1d284d41f7f070a5d92fc3686cc922581" + integrity sha512-RUQG3vQ3LX7peqqHAbmayhgrF5aTilPnazinaSGF1P0+tgM3vvIRWPHmlLIz2qFqB9LqFIxditxc8O2Z6psrRw== + dependencies: + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + "@smithy/eventstream-serde-node@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/eventstream-serde-node/-/eventstream-serde-node-2.1.1.tgz#2e1afa27f9c7eb524c1c53621049c5e4e3cea6a5" @@ -8047,6 +9295,15 @@ "@smithy/types" "^2.9.1" tslib "^2.5.0" +"@smithy/eventstream-serde-node@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.0.tgz#6519523fbb429307be29b151b8ba35bcca2b6e64" + integrity sha512-baRPdMBDMBExZXIUAoPGm/hntixjt/VFpU6+VmCyiYJYzRHRxoaI1MN+5XE+hIS8AJ2GCHLMFEIOLzq9xx1EgQ== + dependencies: + "@smithy/eventstream-serde-universal" "^3.0.0" + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + "@smithy/eventstream-serde-universal@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-2.1.1.tgz#0f5eec9ad033017973a67bafb5549782499488d2" @@ -8056,6 +9313,15 @@ "@smithy/types" "^2.9.1" tslib "^2.5.0" +"@smithy/eventstream-serde-universal@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.0.tgz#cb8441a73fbde4cbaa68e4a21236f658d914a073" + integrity sha512-HNFfShmotWGeAoW4ujP8meV9BZavcpmerDbPIjkJbxKbN8RsUcpRQ/2OyIxWNxXNH2GWCAxuSB7ynmIGJlQ3Dw== + dependencies: + "@smithy/eventstream-codec" "^3.0.0" + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + "@smithy/fetch-http-handler@^2.4.1": version "2.4.1" resolved "https://registry.npmmirror.com/@smithy/fetch-http-handler/-/fetch-http-handler-2.4.1.tgz#b4d73bbc1449f61234077d58c705b843a8587bf0" @@ -8078,6 +9344,17 @@ "@smithy/util-base64" "^3.0.0" tslib "^2.6.2" +"@smithy/fetch-http-handler@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-3.1.0.tgz#993d47577c7b86eb5796cd29f8301beafa2cf471" + integrity sha512-s7oQjEOUH9TYjctpITtWF4qxOdg7pBrP9eigEQ8SBsxF3dRFV0S28pGMllC83DUr7ECmErhO/BUwnULfoNhKgQ== + dependencies: + "@smithy/protocol-http" "^4.0.2" + "@smithy/querystring-builder" "^3.0.2" + "@smithy/types" "^3.2.0" + "@smithy/util-base64" "^3.0.0" + tslib "^2.6.2" + "@smithy/hash-blob-browser@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/hash-blob-browser/-/hash-blob-browser-2.1.1.tgz#f4571d4e2fbc2cc1869c443850e5409bf541ba25" @@ -8088,6 +9365,16 @@ "@smithy/types" "^2.9.1" tslib "^2.5.0" +"@smithy/hash-blob-browser@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@smithy/hash-blob-browser/-/hash-blob-browser-3.0.0.tgz#63ef4c98f74c53cbcad8ec73387c68ec4708f55b" + integrity sha512-/Wbpdg+bwJvW7lxR/zpWAc1/x/YkcqguuF2bAzkJrvXriZu1vm8r+PUdE4syiVwQg7PPR2dXpi3CLBb9qRDaVQ== + dependencies: + "@smithy/chunked-blob-reader" "^3.0.0" + "@smithy/chunked-blob-reader-native" "^3.0.0" + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + "@smithy/hash-node@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/hash-node/-/hash-node-2.1.1.tgz#0f8a22d97565ca948724f72267e4d3a2f33740a8" @@ -8117,6 +9404,15 @@ "@smithy/util-utf8" "^2.1.1" tslib "^2.5.0" +"@smithy/hash-stream-node@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@smithy/hash-stream-node/-/hash-stream-node-3.0.0.tgz#b395a8a0d2427e4a8effc56135b37cb299339f8f" + integrity sha512-J0i7de+EgXDEGITD4fxzmMX8CyCNETTIRXlxjMiNUvvu76Xn3GJ31wQR85ynlPk2wI1lqoknAFJaD1fiNDlbIA== + dependencies: + "@smithy/types" "^3.0.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + "@smithy/invalid-dependency@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/invalid-dependency/-/invalid-dependency-2.1.1.tgz#bd69fa24dd35e9bc65a160bd86becdf1399e4463" @@ -8163,6 +9459,15 @@ "@smithy/util-utf8" "^2.1.1" tslib "^2.5.0" +"@smithy/md5-js@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@smithy/md5-js/-/md5-js-3.0.0.tgz#6a2d1c496f4d4476a0fc84f7724d79b234c3eb13" + integrity sha512-Tm0vrrVzjlD+6RCQTx7D3Ls58S3FUH1ZCtU1MIh/qQmaOo1H9lMN2as6CikcEwgattnA9SURSdoJJ27xMcEfMA== + dependencies: + "@smithy/types" "^3.0.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + "@smithy/middleware-content-length@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/middleware-content-length/-/middleware-content-length-2.1.1.tgz#df767de12d594bc5622009fb0fc8343522697d8c" @@ -8207,6 +9512,19 @@ "@smithy/util-middleware" "^3.0.1" tslib "^2.6.2" +"@smithy/middleware-endpoint@^3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-3.0.3.tgz#bbfdd0f35668af392c5031ca2735c31760740bc6" + integrity sha512-ARAXHodhj4tttKa9y75zvENdSoHq6VGsSi7XS3+yLutrnxttJs6N10UMInCC1yi3/bopT8xug3iOP/y9R6sKJQ== + dependencies: + "@smithy/middleware-serde" "^3.0.2" + "@smithy/node-config-provider" "^3.1.2" + "@smithy/shared-ini-file-loader" "^3.1.2" + "@smithy/types" "^3.2.0" + "@smithy/url-parser" "^3.0.2" + "@smithy/util-middleware" "^3.0.2" + tslib "^2.6.2" + "@smithy/middleware-retry@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/middleware-retry/-/middleware-retry-2.1.1.tgz#ddc749dd927f136714f76ca5a52dcfb0993ee162" @@ -8237,6 +9555,21 @@ tslib "^2.6.2" uuid "^9.0.1" +"@smithy/middleware-retry@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-3.0.6.tgz#ace955263cea4ef6acf1e0e42192be62e20ab558" + integrity sha512-ICsFKp8eAyIMmxN5UT3IU37S6886L879TKtgxPsn/VD/laYNwqTLmJaCAn5//+2fRIrV0dnHp6LFlMwdXlWoUQ== + dependencies: + "@smithy/node-config-provider" "^3.1.2" + "@smithy/protocol-http" "^4.0.2" + "@smithy/service-error-classification" "^3.0.2" + "@smithy/smithy-client" "^3.1.4" + "@smithy/types" "^3.2.0" + "@smithy/util-middleware" "^3.0.2" + "@smithy/util-retry" "^3.0.2" + tslib "^2.6.2" + uuid "^9.0.1" + "@smithy/middleware-serde@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/middleware-serde/-/middleware-serde-2.1.1.tgz#2c5750f76e276a5249720f6c3c24fac29abbee16" @@ -8253,6 +9586,14 @@ "@smithy/types" "^3.1.0" tslib "^2.6.2" +"@smithy/middleware-serde@^3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-3.0.2.tgz#3ec15a7991c2b066cced5989aba7f81fed4dfb87" + integrity sha512-oT2abV5zLhBucJe1LIIFEcRgIBDbZpziuMPswTMbBQNcaEUycLFvX63zsFmqfwG+/ZQKsNx+BSE8W51CMuK7Yw== + dependencies: + "@smithy/types" "^3.2.0" + tslib "^2.6.2" + "@smithy/middleware-stack@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/middleware-stack/-/middleware-stack-2.1.1.tgz#67f992dc36e8a6861f881f80a81c1c30956a0396" @@ -8269,6 +9610,14 @@ "@smithy/types" "^3.1.0" tslib "^2.6.2" +"@smithy/middleware-stack@^3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-3.0.2.tgz#82610681a7f5986bfb3229df98ca1e050b667660" + integrity sha512-6fRcxomlNKBPIy/YjcnC7YHpMAjRvGUYlYVJAfELqZjkW0vQegNcImjY7T1HgYA6u3pAcCxKVBLYnkTw8z/l0A== + dependencies: + "@smithy/types" "^3.2.0" + tslib "^2.6.2" + "@smithy/node-config-provider@^2.2.1": version "2.2.1" resolved "https://registry.npmmirror.com/@smithy/node-config-provider/-/node-config-provider-2.2.1.tgz#c440c7948d58d72f0e212aa1967aa12f0729defd" @@ -8289,6 +9638,16 @@ "@smithy/types" "^3.1.0" tslib "^2.6.2" +"@smithy/node-config-provider@^3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-3.1.2.tgz#3e739ae02520f2249f6c50197feee6e38125fb1d" + integrity sha512-388fEAa7+6ORj/BDC70peg3fyFBTTXJyXfXJ0Bwd6FYsRltePr2oGzIcm5AuC1WUSLtZ/dF+hYOnfTMs04rLvA== + dependencies: + "@smithy/property-provider" "^3.1.2" + "@smithy/shared-ini-file-loader" "^3.1.2" + "@smithy/types" "^3.2.0" + tslib "^2.6.2" + "@smithy/node-http-handler@^2.1.7", "@smithy/node-http-handler@^2.3.1": version "2.3.1" resolved "https://registry.npmmirror.com/@smithy/node-http-handler/-/node-http-handler-2.3.1.tgz#77d23279ff0a12cbe7cde93c5e7c0e86ad56dd20" @@ -8311,6 +9670,17 @@ "@smithy/types" "^3.1.0" tslib "^2.6.2" +"@smithy/node-http-handler@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-3.1.0.tgz#0f37b2c379b1cd85be125234575e7c5129dbed67" + integrity sha512-pOpgB6B+VLXLwAyyvRz+ZAVXABlbAsJ2xvn3WZvrppAPImxwQOPFbeSUzWYMhpC8Tr7yQ3R8fG990QDhskkf1Q== + dependencies: + "@smithy/abort-controller" "^3.1.0" + "@smithy/protocol-http" "^4.0.2" + "@smithy/querystring-builder" "^3.0.2" + "@smithy/types" "^3.2.0" + tslib "^2.6.2" + "@smithy/property-provider@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/property-provider/-/property-provider-2.1.1.tgz#0f7ffc5e43829eaca5b2b5aae8554807a52b30f3" @@ -8327,6 +9697,14 @@ "@smithy/types" "^3.1.0" tslib "^2.6.2" +"@smithy/property-provider@^3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-3.1.2.tgz#3da2802511078eae66240bcbeb8ef6f6102aeabf" + integrity sha512-Hzp32BpeFFexBpO1z+ts8okbq/VLzJBadxanJAo/Wf2CmvXMBp6Q/TLWr7Js6IbMEcr0pDZ02V3u1XZkuQUJaA== + dependencies: + "@smithy/types" "^3.2.0" + tslib "^2.6.2" + "@smithy/protocol-http@^3.1.1": version "3.1.1" resolved "https://registry.npmmirror.com/@smithy/protocol-http/-/protocol-http-3.1.1.tgz#eee522d0ed964a72b735d64925e07bcfb7a7806f" @@ -8343,6 +9721,14 @@ "@smithy/types" "^3.1.0" tslib "^2.6.2" +"@smithy/protocol-http@^4.0.2": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-4.0.2.tgz#502ed3116cb0f1e3f207881df965bac620ccb2da" + integrity sha512-X/90xNWIOqSR2tLUyWxVIBdatpm35DrL44rI/xoeBWUuanE0iyCXJpTcnqlOpnEzgcu0xCKE06+g70TTu2j7RQ== + dependencies: + "@smithy/types" "^3.2.0" + tslib "^2.6.2" + "@smithy/querystring-builder@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/querystring-builder/-/querystring-builder-2.1.1.tgz#b9693448ad3f8e0767d84cf5cae29f35514591fb" @@ -8361,6 +9747,15 @@ "@smithy/util-uri-escape" "^3.0.0" tslib "^2.6.2" +"@smithy/querystring-builder@^3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-3.0.2.tgz#ea0f9a6e2b85d62465b3cc0214e6b86eb7af7ab4" + integrity sha512-xhv1+HacDYsOLdNt7zW+8Fe779KYAzmWvzs9bC5NlKM8QGYCwwuFwDBynhlU4D5twgi2pZ14Lm4h6RiAazCtmA== + dependencies: + "@smithy/types" "^3.2.0" + "@smithy/util-uri-escape" "^3.0.0" + tslib "^2.6.2" + "@smithy/querystring-parser@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/querystring-parser/-/querystring-parser-2.1.1.tgz#a4282a66cc56844317dbff824e573f469bbfc032" @@ -8377,6 +9772,14 @@ "@smithy/types" "^3.1.0" tslib "^2.6.2" +"@smithy/querystring-parser@^3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-3.0.2.tgz#7b8edc661d0ee2c2e7e8a39b1022b00dfff2858e" + integrity sha512-C5hyRKgrZGPNh5QqIWzXnW+LXVrPmVQO0iJKjHeb5v3C61ZkP9QhrKmbfchcTyg/VnaE0tMNf/nmLpQlWuiqpg== + dependencies: + "@smithy/types" "^3.2.0" + tslib "^2.6.2" + "@smithy/service-error-classification@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/service-error-classification/-/service-error-classification-2.1.1.tgz#dd24e1ec529ae9ec8e87d8b15f0fc8f7e17f3d02" @@ -8391,6 +9794,13 @@ dependencies: "@smithy/types" "^3.1.0" +"@smithy/service-error-classification@^3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-3.0.2.tgz#ad7a0c8dfd482981a04d42fba24c7ee1ac2eb20b" + integrity sha512-cu0WV2XRttItsuXlcM0kq5MKdphbMMmSd2CXF122dJ75NrFE0o7rruXFGfxAp3BKzgF/DMxX+PllIA/cj4FHMw== + dependencies: + "@smithy/types" "^3.2.0" + "@smithy/shared-ini-file-loader@^2.3.1": version "2.3.1" resolved "https://registry.npmmirror.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.3.1.tgz#a2e28b4d85f8a8262a84403fa2b74a086b3a7703" @@ -8407,6 +9817,14 @@ "@smithy/types" "^3.1.0" tslib "^2.6.2" +"@smithy/shared-ini-file-loader@^3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.2.tgz#b80f8b9b40841447219a95cb47f7a8f3f85b6467" + integrity sha512-tgnXrXbLMO8vo6VeuqabMw/eTzQHlLmZx0TC0TjtjJghnD0Xl4pEnJtBjTJr6XF5fHMNrt5BcczDXHJT9yNQnA== + dependencies: + "@smithy/types" "^3.2.0" + tslib "^2.6.2" + "@smithy/signature-v4@^1.0.1": version "1.1.0" resolved "https://registry.npmmirror.com/@smithy/signature-v4/-/signature-v4-1.1.0.tgz#e85309995c2475d39598a4f56e68b7ed856bdfa6" @@ -8472,6 +9890,18 @@ "@smithy/util-stream" "^3.0.2" tslib "^2.6.2" +"@smithy/smithy-client@^3.1.4": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-3.1.4.tgz#597a4b0d08c71ed7e66707df28871b8a3a707cce" + integrity sha512-y6xJROGrIoitjpwXLY7P9luDHvuT9jWpAluliuSFdBymFxcl6iyQjo9U/JhYfRHFNTruqsvKOrOESVuPGEcRmQ== + dependencies: + "@smithy/middleware-endpoint" "^3.0.3" + "@smithy/middleware-stack" "^3.0.2" + "@smithy/protocol-http" "^4.0.2" + "@smithy/types" "^3.2.0" + "@smithy/util-stream" "^3.0.4" + tslib "^2.6.2" + "@smithy/types@^1.2.0": version "1.2.0" resolved "https://registry.npmmirror.com/@smithy/types/-/types-1.2.0.tgz#9dc65767b0ee3d6681704fcc67665d6fc9b6a34e" @@ -8493,6 +9923,13 @@ dependencies: tslib "^2.6.2" +"@smithy/types@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@smithy/types/-/types-3.2.0.tgz#1350fe8a50d5e35e12ffb34be46d946860b2b5ab" + integrity sha512-cKyeKAPazZRVqm7QPvcPD2jEIt2wqDPAL1KJKb0f/5I7uhollvsWZuZKLclmyP6a+Jwmr3OV3t+X0pZUUHS9BA== + dependencies: + tslib "^2.6.2" + "@smithy/url-parser@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/url-parser/-/url-parser-2.1.1.tgz#a30de227b6734650d740b6dff74d488b874e85e3" @@ -8511,6 +9948,15 @@ "@smithy/types" "^3.1.0" tslib "^2.6.2" +"@smithy/url-parser@^3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-3.0.2.tgz#a4d6f364a28d2b11c14d9486041ea8eb4572fc66" + integrity sha512-pRiPHrgibeAr4avtXDoBHmTLtthwA4l8jKYRfZjNgp+bBPyxDMPRg2TMJaYxqbKemvrOkHu9MIBTv2RkdNfD6w== + dependencies: + "@smithy/querystring-parser" "^3.0.2" + "@smithy/types" "^3.2.0" + tslib "^2.6.2" + "@smithy/util-base64@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/util-base64/-/util-base64-2.1.1.tgz#af729085cc9d92ebd54a5d2c5d0aa5a0c31f83bf" @@ -8704,6 +10150,14 @@ "@smithy/types" "^3.1.0" tslib "^2.6.2" +"@smithy/util-middleware@^3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-3.0.2.tgz#6daeb9db060552d851801cd7a0afd68769e2f98b" + integrity sha512-7WW5SD0XVrpfqljBYzS5rLR+EiDzl7wCVJZ9Lo6ChNFV4VYDk37Z1QI5w/LnYtU/QKnSawYoHRd7VjSyC8QRQQ== + dependencies: + "@smithy/types" "^3.2.0" + tslib "^2.6.2" + "@smithy/util-retry@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/util-retry/-/util-retry-2.1.1.tgz#f2d3566b6e5b841028c7240c852007d4037e49b2" @@ -8722,6 +10176,15 @@ "@smithy/types" "^3.1.0" tslib "^2.6.2" +"@smithy/util-retry@^3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-3.0.2.tgz#073b4950f0379307e073a70afe086c52ec2b0329" + integrity sha512-HUVOb1k8p/IH6WFUjsLa+L9H1Zi/FAAB2CDOpWuffI1b2Txi6sknau8kNfC46Xrt39P1j2KDzCE1UlLa2eW5+A== + dependencies: + "@smithy/service-error-classification" "^3.0.2" + "@smithy/types" "^3.2.0" + tslib "^2.6.2" + "@smithy/util-stream@^2.1.1": version "2.1.1" resolved "https://registry.npmmirror.com/@smithy/util-stream/-/util-stream-2.1.1.tgz#3ae0e88c3a1a45899e29c1655d2e5a3865b6c0a6" @@ -8750,6 +10213,20 @@ "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" +"@smithy/util-stream@^3.0.4": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-3.0.4.tgz#7a33a39754d8a0737f30687953d8dcc05810e907" + integrity sha512-CcMioiaOOsEVdb09pS7ux1ij7QcQ2jE/cE1+iin1DXMeRgAEQN/47m7Xztu7KFQuQsj0A5YwB2UN45q97CqKCg== + dependencies: + "@smithy/fetch-http-handler" "^3.1.0" + "@smithy/node-http-handler" "^3.1.0" + "@smithy/types" "^3.2.0" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-buffer-from" "^3.0.0" + "@smithy/util-hex-encoding" "^3.0.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + "@smithy/util-uri-escape@^1.1.0": version "1.1.0" resolved "https://registry.npmmirror.com/@smithy/util-uri-escape/-/util-uri-escape-1.1.0.tgz#a8c5edaf19c0efdb9b51661e840549cf600a1808" @@ -8804,16 +10281,40 @@ "@smithy/types" "^2.9.1" tslib "^2.5.0" +"@smithy/util-waiter@^3.0.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@smithy/util-waiter/-/util-waiter-3.1.0.tgz#7fa58fe91ddcf4a8bcf00c3d216f2cc14386da2a" + integrity sha512-5OVcC5ZcmmutY208ADY/l2eB4H4DVXs+hPUo/M1spF4/YEmF9DdLkfwBvohej2dIeVJayKY7hMlD0X8j3F3/Uw== + dependencies: + "@smithy/abort-controller" "^3.1.0" + "@smithy/types" "^3.2.0" + tslib "^2.6.2" + +"@spotify/eslint-config-base@^14.0.0": + version "14.1.6" + resolved "https://registry.yarnpkg.com/@spotify/eslint-config-base/-/eslint-config-base-14.1.6.tgz#249b25ef683884e12aa0d10fc2783d9361e2890a" + integrity sha512-pTctiCA/nrrIoBUd9jk+1AjJ9lqy9f5N85ctbSU5O5HW0/yIqJBUPH0+97+2/AOeSmnO5R2e9vSiwQwCZkXjig== + "@spotify/eslint-config-base@^15.0.0": version "15.0.0" resolved "https://registry.npmmirror.com/@spotify/eslint-config-base/-/eslint-config-base-15.0.0.tgz#fa8a003e656b1c14694528a487bb9e974e013e4d" integrity sha512-7UA5QWbb8xk3Q1665BkRldzieI/Of7ONzjEXZpoyIjrfBDEmlXEDdCmOsv8Pt2aOuzHSTiykMzn7wNF5ymGL/A== +"@spotify/eslint-config-react@^14.0.0": + version "14.1.6" + resolved "https://registry.yarnpkg.com/@spotify/eslint-config-react/-/eslint-config-react-14.1.6.tgz#3aa134e336f1e4cb298a55e4114d5cbd2abd6b46" + integrity sha512-WguVK3HuVy4ZYyN8Gojef34OeTLZwLzd3Dk3kaCbL4pjWJ5fJfT2epe6N4PfC5W358OuPG12X3s3CYVCQsUDfg== + "@spotify/eslint-config-react@^15.0.0": version "15.0.0" resolved "https://registry.npmmirror.com/@spotify/eslint-config-react/-/eslint-config-react-15.0.0.tgz#5f3bba8ea2120eda16eed9f38d093a49e42b7b68" integrity sha512-TgYLvOb0RvniWbJ3dz0Skh/AMRpkJU7aNnUfHIaEvXziVQYUrRAuMwNvCCjeCfR9FkeImuORsyBobZhgsfjrZQ== +"@spotify/eslint-config-typescript@^14.0.0": + version "14.1.6" + resolved "https://registry.yarnpkg.com/@spotify/eslint-config-typescript/-/eslint-config-typescript-14.1.6.tgz#dffaf2eeffd0c879605497c3d6ab275d02053db1" + integrity sha512-7TbP8nywFUMu73nNTv0NzCmmgNFvGWlRMFZ7lCiFS+UOmfyaiYpJXUHLXXmNQ+qB8/PMrtaznvCIYmus9tqI9Q== + "@spotify/eslint-config-typescript@^15.0.0": version "15.0.0" resolved "https://registry.npmmirror.com/@spotify/eslint-config-typescript/-/eslint-config-typescript-15.0.0.tgz#b1857a76951df6e2cc4a1e92d98e7fd4f5a4baec" @@ -9902,7 +11403,7 @@ "@types/connect" "*" "@types/node" "*" -"@types/bonjour@^3.5.13": +"@types/bonjour@^3.5.13", "@types/bonjour@^3.5.9": version "3.5.13" resolved "https://registry.npmmirror.com/@types/bonjour/-/bonjour-3.5.13.tgz#adf90ce1a105e81dd1f9c61fdc5afda1bfb92956" integrity sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ== @@ -9943,7 +11444,7 @@ dependencies: "@types/tern" "*" -"@types/connect-history-api-fallback@^1.5.4": +"@types/connect-history-api-fallback@^1.3.5", "@types/connect-history-api-fallback@^1.5.4": version "1.5.4" resolved "https://registry.npmmirror.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz#7de71645a103056b48ac3ce07b3520b819c1d5b3" integrity sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw== @@ -9963,6 +11464,11 @@ resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.4.1.tgz#bfd02c1f2224567676c1545199f87c3a861d878d" integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== +"@types/cookiejar@^2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@types/cookiejar/-/cookiejar-2.1.5.tgz#14a3e83fa641beb169a2dd8422d91c3c345a9a78" + integrity sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q== + "@types/cors@^2.8.6": version "2.8.17" resolved "https://registry.npmmirror.com/@types/cors/-/cors-2.8.17.tgz#5d718a5e494a8166f569d986794e49c48b216b2b" @@ -10046,7 +11552,7 @@ "@types/range-parser" "*" "@types/send" "*" -"@types/express@*", "@types/express@^4.17.14", "@types/express@^4.17.17", "@types/express@^4.17.21", "@types/express@^4.17.6": +"@types/express@*", "@types/express@^4.17.13", "@types/express@^4.17.14", "@types/express@^4.17.17", "@types/express@^4.17.21", "@types/express@^4.17.6": version "4.17.21" resolved "https://registry.npmmirror.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d" integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== @@ -10232,6 +11738,11 @@ dependencies: "@types/unist" "^2" +"@types/methods@^1.1.4": + version "1.1.4" + resolved "https://registry.yarnpkg.com/@types/methods/-/methods-1.1.4.tgz#d3b7ac30ac47c91054ea951ce9eed07b1051e547" + integrity sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ== + "@types/mime@*": version "3.0.4" resolved "https://registry.npmmirror.com/@types/mime/-/mime-3.0.4.tgz#2198ac274de6017b44d941e00261d5bc6a0e0a45" @@ -10373,20 +11884,13 @@ resolved "https://registry.npmmirror.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== -"@types/react-dom@*", "@types/react-dom@^18.0.0": +"@types/react-dom@*", "@types/react-dom@<18.0.0", "@types/react-dom@^18", "@types/react-dom@^18.0.0": version "18.3.0" - resolved "https://registry.npmmirror.com/@types/react-dom/-/react-dom-18.3.0.tgz#0cbc818755d87066ab6ca74fbedb2547d74a82b0" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.3.0.tgz#0cbc818755d87066ab6ca74fbedb2547d74a82b0" integrity sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg== dependencies: "@types/react" "*" -"@types/react-dom@<18.0.0": - version "17.0.25" - resolved "https://registry.npmmirror.com/@types/react-dom/-/react-dom-17.0.25.tgz#e0e5b3571e1069625b3a3da2b279379aa33a0cb5" - integrity sha512-urx7A7UxkZQmThYA4So0NelOVjx3V4rNFVJwp0WZlbIK5eM4rNJDiN3R/E9ix0MBh6kAEojk/9YL+Te6D9zHNA== - dependencies: - "@types/react" "^17" - "@types/react-redux@^7.1.20": version "7.1.33" resolved "https://registry.npmmirror.com/@types/react-redux/-/react-redux-7.1.33.tgz#53c5564f03f1ded90904e3c90f77e4bd4dc20b15" @@ -10418,23 +11922,14 @@ dependencies: "@types/react" "*" -"@types/react@*", "@types/react@^16.13.1 || ^17.0.0 || ^18.0.0": +"@types/react@*", "@types/react@^16.13.1 || ^17.0.0", "@types/react@^16.13.1 || ^17.0.0 || ^18.0.0", "@types/react@^18": version "18.3.3" - resolved "https://registry.npmmirror.com/@types/react/-/react-18.3.3.tgz#9679020895318b0915d7a3ab004d92d33375c45f" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.3.tgz#9679020895318b0915d7a3ab004d92d33375c45f" integrity sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw== dependencies: "@types/prop-types" "*" csstype "^3.0.2" -"@types/react@^16.13.1 || ^17.0.0", "@types/react@^17": - version "17.0.80" - resolved "https://registry.npmmirror.com/@types/react/-/react-17.0.80.tgz#a5dfc351d6a41257eb592d73d3a85d3b7dbcbb41" - integrity sha512-LrgHIu2lEtIo8M7d1FcI3BdwXWoRQwMoXOZ7+dPTW0lYREjmlHl3P0U1VD0i/9tppOuv8/sam7sOjx34TxSFbA== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "^0.16" - csstype "^3.0.2" - "@types/request@^2.47.1", "@types/request@^2.48.8": version "2.48.12" resolved "https://registry.npmmirror.com/@types/request/-/request-2.48.12.tgz#0f590f615a10f87da18e9790ac94c29ec4c5ef30" @@ -10457,6 +11952,11 @@ dependencies: "@types/node" "*" +"@types/retry@0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" + integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== + "@types/retry@0.12.2": version "0.12.2" resolved "https://registry.npmmirror.com/@types/retry/-/retry-0.12.2.tgz#ed279a64fa438bb69f2480eda44937912bb7480a" @@ -10467,11 +11967,6 @@ resolved "https://registry.npmmirror.com/@types/sarif/-/sarif-2.1.7.tgz#dab4d16ba7568e9846c454a8764f33c5d98e5524" integrity sha512-kRz0VEkJqWLf1LLVN4pT1cg1Z9wAuvI6L97V3m2f5B76Tg8d413ddvLBPTEHAZJlnn4XSvu0FkZtViCQGVyrXQ== -"@types/scheduler@^0.16": - version "0.16.8" - resolved "https://registry.npmmirror.com/@types/scheduler/-/scheduler-0.16.8.tgz#ce5ace04cfeabe7ef87c0091e50752e36707deff" - integrity sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A== - "@types/semver@^7.3.12", "@types/semver@^7.5.0": version "7.5.6" resolved "https://registry.npmmirror.com/@types/semver/-/semver-7.5.6.tgz#c65b2bfce1bec346582c07724e3f8c1017a20339" @@ -10485,7 +11980,7 @@ "@types/mime" "^1" "@types/node" "*" -"@types/serve-index@^1.9.4": +"@types/serve-index@^1.9.1", "@types/serve-index@^1.9.4": version "1.9.4" resolved "https://registry.npmmirror.com/@types/serve-index/-/serve-index-1.9.4.tgz#e6ae13d5053cb06ed36392110b4f9a49ac4ec898" integrity sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug== @@ -10501,7 +11996,7 @@ "@types/mime" "*" "@types/node" "*" -"@types/serve-static@^1.15.5": +"@types/serve-static@^1.13.10", "@types/serve-static@^1.15.5": version "1.15.7" resolved "https://registry.npmmirror.com/@types/serve-static/-/serve-static-1.15.7.tgz#22174bbd74fb97fe303109738e9b5c2f3064f714" integrity sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw== @@ -10517,7 +12012,7 @@ dependencies: "@types/node" "*" -"@types/sockjs@^0.3.36": +"@types/sockjs@^0.3.33", "@types/sockjs@^0.3.36": version "0.3.36" resolved "https://registry.npmmirror.com/@types/sockjs/-/sockjs-0.3.36.tgz#ce322cf07bcc119d4cbf7f88954f3a3bd0f67535" integrity sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q== @@ -10543,6 +12038,22 @@ dependencies: "@types/react" "*" +"@types/superagent@*": + version "8.1.7" + resolved "https://registry.yarnpkg.com/@types/superagent/-/superagent-8.1.7.tgz#1153819ed4db34427409a1cc58f3e2f13eeec862" + integrity sha512-NmIsd0Yj4DDhftfWvvAku482PZum4DBW7U51OvS8gvOkDDY0WT1jsVyDV3hK+vplrsYw8oDwi9QxOM7U68iwww== + dependencies: + "@types/cookiejar" "^2.1.5" + "@types/methods" "^1.1.4" + "@types/node" "*" + +"@types/supertest@^2.0.12": + version "2.0.16" + resolved "https://registry.yarnpkg.com/@types/supertest/-/supertest-2.0.16.tgz#7a1294edebecb960d957bbe9b26002a2b7f21cd7" + integrity sha512-6c2ogktZ06tr2ENoZivgm7YnprnhYE4ZoXGMY+oA7IuAf17M8FWvujXZGmxLv8y0PTyts4x5A+erSwVUFA8XSg== + dependencies: + "@types/superagent" "*" + "@types/tern@*": version "0.23.9" resolved "https://registry.npmmirror.com/@types/tern/-/tern-0.23.9.tgz#6f6093a4a9af3e6bb8dde528e024924d196b367c" @@ -10599,7 +12110,7 @@ resolved "https://registry.npmmirror.com/@types/webpack-env/-/webpack-env-1.18.4.tgz#62879b0a9c653f9b1172d403b882f2045ecce032" integrity sha512-I6e+9+HtWADAWeeJWDFQtdk4EVSAbj6Rtz4q8fJ7mSr1M0jzlFcs8/HZ+Xb5SHzVm1dxH7aUiI+A8kA8Gcrm0A== -"@types/ws@^8.0.0", "@types/ws@^8.5.10", "@types/ws@^8.5.3": +"@types/ws@^8.0.0", "@types/ws@^8.5.10", "@types/ws@^8.5.3", "@types/ws@^8.5.5": version "8.5.10" resolved "https://registry.npmmirror.com/@types/ws/-/ws-8.5.10.tgz#4acfb517970853fa6574a3a6886791d04a396787" integrity sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A== @@ -11013,6 +12524,14 @@ js-yaml "^3.10.0" tslib "^2.4.0" +"@yarnpkg/parsers@^3.0.0": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@yarnpkg/parsers/-/parsers-3.0.2.tgz#48a1517a0f49124827f4c37c284a689c607b2f32" + integrity sha512-/HcYgtUSiJiot/XWGLOlGxPYUG65+/31V8oqk17vZLW1xlCoR4PampyePljOxY2n8/3jz9+tIFzICsyGujJZoA== + dependencies: + js-yaml "^3.10.0" + tslib "^2.4.0" + "@yarnpkg/parsers@^3.0.0-rc.4": version "3.0.0" resolved "https://registry.npmmirror.com/@yarnpkg/parsers/-/parsers-3.0.0.tgz#a43136f094bca5dcc1ae784c296446a85211cc62" @@ -11339,6 +12858,7 @@ anymatch@^3.0.3, anymatch@~3.1.2: "@internal/plugin-apache-spark" "^0.1.0" "@internal/plugin-argo-workflows" "^0.1.0" "@internal/plugin-cnoe-ui" "^0.1.0" + "@internal/plugin-terraform" "^0.1.0" "@material-ui/core" "^4.12.2" "@material-ui/icons" "^4.9.1" "@roadiehq/backstage-plugin-argo-cd" "^2.5.1" @@ -11544,7 +13064,7 @@ arrify@^2.0.0, arrify@^2.0.1: resolved "https://registry.npmmirror.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== -asap@^2.0.3: +asap@^2.0.0, asap@^2.0.3: version "2.0.6" resolved "https://registry.npmmirror.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== @@ -11990,7 +13510,7 @@ body-parser@1.20.2: type-is "~1.6.18" unpipe "1.0.0" -bonjour-service@^1.2.1: +bonjour-service@^1.0.11, bonjour-service@^1.2.1: version "1.2.1" resolved "https://registry.npmmirror.com/bonjour-service/-/bonjour-service-1.2.1.tgz#eb41b3085183df3321da1264719fbada12478d02" integrity sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw== @@ -12321,6 +13841,17 @@ call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5: get-intrinsic "^1.2.1" set-function-length "^1.1.1" +call-bind@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + set-function-length "^1.2.1" + call-me-maybe@^1.0.1: version "1.0.2" resolved "https://registry.npmmirror.com/call-me-maybe/-/call-me-maybe-1.0.2.tgz#03f964f19522ba643b1b0693acb9152fe2074baa" @@ -12850,6 +14381,11 @@ compare-versions@4.1.4: resolved "https://registry.npmmirror.com/compare-versions/-/compare-versions-4.1.4.tgz#3571f4d610924d4414846a4183d386c8f3d51112" integrity sha512-FemMreK9xNyL8gQevsdRMrvO4lFCkQP7qbuktn1q8ndcNk1+0mz7lgE7b/sNvbhVgY4w6tMN1FDp6aADjqw2rw== +component-emitter@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.1.tgz#ef1d5796f7d93f135ee6fb684340b26403c97d17" + integrity sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ== + compress-commons@^5.0.1: version "5.0.1" resolved "https://registry.npmmirror.com/compress-commons/-/compress-commons-5.0.1.tgz#e46723ebbab41b50309b27a0e0f6f3baed2d6590" @@ -13133,6 +14669,11 @@ cookie@^0.4.2: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== +cookiejar@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.4.tgz#ee669c1fea2cf42dc31585469d193fef0d65771b" + integrity sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw== + copy-to-clipboard@^3.2.0, copy-to-clipboard@^3.3.1: version "3.3.3" resolved "https://registry.npmmirror.com/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz#55ac43a1db8ae639a4bd99511c148cdd1b83a1b0" @@ -13835,6 +15376,15 @@ define-data-property@^1.0.1, define-data-property@^1.1.0, define-data-property@^ gopd "^1.0.1" has-property-descriptors "^1.0.0" +define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + define-lazy-prop@^2.0.0: version "2.0.0" resolved "https://registry.npmmirror.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" @@ -13869,7 +15419,7 @@ delegates@^1.0.0: resolved "https://registry.npmmirror.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== -denque@^2.1.0: +denque@^2.0.1, denque@^2.1.0: version "2.1.0" resolved "https://registry.npmmirror.com/denque/-/denque-2.1.0.tgz#e93e1a6569fb5e66f16a3c2a2964617d349d6ab1" integrity sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw== @@ -13950,6 +15500,14 @@ detect-port-alt@^1.1.6: address "^1.0.1" debug "^2.6.0" +dezalgo@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.4.tgz#751235260469084c132157dfa857f386d4c33d81" + integrity sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig== + dependencies: + asap "^2.0.0" + wrappy "1" + diff-sequences@^29.6.3: version "29.6.3" resolved "https://registry.npmmirror.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" @@ -14418,6 +15976,18 @@ es-aggregate-error@^1.0.7: has-property-descriptors "^1.0.0" set-function-name "^2.0.1" +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== + dependencies: + get-intrinsic "^1.2.4" + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + es-get-iterator@^1.1.3: version "1.1.3" resolved "https://registry.npmmirror.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6" @@ -14453,6 +16023,11 @@ es-iterator-helpers@^1.0.12, es-iterator-helpers@^1.0.15: iterator.prototype "^1.1.2" safe-array-concat "^1.0.1" +es-module-lexer@^0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" + integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== + es-module-lexer@^1.2.1: version "1.4.1" resolved "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.4.1.tgz#41ea21b43908fe6a287ffcbe4300f790555331f5" @@ -14532,6 +16107,35 @@ esbuild@^0.20.0: "@esbuild/win32-ia32" "0.20.2" "@esbuild/win32-x64" "0.20.2" +esbuild@~0.21.4: + version "0.21.5" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.21.5.tgz#9ca301b120922959b766360d8ac830da0d02997d" + integrity sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw== + optionalDependencies: + "@esbuild/aix-ppc64" "0.21.5" + "@esbuild/android-arm" "0.21.5" + "@esbuild/android-arm64" "0.21.5" + "@esbuild/android-x64" "0.21.5" + "@esbuild/darwin-arm64" "0.21.5" + "@esbuild/darwin-x64" "0.21.5" + "@esbuild/freebsd-arm64" "0.21.5" + "@esbuild/freebsd-x64" "0.21.5" + "@esbuild/linux-arm" "0.21.5" + "@esbuild/linux-arm64" "0.21.5" + "@esbuild/linux-ia32" "0.21.5" + "@esbuild/linux-loong64" "0.21.5" + "@esbuild/linux-mips64el" "0.21.5" + "@esbuild/linux-ppc64" "0.21.5" + "@esbuild/linux-riscv64" "0.21.5" + "@esbuild/linux-s390x" "0.21.5" + "@esbuild/linux-x64" "0.21.5" + "@esbuild/netbsd-x64" "0.21.5" + "@esbuild/openbsd-x64" "0.21.5" + "@esbuild/sunos-x64" "0.21.5" + "@esbuild/win32-arm64" "0.21.5" + "@esbuild/win32-ia32" "0.21.5" + "@esbuild/win32-x64" "0.21.5" + escalade@^3.1.1: version "3.1.1" resolved "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -15177,7 +16781,7 @@ fast-redact@^2.0.0: resolved "https://registry.npmmirror.com/fast-redact/-/fast-redact-2.1.0.tgz#dfe3c1ca69367fb226f110aa4ec10ec85462ffdf" integrity sha512-0LkHpTLyadJavq9sRzzyqIoMZemWli77K2/MGOkafrR64B9ItrvZ9aT+jluvNDsv0YEHjSNhlMBtbokuoqii4A== -fast-safe-stringify@2.1.1, fast-safe-stringify@^2.0.6, fast-safe-stringify@^2.0.7: +fast-safe-stringify@2.1.1, fast-safe-stringify@^2.0.6, fast-safe-stringify@^2.0.7, fast-safe-stringify@^2.1.1: version "2.1.1" resolved "https://registry.npmmirror.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== @@ -15234,6 +16838,13 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" +fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== + dependencies: + pend "~1.2.0" + fecha@^4.2.0: version "4.2.3" resolved "https://registry.npmmirror.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd" @@ -15493,6 +17104,16 @@ format@^0.2.0: resolved "https://registry.npmmirror.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b" integrity sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww== +formidable@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/formidable/-/formidable-2.1.2.tgz#fa973a2bec150e4ce7cac15589d7a25fc30ebd89" + integrity sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g== + dependencies: + dezalgo "^1.0.4" + hexoid "^1.0.0" + once "^1.4.0" + qs "^6.11.0" + forwarded@0.2.0: version "0.2.0" resolved "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" @@ -15614,7 +17235,7 @@ fsevents@2.3.2: resolved "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== -fsevents@^2.3.2, fsevents@~2.3.2: +fsevents@^2.3.2, fsevents@~2.3.2, fsevents@~2.3.3: version "2.3.3" resolved "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== @@ -15710,6 +17331,17 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@ has-symbols "^1.0.3" hasown "^2.0.0" +get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + get-nonce@^1.0.0: version "1.0.1" resolved "https://registry.npmmirror.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3" @@ -15760,7 +17392,7 @@ get-symbol-description@^1.0.0: call-bind "^1.0.2" get-intrinsic "^1.1.1" -get-tsconfig@^4.7.0: +get-tsconfig@^4.7.0, get-tsconfig@^4.7.5: version "4.7.5" resolved "https://registry.npmmirror.com/get-tsconfig/-/get-tsconfig-4.7.5.tgz#5e012498579e9a6947511ed0cd403272c7acbbaf" integrity sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw== @@ -15826,6 +17458,13 @@ git-url-parse@13.1.0: dependencies: git-up "^7.0.0" +git-url-parse@^13.0.0: + version "13.1.1" + resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-13.1.1.tgz#664bddf0857c6a75b3c1f0ae6239abb08a1486d4" + integrity sha512-PCFJyeSSdtnbfhSNRw9Wk96dDCNx+sogTe4YNXeXSJxt7xz5hvXekuRn9JX7m+Mf4OscCu8h+mtAl3+h5Fo8lQ== + 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" @@ -15876,7 +17515,7 @@ glob@7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" -glob@7.2.3, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.1.7: +glob@7.2.3, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.1.7, glob@^7.2.0: version "7.2.3" resolved "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -16198,6 +17837,13 @@ has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.1: dependencies: get-intrinsic "^1.2.2" +has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + has-proto@^1.0.1: version "1.0.1" resolved "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" @@ -16280,6 +17926,11 @@ helmet@^6.0.0: resolved "https://registry.npmmirror.com/helmet/-/helmet-6.2.0.tgz#c29d62014be4c70b8ef092c9c5e54c8c26b8e16e" integrity sha512-DWlwuXLLqbrIOltR6tFQXShj/+7Cyp0gLi6uAb8qMdFh/YBBFbKSgQ6nbXmScYd8emMctuthmgIa7tUfo9Rtyg== +hexoid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hexoid/-/hexoid-1.0.0.tgz#ad10c6573fb907de23d9ec63a711267d9dc9bc18" + integrity sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g== + hey-listen@^1.0.8: version "1.0.8" resolved "https://registry.npmmirror.com/hey-listen/-/hey-listen-1.0.8.tgz#8e59561ff724908de1aa924ed6ecc84a56a9aa68" @@ -16378,7 +18029,7 @@ html-entities@^2.1.0: resolved "https://registry.npmmirror.com/html-entities/-/html-entities-2.4.0.tgz#edd0cee70402584c8c76cc2c0556db09d1f45061" integrity sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ== -html-entities@^2.4.0: +html-entities@^2.3.2, html-entities@^2.4.0: version "2.5.2" resolved "https://registry.npmmirror.com/html-entities/-/html-entities-2.5.2.tgz#201a3cf95d3a15be7099521620d19dfb4f65359f" integrity sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA== @@ -16841,7 +18492,7 @@ ipaddr.js@1.9.1: resolved "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== -ipaddr.js@^2.1.0: +ipaddr.js@^2.0.1, ipaddr.js@^2.1.0: version "2.2.0" resolved "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz#d33fa7bac284f4de7af949638c9d68157c6b92e8" integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== @@ -17836,11 +19487,21 @@ jose@^4.15.5: resolved "https://registry.npmmirror.com/jose/-/jose-4.15.5.tgz#6475d0f467ecd3c630a1b5dadd2735a7288df706" integrity sha512-jc7BFxgKPKi94uOvEmzlSWFFe2+vASyXaKUpdQKatWAESU2MWjDfFf0fdfc83CDKcA5QecabZeNLyfhe3yKNkg== +jose@^4.6.0: + version "4.15.7" + resolved "https://registry.yarnpkg.com/jose/-/jose-4.15.7.tgz#96ad68d786632bd03c9068aa281810dbbe1b60d8" + integrity sha512-L7ioP+JAuZe8v+T5+zVI9Tx8LtU8BL7NxkyDFVMv+Qr3JW0jSoYDedLtodaXwfqMpeCyx4WXFNyu9tJt4WvC1A== + jose@^5.0.0: version "5.4.0" resolved "https://registry.npmmirror.com/jose/-/jose-5.4.0.tgz#4f6c2357e7b3cd4bc10ec65bb29e677d7adfbc84" integrity sha512-6rpxTHPAQyWMb9A35BroFl1Sp0ST3DpPcm5EVIxZxdH+e0Hv9fwhyB3XLKFUcHNpdSDnETmBfuPPTTlYz5+USw== +joycon@^3.0.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03" + integrity sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw== + js-base64@^3.6.0: version "3.7.6" resolved "https://registry.npmmirror.com/js-base64/-/js-base64-3.7.6.tgz#6ccb5d761b48381fd819f9ce04998866dbcbbc99" @@ -18102,7 +19763,7 @@ jsonc-parser@3.2.0: resolved "https://registry.npmmirror.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== -jsonc-parser@^3.2.0: +jsonc-parser@^3.0.0, jsonc-parser@^3.2.0: version "3.2.1" resolved "https://registry.npmmirror.com/jsonc-parser/-/jsonc-parser-3.2.1.tgz#031904571ccf929d7670ee8c547545081cb37f1a" integrity sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA== @@ -18398,6 +20059,14 @@ language-tags@^1.0.9: dependencies: language-subtag-registry "^0.3.20" +launch-editor@^2.6.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.8.0.tgz#7255d90bdba414448e2138faa770a74f28451305" + integrity sha512-vJranOAJrI/llyWGRQqiDM+adrw+k83fvmmx3+nV47g3+36xM15jE+zyZ6Ffel02+xSvuM0b2GDRosXZkbb6wA== + dependencies: + picocolors "^1.0.0" + shell-quote "^1.8.1" + launch-editor@^2.6.1: version "2.6.1" resolved "https://registry.npmmirror.com/launch-editor/-/launch-editor-2.6.1.tgz#f259c9ef95cbc9425620bbbd14b468fcdb4ffe3c" @@ -18821,6 +20490,11 @@ logform@^2.3.2, logform@^2.4.0: safe-stable-stringify "^2.3.1" triple-beam "^1.3.0" +long@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" + integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== + long@^5.0.0, long@^5.2.1: version "5.2.3" resolved "https://registry.npmmirror.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" @@ -18912,6 +20586,13 @@ lz-string@^1.5.0: resolved "https://registry.npmmirror.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== +magic-string@^0.26.6: + version "0.26.7" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.26.7.tgz#caf7daf61b34e9982f8228c4527474dac8981d6f" + integrity sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow== + dependencies: + sourcemap-codec "^1.4.8" + magic-string@^0.30.10: version "0.30.10" resolved "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.10.tgz#123d9c41a0cb5640c892b041d4cfb3bd0aa4b39e" @@ -19223,7 +20904,7 @@ media-typer@^1.1.0: resolved "https://registry.npmmirror.com/media-typer/-/media-typer-1.1.0.tgz#6ab74b8f2d3320f2064b2a87a38e7931ff3a5561" integrity sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw== -memfs@^3.1.2, memfs@^3.4.1: +memfs@^3.1.2, memfs@^3.4.1, memfs@^3.4.3: version "3.6.0" resolved "https://registry.npmmirror.com/memfs/-/memfs-3.6.0.tgz#d7a2110f86f79dd950a8b6df6d57bc984aa185f6" integrity sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ== @@ -19287,7 +20968,7 @@ meros@^1.1.4, meros@^1.2.1: resolved "https://registry.npmmirror.com/meros/-/meros-1.3.0.tgz#c617d2092739d55286bf618129280f362e6242f2" integrity sha512-2BNGOimxEz5hmjUG2FwoxCt5HN7BXdaWyFqEwxPTrJzVdABtrL4TiHTcsWSFAxPQ/tOnEaQEJh3qWq71QRMY+w== -methods@^1.0.0, methods@~1.1.2: +methods@^1.0.0, methods@^1.1.2, methods@~1.1.2: version "1.1.2" resolved "https://registry.npmmirror.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== @@ -19598,6 +21279,11 @@ mime@1.6.0: resolved "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== +mime@2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + mime@^3.0.0: version "3.0.0" resolved "https://registry.npmmirror.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" @@ -19675,7 +21361,7 @@ minimatch@^4.2.3: dependencies: brace-expansion "^1.1.7" -minimatch@^5.0.1, minimatch@^5.1.0: +minimatch@^5.0.0, minimatch@^5.0.1, minimatch@^5.1.0, minimatch@^5.1.1: version "5.1.6" resolved "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== @@ -19959,6 +21645,20 @@ mute-stream@~1.0.0: resolved "https://registry.npmmirror.com/mute-stream/-/mute-stream-1.0.0.tgz#e31bd9fe62f0aed23520aa4324ea6671531e013e" integrity sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA== +mysql2@^2.2.5: + version "2.3.3" + resolved "https://registry.yarnpkg.com/mysql2/-/mysql2-2.3.3.tgz#944f3deca4b16629052ff8614fbf89d5552545a0" + integrity sha512-wxJUev6LgMSgACDkb/InIFxDprRa6T95+VEoR+xPvtngtccNH2dGjEB/fVZ8yg1gWv1510c9CvXuJHi5zUm0ZA== + dependencies: + denque "^2.0.1" + generate-function "^2.3.1" + iconv-lite "^0.6.3" + long "^4.0.0" + lru-cache "^6.0.0" + named-placeholders "^1.1.2" + seq-queue "^0.0.5" + sqlstring "^2.3.2" + mysql2@^3.0.0: version "3.10.0" resolved "https://registry.npmmirror.com/mysql2/-/mysql2-3.10.0.tgz#5109449fda3dc03fb7d6bdf2cf91f97477081987" @@ -19982,7 +21682,7 @@ mz@^2.7.0: object-assign "^4.0.1" thenify-all "^1.0.0" -named-placeholders@^1.1.3: +named-placeholders@^1.1.2, named-placeholders@^1.1.3: version "1.1.3" resolved "https://registry.npmmirror.com/named-placeholders/-/named-placeholders-1.1.3.tgz#df595799a36654da55dda6152ba7a137ad1d9351" integrity sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w== @@ -20668,7 +22368,7 @@ open@^7.4.2: is-docker "^2.0.0" is-wsl "^2.1.1" -open@^8.0.0, open@^8.4.0: +open@^8.0.0, open@^8.0.9, open@^8.4.0: version "8.4.2" resolved "https://registry.npmmirror.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== @@ -20881,6 +22581,14 @@ p-reduce@2.1.0, p-reduce@^2.0.0, p-reduce@^2.1.0: resolved "https://registry.npmmirror.com/p-reduce/-/p-reduce-2.1.0.tgz#09408da49507c6c274faa31f28df334bc712b64a" integrity sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw== +p-retry@^4.5.0: + version "4.6.2" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" + integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== + dependencies: + "@types/retry" "0.12.0" + retry "^0.13.1" + p-retry@^6.2.0: version "6.2.0" resolved "https://registry.npmmirror.com/p-retry/-/p-retry-6.2.0.tgz#8d6df01af298750009691ce2f9b3ad2d5968f3bd" @@ -20948,6 +22656,11 @@ pako@^1.0.10, pako@~1.0.2, pako@~1.0.5: resolved "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== +pako@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" + integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== + param-case@^3.0.4: version "3.0.4" resolved "https://registry.npmmirror.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" @@ -22082,6 +23795,13 @@ qs@^6.10.1, qs@^6.10.2, qs@^6.11.2, qs@^6.9.1, qs@^6.9.4: dependencies: side-channel "^1.0.4" +qs@^6.11.0: + version "6.12.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.12.1.tgz#39422111ca7cbdb70425541cba20c7d7b216599a" + integrity sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ== + dependencies: + side-channel "^1.0.6" + qs@~6.5.2: version "6.5.3" resolved "https://registry.npmmirror.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" @@ -22906,6 +24626,15 @@ repeat-string@^1.5.2: resolved "https://registry.npmmirror.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== +replace-in-file@^6.0.0: + version "6.3.5" + resolved "https://registry.yarnpkg.com/replace-in-file/-/replace-in-file-6.3.5.tgz#ff956b0ab5bc96613207d603d197cd209400a654" + integrity sha512-arB9d3ENdKva2fxRnSjwBEXfK1npgyci7ZZuwysgAp7ORjHSyxz6oqIjTEv8R0Ydl4Ll7uOAZXL4vbkhGIizCg== + dependencies: + chalk "^4.1.2" + glob "^7.2.0" + yargs "^17.2.1" + replace-in-file@^7.1.0: version "7.2.0" resolved "https://registry.npmmirror.com/replace-in-file/-/replace-in-file-7.2.0.tgz#bd66f97202ae2196fc9126d3bceab1dda68b7cc2" @@ -23125,6 +24854,15 @@ roarr@^2.15.3: semver-compare "^1.0.0" sprintf-js "^1.1.2" +rollup-plugin-dts@^4.0.1: + version "4.2.3" + resolved "https://registry.yarnpkg.com/rollup-plugin-dts/-/rollup-plugin-dts-4.2.3.tgz#04c3615df1ffab4228aa9d540697eaca61e01f47" + integrity sha512-jlcpItqM2efqfIiKzDB/IKOS9E9fDvbkJSGw5GtK/PqPGS9eC3R3JKyw2VvpTktZA+TNgJRMu1NTv244aTUzzQ== + dependencies: + magic-string "^0.26.6" + optionalDependencies: + "@babel/code-frame" "^7.18.6" + rollup-plugin-dts@^6.1.0: version "6.1.1" resolved "https://registry.npmmirror.com/rollup-plugin-dts/-/rollup-plugin-dts-6.1.1.tgz#46b33f4d1d7f4e66f1171ced9b282ac11a15a254" @@ -23134,6 +24872,17 @@ rollup-plugin-dts@^6.1.0: optionalDependencies: "@babel/code-frame" "^7.24.2" +rollup-plugin-esbuild@^4.7.2: + version "4.10.3" + resolved "https://registry.yarnpkg.com/rollup-plugin-esbuild/-/rollup-plugin-esbuild-4.10.3.tgz#caa66a99b53b21d4939beffc611d76f57191c4cb" + integrity sha512-RILwUCgnCL5vo8vyZ/ZpwcqRuE5KmLizEv6BujBQfgXFZ6ggcS0FiYvQN+gsTJfWCMaU37l0Fosh4eEufyO97Q== + dependencies: + "@rollup/pluginutils" "^4.1.1" + debug "^4.3.3" + es-module-lexer "^0.9.3" + joycon "^3.0.1" + jsonc-parser "^3.0.0" + rollup-plugin-esbuild@^6.1.1: version "6.1.1" resolved "https://registry.npmmirror.com/rollup-plugin-esbuild/-/rollup-plugin-esbuild-6.1.1.tgz#ec1dba647dbe1974f76192c75e907aa6eb636399" @@ -23170,6 +24919,13 @@ rollup-pluginutils@^2.8.2: dependencies: estree-walker "^0.6.1" +rollup@^2.60.2: + version "2.79.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7" + integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw== + optionalDependencies: + fsevents "~2.3.2" + rollup@^4.0.0: version "4.18.0" resolved "https://registry.npmmirror.com/rollup/-/rollup-4.18.0.tgz#497f60f0c5308e4602cf41136339fbf87d5f5dda" @@ -23365,7 +25121,7 @@ select-hose@^2.0.0: resolved "https://registry.npmmirror.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== -selfsigned@^2.0.0, selfsigned@^2.4.1: +selfsigned@^2.0.0, selfsigned@^2.1.1, selfsigned@^2.4.1: version "2.4.1" resolved "https://registry.npmmirror.com/selfsigned/-/selfsigned-2.4.1.tgz#560d90565442a3ed35b674034cec4e95dceb4ae0" integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== @@ -23491,6 +25247,18 @@ set-function-length@^1.1.1: gopd "^1.0.1" has-property-descriptors "^1.0.1" +set-function-length@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + set-function-name@^2.0.0, set-function-name@^2.0.1: version "2.0.1" resolved "https://registry.npmmirror.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" @@ -23574,6 +25342,16 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" +side-channel@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" + integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + object-inspect "^1.13.1" + signal-exit@3.0.7, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" @@ -23744,6 +25522,11 @@ source-map@^0.7.3: resolved "https://registry.npmmirror.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== +sourcemap-codec@^1.4.8: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + space-separated-tokens@^1.0.0: version "1.1.5" resolved "https://registry.npmmirror.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" @@ -24294,6 +26077,30 @@ sucrase@^3.20.2: pirates "^4.0.1" ts-interface-checker "^0.1.9" +superagent@^8.1.2: + version "8.1.2" + resolved "https://registry.yarnpkg.com/superagent/-/superagent-8.1.2.tgz#03cb7da3ec8b32472c9d20f6c2a57c7f3765f30b" + integrity sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA== + dependencies: + component-emitter "^1.3.0" + cookiejar "^2.1.4" + debug "^4.3.4" + fast-safe-stringify "^2.1.1" + form-data "^4.0.0" + formidable "^2.1.2" + methods "^1.1.2" + mime "2.6.0" + qs "^6.11.0" + semver "^7.3.8" + +supertest@^6.2.4: + version "6.3.4" + resolved "https://registry.yarnpkg.com/supertest/-/supertest-6.3.4.tgz#2145c250570c2ea5d337db3552dbfb78a2286218" + integrity sha512-erY3HFDG0dPnhw4U+udPfrzXa4xhSG+n4rxfRuZWCUvjFWwKl+OxWf/7zk50s84/fAAs7vf5QAb9uRa0cCykxw== + dependencies: + methods "^1.1.2" + superagent "^8.1.2" + supports-color@^5.3.0: version "5.5.0" resolved "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -24901,6 +26708,16 @@ tsutils@^3.21.0: dependencies: tslib "^1.8.1" +tsx@^4.0.0: + version "4.15.6" + resolved "https://registry.yarnpkg.com/tsx/-/tsx-4.15.6.tgz#4522ed093f7fa54f031a7a999274e8b35dbf3165" + integrity sha512-is0VQQlfNZRHEuSSTKA6m4xw74IU4AizmuB6lAYLRt9XtuyeQnyJYexhNZOPCB59SqC4JzmSzPnHGBXxf3k0hA== + dependencies: + esbuild "~0.21.4" + get-tsconfig "^4.7.5" + optionalDependencies: + fsevents "~2.3.3" + tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.npmmirror.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" @@ -25698,6 +27515,17 @@ webidl-conversions@^7.0.0: resolved "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== +webpack-dev-middleware@^5.3.4: + version "5.3.4" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz#eb7b39281cbce10e104eb2b8bf2b63fce49a3517" + integrity sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q== + dependencies: + colorette "^2.0.10" + memfs "^3.4.3" + mime-types "^2.1.31" + range-parser "^1.2.1" + schema-utils "^4.0.0" + webpack-dev-middleware@^7.1.0: version "7.2.1" resolved "https://registry.npmmirror.com/webpack-dev-middleware/-/webpack-dev-middleware-7.2.1.tgz#2af00538b6e4eda05f5afdd5d711dbebc05958f7" @@ -25710,6 +27538,42 @@ webpack-dev-middleware@^7.1.0: range-parser "^1.2.1" schema-utils "^4.0.0" +webpack-dev-server@^4.7.3: + version "4.15.2" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz#9e0c70a42a012560860adb186986da1248333173" + integrity sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g== + dependencies: + "@types/bonjour" "^3.5.9" + "@types/connect-history-api-fallback" "^1.3.5" + "@types/express" "^4.17.13" + "@types/serve-index" "^1.9.1" + "@types/serve-static" "^1.13.10" + "@types/sockjs" "^0.3.33" + "@types/ws" "^8.5.5" + ansi-html-community "^0.0.8" + bonjour-service "^1.0.11" + chokidar "^3.5.3" + colorette "^2.0.10" + compression "^1.7.4" + connect-history-api-fallback "^2.0.0" + default-gateway "^6.0.3" + express "^4.17.3" + graceful-fs "^4.2.6" + html-entities "^2.3.2" + http-proxy-middleware "^2.0.3" + ipaddr.js "^2.0.1" + launch-editor "^2.6.0" + open "^8.0.9" + p-retry "^4.5.0" + rimraf "^3.0.2" + schema-utils "^4.0.0" + selfsigned "^2.1.1" + serve-index "^1.9.1" + sockjs "^0.3.24" + spdy "^4.0.2" + webpack-dev-middleware "^5.3.4" + ws "^8.13.0" + webpack-dev-server@^5.0.0: version "5.0.4" resolved "https://registry.npmmirror.com/webpack-dev-server/-/webpack-dev-server-5.0.4.tgz#cb6ea47ff796b9251ec49a94f24a425e12e3c9b8" @@ -26247,7 +28111,7 @@ yargs@16.2.0, yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@^17.1.1, yargs@^17.3.1, yargs@^17.6.2, yargs@^17.7.2: +yargs@^17.1.1, yargs@^17.2.1, yargs@^17.3.1, yargs@^17.6.2, yargs@^17.7.2: version "17.7.2" resolved "https://registry.npmmirror.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== @@ -26260,6 +28124,14 @@ yargs@^17.1.1, yargs@^17.3.1, yargs@^17.6.2, yargs@^17.7.2: y18n "^5.0.5" yargs-parser "^21.1.1" +yauzl@^2.10.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0" + yauzl@^3.0.0: version "3.1.3" resolved "https://registry.npmmirror.com/yauzl/-/yauzl-3.1.3.tgz#f61c17ad1a09403bc7adb01dfb302a9e74bf4a50"